feat: initial commit of robust gitea configuration
This commit is contained in:
commit
888d2ab4fc
|
|
@ -0,0 +1,12 @@
|
|||
# Secrets
|
||||
.env
|
||||
|
||||
# Docker Persistence
|
||||
data/
|
||||
db_data/
|
||||
config/
|
||||
|
||||
# Backups & Logs
|
||||
*.zip
|
||||
*.log
|
||||
docker-compose.yml.bak
|
||||
|
|
@ -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.
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue