2.6 KiB
Déploiement production (Synology DS220+ / DSM 7.3) — Astro → Nginx statique
Dernière mise à jour : 2026-01-29
Ce document décrit la mise en place stable sur NAS :
- build Astro dans une image (Node)
- runtime Nginx statique
- bascule blue/green via Reverse Proxy DSM
1) Arborescence recommandée
Dossier racine :
/volume2/docker/archicratie-web/current
Contenu attendu :
Dockerfiledocker-compose.ymlnginx.conf.env- le code du site (package.json, src/, scripts/, etc.)
2) Pré-requis DSM
- DSM 7.3 avec accès SSH (admin)
- Docker / Container Manager installé
- Reverse Proxy DSM configuré (Portail des applications)
3) Sécurité réseau (important)
On publie le site via HTTPS 443 sur DSM Reverse Proxy.
Les ports 8081/8082 :
- bindés en localhost uniquement (
127.0.0.1:8081:80,127.0.0.1:8082:80) - n’ont PAS besoin d’être ouverts dans le pare-feu WAN
- servent uniquement à DSM Reverse Proxy (loopback)
4) Variables Gitea (Proposer)
Le site injecte des variables “publiques” au build :
PUBLIC_GITEA_BASE(URL gitea)PUBLIC_GITEA_OWNER(casse sensible)PUBLIC_GITEA_REPO
Exemple dans .env :
PUBLIC_GITEA_BASE=https://gitea.archicratie.trans-hands.synology.me
PUBLIC_GITEA_OWNER=Archicratia
PUBLIC_GITEA_REPO=archicratie-edition
5) Reverse Proxy DSM (le point clé)
DSM 7.3 : Panneau de configuration → Portail des applications → Proxy inversé
Règle pour le site :
Source : HTTPS / archicratie.trans-hands.synology.me / port 443
Destination : HTTP / 127.0.0.1 / port 8081 (BLUE) ou 8082 (GREEN)
Certificat :
Sécurité → Certificat : associer le bon certificat au nom de domaine.
6) Notes DS220+ “spécificités”
6.1 Build réseau (DNS/apt/npm)
Sur DSM, il arrive que apt-get ou des résolutions DNS échouent pendant docker build. Solution : build avec réseau host (déjà prévu dans compose) :
build: network: host
Et activer BuildKit : export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1
6.2 Artefacts Mac (PaxHeader / ._ / DS_Store)
Si tu transfères une archive depuis macOS, tu peux embarquer des dossiers/fichiers parasites. Conséquence possible : Astro “voit” un faux contenu (ex: PaxHeader/...mdx) → erreurs de schema.
Remède : .dockerignore robuste (voir anchors.md section “Artefacts Mac”).
7) Cycle blue/green (résumé)
Tu rebuild le slot inactif (ex: GREEN)
Tu valides en local (curl/smoke/health)
Tu bascules DSM vers ce port
Rollback immédiat : tu repasses DSM sur l’autre port
Pour l’opérationnel minute par minute, voir OPS_COCKPIT.md.