Files
site-nowyousea/DEPLOY.md

4.1 KiB

Déploiement — Site vitrine NowYouSea

Ce document décrit comment publier le site vitrine NowYouSea sur la VM 192.168.0.82, exposé via Caddy à l'URL https://laboratoire.freeboxos.fr/nowyousea/.

1. Prérequis

  • node ≥ 20 et npm installés en local
  • Accès SSH à floppyrj45@192.168.0.82
  • Le dossier /docker/caddy/www/nowyousea/ existe sur la VM cible et appartient à floppyrj45. ⚠ Piège : le container caddy bind-mount le chemin host /docker/caddy/www sur /srv/www (chemin interne). La config Caddy dit donc root * /srv/www/nowyousea (chemin container) mais le rsync réel se fait vers /docker/caddy/www/nowyousea/ sur l'hôte. Ne pas confondre avec /srv/www/ directement (existe sur l'hôte mais n'est PAS servi par Caddy).
ssh floppyrj45@192.168.0.82 'sudo mkdir -p /docker/caddy/www/nowyousea && sudo chown -R floppyrj45:floppyrj45 /docker/caddy/www/nowyousea'
  • Caddy tourne sur la VM .82 et expose déjà le domaine laboratoire.freeboxos.fr.

2. Build local

Depuis la racine du projet :

npm install         # à ne faire qu'une fois
npm run build       # génère dist/

Le build est statique : toute la sortie tient dans dist/. La configuration base: '/nowyousea/' est appliquée dans astro.config.mjs, donc tous les liens internes et assets sont préfixés automatiquement.

Vérification rapide en local :

npm run preview
# Ouvre http://localhost:4321/nowyousea/

3. Déploiement via rsync

Commande à copier-coller (dry-run d'abord, puis réel) :

# Dry-run — affiche ce qui serait copié, ne touche à rien
rsync -avz --delete --dry-run \
  ./dist/ \
  floppyrj45@192.168.0.82:/docker/caddy/www/nowyousea/

# Réel
rsync -avz --delete \
  ./dist/ \
  floppyrj45@192.168.0.82:/docker/caddy/www/nowyousea/

Notes :

  • Le slash final sur ./dist/ est essentiel : il indique à rsync de copier le contenu de dist/, pas le dossier dist/ lui-même.
  • --delete supprime sur la cible les fichiers qui n'existent plus dans le build (assets hashés obsolètes). C'est voulu.
  • Ajouter -n ou --dry-run avant tout déploiement douteux.

Script one-liner pratique (build + push) :

npm run build && \
rsync -avz --delete ./dist/ floppyrj45@192.168.0.82:/docker/caddy/www/nowyousea/

4. Configuration Caddy

Snippet à ajouter au Caddyfile de la VM .82, sous le bloc du site laboratoire.freeboxos.fr :

# NowYouSea — Site vitrine
handle /nowyousea {
    redir /nowyousea/ 307
}
handle_path /nowyousea/* {
    root * /docker/caddy/www/nowyousea
    file_server {
        index index.html
    }
}

Explications :

  • handle /nowyousea : si un visiteur arrive sans slash final, il est redirigé vers /nowyousea/ pour que les liens relatifs fonctionnent.
  • handle_path /nowyousea/* : retire le préfixe /nowyousea/ avant de servir les fichiers depuis /docker/caddy/www/nowyousea/. Cela s'aligne exactement avec le base: '/nowyousea/' de la config Astro : les assets sont produits avec href="/nowyousea/_astro/..." et servis depuis /docker/caddy/www/nowyousea/_astro/.
  • file_server { index index.html } : sert index.html par défaut à la racine.

Après modification du Caddyfile :

ssh floppyrj45@192.168.0.82 'sudo caddy validate --config /etc/caddy/Caddyfile && sudo systemctl reload caddy'

5. Vérifications post-déploiement

# Réponse HTTP attendue : 200 OK
curl -sIL https://laboratoire.freeboxos.fr/nowyousea/ | head -n 10

# Vérifier que les assets CSS/JS sont servis (pas de 404)
curl -sI  https://laboratoire.freeboxos.fr/nowyousea/_astro/ 2>&1 | head -n 2

Puis dans un navigateur : https://laboratoire.freeboxos.fr/nowyousea/

6. Rollback rapide

Avant un déploiement risqué, faire un snapshot :

ssh floppyrj45@192.168.0.82 \
  'cp -a /docker/caddy/www/nowyousea /docker/caddy/www/nowyousea.bak.$(date +%Y%m%d-%H%M%S)'

Pour restaurer :

ssh floppyrj45@192.168.0.82 \
  'rsync -a --delete /docker/caddy/www/nowyousea.bak.YYYYMMDD-HHMMSS/ /docker/caddy/www/nowyousea/'

Documentation de déploiement — Site vitrine NowYouSea