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 etnpminstallé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/wwwsur/srv/www(chemin interne). La config Caddy dit doncroot * /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
.82et expose déjà le domainelaboratoire.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 dedist/, pas le dossierdist/lui-même. --deletesupprime sur la cible les fichiers qui n'existent plus dans le build (assets hashés obsolètes). C'est voulu.- Ajouter
-nou--dry-runavant 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 lebase: '/nowyousea/'de la config Astro : les assets sont produits avechref="/nowyousea/_astro/..."et servis depuis/docker/caddy/www/nowyousea/_astro/.file_server { index index.html }: sertindex.htmlpar 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