- Nouvelle structure : linux-essentials/ et forgejo/ - Nouveau guide : architecture-filesystem.md (comprendre /etc, /var, etc.) - Déplacement et renommage des guides existants - README pour chaque dossier - Suppression des sections auteurs Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
3.5 KiB
3.5 KiB
Guides Forgejo
Guides spécifiques pour administrer et sécuriser une instance Forgejo (forge Git auto-hébergée).
📚 Guides disponibles
🚀 Démarrage rapide
- Objectif : Sécuriser Forgejo contre les bots en 15 minutes
- Contenu : Configuration Fail2ban, rate limiting, cron de nettoyage
- Niveau : Intermédiaire
- Temps : 15 min
🛡️ Guide complet
bloquer-telechargements-abusifs.md
- Objectif : Empêcher les bots de saturer le disque avec des téléchargements massifs d'archives
- Contenu : Fail2ban détaillé, rate limiting, expiration des archives, monitoring, 5 solutions
- Niveau : Intermédiaire
- Temps : 30-60 min
🎯 Par situation
Disque saturé par repo-archive
Symptôme : /var/lib/docker/.../repo-archive fait 40-50G
Action rapide :
- Appliquer : QUICK-START.md
- Nettoyage :
find /path/repo-archive -type f -delete
Solution complète :
- Lire : bloquer-telechargements-abusifs.md
- Appliquer la configuration recommandée
- Monitorer pendant 48h
Configuration préventive
Vous installez Forgejo ou voulez sécuriser préventivement :
- Lire la section "Configuration complète" de bloquer-telechargements-abusifs.md
- Appliquer avant de rendre public
⚙️ Configuration type recommandée
Fail2ban (/etc/fail2ban/jail.d/forgejo.conf)
[forgejo-archive]
enabled = true
filter = forgejo-archive
logpath = /var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log
maxretry = 8
findtime = 600
bantime = 21600
bantime.increment = true
bantime.factor = 2
bantime.maxtime = 604800
Forgejo (app.ini)
[api]
ENABLE_RATE_LIMIT = true
RATE_LIMIT_BURST = 20
RATE_LIMIT_PERIOD = 60s
[repository.local]
ARCHIVE_EXPIRY = 3600
Cron
# Nettoyage toutes les 6h (fichiers de +6h)
0 */6 * * * find /path/repo-archive -type f -mmin +360 -delete
🔍 Monitoring quotidien
# Taille du cache (objectif : < 5G)
du -sh /home/debian/forgejo/data/gitea/repo-archive
# Fail2ban status
sudo fail2ban-client status forgejo-archive
# Top 5 IP actives (24h)
docker logs forgejo --since 24h | grep "archive" | grep -oP '\d+\.\d+\.\d+\.\d+' | sort | uniq -c | sort -rn | head -5
# Nombre d'archives téléchargées (24h)
docker logs forgejo --since 24h | grep "archive" | wc -l
📊 Métriques de santé
| Métrique | Valeur saine | Alerte |
|---|---|---|
Taille cache repo-archive |
< 5 GB | > 10 GB |
| Nombre de fichiers | < 300 | > 500 |
| IP bannies/jour | 1-5 | > 10 |
| Archives téléchargées/jour | < 100 | > 500 |
🆘 Dépannage rapide
Le cache se remplit encore
# 1. Vérifier la config Forgejo
cat /path/to/app.ini | grep -A3 "\[api\]"
docker restart forgejo
# 2. Vérifier Fail2ban
sudo fail2ban-client status forgejo-archive
# 3. Identifier les IP actives
docker logs forgejo --since 1h | grep "archive" | grep -oP '\d+\.\d+\.\d+\.\d+' | sort | uniq -c | sort -rn
# 4. Bannir manuellement si besoin
sudo fail2ban-client set forgejo-archive banip IP_SUSPECTE
Fail2ban ne bannit pas
# Tester le filtre
sudo fail2ban-regex /var/lib/docker/containers/.../...json.log /etc/fail2ban/filter.d/forgejo-archive.conf
# Vérifier les logs
sudo journalctl -u fail2ban -n 50
# Redémarrer
sudo systemctl restart fail2ban