- fallbacks composants + directus.ts passes a Mostuki Photo / Cannes - corrige Contact.astro (PARIS -> CANNES) - seed/token scripts : defauts Mostuki + email corentin.jog@gmail.com - docker-compose dev : conteneurs mostuki-*, email admin, secrets dev - backup.sh : conteneurs par defaut mostuki-* - package.json : name mostuki-photo + description vitrine - .env.example : email admin - DEPLOY.md : retrait des references obsoletes a l ancien branding Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.7 KiB
Deploiement Mostuki Photo — guide pas a pas
Ce guide part du principe que tu as deja un serveur avec Docker + un reverse-proxy (Traefik/nginx) qui gere le TLS et route ton domaine.
Le principe a retenir : git porte le code, pas les donnees. Tes textes, tes series et tes photos vivent dans la base Directus + le volume uploads. Il faut donc les EXPORTER de ta machine et les RESTAURER sur le serveur.
Vue d'ensemble
[Ta machine] [Serveur]
1. backup.sh --> db.sql.gz --scp--> 6. restore.sh
--> uploads.tar.gz |
2. git clone
3. .env de prod
4. up -d --build
5. token Directus
7. reverse-proxy
ETAPE 1 — Exporter ton contenu (sur TA machine)
La stack locale doit tourner (Postgres + Directus up).
cd ~/Documents/03_Dev/site-photo
bash scripts/backup.sh
Ca cree backups/db-<date>.sql.gz et backups/uploads-<date>.tar.gz.
Note bien la valeur de DIRECTUS_TOKEN de ton .env local : tu en auras
besoin a l'etape 3 (le token est stocke dans la base, il doit correspondre).
ETAPE 2 — Recuperer le code (sur le SERVEUR)
git clone https://git.acadenice.com/Corentin/site-mariage.git mostuki
cd mostuki
ETAPE 3 — Configurer les secrets de prod (sur le SERVEUR)
cp .env.prod.example .env
Edite .env et remplis chaque valeur :
# Genere les 3 secrets aleatoires :
openssl rand -hex 32 # -> DIRECTUS_KEY
openssl rand -hex 32 # -> DIRECTUS_SECRET
openssl rand -hex 24 # -> POSTGRES_PASSWORD
PUBLIC_SITE_URL/DIRECTUS_PUBLIC_URL: tes vrais domaines (https).DIRECTUS_TOKEN: la meme valeur que ton.envlocal (etape 1).DIRECTUS_ADMIN_PASSWORD: un mot de passe fort (sert si la base demarre vide ; sera ecrase par l'admin restaure a l'etape 6 — voir la note).
ETAPE 4 — Demarrer la stack (sur le SERVEUR)
docker compose -f docker-compose.prod.yml up -d --build
Le --build compile l'image Astro de prod. Verifie que les 3 conteneurs
tournent : docker compose -f docker-compose.prod.yml ps.
A ce stade la base est VIDE (sans tes series ni tes photos). On la remplace avec ton contenu a l'etape 6.
ETAPE 5 — Transferer les backups (depuis TA machine)
scp backups/db-*.sql.gz backups/uploads-*.tar.gz user@serveur:~/mostuki/backups/
(cree le dossier backups/ sur le serveur s'il n'existe pas)
ETAPE 6 — Restaurer ton contenu (sur le SERVEUR)
bash scripts/restore.sh backups/db-<date>.sql.gz backups/uploads-<date>.tar.gz
docker compose -f docker-compose.prod.yml restart directus astro
IMPORTANT securite. La base restauree contient ton compte admin LOCAL, avec son ancien mot de passe (
changeme-please). Connecte-toi tout de suite sur Directus admin et change le mot de passe + l'email : Settings -> Users -> ton compte -> nouveau mot de passe.
ETAPE 7 — Brancher le reverse-proxy (sur le SERVEUR)
Les services ecoutent en local uniquement :
- Site Astro ->
127.0.0.1:4321 - Directus ->
127.0.0.1:8055
Configure ton reverse-proxy pour router :
PUBLIC_SITE_URL(ex: mostuki.fr) ->127.0.0.1:4321DIRECTUS_PUBLIC_URL(ex: admin.mostuki.fr) ->127.0.0.1:8055
Avec TLS (Let's Encrypt) sur les deux.
ETAPE 8 — Verifications finales
- Les 4 series s'affichent dans REALISATIONS -> sinon la restore DB n'a pas pris, relance l'etape 6.
- Les photos des series s'affichent (proxy
/api/files/...OK). - Le formulaire
/contactenregistre bien (verifie dans Directus admin, collectioncontact_requests). - Mot de passe admin Directus change (etape 6).
- Port 8055 NON accessible publiquement (seulement via ton sous-domaine admin derriere le proxy).
Mises a jour ulterieures (code uniquement)
cd ~/mostuki
git pull
docker compose -f docker-compose.prod.yml up -d --build
La base et les photos ne sont pas touchees (volumes persistants).
Sauvegardes regulieres
Relance bash scripts/backup.sh periodiquement (sur le serveur, en adaptant
PG_CONTAINER=mostuki-postgres DIRECTUS_CONTAINER=mostuki-directus) et copie
les archives ailleurs. C'est ton seul filet en cas de perte du serveur.
Note : email du formulaire de contact
A ce jour, une demande de contact est STOCKEE dans Directus mais n'envoie
AUCUN email de notification (TODO dans src/pages/api/contact.ts). Pense a
checker la collection contact_requests regulierement, ou demande l'ajout de
la notif email (provider a choisir : Resend recommande) avant la mise en ligne.