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>
330 lines
8.3 KiB
Markdown
330 lines
8.3 KiB
Markdown
# Installation Forgejo sur 192.168.9.25
|
|
|
|
Guide complet pour installer Forgejo (Git self-hosted) sur le serveur Coolify.
|
|
|
|
## Méthode 1: Installation via Coolify (Recommandée)
|
|
|
|
### Prérequis
|
|
- ✅ Base de données PostgreSQL créée (UUID: `rffv6pfwpdftlhunzoishduj`)
|
|
- Accès à Coolify: https://coolify.barodine.net
|
|
|
|
### Étapes
|
|
|
|
#### 1. Créer le service Forgejo dans Coolify
|
|
|
|
1. Ouvrir Coolify: https://coolify.barodine.net
|
|
2. Aller dans le projet **"Barodine IA"**
|
|
3. Cliquer sur **"+ New Resource"** → **"Service"** → **"Docker Image"**
|
|
|
|
#### 2. Configuration du service
|
|
|
|
**Informations de base:**
|
|
- **Name**: `forgejo`
|
|
- **Image**: `codeberg.org/forgejo/forgejo:9`
|
|
- **Port**: `3000`
|
|
|
|
**Domain:**
|
|
- **FQDN**: `git.barodine.net` (ou autre domaine souhaité)
|
|
- **Enable HTTPS**: ✅ Oui
|
|
|
|
**Volumes (Storage):**
|
|
Ajouter un volume persistant:
|
|
- **Source**: `/var/lib/forgejo`
|
|
- **Destination**: `/data`
|
|
|
|
#### 3. Variables d'environnement
|
|
|
|
Ajouter ces variables dans l'onglet "Environment Variables":
|
|
|
|
```bash
|
|
# Base de données
|
|
FORGEJO__database__DB_TYPE=postgres
|
|
FORGEJO__database__HOST=rffv6pfwpdftlhunzoishduj:5432
|
|
FORGEJO__database__NAME=postgres
|
|
FORGEJO__database__USER=postgres
|
|
FORGEJO__database__PASSWD=UpW5nyYcNSy88bQiNppIRdFKrtul2Bu4hXzxitzcB4IHU9sAzGc2mkndvKdA1J42
|
|
|
|
# Configuration serveur
|
|
FORGEJO__server__DOMAIN=git.barodine.net
|
|
FORGEJO__server__ROOT_URL=https://git.barodine.net
|
|
FORGEJO__server__HTTP_PORT=3000
|
|
FORGEJO__server__PROTOCOL=http
|
|
FORGEJO__server__START_SSH_SERVER=true
|
|
FORGEJO__server__SSH_PORT=2222
|
|
FORGEJO__server__SSH_LISTEN_PORT=22
|
|
|
|
# Sécurité
|
|
FORGEJO__security__INSTALL_LOCK=false
|
|
FORGEJO__security__SECRET_KEY=changeme-generate-random-secret-key-here
|
|
|
|
# Service
|
|
FORGEJO__service__DISABLE_REGISTRATION=false
|
|
FORGEJO__service__REQUIRE_SIGNIN_VIEW=false
|
|
FORGEJO__service__ENABLE_NOTIFY_MAIL=false
|
|
|
|
# Session
|
|
FORGEJO__session__PROVIDER=memory
|
|
```
|
|
|
|
#### 4. Déployer
|
|
|
|
1. Cliquer sur **"Deploy"**
|
|
2. Attendre que le service démarre (~1-2 minutes)
|
|
3. Vérifier les logs dans l'onglet "Logs"
|
|
|
|
#### 5. Configuration initiale de Forgejo
|
|
|
|
1. Ouvrir https://git.barodine.net
|
|
2. Vous serez redirigé vers la page d'installation
|
|
3. Les paramètres DB sont déjà configurés via les env vars
|
|
4. Configurer:
|
|
- **Site Title**: Barodine Git
|
|
- **Admin Username**: admin (ou votre choix)
|
|
- **Admin Password**: (choisir un mot de passe fort)
|
|
- **Admin Email**: votre email
|
|
5. Cliquer sur **"Install Forgejo"**
|
|
|
|
#### 6. Activer SSH (optionnel)
|
|
|
|
Pour cloner/pousser via SSH:
|
|
|
|
1. Dans Coolify, aller dans **"Forgejo"** → **"Networking"**
|
|
2. Ajouter un **"TCP Port Mapping"**:
|
|
- **Host Port**: `2222`
|
|
- **Container Port**: `22`
|
|
3. Redémarrer le service
|
|
|
|
Cloner via SSH deviendra:
|
|
```bash
|
|
git clone ssh://git@git.barodine.net:2222/username/repo.git
|
|
```
|
|
|
|
---
|
|
|
|
## Méthode 2: Installation via Docker Compose (Alternative)
|
|
|
|
Si vous préférez une installation Docker Compose manuelle:
|
|
|
|
### 1. Se connecter au serveur
|
|
|
|
```bash
|
|
ssh user@192.168.9.25
|
|
```
|
|
|
|
### 2. Créer le répertoire de données
|
|
|
|
```bash
|
|
sudo mkdir -p /var/lib/forgejo
|
|
sudo chown -R 1000:1000 /var/lib/forgejo
|
|
```
|
|
|
|
### 3. Créer `docker-compose.yml`
|
|
|
|
```bash
|
|
cat > forgejo-compose.yml <<'EOF'
|
|
version: '3'
|
|
|
|
services:
|
|
forgejo:
|
|
image: codeberg.org/forgejo/forgejo:9
|
|
container_name: forgejo
|
|
restart: unless-stopped
|
|
environment:
|
|
- USER_UID=1000
|
|
- USER_GID=1000
|
|
- FORGEJO__database__DB_TYPE=postgres
|
|
- FORGEJO__database__HOST=rffv6pfwpdftlhunzoishduj:5432
|
|
- FORGEJO__database__NAME=postgres
|
|
- FORGEJO__database__USER=postgres
|
|
- FORGEJO__database__PASSWD=UpW5nyYcNSy88bQiNppIRdFKrtul2Bu4hXzxitzcB4IHU9sAzGc2mkndvKdA1J42
|
|
- FORGEJO__server__DOMAIN=git.barodine.net
|
|
- FORGEJO__server__ROOT_URL=https://git.barodine.net
|
|
- FORGEJO__server__HTTP_PORT=3000
|
|
volumes:
|
|
- /var/lib/forgejo:/data
|
|
- /etc/timezone:/etc/timezone:ro
|
|
- /etc/localtime:/etc/localtime:ro
|
|
ports:
|
|
- "3000:3000"
|
|
- "2222:22"
|
|
networks:
|
|
- coolify
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.forgejo.rule=Host(\`git.barodine.net\`)"
|
|
- "traefik.http.routers.forgejo.entrypoints=https"
|
|
- "traefik.http.routers.forgejo.tls=true"
|
|
- "traefik.http.routers.forgejo.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.forgejo.loadbalancer.server.port=3000"
|
|
|
|
networks:
|
|
coolify:
|
|
external: true
|
|
EOF
|
|
```
|
|
|
|
### 4. Démarrer Forgejo
|
|
|
|
```bash
|
|
docker compose -f forgejo-compose.yml up -d
|
|
```
|
|
|
|
### 5. Vérifier les logs
|
|
|
|
```bash
|
|
docker logs -f forgejo
|
|
```
|
|
|
|
---
|
|
|
|
## Post-Installation
|
|
|
|
### 1. Créer le premier repository (AgentHub)
|
|
|
|
1. Se connecter à Forgejo: https://git.barodine.net
|
|
2. Cliquer sur **"+"** → **"New Repository"**
|
|
3. Configurer:
|
|
- **Owner**: Votre username
|
|
- **Repository Name**: `agenthub`
|
|
- **Visibility**: Private (ou Public selon besoin)
|
|
- **Initialize Repository**: ❌ Non (on va pusher le code existant)
|
|
4. Cliquer sur **"Create Repository"**
|
|
|
|
### 2. Configurer le remote Git local
|
|
|
|
```bash
|
|
cd /home/alexandre/.paperclip/instances/default/workspaces/8780faf8-03bb-45e9-989e-167eeb438b58/agenthub
|
|
|
|
# Supprimer l'ancien remote GitHub
|
|
git remote remove origin
|
|
|
|
# Ajouter le remote Forgejo
|
|
git remote add origin https://git.barodine.net/username/agenthub.git
|
|
|
|
# Pousser le code
|
|
git push -u origin main
|
|
```
|
|
|
|
### 3. Configurer Coolify pour déployer depuis Forgejo
|
|
|
|
1. Dans Coolify, créer une nouvelle **Application**
|
|
2. **Source**: Git Repository
|
|
3. **Git URL**: `https://git.barodine.net/username/agenthub.git`
|
|
4. **Branch**: `main`
|
|
5. **Build Pack**: Dockerfile
|
|
6. Configurer les variables d'environnement (voir section suivante)
|
|
|
|
---
|
|
|
|
## Configuration AgentHub sur Coolify
|
|
|
|
### Variables d'environnement
|
|
|
|
```bash
|
|
NODE_ENV=production
|
|
HOST=0.0.0.0
|
|
PORT=3000
|
|
LOG_LEVEL=info
|
|
|
|
# PostgreSQL (créer une nouvelle DB pour AgentHub)
|
|
POSTGRES_HOST=<db_uuid_here>
|
|
POSTGRES_PORT=5432
|
|
POSTGRES_USER=postgres
|
|
POSTGRES_PASSWORD=<db_password_here>
|
|
POSTGRES_DB=postgres
|
|
|
|
# Sécurité
|
|
JWT_SECRET=<générer_un_secret_32_chars>
|
|
ALLOWED_ORIGINS=https://agenthub.barodine.net
|
|
ENABLE_HSTS=true
|
|
|
|
# Features
|
|
FEATURE_MESSAGING_ENABLED=true
|
|
```
|
|
|
|
### Créer la base de données AgentHub
|
|
|
|
```bash
|
|
curl -X POST "$COOLIFY_API_URL/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",
|
|
"image": "postgres:16-alpine",
|
|
"instant_deploy": true
|
|
}'
|
|
```
|
|
|
|
---
|
|
|
|
## Webhooks et CI/CD
|
|
|
|
### Activer les webhooks Forgejo → Coolify
|
|
|
|
1. Dans Forgejo, aller dans le repo **agenthub** → **Settings** → **Webhooks**
|
|
2. Cliquer sur **"Add Webhook"** → **"Forgejo"**
|
|
3. Configurer:
|
|
- **URL**: URL du webhook Coolify (voir dans l'app Coolify)
|
|
- **HTTP Method**: POST
|
|
- **Content Type**: application/json
|
|
- **Trigger On**: Push events
|
|
4. Sauvegarder
|
|
|
|
Maintenant, chaque `git push` déclenchera un rebuild automatique dans Coolify!
|
|
|
|
---
|
|
|
|
## Résumé des URLs
|
|
|
|
| Service | URL | Port |
|
|
|---------|-----|------|
|
|
| Forgejo Web | https://git.barodine.net | 443 |
|
|
| Forgejo SSH | git.barodine.net | 2222 |
|
|
| AgentHub | https://agenthub.barodine.net | 443 |
|
|
| AgentHub Metrics | https://agenthub.barodine.net/metrics | 443 |
|
|
| Coolify | https://coolify.barodine.net | 443 |
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Forgejo ne démarre pas
|
|
|
|
```bash
|
|
# Vérifier les logs
|
|
docker logs forgejo
|
|
|
|
# Vérifier la connexion DB
|
|
docker exec -it forgejo sh
|
|
psql "postgres://postgres:PASSWORD@rffv6pfwpdftlhunzoishduj:5432/postgres"
|
|
```
|
|
|
|
### Erreur "database is locked"
|
|
|
|
- Forgejo utilise SQLite par défaut si la config DB échoue
|
|
- Vérifier que toutes les env vars `FORGEJO__database__*` sont correctes
|
|
- Redémarrer le service
|
|
|
|
### SSH ne fonctionne pas
|
|
|
|
1. Vérifier que le port 2222 est mappé dans Coolify
|
|
2. Vérifier que le firewall autorise le port 2222:
|
|
```bash
|
|
sudo ufw allow 2222/tcp
|
|
```
|
|
|
|
---
|
|
|
|
## Prochaines étapes
|
|
|
|
1. ✅ Installer Forgejo via Coolify (Méthode 1)
|
|
2. ✅ Créer le repository AgentHub
|
|
3. ✅ Pousser le code depuis le workspace local
|
|
4. ⏳ Créer la DB PostgreSQL pour AgentHub
|
|
5. ⏳ Créer l'application AgentHub dans Coolify
|
|
6. ⏳ Déployer et tester l'endpoint `/metrics`
|
|
7. ⏳ Configurer Prometheus et Grafana
|