portfolio_v2/DEPLOY.md

94 lines
2.2 KiB
Markdown
Raw Normal View History

# 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.