Installer sur un serveur neuf (de zéro)¶
Cette page sert uniquement si tu repars d'un serveur vierge (opération rare). Pour la mise à jour au quotidien, va plutôt sur Déployer en production.
Architecture visée (la même qu'aujourd'hui) : un proxy web central qui gère HTTPS et aiguille les adresses, plus l'application qui tourne en images et se met à jour toute seule via GitHub (CI/CD). On ne met plus de reverse-proxy dans le projet lui-même.
Étape 1 — Préparer OVH¶
- DNS — dans OVH → Zone DNS, crée les entrées A vers l'IP du serveur :
transaction.boaz-study.techetapi-transaction.boaz-study.tech(production)test-transaction.boaz-study.techetapi-test-transaction.boaz-study.tech(test)
- Pare-feu OVH — n'autorise que : ton port SSH,
80et443.
Vérifier : dig +short transaction.boaz-study.tech renvoie l'IP du serveur.
Étape 2 — Préparer le serveur¶
1 2 3 4 5 | |
Vérifier : docker ps fonctionne sans sudo.
Étape 3 — Installer le proxy web central¶
Le proxy central gère HTTPS et route les adresses vers chaque application.
1 2 3 4 | |
Vérifier : docker ps montre nginx-proxy-central et certbot-central en route.
La procédure complète pour ajouter une adresse + son certificat est décrite dans
Domaines (DNS) et certificats HTTPS.
Étape 4 — Déposer les fichiers de configuration (secrets)¶
1 2 3 4 5 | |
Récupère
.env.prod/.env.testdepuis une sauvegarde (voir Sauvegarde et restauration) ou recopie-les depuis le modèle.env.test.exampledu projet.
Étape 5 — Installer le robot de déploiement (runner)¶
Le runner reçoit les ordres de GitHub et déploie tout seul. Il s'installe avec l'outil
réutilisable Template_runner_github_cd_deploy_server, via son assistant guidé :
1 2 3 | |
L'assistant te guide pas à pas : nouveau projet ou projet existant, nom du dossier
projet, dépôt GitHub, jeton (PAT — il explique comment l'obtenir), puis récap + installation.
Il range le runner dans …/<NomProjet>/actions-runners/<repo> (arborescence « 1 dossier par projet »).
sudo ./setup.sh --dry-runmontre ce qui serait fait, sans rien installer.
Vérifier : dans GitHub → repo → Settings → Actions → Runners, le runner apparaît en ligne.
Étape 6 — Premier déploiement¶
Une fois runner + secrets + proxy en place, il suffit de pousser le code :
- pousser sur
main→ déploie la production ; - pousser sur
dev→ déploie le test.
Le déploiement construit les images, applique les migrations de base de données automatiquement, puis démarre l'application.
Vérifier (production) :
1 2 3 | |
Étape 7 — Sauvegardes automatiques¶
- Une sauvegarde est faite avant chaque déploiement de production.
- Une sauvegarde complète tourne chaque nuit (tâche planifiée / cron).
- Pour tout sauvegarder à la main : voir Sauvegarde et restauration.
Problèmes courants¶
| Problème | Cause | Solution |
|---|---|---|
permission denied sur docker |
pas dans le groupe docker | sudo usermod -aG docker $USER puis newgrp docker |
Le site répond en 502 |
l'application n'est pas encore démarrée | docker logs -f transaction_backend (attendre la fin des migrations) |
| HTTPS invalide | certificat pas encore généré | voir Domaines et certificats |
| Le runner n'apparaît pas | jeton GitHub expiré | régénère le jeton, relance sudo ./install.sh |
| DNS ne répond pas | propagation en cours | dig +short domaine, patienter |
Checklist finale¶
- DNS des 4 adresses OK (
dig +short) - Pare-feu OVH : SSH + 80 + 443
- Docker installé,
docker pssanssudo - Proxy central +
certbot-centralen route, réseauproxy-networkcréé -
.env.prodet.env.testdéposés (droits 600) - Runner en ligne dans GitHub
- Certificats HTTPS générés
-
https://transaction.boaz-study.techet/healthrépondent 200 - Sauvegarde nocturne planifiée