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>
This commit is contained in:
135
DEPLOY.md
Normal file
135
DEPLOY.md
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
# 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 :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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 :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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 :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run preview
|
||||||
|
# Ouvre http://localhost:4321/nowyousea/
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Déploiement via rsync
|
||||||
|
|
||||||
|
Commande à copier-coller (dry-run d'abord, puis réel) :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 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) :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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` :
|
||||||
|
|
||||||
|
```caddyfile
|
||||||
|
# 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 :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh floppyrj45@192.168.0.82 'sudo caddy validate --config /etc/caddy/Caddyfile && sudo systemctl reload caddy'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. Vérifications post-déploiement
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 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 :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh floppyrj45@192.168.0.82 \
|
||||||
|
'cp -a /srv/www/nowyousea /srv/www/nowyousea.bak.$(date +%Y%m%d-%H%M%S)'
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour restaurer :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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*
|
||||||
Reference in New Issue
Block a user