Chaque action est référencée par son commit, version en commentaire. Le déploiement lit la clé d'hôte dans le secret SSH_KNOWN_HOSTS et exige sa vérification ; sans secret, repli sur ssh-keyscan avec un avertissement. La CI échoue sur une faille critique d'une dépendance de production. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.0 KiB
Déploiement de parenthese.io
Ce document concerne l'instance hébergée par Ilies Allali. Pour installer Parenthèse chez vous, suivez plutôt la section « Auto-héberger » du README (Docker).
Principe
Chaque push sur main lance d'abord la CI (.github/workflows/ci.yml). Si elle passe, .github/workflows/deploy-hostinger.yml démarre. Le workflow se connecte au serveur en SSH, aligne le dépôt sur origin/main sous verrou, puis lance deploy/deploy.sh, qui ne réinstalle et ne reconstruit que ce qui a changé depuis le dernier déploiement réussi.
Secrets du dépôt
HOSTINGER_HOST: adresse du serveurHOSTINGER_PORT: port SSH (facultatif, 22 par défaut)HOSTINGER_USER: utilisateur SSHHOSTINGER_SSH_PRIVATE_KEY: clé privée dont la clé publique est dansauthorized_keyssur le serveurSSH_KNOWN_HOSTS: clé d'hôte du serveur, épinglée. La produire depuis une machine de confiance avecssh-keyscan -p PORT HÔTE, comparer l'empreinte (ssh-keygen -lf) à celle affichée sur le serveur parssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub, puis coller les lignes telles quelles. Sans ce secret, le workflow reprend la clé présentée au moment du run et affiche un avertissement.
Ce qui vit sur le serveur, hors du dépôt
backend/.env: configuration de production de l'API (voirbackend/.env.production.example)/etc/parenthese/build.env: variables de build du front et de la landing (VITE_POSTHOG_KEY,VITE_POSTHOG_HOST)/etc/cron.d/parenthese-backup: sauvegarde nocturne pardeploy/backup.sh/etc/genealogy/backup.env(facultatif) : rétention et envoi S3 des sauvegardes
Prérequis du serveur
Node 20, pm2 en global, PostgreSQL joignable par DATABASE_URL, nginx configuré avec deploy/nginx.conf, pg_dump et flock.
Déployer à la main
bash deploy/deploy.sh --sync depuis le dépôt sur le serveur. FORCE_FULL=1 pour tout reconstruire. Ne pas le lancer pendant un déploiement GitHub : le verrou le fera attendre.