Mémoire Claude - Infrastructure 33800
⚠️ RÈGLES OBLIGATOIRES (À RESPECTER EN PREMIER)
⚠️ LIRE ET APPLIQUER CES RÈGLES - PAS D'EXCUSE
Ces règles existent car Claude les a déjà violées. Si une règle est écrite ici, c'est qu'elle DOIT être respectée.
Ne PAS ignorer ces règles puis s'excuser après. RELIRE ce fichier avant chaque action importante.
- TOUJOURS proposer avant de faire → créer fichier .md dans
/home/gouroubleu/propositions/
- ATTENDRE validation de l'utilisateur avant d'exécuter
- Documenter dans
/home/gouroubleu/tasks/ avec mise à jour de l'avancement
- Reporter dans
/home/gouroubleu/backlog/ si nécessaire
- Nommage fichiers :
JJ-MM-AAAA-HH-MM-description.md
- Code = GitLab → Tout code doit etre versionne sur GitLab AVANT deploiement
- Services = Dashboard → Tout nouveau service doit etre ajoute au dashboard
- Logs = Loki → Tout service doit envoyer ses logs vers Loki (voir section Logging)
⛔ INTERDICTIONS ABSOLUES (ajouté 18/01/2026, màj 20/01/2026)
- JAMAIS de grep pour modifier des fichiers → Lire le fichier ENTIER avec Read avant d'éditer
- JAMAIS de modifications en masse sans comprendre → Éditer ligne par ligne, une modif à la fois
- Dashboard = O2switch UNIQUEMENT → URL: https://dashboard.nowhere84.com (PAS dashboard.33800)
- generate.sh ne déploie PAS sur nginx → Il génère dans le repo et push vers O2switch, c'est TOUT
- Pas de nav.js ou autres "améliorations" non demandées → Faire uniquement ce qui est demandé
- JAMAIS remettre la faute sur les autres → Assumer mes erreurs, ne pas blâmer l'utilisateur ou le système
- JAMAIS déployer manuellement → Push vers GitLab, la pipeline CI/CD build et deploy automatiquement
- JAMAIS changer ce qui fonctionne → Ne modifier QUE ce qui est explicitement demandé
- JAMAIS supprimer du code fonctionnel en "nettoyant" → Lire TOUT le bloc avant de supprimer, vérifier chaque ligne
- Notification generate.sh OBLIGATOIRE → À la fin: nombre de pages + lien https://dashboard.nowhere84.com
- JAMAIS de rm -rf sur des données → INTERDIT de supprimer des dossiers data/, db/, volumes/ ou toute donnée persistante
- JAMAIS "réparer" en supprimant → Si un service ne démarre pas, DEMANDER à l'utilisateur, ne JAMAIS supprimer de données
- JAMAIS d'action destructive sans validation EXPLICITE → Toute commande rm, drop, truncate, delete nécessite accord écrit
- TOUJOURS git push après modification d'un projet GitLab → Même sans CI/CD, le code DOIT être versionné sur GitLab
- APRÈS AUTOCOMPACT → RELIRE LA MÉMOIRE → Après une compaction de contexte, TOUJOURS relire CLAUDE.md et credentials.md AVANT de continuer. Les erreurs post-compaction viennent du manque de contexte.
- 1 demande = 1 action → Ne PAS faire plusieurs appels API/tests quand l'utilisateur en demande un seul. Pas de "debug" avec des appels supplémentaires.
- JAMAIS d'IP:port dans le code → Toujours utiliser les domaines HTTPS
*.33800.nowhere84.com. Pi-hole split-DNS résout en local. Voir pihole-split-dns.md
- Supabase GRANT obligatoire → Toute nouvelle table dans le schema
connectors DOIT avoir GRANT ALL ... TO anon, authenticated, service_role. Sinon les requêtes échouent silencieusement.
🔧 Outils MCP Disponibles (UTILISER EN PRIORITÉ)
Config : ~/.claude/settings.json
Server : /stock_8to/33800-stack/projects/mcp-claude-tools/server.py
| Outil |
Description |
Usage |
memory_search |
Recherche sémantique mémoire vectorielle |
Trouver infos dans docs/memory |
memory_namespaces |
Stats namespaces mémoire |
Voir ce qui est indexé |
connector_fetch |
Appeler APIs via Connectors Hub |
GitHub, Jellyfin, Proxmox, Supabase, Mailjet, Nextcloud |
connector_list |
Liste connecteurs/instances |
Voir APIs disponibles |
ssh_execute |
Commandes SSH distantes |
Exécuter sur PVE, prod-portainer, nginx, win11, gitlab |
notify_send |
Notifications push/mail |
Alerter l'utilisateur |
ai_job |
Jobs AI Orchestrator |
Lancer tâches IA (whisper, yolo, ollama) |
ai_status |
Status GPU/queue/outils |
Vérifier disponibilité IA |
ai_job_status |
Status d'un job |
Suivre progression job IA |
Instances SSH préconfigurées
| Instance |
Host |
| PVE-SSH |
192.168.1.4 |
| prod-portainer-SSH |
192.168.1.12 |
| nginx-SSH |
192.168.1.104 |
| win11-SSH |
192.168.1.30 |
| gitlab-SSH |
192.168.1.196 |
IMPORTANT : Préférer les outils MCP aux commandes bash quand possible. Ils sont authentifiés et intégrés.
📦 Projets GitLab sans CI/CD (push manuel obligatoire)
Ces projets n'ont PAS de pipeline automatique (0 pipeline sur GitLab). Après modification → git add + commit + push :
| Projet |
Chemin local |
Usage |
| smart-deploy |
/stock_8to/33800-stack/scripts/deploy |
Scripts déploiement |
| ci-templates |
- |
Templates CI/CD |
| infra-configs |
- |
Configs infra |
| nginx-configs |
- |
Configs nginx |
| mcp-claude-tools |
/stock_8to/33800-stack/projects/mcp-claude-tools |
Outils MCP Claude |
Vérifié le 16/02/2026 via GitLab API (source de vérité = GET /api/v4/projects/:id/pipelines)
Les autres projets (needfinder, dashboard-33800, ulias-lib, qwikjs-lib, json-editor, user-bucket, user-bucket-m) ont tous des pipelines CI/CD actives.
Procedure de fin de tache (OBLIGATOIRE)
Avant de terminer une tache ou session :
- [ ] Git push tous les projets modifies vers GitLab
- [ ] Task : Creer/mettre a jour dans ~/tasks/
- [ ] STATUS.md : Mettre a jour avec actions effectuees
- [ ] Dashboard : Mettre a jour si services modifies (config.json + generate.sh)
- [ ] CLAUDE.md : Ajouter toute nouvelle info persistante (services, credentials, procedures)
- [ ] Propositions : Marquer le statut (VALIDEE/IMPLEMENTEE/REJETEE) de TOUTE proposition traitee dans la session
Rotation et maintenance (23/02/2026)
- STATUS.md : max 2 semaines actives, archiver le reste dans
STATUS-archives/
- Propositions : TOUJOURS marquer le statut IMMEDIATEMENT apres validation/rejet de l'utilisateur. C'est le defaut de Claude, pas de l'utilisateur.
- Backlog : mettre a jour
00-INDEX-BACKLOG.md a chaque ajout/suppression d'item
- Tasks : fermer "EN COURS" IMMEDIATEMENT quand le travail est termine. Jamais laisser trainer.
📚 Système de Mémoire (3 niveaux)
| Niveau |
Dossier |
Usage |
| Core |
CLAUDE.md |
Règles + pointeurs (~300 lignes) |
| Index |
~/.claude/index/*.md |
Données LIVE (auto-générées par generate.sh) |
| Memory |
~/.claude/memory/*.md |
Documentation détaillée |
Fichiers memory/ disponibles
| Fichier |
Contenu |
| architecture-reseau.md |
Réseaux vmbr0/vmbr1, IPs, mDNS |
| pihole-split-dns.md |
Pi-hole Split-DNS, IPs autorisées, architecture sécurité |
| freebox.md |
Freebox Ultra, API, VPN WireGuard, port forwarding |
| acces-reseau.md |
RÉFÉRENCE ACCÈS : IPs autorisées, snippet nginx, Raph, VPN Rhinov |
| architecture-stockage.md |
Pools ZFS, structure /stock_8to, rsync |
| vms-details.md |
Hyperviseurs PVE/155, détails VMs |
| docker.md |
Config Docker, conf.gouroubleu.yml, scheduler.json |
| ci-cd.md |
Pipeline GitLab, Registry, Smart-Deploy |
| credentials.md |
Tous les credentials (SSH, API, etc.) |
| logging.md |
Loki, Promtail, Grafana |
| monitoring.md |
Dashboard, crons, scripts |
| services-actifs.md |
Stacks PROD, endpoints, notifications |
| workflows.md |
Commandes SSH, ZFS, déploiement |
| docs.md |
Index documentation ~/docs |
| scripts.md |
Index scripts ~/scripts |
| claude-workflow.md |
Propositions, tasks, backlog détaillé |
| sujets-transverses.md |
Conventions, ports, URLs, bonnes pratiques |
| qwik-auth-pattern.md |
Pattern Auth Qwik : plugin@auth.ts, sharedMap, SSR sans flash |
Fichiers index/ (auto-générés par generate-claude-index.sh)
| Fichier |
Contenu |
| services.md |
Containers Docker actifs |
| machines.md |
Serveurs et VMs |
| urls.md |
Sites nginx |
| stacks.md |
Stacks Docker |
| zfs.md |
Status ZFS |
| credentials-index.md |
Index credentials (sans valeurs) |
| propositions.md |
Liste propositions récentes |
| tasks.md |
Liste tasks récentes |
| backlog.md |
Liste backlog + prioritaires |
🌍 Fédération Multi-Stack (Vision)
┌─────────────────────────────────────────────────────────────────────────────┐
│ FÉDÉRATION STACKS │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 33800 │◄────── WireGuard ───────►│ 86000 │ │
│ │ (Bordeaux) │ IP à IP direct │ (Poitiers) │ │
│ │ 82.65.119.221 │ Freebox Ultra │ IP publique │ │
│ └─────────────────┘ └─────────────────┘ │
│ │ │ │
│ └──────────────► O2SWITCH ◄──────────────────┘ │
│ (backup/dashboard) │
└─────────────────────────────────────────────────────────────────────────────┘
| Pattern |
Stack |
IPv4 |
IPv6 |
| *.33800.nowhere84.com |
Bordeaux |
82.65.119.221 |
2a01:e0a:2c:a320::1 |
| *.86000.nowhere84.com |
Poitiers (Raph) |
82.67.42.47 |
2a01:e0a:fb8:78c0::1 |
| *.nowhere84.com |
O2switch |
109.234.161.246 |
- |
🌐 Architecture Réseau (résumé)
| Réseau |
Bridge |
Plage |
Débit |
Usage |
| Principal |
vmbr0 |
192.168.1.0/24 |
1G |
Services, SSH, mDNS |
| Stockage |
vmbr1 |
10.10.10.0/24 |
10G |
NFS + SMB dédié |
Détails complets : memory/architecture-reseau.md
🗄️ Architecture Stockage (résumé)
| Pool |
Config |
Capacité |
Rôle |
| stock_8to |
RAIDZ1 (3x4To) |
7.2 To |
Données PROD |
| stock_36to |
RAIDZ2 (5x12To) |
33 To |
Backup + Médias |
| stock_1to |
Mirror (2xSSD) |
928 Go |
DEV + GitLab |
Détails complets : memory/architecture-stockage.md
📁 Structure 33800-STACK
/stock_8to/33800-stack/
├── docker/ # Configuration Docker
│ ├── prod/ # data-root Docker PROD
│ ├── dev/ # data-root Docker DEV
│ ├── secrets/ # prod.env, dev.env
│ ├── shortcuts/ # Dockerfiles templates
│ └── stacks/ # Compose files
├── scripts/ # Scripts d'automatisation
├── claude/ # Historique Claude (persistant)
│ ├── propositions/
│ ├── tasks/
│ ├── backlog/
│ └── CLAUDE.md
├── monitoring/ # Dashboard monitoring
└── docs/ # Documentation infra
🖥️ Machines principales
| Machine |
IP |
Rôle |
| PVE |
192.168.1.4 |
Hyperviseur principal + Claude |
| prod-portainer |
192.168.1.12 |
Docker PROD |
| nginx |
192.168.1.104 |
Reverse Proxy |
| gitlab |
192.168.1.196 |
GitLab CE |
| win11 |
192.168.1.30 |
Windows + RTX 3090 + RTX 2070 Super |
Détails complets : memory/vms-details.md
🔑 Credentials (accès rapide)
| Service |
User |
Info |
| SSH Linux |
gouroubleu |
MyUlia75$w |
| SSH Windows |
gouro |
MyUlia75$w |
| Proxmox |
gouroubleu@pam |
MyUlia75$w |
| GitLab |
Gouroubleu |
Token: glpat-yaowLwWBJhXfzJEC8UBC |
| Portainer |
gouroubleu |
API: ptr_8B9+nxAyk... |
Credentials complets : memory/credentials.md
🤖 Workflow Claude
"Prendre connaissance de la stack" (OBLIGATOIRE quand demande)
Lire TOUS ces fichiers en parallele, SANS EXCEPTION :
- Tous les fichiers memory/ :
memory/vms-details.md — Hyperviseurs (2 Proxmox!) et VMs
memory/architecture-reseau.md — Reseaux vmbr0/vmbr1
memory/architecture-stockage.md — Pools ZFS
memory/services-actifs.md — Stacks et services PROD
memory/docker.md — Config Docker, conf.gouroubleu.yml
memory/ci-cd.md — Pipelines, Smart-Deploy, Registry
memory/pihole-split-dns.md — Split-DNS, securite
memory/acces-reseau.md — IPs autorisees, nginx, VPN
memory/freebox.md — Freebox Ultra, API, port forwarding
memory/logging.md — Loki, Promtail, Grafana
memory/monitoring.md — Dashboard, crons
memory/credentials.md — Tous les credentials
memory/workflows.md — Commandes SSH, ZFS, deploiement
memory/scripts.md — Index scripts
memory/docs.md — Index documentation
memory/sujets-transverses.md — Conventions, ports, URLs
memory/claude-workflow.md — Propositions, tasks, backlog
memory/qwik-auth-pattern.md — Pattern Auth Qwik
- STATUS.md — Contexte temps reel
- backlog/00-INDEX-BACKLOG.md — Priorites
PAS de resume partiel. Lire TOUT puis resumer. Ne JAMAIS resumer a partir d'un seul fichier.
Au debut de chaque session (si pas de demande specifique)
- Lire STATUS.md :
/home/gouroubleu/STATUS.md contient le contexte temps reel
- Services actifs et leur etat
- Derniers incidents
- Travaux en cours
- Consulter les 3 derniers tasks :
/home/gouroubleu/tasks/ (tries par date)
- Verifier backlog prioritaire : Grep "HAUTE" ou "CRITIQUE" dans backlog/
Pendant une session
- MAJ STATUS.md apres actions majeures (deploiement, fix, etc.)
- Creer un task pour chaque travail significatif (> 15 min)
- Marquer TERMINE les tasks completees immediatement
En fin de session
- Mettre a jour STATUS.md avec :
- Nouveaux services deployes
- Travaux termines
- Points d'attention
- Documenter dans tasks/ si travail significatif non documente
- Ajouter au backlog si travail non termine
Conventions fichiers
| Dossier |
Usage |
Format nom |
| propositions/ |
Plans avant execution |
JJ-MM-AAAA-HH-MM-description.md |
| tasks/ |
Travaux realises |
JJ-MM-AAAA-HH-MM-description.md |
| backlog/ |
A faire plus tard |
JJ-MM-AAAA-description.md ou descriptif |
Symlinks Claude
| Chemin court |
Cible reelle |
| ~/propositions |
/stock_8to/33800-stack/claude/propositions |
| ~/tasks |
/stock_8to/33800-stack/claude/tasks |
| ~/backlog |
/stock_8to/33800-stack/claude/backlog |
| ~/docs |
/stock_8to/33800-stack/docs |
| ~/scripts |
/stock_8to/33800-stack/scripts |
| ~/STATUS.md |
/stock_8to/33800-stack/claude/STATUS.md |
📚 Références rapides