- 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>
144 lines
3.5 KiB
Markdown
144 lines
3.5 KiB
Markdown
# Guides Forgejo
|
|
|
|
Guides spécifiques pour administrer et sécuriser une instance Forgejo (forge Git auto-hébergée).
|
|
|
|
## 📚 Guides disponibles
|
|
|
|
### 🚀 Démarrage rapide
|
|
|
|
**[QUICK-START.md](QUICK-START.md)**
|
|
- **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](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 :**
|
|
1. Appliquer : [QUICK-START.md](QUICK-START.md)
|
|
2. Nettoyage : `find /path/repo-archive -type f -delete`
|
|
|
|
**Solution complète :**
|
|
1. Lire : [bloquer-telechargements-abusifs.md](bloquer-telechargements-abusifs.md)
|
|
2. Appliquer la configuration recommandée
|
|
3. Monitorer pendant 48h
|
|
|
|
### Configuration préventive
|
|
**Vous installez Forgejo ou voulez sécuriser préventivement :**
|
|
1. Lire la section "Configuration complète" de [bloquer-telechargements-abusifs.md](bloquer-telechargements-abusifs.md)
|
|
2. Appliquer avant de rendre public
|
|
|
|
---
|
|
|
|
## ⚙️ Configuration type recommandée
|
|
|
|
### Fail2ban (`/etc/fail2ban/jail.d/forgejo.conf`)
|
|
```ini
|
|
[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`)
|
|
```ini
|
|
[api]
|
|
ENABLE_RATE_LIMIT = true
|
|
RATE_LIMIT_BURST = 20
|
|
RATE_LIMIT_PERIOD = 60s
|
|
|
|
[repository.local]
|
|
ARCHIVE_EXPIRY = 3600
|
|
```
|
|
|
|
### Cron
|
|
```bash
|
|
# Nettoyage toutes les 6h (fichiers de +6h)
|
|
0 */6 * * * find /path/repo-archive -type f -mmin +360 -delete
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 Monitoring quotidien
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
```
|
|
|
|
---
|
|
|
|
[← Retour à l'index principal](../README.md)
|