Complete implementation ready for Coolify: - Node.js 22 + Fastify + socket.io backend - PostgreSQL 16 + Redis 7 services - Docker Compose configuration - Deployment scripts and documentation Co-Authored-By: Paperclip <noreply@paperclip.ing>
5.6 KiB
Déploiement AgentHub sur Coolify v4.0
Guide de déploiement d'AgentHub sur Coolify avec Docker Compose.
Prérequis
- Instance Coolify v4.0+ configurée et accessible
- Accès au dépôt Git du projet AgentHub
- Nom de domaine configuré (ex:
agenthub.barodine.net)
Configuration Coolify
1. Créer un nouveau projet
- Dans Coolify, aller dans Projects → New Project
- Nommer le projet :
AgentHub - Sélectionner l'environnement de déploiement
2. Ajouter le service Docker Compose
- Dans le projet, cliquer sur New Resource → Docker Compose
- Configuration :
- Name :
agenthub - Git Repository : URL du dépôt AgentHub
- Branch :
main(ou la branche de déploiement) - Docker Compose File :
compose.coolify.yml - Build Pack :
docker-compose
- Name :
3. Configurer les variables d'environnement
Dans l'onglet Environment Variables, ajouter :
# Database Configuration
POSTGRES_USER=agenthub
POSTGRES_PASSWORD=<générer un mot de passe fort>
POSTGRES_DB=agenthub
# JWT Secret (minimum 32 caractères)
JWT_SECRET=<générer une clé secrète forte>
# CORS Configuration
ALLOWED_ORIGINS=https://agenthub.barodine.net
# Optional: Backup Configuration
BACKUP_RETENTION_DAYS=14
S3_ENDPOINT=
S3_BUCKET=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
GPG_RECIPIENT_KEY=
Générer les secrets :
# JWT Secret (32+ caractères aléatoires)
openssl rand -base64 32
# Mot de passe PostgreSQL
openssl rand -base64 24
4. Configurer le domaine
- Dans l'onglet Domains, ajouter :
- Domain :
agenthub.barodine.net - HTTPS : ✅ Activé (Let's Encrypt automatique)
- WebSocket : ✅ Activé (requis pour Socket.IO)
- Domain :
5. Déployer
- Cliquer sur Deploy ou Force Deploy with Latest Commit
- Suivre les logs de build dans l'onglet Logs
- Une fois le déploiement terminé, vérifier la santé du service
Vérification du déploiement
Healthcheck HTTP
curl https://agenthub.barodine.net/healthz
Réponse attendue :
{
"status": "ok",
"uptime": 123.456
}
Test WebSocket
# Installer wscat si nécessaire
npm install -g wscat
# Se connecter au serveur WebSocket
wscat -c "wss://agenthub.barodine.net/socket.io/?EIO=4&transport=websocket"
Migrations de base de données
Les migrations Drizzle sont incluses dans l'image Docker. Pour les appliquer :
Option 1 : Exécution manuelle via Coolify
- Dans Coolify, aller dans Terminal
- Sélectionner le service
app - Exécuter :
npm run migrate
Option 2 : Exécution automatique au démarrage
Modifier le CMD dans le Dockerfile pour exécuter les migrations avant de démarrer :
CMD ["sh", "-c", "npm run migrate && node dist/server.js"]
⚠️ Attention : Cette méthode peut causer des problèmes avec plusieurs instances en parallèle.
Monitoring
Logs
Dans Coolify :
- Application logs : Onglet Logs → Service
app - Database logs : Onglet Logs → Service
postgres - Redis logs : Onglet Logs → Service
redis
Métriques
L'application expose des métriques Prometheus sur /metrics (si configuré).
Healthchecks
Coolify vérifie automatiquement :
- App :
GET /healthztoutes les 30s - PostgreSQL :
pg_isreadytoutes les 10s - Redis :
redis-cli pingtoutes les 10s
Backups
Activation du service de backup
Le service de backup est optionnel. Pour l'activer :
# Dans le répertoire du projet sur le serveur Coolify
docker compose --profile backup up -d backup
Configuration des backups
Les backups sont programmés via Ofelia (cron Docker) :
- Fréquence : Tous les jours à 3h du matin
- Rétention : 14 jours (configurable via
BACKUP_RETENTION_DAYS) - Emplacement : Volume Docker
backup_data
Restauration manuelle
# Lister les backups disponibles
docker exec agenthub-backup-1 ls -lh /backups
# Restaurer un backup
docker exec -i agenthub-postgres-1 psql -U agenthub -d agenthub < backup.sql
Scaling
Scaling vertical (plus de ressources)
Dans Coolify, ajuster les Resource Limits :
- CPU : Recommandé 1-2 cores
- Memory : Recommandé 512 MB - 1 GB
Scaling horizontal (plusieurs instances)
⚠️ Nécessite une configuration Redis partagée pour la session Socket.IO :
- Activer l'adaptateur Redis dans le code
- Configurer un load balancer avec sticky sessions
- Déployer plusieurs instances de l'app
Troubleshooting
L'application ne démarre pas
- Vérifier les logs :
docker compose logs app - Vérifier que PostgreSQL est prêt :
docker compose logs postgres - Vérifier les variables d'environnement
Erreurs de connexion WebSocket
- Vérifier que WebSocket est activé dans les labels Traefik
- Vérifier les CORS :
ALLOWED_ORIGINSdoit correspondre au domaine - Tester avec
wscat(voir ci-dessus)
Problèmes de base de données
# Se connecter à PostgreSQL
docker exec -it agenthub-postgres-1 psql -U agenthub -d agenthub
# Vérifier les tables
\dt
# Vérifier les migrations
SELECT * FROM drizzle.__migrations;
Mise à jour
- Dans Coolify, aller dans l'onglet General
- Cliquer sur Deploy ou configurer le Auto Deploy pour les pushs sur la branche
- Coolify va :
- Pull les derniers changements
- Rebuilder l'image Docker
- Redémarrer le service avec zero-downtime (si configuré)
Support
Pour toute question ou problème :
- Vérifier la documentation Coolify : https://coolify.io/docs
- Consulter les logs de l'application
- Ouvrir une issue sur le dépôt AgentHub