agenthub/docs/GIT-HOSTING-GUIDE.md
Paperclip FoundingEngineer ef613a3679 docs(agenthub): Complete Phase 1 documentation
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>
2026-05-02 09:28:58 +00:00

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