Source : CLAUDE.md lignes 976-1020, 1194-1355
# Machines Linux
ssh gouroubleu@prod-portainer.local
ssh gouroubleu@gitlab.local
ssh gouroubleu@nginx.local
ssh gouroubleu@dev-portainer.local
ssh gouroubleu@vscode.local
ssh gouroubleu@jellyfin.local
# Windows
ssh gouro@win11.local
# Réseau stockage (speed)
ssh gouroubleu@prod-portainer-speed.local
ssh gouroubleu@pve-speed.local
# Status pools
zpool status
# Liste datasets
zfs list
# Snapshot
zfs snapshot stock_8to/33800-stack@backup-$(date +%Y%m%d)
*.33800.nowhere84.com{projet}-{service}-{env}.33800.nowhere84.com| Environnement | Branche | Config |
|---|---|---|
| PROD | main |
conf.prod.gouroubleu.yml |
| DEV | develop |
conf.dev.gouroubleu.yml |
┌─────────────────────────────────────────────────────────────────────────────┐
│ WORKFLOW COMPLET │
│ │
│ CODE BUILD RUN EXPOSE │
│ ──── ───── ─── ────── │
│ GitLab → Docker → Containers → Nginx │
│ (versioning) (images) (services) (reverse proxy) │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ STOCKAGE │ │
│ │ ZFS RAID │ │
│ └──────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ BACKUP │ │
│ │ rsync │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
| Element | Valeur |
|---|---|
| URL | https://gitlab.33800.nowhere84.com |
| Machine | gitlab.local (192.168.1.196) |
| Donnees | /stock_1to/gitlab-data/ |
| Backup | Automatique toutes les 6h |
Usage :
| Environnement | Machine | data-root |
|---|---|---|
| PROD | prod-portainer (192.168.1.12) | /mnt/stock_8to/33800-stack/docker/prod/ |
| DEV | dev-portainer (192.168.1.51) | /stock_1to/dev-stack/docker/ |
Workflow build :
# Sur prod-portainer
cd /mnt/stock_8to/33800-stack/docker/stacks/[service]
docker compose build
docker compose up -d
Stacks PROD actives : | Stack | Containers | Compose | |-------|------------|---------| | notifications | ntfy, apprise, notif-logger | docker/stacks/notifications/ | | supabase | postgres, kong, etc | docker run direct |
Stacks DEV : | Stack | Containers | |-------|------------| | supabase-dev | Full stack 26 containers |
| Element | Valeur |
|---|---|
| Machine | nginx.local (192.168.1.104) |
| IP publique | 82.65.119.221 |
| Wildcard SSL | *.33800.nowhere84.com |
| Configs | /etc/nginx/sites-available/ |
Domaines exposes (nginx local) :
Domaines O2switch :
| Pool | Config | Capacite | Role |
|---|---|---|---|
| stock_8to | RAIDZ1 (3x4To) | 7.2 To | Donnees actives PROD |
| stock_36to | RAIDZ2 (5x12To) | 33 To | Backup + Medias |
| stock_1to | Mirror (2xSSD) | 928 Go | Donnees DEV + GitLab |
Maintenance ZFS :
# Status pools
zpool status
# Scrub mensuel (automatique)
zpool scrub stock_8to
# Snapshot manuel
zfs snapshot stock_8to/33800-stack@backup-$(date +%Y%m%d)
| Source | Destination | Frequence |
|---|---|---|
| stock_8to/33800-stack | stock_36to/backup-stock8 | Horaire |
| GitLab | stock_1to/gitlab-backup | 6h |
Script rsync : /usr/local/bin/rsync-stock8-to-stock36.sh
1. CODE : Push sur GitLab (branche main pour PROD)
2. BUILD : docker compose build sur prod-portainer
3. RUN : docker compose up -d
4. EXPOSE : Ajouter config nginx si acces externe
5. MONITOR : Ajouter au dashboard monitoring
6. NOTIFY : Configurer alertes si necessaire
# Deployer stack
ssh gouroubleu@prod-portainer.local
cd /mnt/stock_8to/33800-stack/docker/stacks/[nom]
docker compose up -d
# Voir logs
docker logs -f [container]
# Ajouter config nginx
ssh gouroubleu@nginx.local
sudo nano /etc/nginx/sites-available/[service].conf
sudo nginx -t && sudo systemctl reload nginx
# Verifier backup
ls -la /stock_36to/data/backup-stock8/33800-stack/
# Lancer collecte monitoring
/stock_8to/33800-stack/monitoring/collect.sh
curl -H "X-Fbx-App-Auth: $SESSION_TOKEN" http://mafreebox.freebox.fr/api/v15/...Note : Pour obtenir des permissions de modification, ré-autoriser l'app sur l'écran Freebox et cocher "Modifier les réglages".