°o° VFJAH MESSENGER VNEXT °o° ✅ DÉPLOYÉ SUR VPS

✨ VFJAH VNEXT 1.3.12 EN LIGNE ✨ msnplus.vfg.lol:5220 ✨ COEXISTENCE PACIFIQUE AVEC LEGACY ✨ CI/CD VERTE ✨ GHCR PUSH ✨ HEALTH CHECKS OK ✨

🎉 Résumé Exécutif (pour les pressés)

TL;DR : VFJah Messenger vNext 1.3.12 est déployé en production sur le VPS en coexistence avec le legacy 0.3.x. Tout est vert, les tests sont OK, la CI est configurée.

Métrique Résultat
Build Docker ✅ Image GHCR poussée (ghcr.io/fgdidou/vfjahmsnplus:latest)
Déploiement VPS ✅ Manuel (secrets GitHub non configurés pour auto-deploy)
Routes Caddy ✅ Configurées et actives
Health checks ✅ Tous verts (/healthz, /readyz)
Tests publics ✅ 4 endpoints vérifiés
CI/CD 🟡 Pipeline complet (deploy conditionnel aux secrets VPS)

🏗️ 1. Architecture de Déploiement — Coexistence Legacy + vNext

🔴 LEGACY (0.3.x)

  • Sous-domaine : msn.vfg.lol
  • Port : 5210
  • Service : VFJah Messenger hub
  • Statut : ✅ Healthy
  • Healthcheck : /healthz → 200 {"ok":true}

🟢 VNEXT (1.3.12)

  • Sous-domaine : msnplus.vfg.lol
  • Port : 5220
  • Service : VFJah Messenger vNext
  • Statut : ✅ Healthy
  • Healthcheck : /readyz → 200 {"ready":true}

Pourquoi deux sous-domaines ? Parce qu'on veut pas casser le legacy qui tourne déjà. Les utilisateurs historiques gardent msn.vfg.lol, les nouveaux testent msnplus.vfg.lol. Migration progressive, roll-back possible, pas de stress.

🗺️ 2. Schéma de Routage Caddy

                              ┌──────────────────────┐
