104 lines
2.6 KiB
Markdown
104 lines
2.6 KiB
Markdown
# 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.
|
||
|