feat: initial commit of robust gitea configuration

This commit is contained in:
Nicolas 2026-05-16 20:04:31 +02:00
commit 888d2ab4fc
4 changed files with 134 additions and 0 deletions

12
.gitignore vendored Normal file
View File

@ -0,0 +1,12 @@
# Secrets
.env
# Docker Persistence
data/
db_data/
config/
# Backups & Logs
*.zip
*.log
docker-compose.yml.bak

55
README.md Normal file
View File

@ -0,0 +1,55 @@
# Gitea - Git with a cup of tea
Instance Gitea auto-hébergée, robuste et performante, utilisant PostgreSQL.
## Architecture
- **Gitea** : Image Rootless (`gitea/gitea:1.21-rootless`)
- **Base de données** : PostgreSQL 16 (Alpine)
- **Réseaux** :
- `proxy_network` : Accès via Nginx Proxy Manager.
- `gitea_internal` : Communication privée entre Gitea et PostgreSQL.
## Configuration
- **URL Web** : `http://localhost:3001` (ou via ton domaine configuré dans NPM)
- **SSH** : Port `2222`
- **Utilisateur Système** : `nb` (UID 1001)
## Persistence
Les données sont stockées localement sur le SSD pour des performances optimales :
- `./data` : Données applicatives et dépôts Git.
- `./config` : Configuration Gitea (`app.ini`).
- `./db_data` : Fichiers de la base de données PostgreSQL.
## Sauvegardes (Backups)
Un script de sauvegarde automatisé est en place :
- **Script** : `./backup_gitea.sh`
- **Destination** : `/mnt/nas_freebox/backup/gitea/`
- **Fréquence** : Quotidienne à 03h00 via Cron.
- **Rétention** : 7 jours sur le NAS.
## Commandes utiles
```bash
# Lancer les services
docker compose up -d
# Arrêter les services
docker compose down
# Voir les logs
docker compose logs -f
# Lancer un backup manuel
./backup_gitea.sh
```
## Dépannage (Troubleshooting)
### Erreur réseau NPM (16/05/2026)
- **Problème** : Impossible d'accéder à Gitea via l'URL locale ou le domaine. NPM était arrêté avec l'erreur `network not found`.
- **Cause** : Désynchronisation de l'ID du réseau `proxy_network` après des modifications d'infrastructure.
- **Résolution** : Redémarrage complet de NPM via `docker compose down && docker compose up -d` pour forcer la reconnexion au réseau externe.

22
backup_gitea.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
BACKUP_DIR="/home/nb/docker/gitea/data"
NAS_DIR="/mnt/nas_freebox/backup/gitea"
DATE=$(date +%Y%m%d_%H%M%S)
echo "Starting Gitea backup: $DATE"
# Generate dump using new paths
docker exec -u 1001 gitea /usr/local/bin/gitea dump -c /etc/gitea/app.ini -f /var/lib/gitea/gitea-dump.zip
# Move to NAS
if [ -f "$BACKUP_DIR/gitea-dump.zip" ]; then
cp "$BACKUP_DIR/gitea-dump.zip" "$NAS_DIR/gitea_backup_$DATE.zip"
rm "$BACKUP_DIR/gitea-dump.zip"
echo "Backup successful: $NAS_DIR/gitea_backup_$DATE.zip"
else
echo "Backup failed: Dump file not found"
exit 1
fi
# Retention: keep 7 days
find "$NAS_DIR" -name "gitea_backup_*.zip" -mtime +7 -delete

45
docker-compose.yml Normal file
View File

@ -0,0 +1,45 @@
services:
server:
image: gitea/gitea:1.21-rootless
container_name: gitea
user: "1001:1001"
restart: unless-stopped
environment:
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db-gitea:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=${DB_PASSWORD}
- INSTALL_LOCK=true
networks:
- proxy_network
- gitea_internal
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3001:3000"
- "2222:2222"
depends_on:
- db-gitea
db-gitea:
image: postgres:16-alpine
container_name: gitea-db
restart: unless-stopped
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=gitea
networks:
- gitea_internal
volumes:
- ./db_data:/var/lib/postgresql/data
networks:
proxy_network:
external: true
gitea_internal:
driver: bridge