33800 Docs

← Retour

Proposition FINALE : Correction des deltas audit stack 33800

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)


Methodologie

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).


Phase 1 — SECURITE (immediat, ~15 min)

1.1 ntfy est public (pas de restriction IP)

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.

1.2 downloads.33800 restriction incomplete

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.

1.3 qig.33800 restriction incomplete

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.

1.4 nextcloud.33800 restriction custom

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.


Phase 2 — BACKUPS MANQUANTS (urgent, ~30 min)

2.1 Aucun backup VM vzdump automatique

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 :

2.2 GitLab backups sans rotation (152 fichiers, 236 Go)

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 :

2.3 SSL wildcard expire dans 34 jours

Delta : 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.


Phase 3 — DOCUMENTATION memory/ (correction texte, ~1h30)

3.1 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.

3.2 memory/services-actifs.md — ports et containers

Corrections :

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

3.3 memory/monitoring.md — crons incomplet

Supprimer :

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

3.4 memory/pihole-split-dns.md — Pi-hole

3.5 memory/sujets-transverses.md — ports

3.6 memory/ci-cd.md

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)

Phase 4 — INDEX AUTO-GENERES (correction scripts, ~30 min)

4.1 Corriger generate-claude-index.sh et/ou collect.sh

Les 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.


Phase 5 — NETTOYAGE (entretien, ~20 min)

5.1 Containers morts ou dangling

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

5.2 Projets GitLab candidats a l'archivage

3+ mois sans activite, derniere pipeline failed :

Projet Pipeline
json-editor FAILED
user-bucket FAILED
user-bucket-m FAILED

Action : Archiver via GitLab API.

5.3 Pipelines cassees avec containers actifs

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.

5.4 Configs nginx directes (pas de symlink)

6 fichiers dans sites-enabled sont des fichiers directs :

Action : Deplacer vers sites-available + creer symlinks (convention standard nginx).


Phase 6 — SERVICES EN ERREUR (diagnostic, ~30 min)

6.1 qwikpress — HTTP 404 sur /

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.

6.2 claude-memory — Ollama deconnecte

"ollama": false dans le health check. La recherche semantique est cassee. Supabase et watcher OK.

6.3 notif-logger — unhealthy paradoxal

Container marque unhealthy par Docker mais /health retourne 200 OK {"status":"ok"}. Le healthcheck Docker est probablement mal configure (mauvaise commande ou timeout).

6.4 needfinder — /health 404 via nginx

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.

6.5 auth.33800 — pas de /health

L'authentificator repond sur 8284 mais n'a pas d'endpoint /health (retourne 404 HTML). A documenter.


Resume consolide

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

Risques


Validation requise