KoproGo - DĂ©ploiement GitOps Automatiqueï
Guide complet pour déployer KoproGo avec mises à jour automatiques depuis GitHub.
Philosophieï
100% Self-Hosted + Auto-Update : KoproGo ne propose AUCUN service cloud payant. Chaque utilisateur hĂ©berge sa propre instance (VPS, machine locale, ou mĂȘme Raspberry Pi), et peut configurer les mises Ă jour automatiques depuis le dĂ©pĂŽt GitHub officiel.
Avantages :
â GratuitĂ© totale : 0⏠pour le logiciel (coĂ»t VPS ~5-7âŹ/mois si cloud)
â SouverainetĂ© des donnĂ©es : Vos donnĂ©es restent sur VOTRE serveur
â Updates automatiques : Pull automatique des nouvelles versions
â SĂ©curitĂ© : Patches de sĂ©curitĂ© appliquĂ©s automatiquement
â Rollback facile : Revenir Ă une version prĂ©cĂ©dente en 1 commande
â 0 vendor lock-in : Vous contrĂŽlez 100% de lâinfrastructure
PrĂ©requisï
Serveur :
VPS Linux (Ubuntu 22.04+ recommandé) ou machine locale
1 vCPU, 2GB RAM minimum (suffit pour 1,000-1,500 copropriétés)
20GB espace disque minimum
AccĂšs SSH root ou sudo
Logiciels :
Docker 24+ (installation ci-dessous)
Docker Compose v2+ (plugin Docker)
Git 2.30+
Domaine (optionnel) :
Nom de domaine pointant vers votre VPS (pour SSL/HTTPS automatique)
Ou utiliser IP directe (HTTP seulement, OK pour usage local)
Installation Rapide (1-Click)ï
Option 1 : Script Auto-Install (RecommandĂ©)ï
# Télécharger et exécuter le script d'installation
curl -fsSL https://raw.githubusercontent.com/gilmry/koprogo/main/scripts/install.sh | bash
# Ou si vous préférez inspecter avant :
curl -fsSL https://raw.githubusercontent.com/gilmry/koprogo/main/scripts/install.sh -o install.sh
cat install.sh # Inspecter le script
bash install.sh
Ce que fait le script :
Installe Docker + Docker Compose si manquant
Clone le dépÎt KoproGo
Crée fichier
.envavec configuration par défautConfigure auto-update via cron
Lance les services Docker
Affiche URL dâaccĂšs
Durée : 2-5 minutes
Option 2 : Installation Manuelle (ContrĂŽle Total)ï
Ătape 1 : Installer Dockerï
# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Ajouter utilisateur au groupe docker
sudo usermod -aG docker $USER
newgrp docker # Activer immédiatement
# Vérifier
docker --version
docker compose version
Ătape 2 : Cloner KoproGoï
# Choisir répertoire installation
cd ~
mkdir -p apps && cd apps
# Cloner le dépÎt
git clone https://github.com/gilmry/koprogo.git
cd koprogo
# Checkout version stable (tag)
git checkout $(git describe --tags --abbrev=0)
# Ou rester sur main pour derniĂšre version
Ătape 3 : Configurationï
# Copier fichier env exemple
cp .env.example .env
# Ăditer configuration
nano .env
Variables importantes :
# Base de données
DATABASE_URL=postgresql://koprogo:CHANGE_THIS_PASSWORD@postgres:5432/koprogo_db
# Serveur
SERVER_HOST=0.0.0.0
SERVER_PORT=8080
# Logs
RUST_LOG=info
# Domaine (si vous avez un domaine)
DOMAIN=votre-domaine.com # ou IP
# SSL (via Traefik)
ENABLE_SSL=true # false si pas de domaine
ACME_EMAIL=your-email@example.com
â ïž IMPORTANT : Changez le mot de passe PostgreSQL !
Ătape 4 : Premier Lancementï
# Lancer tous les services
docker compose up -d
# Vérifier que tout tourne
docker compose ps
# Voir les logs
docker compose logs -f
# Une fois OK, Ctrl+C pour quitter les logs
Ătape 5 : VĂ©rifier Installationï
# Test santé API
curl http://localhost:8080/api/v1/health
# Devrait retourner : {"status":"healthy"}
AccĂšs Frontend :
Local : http://localhost:3000 (si frontend lancé)
Ou avec domaine : https://votre-domaine.com
Auto-Update GitOpsï
MĂ©thode 1 : Cron Job (Simple)ï
Configuration auto-update quotidienne :
# Créer script update
cat > ~/apps/koprogo/scripts/auto-update.sh << 'EOF'
#!/bin/bash
set -e
cd ~/apps/koprogo
# Fetch derniĂšres versions
git fetch --tags
# Backup avant update
docker compose exec postgres pg_dump -U koprogo koprogo_db > backups/pre-update-$(date +%Y%m%d).sql
# Pull derniĂšre version stable (tags)
LATEST_TAG=$(git describe --tags --abbrev=0)
git checkout $LATEST_TAG
# Rebuild et redémarrer
docker compose pull
docker compose up -d --build
# Vérifier santé
sleep 10
curl -f http://localhost:8080/api/v1/health || echo "Warning: Health check failed"
echo "Update completed to version $LATEST_TAG"
EOF
chmod +x ~/apps/koprogo/scripts/auto-update.sh
Ajouter au cron :
crontab -e
# Ajouter cette ligne (update tous les jours Ă 3h du matin)
0 3 * * * /home/$USER/apps/koprogo/scripts/auto-update.sh >> /var/log/koprogo-update.log 2>&1
MĂ©thode 2 : GitHub Actions Self-Hosted Runner (AvancĂ©)ï
Avantages :
Update immédiat aprÚs chaque release GitHub
Notifications Discord/Slack si échec
Rollback automatique si health check fail
Setup :
# 1. Installer GitHub Actions runner sur votre VPS
# Suivre : https://docs.github.com/en/actions/hosting-your-own-runners
# 2. Créer workflow dans .github/workflows/auto-deploy.yml
# (Fourni dans le dépÎt KoproGo)
# 3. Runner écoute GitHub et déploie automatiquement
Workflow exemple (.github/workflows/self-deploy.yml) :
name: Self-Deploy
on:
release:
types: [published]
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.release.tag_name }}
- name: Backup Database
run: |
docker compose exec -T postgres pg_dump -U koprogo koprogo_db > backups/pre-${{ github.event.release.tag_name }}.sql
- name: Pull & Rebuild
run: |
docker compose pull
docker compose up -d --build
- name: Health Check
run: |
sleep 10
curl -f http://localhost:8080/api/v1/health
- name: Notify Discord
if: always()
run: |
# Webhook Discord (optionnel)
curl -X POST ${{ secrets.DISCORD_WEBHOOK }} \
-H 'Content-Type: application/json' \
-d '{"content":"KoproGo updated to ${{ github.event.release.tag_name }}: ${{ job.status }}"}'
MĂ©thode 3 : Watchtower (Docker Auto-Update)ï
Plus simple : Watchtower surveille images Docker et update automatiquement.
# Ajouter Watchtower au docker-compose.yml
services:
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_POLL_INTERVAL=86400 # Check daily
- WATCHTOWER_INCLUDE_STOPPED=true
restart: unless-stopped
Relancer :
docker compose up -d
Watchtower va maintenant vérifier quotidiennement si de nouvelles images sont disponibles sur Docker Hub et mettre à jour automatiquement.
Versioning & Rollbackï
Rollback si ProblĂšmeï
# Revenir à version précédente
git checkout v0.2.1 # Version qui marchait
docker compose up -d --build
# Restaurer backup DB si nécessaire
docker compose exec -T postgres psql -U koprogo -d koprogo_db < backups/pre-v1.0.0.sql
Monitoring & Maintenanceï
VĂ©rifier Statusï
# Services actifs
docker compose ps
# Logs en direct
docker compose logs -f
# Logs service spécifique
docker compose logs -f backend
# Disk usage
docker system df
Backupsï
Backup automatique quotidien :
# Script backup
cat > ~/apps/koprogo/scripts/backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR=~/apps/koprogo/backups
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Backup PostgreSQL
docker compose exec -T postgres pg_dump -U koprogo koprogo_db | gzip > $BACKUP_DIR/koprogo_$DATE.sql.gz
# Garder 7 derniers jours
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
echo "Backup created: $BACKUP_DIR/koprogo_$DATE.sql.gz"
EOF
chmod +x ~/apps/koprogo/scripts/backup.sh
# Ajouter au cron (tous les jours Ă 2h)
crontab -e
# Ajouter : 0 2 * * * ~/apps/koprogo/scripts/backup.sh >> /var/log/koprogo-backup.log 2>&1
Monitoring Uptimeï
Option 1 : UptimeRobot (gratuit, externe)
https://uptimerobot.com
Surveille votre instance toutes les 5 minutes
Alerte email/SMS si down
Option 2 : Script local
# Health check cron
crontab -e
# Ajouter : */5 * * * * curl -f http://localhost:8080/api/v1/health || echo "KoproGo DOWN" | mail -s "Alert" your-email@example.com
SĂ©curitĂ©ï
SSL/HTTPS (via Traefik)ï
KoproGo utilise Traefik pour SSL automatique avec Letâs Encrypt.
Configuration (dans .env) :
DOMAIN=votre-domaine.com
ENABLE_SSL=true
ACME_EMAIL=your-email@example.com
Traefik génÚre automatiquement :
Certificat SSL Letâs Encrypt
Renouvellement auto (avant expiration)
Redirect HTTP â HTTPS
Firewallï
# Installer UFW (Ubuntu)
sudo apt install ufw
# Allow SSH
sudo ufw allow 22/tcp
# Allow HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Enable
sudo ufw enable
# Status
sudo ufw status
Secretsï
Ne JAMAIS committer .env dans Git !
# .gitignore inclut déjà .env
# Vérifier
git status # .env ne doit PAS apparaĂźtre
Changer mot de passe DB :
# Générer password sécurisé
openssl rand -base64 32
# Ăditer .env
nano .env
# DATABASE_URL=postgresql://koprogo:NEW_SECURE_PASSWORD@postgres:5432/koprogo_db
# Recréer containers
docker compose down
docker compose up -d
Troubleshootingï
Service ne dĂ©marre pasï
# Voir logs erreur
docker compose logs backend
# Vérifier .env
cat .env | grep DATABASE_URL
# Recréer containers
docker compose down
docker compose up -d --build
Base de donnĂ©es corrompueï
# Restaurer backup
docker compose exec -T postgres psql -U koprogo -d koprogo_db < backups/latest.sql
# Ou recréer DB
docker compose down -v # â ïž Supprime toutes les donnĂ©es
docker compose up -d
Out of Disk Spaceï
# Nettoyer Docker
docker system prune -a
docker volume prune
# Nettoyer logs
sudo journalctl --vacuum-time=7d
# Nettoyer vieux backups
find ~/apps/koprogo/backups -name "*.sql.gz" -mtime +30 -delete
Update Ă©choueï
# Revenir version précédente
git checkout v0.2.1 # Version stable
docker compose up -d --build
# Restaurer DB
docker compose exec -T postgres psql -U koprogo -d koprogo_db < backups/pre-update.sql
# Reporter issue GitHub
# https://github.com/gilmry/koprogo/issues
Contribuerï
KoproGo est 100% open-source (MIT). Si vous améliorez le déploiement GitOps :
Fork le dépÎt
Créer branche :
git checkout -b feature/improve-deployCommit :
git commit -m "feat: improve auto-update script"Push :
git push origin feature/improve-deployOuvrir Pull Request sur GitHub
Guidelines :
Tester sur Ubuntu 22.04 minimum
Documenter changements dans ce fichier
Ajouter tests si applicable
Supportï
ProblĂšme dâinstallation ?
Discord communauté : [à créer]
GitHub Issues : https://github.com/gilmry/koprogo/issues
Documentation : https://docs.koprogo.com (Ă venir)
Auto-hĂ©bergement â Support garanti : KoproGo est gratuit et bĂ©nĂ©vole. Le support communautaire est basĂ© sur lâentraide. Soyez patient et contribuez si vous pouvez !
KoproGo ASBL - Un bien commun numĂ©rique đïžđ
Auto-hébergement + GitOps = Souveraineté totale