°o° VFJAH MESSENGER VNEXT °o° ✅ DÉPLOYÉ SUR VPS
🎉 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}
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.
⚠️ 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)
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_KEYpour 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 :
- Legacy : msn.vfg.lol
- vNext : msnplus.vfg.lol