Add comprehensive documentation suite for AgentHub Phase 1: - ARCHITECTURE.md: Technical architecture, data model, tech stack rationale, security model, deployment topology, scalability considerations - API.md: Complete REST & WebSocket API reference with authentication flow, endpoints, events, error handling, rate limits, SDK examples - DEPLOYMENT.md: Deployment guide covering local dev, Phase 1 LAN, Phase 2 Coolify with environment setup, verification procedures, troubleshooting - GIT-HOSTING-GUIDE.md: Comparison of GitHub vs Forgejo for Barodine - FORGEJO-INSTALL.md: Forgejo installation via Coolify - FORGEJO-MANUAL-STEPS.md: Detailed manual steps for Forgejo setup Update README.md with documentation index linking to all guides. Closes BARAAA-56 (Documentation complète AgentHub Phase 1). Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
441 lines
13 KiB
Markdown
441 lines
13 KiB
Markdown
# Guide de mise en place Git Hosting pour AgentHub
|
|
|
|
Guide complet pour choisir et configurer la solution Git (GitHub ou Forgejo) pour héberger le code AgentHub et l'intégrer avec Coolify.
|
|
|
|
---
|
|
|
|
## Comparaison GitHub vs Forgejo
|
|
|
|
| Critère | GitHub | Forgejo |
|
|
|---------|--------|---------|
|
|
| **Hébergement** | Cloud (github.com) | Self-hosted (192.168.9.25) |
|
|
| **Coût** | Gratuit (public) / $4/mois (privé) | Gratuit (infrastructure existante) |
|
|
| **Temps d'installation** | 10 minutes | 30-45 minutes |
|
|
| **Accessibilité** | Internet requis | LAN uniquement (ou exposition via VPN) |
|
|
| **Maintenance** | Aucune (géré par GitHub) | Mises à jour manuelles |
|
|
| **Sécurité données** | Hébergé chez Microsoft | 100% contrôle local |
|
|
| **Webhooks Coolify** | ✅ Supporté | ✅ Supporté |
|
|
| **CI/CD natif** | GitHub Actions (gratuit limité) | Forgejo Actions (illimité) |
|
|
| **Interface web** | Moderne, feature-rich | Similaire à GitHub, léger |
|
|
| **API REST** | Complète et documentée | Compatible Gitea/Forgejo |
|
|
| **Collaboration externe** | Facile (pull requests publics) | Nécessite accès VPN/réseau |
|
|
| **Backup** | Automatique (GitHub) | À configurer (Coolify) |
|
|
|
|
---
|
|
|
|
## Recommandation par use case
|
|
|
|
### Choisir GitHub si:
|
|
- ✅ Vous voulez un déploiement **rapide** (10 min)
|
|
- ✅ Collaboration avec des **contributeurs externes**
|
|
- ✅ Besoin d'accès depuis **n'importe où**
|
|
- ✅ Pas de contraintes strictes sur **l'hébergement des données**
|
|
- ✅ Utilisation de **GitHub Actions** pour CI/CD
|
|
|
|
### Choisir Forgejo si:
|
|
- ✅ **Souveraineté des données** (tout reste sur vos serveurs)
|
|
- ✅ Projet **interne uniquement** (pas de collaboration externe)
|
|
- ✅ Infrastructure **LAN déjà en place**
|
|
- ✅ Volonté de **contrôler 100%** de la stack
|
|
- ✅ Éviter toute **dépendance cloud**
|
|
|
|
---
|
|
|
|
## Installation et configuration GitHub
|
|
|
|
### Prérequis
|
|
- Compte GitHub: https://github.com/barodine
|
|
- Repository déjà créé: https://github.com/barodine/agenthub
|
|
- Personal Access Token (PAT) avec scope `repo`
|
|
|
|
### Étape 1: Vérifier le repository
|
|
|
|
Le repository GitHub est déjà créé et le code a été poussé.
|
|
|
|
**Vérification:**
|
|
```bash
|
|
git remote -v
|
|
# devrait afficher:
|
|
# origin https://github.com/barodine/agenthub.git (fetch)
|
|
# origin https://github.com/barodine/agenthub.git (push)
|
|
|
|
git branch -a
|
|
# devrait afficher:
|
|
# * main
|
|
# remotes/origin/main
|
|
```
|
|
|
|
### Étape 2: Configurer le webhook Coolify
|
|
|
|
#### 2.1. Récupérer l'URL du webhook Coolify
|
|
|
|
1. Aller dans Coolify: https://coolify.barodine.net
|
|
2. Créer l'application AgentHub:
|
|
- Projet: **Barodine IA**
|
|
- Type: **Application** → **Public Repository**
|
|
- Git URL: `https://github.com/barodine/agenthub`
|
|
- Branch: `main`
|
|
- Build Pack: **Dockerfile**
|
|
3. Une fois créée, aller dans **Webhooks** → **GitHub**
|
|
4. Copier l'URL du webhook (format: `https://coolify.barodine.net/webhooks/xxx`)
|
|
|
|
#### 2.2. Configurer le webhook dans GitHub
|
|
|
|
1. Ouvrir https://github.com/barodine/agenthub/settings/hooks
|
|
2. Cliquer **Add webhook**
|
|
3. Configurer:
|
|
- **Payload URL**: L'URL copiée de Coolify
|
|
- **Content type**: `application/json`
|
|
- **Secret**: (laisser vide ou copier depuis Coolify)
|
|
- **Which events**: `Just the push event`
|
|
- **Active**: ✅ Coché
|
|
4. Cliquer **Add webhook**
|
|
|
|
#### 2.3. Tester le webhook
|
|
|
|
```bash
|
|
# Faire un commit test
|
|
cd /home/alexandre/.paperclip/instances/default/workspaces/8780faf8-03bb-45e9-989e-167eeb438b58/agenthub
|
|
echo "# Test webhook" >> README.md
|
|
git add README.md
|
|
git commit -m "test: Verify GitHub webhook triggers Coolify deploy"
|
|
git push origin main
|
|
```
|
|
|
|
Vérifier dans Coolify que le déploiement démarre automatiquement.
|
|
|
|
### Étape 3: Configuration des secrets GitHub (optionnel)
|
|
|
|
Pour utiliser GitHub Actions:
|
|
|
|
1. Aller dans **Settings** → **Secrets and variables** → **Actions**
|
|
2. Ajouter les secrets:
|
|
- `COOLIFY_WEBHOOK_URL`: URL du webhook Coolify
|
|
- `POSTGRES_PASSWORD`: Mot de passe DB
|
|
- `JWT_SECRET`: Secret JWT
|
|
|
|
### Étape 4: Configurer les variables d'environnement dans Coolify
|
|
|
|
Dans l'application AgentHub créée dans Coolify:
|
|
|
|
```bash
|
|
NODE_ENV=production
|
|
HOST=0.0.0.0
|
|
PORT=3000
|
|
LOG_LEVEL=info
|
|
|
|
# PostgreSQL
|
|
POSTGRES_HOST=<uuid_db_agenthub>
|
|
POSTGRES_PORT=5432
|
|
POSTGRES_USER=postgres
|
|
POSTGRES_PASSWORD=<password_from_db_creation>
|
|
POSTGRES_DB=postgres
|
|
|
|
# Sécurité
|
|
JWT_SECRET=<générer_32_chars_random>
|
|
ALLOWED_ORIGINS=https://agenthub.barodine.net
|
|
ENABLE_HSTS=true
|
|
|
|
# Features
|
|
FEATURE_MESSAGING_ENABLED=true
|
|
```
|
|
|
|
### Étape 5: Créer la base de données AgentHub
|
|
|
|
```bash
|
|
curl -X POST "https://coolify.barodine.net/api/v1/databases/postgresql" \
|
|
-H "Authorization: Bearer $COOLIFY_API_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"server_uuid": "gw9o6m2ftfvx7g5guf82nkiq",
|
|
"project_uuid": "x9fenmiro11hv1uqij88z88a",
|
|
"environment_name": "production",
|
|
"name": "agenthub-db",
|
|
"description": "PostgreSQL database for AgentHub production",
|
|
"image": "postgres:16-alpine",
|
|
"instant_deploy": true
|
|
}'
|
|
```
|
|
|
|
### Étape 6: Premier déploiement
|
|
|
|
1. Dans Coolify, cliquer sur **Deploy** pour l'application AgentHub
|
|
2. Attendre la fin du build (~2-5 minutes)
|
|
3. Vérifier les logs dans l'onglet **Logs**
|
|
4. Tester l'endpoint `/metrics`:
|
|
```bash
|
|
curl https://agenthub.barodine.net/metrics
|
|
```
|
|
|
|
---
|
|
|
|
## Installation et configuration Forgejo
|
|
|
|
### Étape 1: Installer Forgejo sur 192.168.9.25
|
|
|
|
Voir le guide complet: [`FORGEJO-INSTALL.md`](./FORGEJO-INSTALL.md)
|
|
|
|
**Résumé:**
|
|
|
|
1. **Créer la base de données Forgejo** (déjà fait):
|
|
```
|
|
UUID: rffv6pfwpdftlhunzoishduj
|
|
URL: postgres://postgres:UpW5nyYcNSy88bQiNppIRdFKrtul2Bu4hXzxitzcB4IHU9sAzGc2mkndvKdA1J42@rffv6pfwpdftlhunzoishduj:5432/postgres
|
|
```
|
|
|
|
2. **Créer le service Forgejo dans Coolify**:
|
|
- Projet: Barodine IA
|
|
- Image: `codeberg.org/forgejo/forgejo:9`
|
|
- Port: 3000
|
|
- Domain: `git.barodine.net`
|
|
- Variables d'environnement: voir [`FORGEJO-INSTALL.md`](./FORGEJO-INSTALL.md)
|
|
|
|
3. **Déployer et configurer**:
|
|
- Attendre le démarrage (~2 min)
|
|
- Ouvrir https://git.barodine.net
|
|
- Compléter l'installation initiale
|
|
|
|
### Étape 2: Créer le repository AgentHub dans Forgejo
|
|
|
|
1. Se connecter à https://git.barodine.net
|
|
2. Cliquer sur **+** → **New Repository**
|
|
3. Configurer:
|
|
- **Owner**: Votre username
|
|
- **Repository Name**: `agenthub`
|
|
- **Description**: "AgentHub - Hub de communication temps réel pour agents IA"
|
|
- **Visibility**: Private
|
|
- **Initialize Repository**: ❌ Non
|
|
4. Cliquer **Create Repository**
|
|
|
|
### Étape 3: Migrer le code de GitHub vers Forgejo
|
|
|
|
```bash
|
|
cd /home/alexandre/.paperclip/instances/default/workspaces/8780faf8-03bb-45e9-989e-167eeb438b58/agenthub
|
|
|
|
# Ajouter Forgejo comme remote (garder GitHub aussi)
|
|
git remote add forgejo https://git.barodine.net/username/agenthub.git
|
|
|
|
# Pousser vers Forgejo
|
|
git push forgejo main
|
|
|
|
# OU: Remplacer GitHub par Forgejo
|
|
git remote remove origin
|
|
git remote add origin https://git.barodine.net/username/agenthub.git
|
|
git push -u origin main
|
|
```
|
|
|
|
### Étape 4: Configurer le webhook Coolify dans Forgejo
|
|
|
|
1. Dans Forgejo, aller dans le repo **agenthub** → **Settings** → **Webhooks**
|
|
2. Cliquer **Add Webhook** → **Forgejo**
|
|
3. Configurer:
|
|
- **Target URL**: URL du webhook Coolify (récupérée dans Coolify)
|
|
- **HTTP Method**: POST
|
|
- **POST Content Type**: application/json
|
|
- **Secret**: (copier depuis Coolify si nécessaire)
|
|
- **Trigger On**: ✅ Push events
|
|
- **Active**: ✅ Coché
|
|
4. Cliquer **Add Webhook**
|
|
|
|
### Étape 5: Créer l'application AgentHub dans Coolify (source Forgejo)
|
|
|
|
1. Dans Coolify, créer une nouvelle **Application**:
|
|
- Projet: **Barodine IA**
|
|
- Type: **Application** → **Git Repository**
|
|
- Source: **Private Repository (with Deploy Key)**
|
|
2. Configurer:
|
|
- **Git URL**: `https://git.barodine.net/username/agenthub.git`
|
|
- **Branch**: `main`
|
|
- **Build Pack**: Dockerfile
|
|
|
|
**Important:** Générer une Deploy Key SSH:
|
|
|
|
```bash
|
|
# Dans Coolify, aller dans l'application → Settings → Deploy Key
|
|
# Copier la clé publique SSH générée
|
|
|
|
# Dans Forgejo, aller dans le repo → Settings → Deploy Keys
|
|
# Ajouter la clé publique de Coolify
|
|
# ✅ Cocher "Read-only" (pas besoin de write)
|
|
```
|
|
|
|
### Étape 6: Variables d'environnement et déploiement
|
|
|
|
Même configuration que pour GitHub (voir Étape 4 de la section GitHub).
|
|
|
|
---
|
|
|
|
## Workflow Git recommandé
|
|
|
|
### Développement local
|
|
|
|
```bash
|
|
# 1. Créer une branche de feature
|
|
git checkout -b feature/nouvelle-fonctionnalite
|
|
|
|
# 2. Développer et commiter
|
|
git add .
|
|
git commit -m "feat: Ajouter nouvelle fonctionnalité"
|
|
|
|
# 3. Pousser vers le remote
|
|
git push origin feature/nouvelle-fonctionnalite
|
|
|
|
# 4. Créer une Pull Request (GitHub) ou Merge Request (Forgejo)
|
|
# Via l'interface web
|
|
```
|
|
|
|
### Déploiement en production
|
|
|
|
```bash
|
|
# 1. Merger la PR/MR dans main
|
|
# Via l'interface web
|
|
|
|
# 2. Le webhook déclenche automatiquement le déploiement Coolify
|
|
|
|
# 3. Vérifier le déploiement
|
|
curl https://agenthub.barodine.net/healthz
|
|
curl https://agenthub.barodine.net/metrics
|
|
```
|
|
|
|
### Rollback en cas de problème
|
|
|
|
```bash
|
|
# Option 1: Via Git (revert)
|
|
git revert HEAD
|
|
git push origin main
|
|
# Le webhook redéploie automatiquement la version précédente
|
|
|
|
# Option 2: Via Coolify
|
|
# Aller dans l'application → Deployments → Cliquer sur un déploiement précédent → "Redeploy"
|
|
```
|
|
|
|
---
|
|
|
|
## Intégration Prometheus/Grafana
|
|
|
|
Une fois AgentHub déployé avec l'endpoint `/metrics`:
|
|
|
|
### Configuration Prometheus
|
|
|
|
1. Créer/éditer `prometheus.yml`:
|
|
```yaml
|
|
scrape_configs:
|
|
- job_name: 'agenthub'
|
|
scrape_interval: 15s
|
|
static_configs:
|
|
- targets: ['agenthub.barodine.net:443']
|
|
scheme: https
|
|
```
|
|
|
|
2. Redémarrer Prometheus
|
|
|
|
### Import Dashboard Grafana
|
|
|
|
1. Ouvrir Grafana
|
|
2. **Dashboards** → **Import**
|
|
3. Uploader `agenthub/docs/grafana-dashboard.json`
|
|
4. Sélectionner la datasource Prometheus
|
|
5. Cliquer **Import**
|
|
|
|
---
|
|
|
|
## Checklist finale
|
|
|
|
### GitHub Setup
|
|
- [ ] Repository créé: https://github.com/barodine/agenthub
|
|
- [ ] Code poussé sur `main`
|
|
- [ ] Application créée dans Coolify
|
|
- [ ] Webhook GitHub → Coolify configuré
|
|
- [ ] Variables d'environnement configurées
|
|
- [ ] Base de données PostgreSQL créée
|
|
- [ ] Premier déploiement réussi
|
|
- [ ] Endpoint `/metrics` accessible
|
|
|
|
### Forgejo Setup
|
|
- [ ] Service Forgejo déployé sur Coolify
|
|
- [ ] Forgejo accessible via https://git.barodine.net
|
|
- [ ] Repository `agenthub` créé dans Forgejo
|
|
- [ ] Code migré de GitHub vers Forgejo
|
|
- [ ] Deploy Key SSH configurée (Coolify → Forgejo)
|
|
- [ ] Webhook Forgejo → Coolify configuré
|
|
- [ ] Application AgentHub créée dans Coolify (source Forgejo)
|
|
- [ ] Variables d'environnement configurées
|
|
- [ ] Base de données PostgreSQL créée
|
|
- [ ] Premier déploiement réussi
|
|
- [ ] Endpoint `/metrics` accessible
|
|
|
|
### Monitoring Setup
|
|
- [ ] Prometheus configuré pour scraper `/metrics`
|
|
- [ ] Dashboard Grafana importé
|
|
- [ ] Métriques visibles dans Grafana
|
|
- [ ] Alertes configurées (optionnel)
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Webhook ne déclenche pas le déploiement
|
|
|
|
1. Vérifier dans GitHub/Forgejo → Settings → Webhooks → Recent Deliveries
|
|
2. Vérifier que la réponse HTTP est 200
|
|
3. Vérifier les logs Coolify
|
|
4. Tester manuellement:
|
|
```bash
|
|
# Copier l'URL du webhook
|
|
curl -X POST "https://coolify.barodine.net/webhooks/xxx"
|
|
```
|
|
|
|
### Build échoue dans Coolify
|
|
|
|
1. Vérifier les logs de build dans Coolify
|
|
2. Problèmes courants:
|
|
- Dockerfile manquant → Vérifier que `Dockerfile` existe à la racine
|
|
- Dépendances manquantes → Vérifier `package.json`
|
|
- Variables d'environnement manquantes → Vérifier la config Coolify
|
|
|
|
### Endpoint `/metrics` retourne 404
|
|
|
|
1. Vérifier que le serveur démarre:
|
|
```bash
|
|
curl https://agenthub.barodine.net/healthz
|
|
```
|
|
2. Vérifier les logs de l'application dans Coolify
|
|
3. Vérifier que le port 3000 est bien mappé
|
|
4. Tester en local:
|
|
```bash
|
|
docker logs <container_id>
|
|
```
|
|
|
|
### Forgejo ne démarre pas
|
|
|
|
1. Vérifier les logs dans Coolify
|
|
2. Vérifier la connexion à la base de données:
|
|
```bash
|
|
docker exec -it forgejo sh
|
|
psql "postgres://postgres:PASSWORD@rffv6pfwpdftlhunzoishduj:5432/postgres"
|
|
```
|
|
3. Vérifier les variables d'environnement `FORGEJO__database__*`
|
|
|
|
---
|
|
|
|
## Prochaines étapes
|
|
|
|
1. ✅ Choisir entre GitHub ou Forgejo (ou les deux)
|
|
2. ✅ Suivre les étapes d'installation correspondantes
|
|
3. ✅ Déployer AgentHub via Coolify
|
|
4. ⏳ Configurer Prometheus pour scraper `/metrics`
|
|
5. ⏳ Importer le dashboard Grafana
|
|
6. ⏳ Tester le monitoring en conditions réelles
|
|
7. ⏳ Documenter les procédures opérationnelles (runbook)
|
|
|
|
---
|
|
|
|
## Ressources
|
|
|
|
- **Documentation AgentHub**: [`/agenthub/docs/`](../docs/)
|
|
- **Guide Forgejo**: [`FORGEJO-INSTALL.md`](./FORGEJO-INSTALL.md)
|
|
- **Métriques Prometheus**: [`METRICS.md`](./METRICS.md)
|
|
- **Dashboard Grafana**: [`grafana-dashboard.json`](./grafana-dashboard.json)
|
|
- **Coolify Docs**: https://coolify.io/docs
|
|
- **GitHub Webhooks**: https://docs.github.com/en/webhooks
|
|
- **Forgejo Docs**: https://forgejo.org/docs
|