Files
archicratie-edition/docs/DEPLOY_PROD_SYNOLOGY_DS220.md
archicratia 60d88939b0
All checks were successful
CI / build-and-anchors (push) Successful in 1m25s
SMOKE / smoke (push) Successful in 11s
CI / build-and-anchors (pull_request) Successful in 1m20s
Seed from NAS prod snapshot 20260130-190531
2026-01-31 10:51:38 +00:00

2.6 KiB
Raw Blame History

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)
  • nont 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 lautre port

Pour lopérationnel minute par minute, voir OPS_COCKPIT.md.