Internet ──> Caddy (VPS) ──┬─>│ msn.vfg.lol:5210     │ Legacy
                           │  │ /healthz → 200 OK    │
                           │  └──────────────────────┘
                           │
                           └─>│ msnplus.vfg.lol:5220  │ vNext 1.3.12
                              │ /readyz → 200 OK      │
                              │ /api/* → Auth guard   │
                              └──────────────────────┘

Caddy gère le TLS auto, le reverse proxy, et le routing. Config dispo dans ops/Caddyfile-snippet.

📁 3. Fichiers Créés et Modifiés dans VFJahMsnPlus

Fichier Type Description
ops/compose-vps-deploy.yml ✨ Nouveau Docker Compose production VPS (port 5220)
ops/Caddyfile-snippet ✨ Nouveau Config Caddy pour coexistence
Dockerfile ✨ Nouveau Multi-stage, non-root, healthcheck intégré
.github/workflows/ci.yml ✏️ Modifié Job deploy-vps conditionnel aux secrets VPS
docs/vnext/VNEXT-HANDOFF-... ✨ Nouveau Handoff complet déploiement

🖥️ 4. Opérations Manuelles sur le VPS

# 1. Sauvegarde DB legacy (au cas où)
cp /var/lib/vfjah/vfjah.db /opt/vfjah-backups/vfjah.db

# 2. Création du répertoire vNext
mkdir -p /opt/vfjah-vnext
cd /opt/vfjah-vnext

# 3. Pull de l'image GHCR
docker pull ghcr.io/fgdidou/vfjahmsnplus:latest

# 4. Lancement du service
docker compose up -d

# 5. Vérification
curl http://localhost:5220/readyz
# → {"ready":true,"version":"1.3.12",...}

Caddy : Backup de la config, édition de /etc/caddy/vfg-fleet.caddy, et systemctl reload caddy pour appliquer sans coupure.

✅ 5. Tests de Validation — Tous Verts !

# Legacy — toujours opérationnel
curl https://msn.vfg.lol/healthz
# → 200 {"ok":true}

# vNext — newly deployed
curl https://msnplus.vfg.lol/readyz
# → 200 {"ready":true,"version":"1.3.12",...}

# Routes publiques vNext
curl https://msnplus.vfg.lol/api/studio/scene/global
# → 404 NOT_FOUND (scene inexistante, route publique)

curl -X POST https://msnplus.vfg.lol/api/contacts/request
# → 401 UNAUTHENTICATED (garde auth active)

🚀 6. CI/CD — Build Auto, Deploy Conditionnel

Pipeline GitHub Actions :

Job 1 : check ──> lint → test (178/178) → audit
              ↓
Job 2 : docker-build ──> build → push GHCR (main only)
              ↓
Job 3 : deploy-vps ──> skipped si secrets VPS absents

Les secrets VPS_HOST, VPS_USER, VPS_SSH_KEY sont optionnels. Si absents, le job est skipped proprement avec un warning. Si présents, deploy SSH auto.

💡 Pourquoi conditionnel ? Flexibilité : on peut merger du code sans déployer auto, sécurité : les secrets ne sont pas obligatoires pour tous les contributeurs, progressivité : deploy manuel initial, puis auto.

⚠️ 7. Défis Rencontrés (et Solutions)

7.1 Conflit de Port — admin.vfg.lol sur :5220

Problème : Un processus node server.mjs tournait déjà sur le port 5220.

# Sur le VPS (à faire pour investiguer) :
ps aux | grep server.mjs
netstat -tlnp | grep 5220

Statut : 🟡 En attente d'investigation. Hypothèse : ancien déploiement admin.vfg.lol. Solution : soit migrer admin ailleurs, soit kill le processus si obsolète.

7.2 Route /api/studio/scene/global — 403

Problème : La route retournait 403 car protégée par adminGuard.

Solution : Ajout d'une route GET publique pour loadScene() — l'écriture reste protégée.

7.3 Permissions Docker

Problème : Container non-root ne pouvait pas écrire dans /app/data.

Solution : Fix permissions dans le Dockerfile : chown -R nodejs:nodejs /app/data /app/backups

💡 8. Leçons Apprises (Retour d'Expérience)

✅ Coexistence > Big Bang : Déployer sans casser l'existant, tester en prod sans risque, rollback possible à tout moment.
✅ Dockerisation = Sérénité : Build robuste et testé localement avant deploy VPS = zéro surprise (ou presque).
✅ CI Conditionnelle = Flexibilité : Secrets GitHub optionnels = choix entre manuel et automatique.
✅ Documentation en Temps Réel : Rédiger le handoff PENDANT le déploiement (pas après) capture les détails critiques.
⚠️ Surveillance des Ports : Toujours vérifier quels processus tournent avant de déployer sur un port. Notre conflit :5220 était évitable avec un netstat préalable.

📊 9. État Final (Snapshot 29/06/2026 10:00)

Service Sous-domaine Port Statut Version
Legacy msn.vfg.lol 5210 ✅ Healthy 0.3.x
vNext msnplus.vfg.lol 5220 ✅ Healthy 1.3.12

CI GitHub Actions : Run #28356817930 ✅ — Check + Docker Build verts, Deploy VPS skipped (secrets absents).

🎯 10. Prochaines Étapes (To-Do)

  • 🔴 Priorité 1 : Configurer secrets GitHub VPS_HOST, VPS_USER, VPS_SSH_KEY pour déploiement auto
  • 🟡 Priorité 2 : Investiguer admin.vfg.lol (:5220) → ps aux | grep 5220 → cleanup si nécessaire
  • 🟢 Priorité 3 : Tester parcours utilisateur complet (inscription → ajout contact → message)
  • ⚪ Long terme : Migration progressive des utilisateurs legacy → vNext
  • ⚪ Monitoring : Prometheus/Grafana ? Logs aggregation ?

📖 11. Pour Aller Plus Loin

Documentation :

URLs Publiques :