# Déploiement — francktwl.fr Le site est un **export statique** Next.js : que du HTML/CSS/JS/images. **Aucun Node, aucun process à faire tourner sur le serveur.** ## 1. Construire ```bash npm ci npm run build ``` → génère le dossier **`out/`** (~1,4 Mo). C'est **tout ce qu'il faut transférer**. ## 2. Transférer sur le serveur ```bash rsync -avz --delete out/ user@serveur:/srv/francktwl.fr/ ``` (ou `scp -r out/* user@serveur:/srv/francktwl.fr/`) Contenu de `out/` : ``` index.html → page d'accueil cv/index.html → /cv 404.html → page d'erreur robots.txt sitemap.xml opengraph-image.png → carte de partage réseaux sociaux twitter-image.png icon.png → favicon pp.jpg → photo _next/ → JS/CSS (fichiers hashés, cache 1 an) ``` ## 3. Servir le dossier ### Caddy ```caddy francktwl.fr { root * /srv/francktwl.fr encode zstd gzip try_files {path} {path}/index.html {path}.html file_server handle_errors { rewrite * /404.html file_server } @assets path /_next/static/* header @assets Cache-Control "public, max-age=31536000, immutable" } ``` ### Nginx ```nginx server { listen 80; server_name francktwl.fr www.francktwl.fr; root /srv/francktwl.fr; location / { try_files $uri $uri.html $uri/index.html $uri/ =404; } error_page 404 /404.html; location /_next/static/ { add_header Cache-Control "public, max-age=31536000, immutable"; } } ``` TLS : certbot, ou via ton reverse proxy existant (celui qui sert déjà Forgejo / Nextcloud) — ajoute simplement `francktwl.fr` comme vhost pointant sur `/srv/francktwl.fr`. ## 4. À chaque mise à jour ```bash npm run build && rsync -avz --delete out/ user@serveur:/srv/francktwl.fr/ ``` ## Après le premier déploiement - Google Search Console : ajouter `francktwl.fr`, prouver la propriété (coller le token dans `metadata.verification.google` de `app/layout.tsx`, rebuild, redéployer), soumettre `https://francktwl.fr/sitemap.xml`. - L'image de partage (`opengraph-image.png` / `twitter-image.png`) est pré-générée. Pour la changer : éditer le PNG ou regénérer.