- 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>
164 lines
4.7 KiB
Markdown
164 lines
4.7 KiB
Markdown
# 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).
|
|
|
|
```bash
|
|
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)
|
|
|
|
```bash
|
|
git clone https://git.acadenice.com/Corentin/site-mariage.git mostuki
|
|
cd mostuki
|
|
```
|
|
|
|
---
|
|
|
|
## ETAPE 3 — Configurer les secrets de prod (sur le SERVEUR)
|
|
|
|
```bash
|
|
cp .env.prod.example .env
|
|
```
|
|
|
|
Edite `.env` et remplis chaque valeur :
|
|
|
|
```bash
|
|
# 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 `.env` local** (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)
|
|
|
|
```bash
|
|
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)
|
|
|
|
```bash
|
|
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
|
|
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:4321`
|
|
- `DIRECTUS_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 `/contact` enregistre bien (verifie dans Directus admin,
|
|
collection `contact_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)
|
|
|
|
```bash
|
|
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.
|
|
```
|