# 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 : - `Dockerfile` - `docker-compose.yml` - `nginx.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.