# BEK’S TACHY Simulator — Installation sur Infomaniak

## Ce que contient cette archive

Le code Next.js du simulateur v1.0 RC2, les modèles et migrations Prisma, les tests existants, un `Dockerfile` et `compose.yaml` pour l'application et PostgreSQL.

**Statut : version candidate, non auditée et non validée en production.** Les modèles de tachygraphes sont des simulations pédagogiques et ne remplacent pas les appareils réels. Les règles OTR1 doivent être vérifiées avec les textes officiels avant utilisation en formation certifiante.

## Hébergement requis

Un serveur Infomaniak **avec accès SSH et droit d'exécuter Docker Engine et Docker Compose** (par exemple une VM/VPS compatible). Un hébergement mutualisé limité au FTP/PHP n'est pas suffisant pour cette configuration. Vérifier l'offre exacte auprès d'Infomaniak avant de commander.

Prérequis : serveur Linux, Docker + plugin `docker compose`, nom de domaine et HTTPS via un reverse proxy (Caddy/Nginx/Traefik), accès SSH. Les coûts éventuels du serveur, du stockage et des sauvegardes ne sont pas inclus.

## Sur votre PC

1. Décompresser l'archive. Ouvrir le dossier `beks-tachy-simulator`.
2. Copier **tout le dossier** sur le serveur via SFTP ou SCP, en conservant les sous-dossiers (`src`, `prisma`, `tests`).
3. Sur le serveur, dans ce dossier :

```bash
cp .env.infomaniak.example .env
openssl rand -hex 24  # mot de passe pour POSTGRES_PASSWORD
openssl rand -hex 32  # clé pour TACHY_ADMIN_KEY
nano .env             # remplacer les deux valeurs par celles générées
chmod 600 .env
docker compose up -d --build
```

4. Vérifier : `docker compose ps`, `docker compose logs --tail=100 app`, puis `curl http://127.0.0.1:3000/api/ready` depuis le serveur. La réponse attendue après initialisation est `{"status":"ready"}`.
5. Configurer un reverse proxy HTTPS vers `127.0.0.1:3000`, avec un certificat TLS valide. **Ne pas exposer le port 3000 directement sur Internet.**
6. Définir une stratégie de sauvegarde de PostgreSQL et de restauration testée, avant d'inscrire de vrais élèves.

## Gestion

- Mise à jour du code : `docker compose up -d --build` après sauvegarde.
- Logs : `docker compose logs -f app`.
- Arrêt : `docker compose down` (conserve le volume de données).
- **Ne pas utiliser** `docker compose down -v` : cela supprimerait le volume PostgreSQL.
- L'accès administrateur dépend de `TACHY_ADMIN_KEY` : ne jamais la partager ou la placer dans un dépôt public.

## Limites importantes

- Le ZIP **n'est pas un site HTML à déposer simplement dans `public_html`**.
- L'installation n'a pas été exécutée sur un serveur Infomaniak réel ; compatibilité et fonctionnement en production restent à vérifier.
- Les dépendances npm sont déclarées par plages de versions ; sans fichier `package-lock.json`, les versions résolues peuvent varier.
- La publication en ligne exige des tests de sécurité, de conformité OTR1, de parcours élèves et de protection des données.
