Date : 01/03/2026 21:30 Status : EN ATTENTE VALIDATION Methode : Double audit independant + confrontation croisee Fiabilite : 41 deltas valides, 1 faux positif elimine (DNS nginx)
Deux audits complets independants realises le 01/03/2026 :
Confrontation croisee : 34 deltas confirmes par les 2 audits, 8 nouveaux deltas trouves dans l'audit 2, 1 faux positif elimine (DNS nginx .254 etait correct dans la doc).
Delta : ntfy.33800.nowhere84.com n'a AUCUNE restriction IP. Config verifiee : ni allowed-ips.conf ni allow/deny inline. Accessible depuis tout Internet.
Preuve : grep -L "allowed-ips.conf" confirme ntfy dans la liste. Config lue : aucun bloc de restriction.
Action : Ajouter include /etc/nginx/snippets/allowed-ips.conf; dans le bloc server { listen 443 ... } de /etc/nginx/sites-enabled/ntfy.33800.nowhere84.com.conf + nginx -t && systemctl reload nginx.
Delta : Restriction inline allow 192.168.1.0/24; deny all; — Raph (82.67.42.47) et Rhinov (130.180.208.74, 92.154.124.233) sont exclus.
Action : Remplacer la restriction inline par include /etc/nginx/snippets/allowed-ips.conf; + reload.
Delta : Restriction inline allow 192.168.1.0/24; allow 127.0.0.1; deny all; — Raph et Rhinov exclus.
Action : Remplacer par include /etc/nginx/snippets/allowed-ips.conf; + reload.
Delta : Restrictions RFC1918 + IP Raph inline, pas le snippet standard. Devrait utiliser le meme snippet que les 51 autres sites.
Action : Remplacer par include /etc/nginx/snippets/allowed-ips.conf; + reload.
Delta : /etc/pve/vzdump.cron = vide. pvesh get /cluster/backup = vide. Derniers dumps manuels = octobre 2025 (4 mois!). 378 Go de dumps anciens sur stock_36to mais aucun recent.
Action :
/stock_36to/data/dump/ (dossier existant)prune-backups: keep-weekly=4)Delta : 152 fichiers .tar x ~1.6 Go = 236 Go qui grossit de ~6.4 Go/jour (4 backups/jour). backup_keep_time commente dans gitlab.rb. Stock_1to = 928 Go total.
Action :
gitlab_rails['backup_keep_time'] = 604800 (7 jours) dans /etc/gitlab/gitlab.rbsudo gitlab-ctl reconfigureDelta : Certificat *.33800.nowhere84.com expire le 4 avril 2026. Renouvellement certbot dns-01 avec hook manuel.
Action : Verifier que le renouvellement automatique fonctionne (certbot renew --dry-run). Si pas automatique, planifier le renouvellement avant le 25 mars.
memory/vms-details.md — specs VM fausses| Correction | Ancien (doc) | Reel (verifie) |
|---|---|---|
| prod-portainer CPU | 4 vCPU | 6 cores |
| prod-portainer RAM | 8 Go | 12 Go (12288 MB) |
| vscode VM 103 status | running | stopped (absente du qm list PVE) |
| win11 onboot | non documente | onboot: 0 (pas d'auto-start) |
Note DNS nginx : qm config 107 dit nameserver: 192.168.1.1 (cloud-init) mais le resolv.conf reel montre 192.168.1.254 + 8.8.8.8 (systemd-resolved). La doc MEMORY.md (.254) est correcte. Ne PAS modifier.
memory/services-actifs.md — ports et containersCorrections :
| Element | Ancien (doc) | Reel (verifie) |
|---|---|---|
| Supabase Kong port | 8001 | 8200 (HTTP), 8243 (HTTPS) |
| connectors-front container | connectors-front-blue | connectors-front-green |
| connectors-front port | 5402 | 5412 externe -> 5402 interne |
Services manquants a ajouter (13 services non documentes) :
| Service | Port | Image | Status |
|---|---|---|---|
| Open WebUI | 3001 | ghcr.io/open-webui/open-webui:main | healthy |
| Prometheus | 9090 | prom/prometheus:latest | running |
| Syncthing | 8384 | lscr.io/linuxserver/syncthing:latest | running |
| Supabase Studio PROD | 8201 | supabase/studio:latest | healthy |
| QwikPress | 3002 | dangling d1938873e58f | healthy (mais 404) |
| QwikPress-file | 3003 | registry qwikpress:latest | healthy |
| Dashboard 33800 backend | 5520 | registry dashboard-33800:latest | healthy |
| Dashboard 33800 frontend | 5521 | registry dashboard-33800-frontend:latest | healthy |
| Claude Memory | 5510 | registry claude-memory:latest | healthy (ollama: false) |
| Claude Memory Front | 5511 | registry claude-memory-front:latest | healthy |
| Ulias Org | 5515 | registry ulias-org:latest | healthy |
| Ulias Org Web | 5516 | registry ulias-org-web:latest | healthy |
| Authentificator | 8284 | registry authentificator:latest | healthy |
| Yolo API | 9200 | registry yolo-api:latest | healthy |
| Test-deploy | 3050 | registry test-deploy:latest | healthy |
| QIG (qwik-interface-generator) | 5505 | registry qwik-interface-generator:latest | healthy |
| AI Orchestrator | 5501 | registry ai-orchestrator:latest | healthy |
Section Legacy a ajouter :
| Service | Port | Status |
|---|---|---|
| ai-api | 5673 (interne) | running |
| ffmpeg-api | 3200 (interne) | running (image dangling) |
| jellylink-api | 5672 (interne) | running |
| tintech-api | 5672 (interne) | running |
| medias-api | 3000 (interne) | running |
| notifications-webapp | 8082 | running |
| ulias (legacy) | 3000 (interne) | running |
memory/monitoring.md — crons incompletSupprimer :
nginx-logs-archive a 55 23 * * * (n'existe plus)Ajouter (11 crons reels manquants) :
| Fichier cron.d | Schedule | Script/Commande | Description |
|---|---|---|---|
| audit-33800 | 0 6 * * * |
audit-notify.sh | Audit quotidien stack |
| backup-check | 30 */6 * * * |
backup-check.sh | Verification backups |
| o2switch-backup | 0 */2 * * * |
sync-configs-o2switch.sh | Sync configs vers O2switch |
| o2switch-backup | 0 */6 * * * |
pg-to-o2switch.sh | Backup PostgreSQL vers O2switch |
| o2switch-backup | 30 */6 * * * |
gitlab-to-o2switch.sh | Backup GitLab vers O2switch |
| rsync-stock8-to-stock36 | 0 * * * * |
rsync -av --delete | Sync horaire 33800-stack |
| rsync-stock8-to-stock36 | 5 * * * * |
rsync -av --delete | Sync horaire backups |
| rsync-stock8-to-stock36 | 0 5 * * * |
rsync -av --delete | Sync quotidien complet stock_8to |
| sync-logs-o2switch | 0 3 * * * |
sync-logs-o2switch.sh | Archivage logs froid |
| verify-dashboard | 0 6 * * 0 |
verify-dashboard.sh | Verification dashboard hebdo |
| zfs-alerts | 0 */6 * * * |
zfs-alert.sh | Alertes sante ZFS |
| monitoring-33800 | 0 * * * * |
collect.sh | Collecte monitoring horaire |
memory/pihole-split-dns.md — Pi-holememory/sujets-transverses.md — portsmemory/ci-cd.mdmaster (pas main)| Projet | Pipeline | Container actif ? |
|---|---|---|
| yolo-api | FAILED | Oui (image ancienne) |
| ffmpeg-api | FAILED | Oui (image dangling) |
| notifications | FAILED | Oui (image ancienne) |
| qwikjs-lib | FAILED | Non (library) |
| json-editor | FAILED | Non |
| user-bucket | FAILED | Non |
| user-bucket-m | FAILED | Non |
| ulias-lib | FAILED | Non (library) |
generate-claude-index.sh et/ou collect.shLes fichiers index/ sont auto-generes mais contiennent des erreurs hardcodees :
| Erreur | Correction |
|---|---|
| whisper sur 192.168.1.12:9100 | Supprimer (n'existe pas) |
| needfinder sur 192.168.1.51:5200 | Corriger vers 192.168.1.12:5200 (PROD) |
| linkedin sur 192.168.1.12:5401 | Supprimer (n'existe pas) |
| ffmpeg_api sur 192.168.1.199:3200 | Corriger vers 192.168.1.12:3200 |
| whisper-api stack PROD | Supprimer |
| needfinder stack DEV | Corriger vers PROD |
Note : Identifier la source (config.json ou donnees hardcodees dans collect.sh) et corriger a la racine.
| Action | Cible |
|---|---|
| Supprimer container dead | Container mort image 94e3d10acdf1 sur prod-portainer |
| Investiguer qwikpress | Tourne sur image dangling d1938873e58f, pas du registry |
| Investiguer ffmpeg-api | Tourne sur image dangling 6ede43dc03db, pas du registry |
| Docker image prune | Nettoyer images dangling sur prod-portainer |
3+ mois sans activite, derniere pipeline failed :
| Projet | Pipeline |
|---|---|
| json-editor | FAILED |
| user-bucket | FAILED |
| user-bucket-m | FAILED |
Action : Archiver via GitLab API.
| Projet | Pipeline | Container |
|---|---|---|
| yolo-api | FAILED | Oui (image ancienne, fonctionne) |
| ffmpeg-api | FAILED | Oui (image dangling) |
| notifications | FAILED | Oui (image ancienne) |
Action : Verifier utilite de chaque service, fixer la pipeline ou stopper le container.
6 fichiers dans sites-enabled sont des fichiers directs :
browser.33800, connectors.33800, downloads.33800, ntfy.33800, qig.33800, search.33800Action : Deplacer vers sites-available + creer symlinks (convention standard nginx).
L'app Qwik tourne (port 3002, container healthy) mais la route racine retourne {"_entry":"0","_objs":["Page not found"]}. De plus, tourne sur image dangling.
"ollama": false dans le health check. La recherche semantique est cassee. Supabase et watcher OK.
Container marque unhealthy par Docker mais /health retourne 200 OK {"status":"ok"}. Le healthcheck Docker est probablement mal configure (mauvaise commande ou timeout).
Container needfinder up + healthy (port 5200) mais https://needfinder.33800.nowhere84.com/health retourne 404 nginx. Route nginx mal configuree ou /health inexistant sur l'app. Le endpoint needfinder-api fonctionne.
L'authentificator repond sur 8284 mais n'a pas d'endpoint /health (retourne 404 HTML). A documenter.
| Phase | Sujet | Deltas | Effort | Priorite |
|---|---|---|---|---|
| 1 | Securite (ntfy + downloads + qig + nextcloud) | 4 | 15 min | IMMEDIAT |
| 2 | Backups (vzdump + GitLab rotation + SSL) | 3 | 30 min | URGENT |
| 3 | Documentation memory/ (8 fichiers, 30+ corrections) | 25 | 1h30 | HAUTE |
| 4 | Index auto-generes (scripts collecte) | 6 | 30 min | MOYENNE |
| 5 | Nettoyage (containers, projets, nginx) | 6 | 20 min | MOYENNE |
| 6 | Services en erreur (diagnostic) | 5 | 30 min | MOYENNE |
| TOTAL | 41 deltas + 8 corrections doc | ~3h30 |