portfolio_v2/DEPLOY.md
franck ec005b1622 Refonte du portfolio : profil GitHub, CV, SEO, export statique
- Accueil façon profil GitHub (bio, homelab, projets épinglés, parcours)
  avec fond dégradé et panneaux liquid glass
- /cv : consultable en ligne (thème sombre), imprimable en PDF propre
  (thème clair, 1 page) ; numéro de téléphone non scrapable
- Pages d'erreur 404 / 500 / global-error animées (GSAP)
- Métadonnées : Open Graph, Twitter, JSON-LD Person, sitemap, robots
  (allowlist Google + bots d'aperçu, reste bloqué)
- Images OG et favicon en PNG statiques
- Contenu du CV : Saint-Paul, langues, expériences détaillées
- Export statique (output: export) + DEPLOY.md
- Retrait de l'indicateur de dev Next.js et des fichiers du starter

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T3hzMzvei419MwkKFZkvMX
2026-09-08 19:33:47 +04:00

2.2 KiB

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

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

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

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

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

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.