Files
site-nowyousea/DEPLOY.md
Poulpe 1de2f6cefd docs: add DEPLOY.md with rsync commands and Caddy snippet
Step-by-step procedure to build locally and rsync dist/ to
floppyrj45@192.168.0.82:/srv/www/nowyousea/, plus the Caddy snippet that
serves /nowyousea/ with the correct base-path handling and a rollback tip.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 07:32:39 +00:00

3.7 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 /srv/www/nowyousea/ existe sur la VM cible et appartient à floppyrj45 (ou est accessible en écriture). Si ce n'est pas le cas :
ssh floppyrj45@192.168.0.82 'sudo mkdir -p /srv/www/nowyousea && sudo chown -R floppyrj45:floppyrj45 /srv/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:/srv/www/nowyousea/

# Réel
rsync -avz --delete \
  ./dist/ \
  floppyrj45@192.168.0.82:/srv/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:/srv/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 * /srv/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 /srv/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 /srv/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 /srv/www/nowyousea /srv/www/nowyousea.bak.$(date +%Y%m%d-%H%M%S)'

Pour restaurer :

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

Documentation de déploiement — Site vitrine NowYouSea