Wiki completa de Gitea: 9 páginas en español
290
Actualización.md
Normal file
290
Actualización.md
Normal file
@@ -0,0 +1,290 @@
|
|||||||
|
# Actualización
|
||||||
|
|
||||||
|
Mantén Gitea y PostgreSQL actualizados para obtener nuevas características y parches de seguridad.
|
||||||
|
|
||||||
|
## 🔄 Actualización desde Portainer
|
||||||
|
|
||||||
|
### Método 1: Git Repository Stack
|
||||||
|
|
||||||
|
Si desplegaste usando Git Repository:
|
||||||
|
|
||||||
|
1. Ve a **Stacks** → Tu stack `gitea`
|
||||||
|
2. Haz clic en **Pull and redeploy**
|
||||||
|
3. Portainer:
|
||||||
|
- Descarga la última versión del compose desde Git
|
||||||
|
- Descarga las imágenes Docker actualizadas
|
||||||
|
- Recrea los contenedores
|
||||||
|
|
||||||
|
⏱️ **Tiempo estimado**: 2-5 minutos (con downtime)
|
||||||
|
|
||||||
|
### Método 2: Web Editor Stack
|
||||||
|
|
||||||
|
Si usaste Web Editor:
|
||||||
|
|
||||||
|
1. Ve a **Stacks** → Tu stack `gitea`
|
||||||
|
2. Haz clic en **Editor**
|
||||||
|
3. No cambies nada (usa `latest` tag)
|
||||||
|
4. Haz clic en **Update the stack**
|
||||||
|
5. ✅ Marca **Re-pull image and redeploy**
|
||||||
|
|
||||||
|
## 🖥️ Actualización desde CLI
|
||||||
|
|
||||||
|
### Actualización Estándar
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /path/to/gitea
|
||||||
|
|
||||||
|
# 1. Hacer backup antes de actualizar
|
||||||
|
./backup-gitea.sh # Si tienes script de backup
|
||||||
|
|
||||||
|
# 2. Descargar nuevas imágenes
|
||||||
|
docker compose pull
|
||||||
|
|
||||||
|
# 3. Recrear contenedores
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# 4. Verificar logs
|
||||||
|
docker compose logs -f
|
||||||
|
```
|
||||||
|
|
||||||
|
### Actualización con Downtime Mínimo
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Pull de imágenes (sin downtime)
|
||||||
|
docker compose pull
|
||||||
|
|
||||||
|
# 2. Recrear solo Gitea (downtime ~10 segundos)
|
||||||
|
docker compose up -d --no-deps gitea
|
||||||
|
|
||||||
|
# 3. Verificar
|
||||||
|
docker compose ps
|
||||||
|
docker compose logs gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📋 Checklist Pre-Actualización
|
||||||
|
|
||||||
|
Antes de actualizar, verifica:
|
||||||
|
|
||||||
|
- ✅ **Backup reciente**: Tienes backup de datos y BD
|
||||||
|
- ✅ **Changelog revisado**: Lee [Gitea Releases](https://github.com/go-gitea/gitea/releases)
|
||||||
|
- ✅ **Breaking changes**: Verifica si hay cambios que rompan compatibilidad
|
||||||
|
- ✅ **Migraciones de BD**: Algunas versiones requieren migraciones
|
||||||
|
- ✅ **Tiempo de ventana**: Planifica mantenimiento si es producción
|
||||||
|
|
||||||
|
## 🔍 Verificar Versión Actual
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ver versión de Gitea
|
||||||
|
docker compose exec gitea gitea --version
|
||||||
|
|
||||||
|
# Ver versión de PostgreSQL
|
||||||
|
docker compose exec gitea-db psql --version
|
||||||
|
|
||||||
|
# Ver tags de imágenes
|
||||||
|
docker compose images
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🆙 Actualizar a Versión Específica
|
||||||
|
|
||||||
|
Si necesitas una versión específica en lugar de `latest`:
|
||||||
|
|
||||||
|
### Editar docker-compose.yml
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
gitea:
|
||||||
|
image: gitea/gitea:1.21.0 # En lugar de :latest
|
||||||
|
|
||||||
|
gitea-db:
|
||||||
|
image: postgres:16-alpine # Mantener versión
|
||||||
|
```
|
||||||
|
|
||||||
|
### Actualizar
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose pull
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔄 Migraciones Automáticas
|
||||||
|
|
||||||
|
Gitea ejecuta migraciones de base de datos automáticamente al iniciar:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ver logs de migración
|
||||||
|
docker compose logs gitea | grep -i migrat
|
||||||
|
|
||||||
|
# Ejemplo de salida:
|
||||||
|
# [I] [SQL] Running migration: v123 -> Add new column to issues table
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ Las migraciones son irreversibles. Por eso es crítico hacer backup antes.
|
||||||
|
|
||||||
|
## 🐘 Actualizar PostgreSQL
|
||||||
|
|
||||||
|
### Actualización Menor (16.0 → 16.1)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Cambiar en compose
|
||||||
|
image: postgres:16.1-alpine
|
||||||
|
|
||||||
|
# Actualizar
|
||||||
|
docker compose pull gitea-db
|
||||||
|
docker compose up -d gitea-db
|
||||||
|
```
|
||||||
|
|
||||||
|
### Actualización Mayor (15 → 16)
|
||||||
|
|
||||||
|
Requiere dump y restore:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Backup de BD
|
||||||
|
docker compose exec gitea-db pg_dump -U gitea gitea > gitea-backup.sql
|
||||||
|
|
||||||
|
# 2. Detener servicios
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
# 3. Eliminar volumen de BD
|
||||||
|
docker volume rm gitea_db
|
||||||
|
|
||||||
|
# 4. Actualizar versión en compose
|
||||||
|
# image: postgres:16-alpine
|
||||||
|
|
||||||
|
# 5. Crear nuevo volumen y restaurar
|
||||||
|
docker volume create gitea_db
|
||||||
|
docker compose up -d gitea-db
|
||||||
|
sleep 10
|
||||||
|
docker compose exec -T gitea-db psql -U gitea gitea < gitea-backup.sql
|
||||||
|
|
||||||
|
# 6. Iniciar Gitea
|
||||||
|
docker compose up -d gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🧪 Probar Actualización
|
||||||
|
|
||||||
|
Antes de actualizar producción, prueba en entorno de desarrollo:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clonar setup
|
||||||
|
cp -r /path/to/gitea /tmp/gitea-test
|
||||||
|
cd /tmp/gitea-test
|
||||||
|
|
||||||
|
# Restaurar backup
|
||||||
|
# (seguir pasos de Backup y Restauración)
|
||||||
|
|
||||||
|
# Actualizar versión de prueba
|
||||||
|
docker compose pull
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Verificar funcionamiento
|
||||||
|
# Acceder a http://localhost:3000
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔙 Rollback (Volver Atrás)
|
||||||
|
|
||||||
|
Si algo sale mal:
|
||||||
|
|
||||||
|
### Método 1: Restaurar desde Backup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Detener servicios
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
# Restaurar volúmenes
|
||||||
|
# (seguir pasos de Backup y Restauración)
|
||||||
|
|
||||||
|
# Iniciar con versión anterior
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### Método 2: Usar Versión Anterior de Imagen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ver imágenes disponibles
|
||||||
|
docker images | grep gitea
|
||||||
|
|
||||||
|
# Editar compose para usar imagen anterior
|
||||||
|
image: gitea/gitea:1.20.0 # Versión previa
|
||||||
|
|
||||||
|
# Aplicar
|
||||||
|
docker compose up -d --force-recreate gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📅 Estrategia de Actualizaciones
|
||||||
|
|
||||||
|
### Opción 1: Siempre Latest (Automático)
|
||||||
|
|
||||||
|
**Pros**:
|
||||||
|
- ✅ Siempre al día
|
||||||
|
- ✅ Parches de seguridad inmediatos
|
||||||
|
|
||||||
|
**Contras**:
|
||||||
|
- ❌ Puede romper sin aviso
|
||||||
|
- ❌ Requiere supervisión
|
||||||
|
|
||||||
|
### Opción 2: Versiones Específicas (Manual)
|
||||||
|
|
||||||
|
**Pros**:
|
||||||
|
- ✅ Control total
|
||||||
|
- ✅ Actualizaciones planificadas
|
||||||
|
|
||||||
|
**Contras**:
|
||||||
|
- ❌ Requiere monitoreo manual
|
||||||
|
- ❌ Puede quedar desactualizado
|
||||||
|
|
||||||
|
### Recomendación
|
||||||
|
|
||||||
|
Para producción:
|
||||||
|
- Usa **versiones específicas** (ej: `1.21.0`)
|
||||||
|
- Monitorea [Gitea Releases](https://github.com/go-gitea/gitea/releases)
|
||||||
|
- Actualiza mensualmente o cuando hay parches de seguridad
|
||||||
|
- Siempre prueba en entorno de desarrollo primero
|
||||||
|
|
||||||
|
## 🔔 Notificaciones de Nuevas Versiones
|
||||||
|
|
||||||
|
### GitHub Watch
|
||||||
|
|
||||||
|
1. Ve a https://github.com/go-gitea/gitea
|
||||||
|
2. Haz clic en **Watch** → **Custom** → ✅ **Releases**
|
||||||
|
3. Recibirás emails de nuevas versiones
|
||||||
|
|
||||||
|
### RSS Feed
|
||||||
|
|
||||||
|
Suscríbete al feed:
|
||||||
|
```
|
||||||
|
https://github.com/go-gitea/gitea/releases.atom
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🛡️ Actualizaciones de Seguridad
|
||||||
|
|
||||||
|
Para parches críticos de seguridad:
|
||||||
|
|
||||||
|
1. **Lee el Security Advisory**
|
||||||
|
2. **Haz backup inmediato**
|
||||||
|
3. **Actualiza lo antes posible**
|
||||||
|
4. **Verifica que funciona**
|
||||||
|
5. **Monitorea logs por 24-48 horas**
|
||||||
|
|
||||||
|
## 📊 Después de Actualizar
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Verificar versión
|
||||||
|
docker compose exec gitea gitea --version
|
||||||
|
|
||||||
|
# 2. Ver logs
|
||||||
|
docker compose logs --tail=100 gitea
|
||||||
|
|
||||||
|
# 3. Probar funciones clave
|
||||||
|
# - Login
|
||||||
|
# - Clonar repositorio
|
||||||
|
# - Push nuevo commit
|
||||||
|
# - Crear issue
|
||||||
|
# - Revisar panel de administración
|
||||||
|
|
||||||
|
# 4. Monitorear recursos
|
||||||
|
docker stats gitea gitea-db
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Siguiente**: [Solución de Problemas](Solución-de-Problemas)
|
||||||
281
Backup-y-Restauración.md
Normal file
281
Backup-y-Restauración.md
Normal file
@@ -0,0 +1,281 @@
|
|||||||
|
# Backup y Restauración
|
||||||
|
|
||||||
|
Protege tus repositorios Git, base de datos y configuración con backups regulares.
|
||||||
|
|
||||||
|
## ⚠️ Importancia de los Backups
|
||||||
|
|
||||||
|
Un servidor Git sin backups es un **riesgo crítico**:
|
||||||
|
|
||||||
|
- 💔 Pérdida de código fuente
|
||||||
|
- 💔 Pérdida de historial de commits
|
||||||
|
- 💔 Pérdida de issues y pull requests
|
||||||
|
- 💔 Pérdida de configuración y usuarios
|
||||||
|
|
||||||
|
## 📦 ¿Qué respaldar?
|
||||||
|
|
||||||
|
Gitea almacena datos en dos lugares principales:
|
||||||
|
|
||||||
|
1. **Volumen `gitea_data`**: Repositorios, configuración, avatares, LFS
|
||||||
|
2. **Volumen `gitea_db`**: Base de datos PostgreSQL con metadatos
|
||||||
|
|
||||||
|
## 🔄 Backup Manual
|
||||||
|
|
||||||
|
### Método Completo (Recomendado)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Detener Gitea (mantener DB corriendo)
|
||||||
|
docker compose stop gitea
|
||||||
|
|
||||||
|
# 2. Backup de datos de Gitea
|
||||||
|
docker run --rm \
|
||||||
|
-v gitea_data:/data \
|
||||||
|
-v $(pwd):/backup \
|
||||||
|
alpine tar czf /backup/gitea-data-$(date +%Y%m%d-%H%M%S).tar.gz -C /data .
|
||||||
|
|
||||||
|
# 3. Backup de PostgreSQL
|
||||||
|
docker compose exec gitea-db pg_dump -U gitea gitea > gitea-db-$(date +%Y%m%d-%H%M%S).sql
|
||||||
|
|
||||||
|
# 4. Reiniciar Gitea
|
||||||
|
docker compose start gitea
|
||||||
|
|
||||||
|
# 5. Verificar backups
|
||||||
|
ls -lh gitea-*.tar.gz
|
||||||
|
ls -lh gitea-*.sql
|
||||||
|
```
|
||||||
|
|
||||||
|
### Método Rápido (Sin Downtime)
|
||||||
|
|
||||||
|
Para Gitea, si aceptas posibles inconsistencias menores:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Backup en caliente
|
||||||
|
docker run --rm \
|
||||||
|
-v gitea_data:/data \
|
||||||
|
-v $(pwd):/backup \
|
||||||
|
alpine tar czf /backup/gitea-data-$(date +%Y%m%d-%H%M%S).tar.gz -C /data .
|
||||||
|
|
||||||
|
# DB backup (sin detener)
|
||||||
|
docker compose exec gitea-db pg_dump -U gitea gitea > gitea-db-$(date +%Y%m%d-%H%M%S).sql
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔙 Restauración
|
||||||
|
|
||||||
|
### Restaurar Completamente
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Detener todos los servicios
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
# 2. Eliminar volúmenes antiguos (¡CUIDADO!)
|
||||||
|
docker volume rm gitea_data gitea_db
|
||||||
|
|
||||||
|
# 3. Crear nuevos volúmenes
|
||||||
|
docker volume create gitea_data
|
||||||
|
docker volume create gitea_db
|
||||||
|
|
||||||
|
# 4. Restaurar datos de Gitea
|
||||||
|
docker run --rm \
|
||||||
|
-v gitea_data:/data \
|
||||||
|
-v $(pwd):/backup \
|
||||||
|
alpine sh -c "cd /data && tar xzf /backup/gitea-data-20241203-120000.tar.gz"
|
||||||
|
|
||||||
|
# 5. Iniciar solo PostgreSQL
|
||||||
|
docker compose up -d gitea-db
|
||||||
|
|
||||||
|
# 6. Esperar a que PostgreSQL esté listo
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
# 7. Restaurar base de datos
|
||||||
|
docker compose exec -T gitea-db psql -U gitea gitea < gitea-db-20241203-120000.sql
|
||||||
|
|
||||||
|
# 8. Iniciar todo
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# 9. Verificar
|
||||||
|
docker compose logs -f
|
||||||
|
```
|
||||||
|
|
||||||
|
### Restaurar Solo Repositorios
|
||||||
|
|
||||||
|
Si solo necesitas restaurar repositorios específicos:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Extraer backup a directorio temporal
|
||||||
|
mkdir temp-restore
|
||||||
|
tar xzf gitea-data-20241203.tar.gz -C temp-restore
|
||||||
|
|
||||||
|
# Copiar repositorios específicos
|
||||||
|
docker cp temp-restore/git/repositories/usuario/repo.git gitea:/data/git/repositories/usuario/
|
||||||
|
|
||||||
|
# Reiniciar Gitea
|
||||||
|
docker compose restart gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🤖 Backup Automático
|
||||||
|
|
||||||
|
### Opción 1: Cron Job
|
||||||
|
|
||||||
|
Crea un script `/root/backup-gitea.sh`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
BACKUP_DIR="/backups/gitea"
|
||||||
|
DATE=$(date +%Y%m%d-%H%M%S)
|
||||||
|
|
||||||
|
mkdir -p $BACKUP_DIR
|
||||||
|
|
||||||
|
cd /path/to/gitea
|
||||||
|
|
||||||
|
# Backup Gitea data
|
||||||
|
docker run --rm \
|
||||||
|
-v gitea_data:/data \
|
||||||
|
-v $BACKUP_DIR:/backup \
|
||||||
|
alpine tar czf /backup/gitea-data-$DATE.tar.gz -C /data .
|
||||||
|
|
||||||
|
# Backup PostgreSQL
|
||||||
|
docker compose exec -T gitea-db pg_dump -U gitea gitea > $BACKUP_DIR/gitea-db-$DATE.sql
|
||||||
|
|
||||||
|
# Comprimir SQL
|
||||||
|
gzip $BACKUP_DIR/gitea-db-$DATE.sql
|
||||||
|
|
||||||
|
# Eliminar backups antiguos (más de 30 días)
|
||||||
|
find $BACKUP_DIR -name "gitea-*" -mtime +30 -delete
|
||||||
|
|
||||||
|
echo "Backup completado: $DATE"
|
||||||
|
```
|
||||||
|
|
||||||
|
Hazlo ejecutable y añade a cron:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod +x /root/backup-gitea.sh
|
||||||
|
|
||||||
|
# Editar crontab
|
||||||
|
crontab -e
|
||||||
|
|
||||||
|
# Añadir línea (backup diario a las 2 AM)
|
||||||
|
0 2 * * * /root/backup-gitea.sh >> /var/log/gitea-backup.log 2>&1
|
||||||
|
```
|
||||||
|
|
||||||
|
### Opción 2: docker-volume-backup
|
||||||
|
|
||||||
|
Usa [offen/docker-volume-backup](https://github.com/offen/docker-volume-backup):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
backup:
|
||||||
|
image: offen/docker-volume-backup:latest
|
||||||
|
environment:
|
||||||
|
BACKUP_CRON_EXPRESSION: "0 2 * * *" # 2 AM diario
|
||||||
|
BACKUP_FILENAME: "gitea-backup-%Y%m%d-%H%M%S.tar.gz"
|
||||||
|
BACKUP_RETENTION_DAYS: "30"
|
||||||
|
volumes:
|
||||||
|
- gitea_data:/backup/gitea_data:ro
|
||||||
|
- /backups:/archive
|
||||||
|
```
|
||||||
|
|
||||||
|
### Opción 3: Duplicati
|
||||||
|
|
||||||
|
Configura Duplicati para respaldar:
|
||||||
|
- `/var/lib/docker/volumes/gitea_data/_data`
|
||||||
|
- Los archivos SQL generados por cron
|
||||||
|
|
||||||
|
## 📤 Backup Remoto
|
||||||
|
|
||||||
|
### rsync a Servidor Remoto
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# En el script de backup, añade:
|
||||||
|
rsync -avz --delete /backups/gitea/ usuario@servidor-remoto:/backups/gitea/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Subir a Cloud Storage
|
||||||
|
|
||||||
|
**AWS S3**:
|
||||||
|
```bash
|
||||||
|
aws s3 sync /backups/gitea/ s3://mi-bucket/gitea-backups/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Google Drive** (con rclone):
|
||||||
|
```bash
|
||||||
|
rclone sync /backups/gitea/ gdrive:gitea-backups/
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🧪 Probar Restauración
|
||||||
|
|
||||||
|
**CRÍTICO**: Prueba tus backups regularmente:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Crear entorno de prueba
|
||||||
|
mkdir /tmp/gitea-test
|
||||||
|
cd /tmp/gitea-test
|
||||||
|
|
||||||
|
# 2. Copiar compose files
|
||||||
|
cp /path/to/gitea/docker-compose.yml .
|
||||||
|
cp /path/to/gitea/.env .
|
||||||
|
|
||||||
|
# 3. Restaurar y verificar
|
||||||
|
# (Usa los pasos de restauración anteriores)
|
||||||
|
|
||||||
|
# 4. Verificar que todo funciona
|
||||||
|
docker compose up -d
|
||||||
|
# Accede a http://localhost:3000 y verifica repos
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📋 Checklist de Backup
|
||||||
|
|
||||||
|
- ✅ Backup automático configurado
|
||||||
|
- ✅ Backups se ejecutan regularmente
|
||||||
|
- ✅ Backups se copian a ubicación remota
|
||||||
|
- ✅ Rotación de backups antiguos configurada
|
||||||
|
- ✅ Proceso de restauración documentado
|
||||||
|
- ✅ Restauración probada al menos una vez
|
||||||
|
- ✅ Alertas configuradas si falla el backup
|
||||||
|
|
||||||
|
## 🔍 Verificar Integridad
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Verificar archivos tar.gz
|
||||||
|
tar tzf gitea-data-20241203.tar.gz > /dev/null && echo "OK" || echo "CORRUPTO"
|
||||||
|
|
||||||
|
# Verificar SQL
|
||||||
|
gzip -t gitea-db-20241203.sql.gz && echo "OK" || echo "CORRUPTO"
|
||||||
|
|
||||||
|
# Ver tamaño de backups
|
||||||
|
du -sh gitea-*.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🆘 Recuperación de Desastres
|
||||||
|
|
||||||
|
### Pérdida Completa del Servidor
|
||||||
|
|
||||||
|
1. Instalar Docker y Docker Compose en nuevo servidor
|
||||||
|
2. Clonar repositorio de configuración
|
||||||
|
3. Restaurar `.env` desde backup o recrear
|
||||||
|
4. Seguir pasos de **Restaurar Completamente**
|
||||||
|
5. Configurar DNS apuntando al nuevo servidor
|
||||||
|
6. Verificar SSL y acceso
|
||||||
|
|
||||||
|
### Corrupción de Base de Datos
|
||||||
|
|
||||||
|
Si PostgreSQL falla:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Detener todo
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
# Eliminar solo volumen de DB
|
||||||
|
docker volume rm gitea_db
|
||||||
|
|
||||||
|
# Recrear y restaurar solo DB
|
||||||
|
docker volume create gitea_db
|
||||||
|
docker compose up -d gitea-db
|
||||||
|
sleep 10
|
||||||
|
docker compose exec -T gitea-db psql -U gitea gitea < gitea-db-backup.sql
|
||||||
|
|
||||||
|
# Iniciar Gitea
|
||||||
|
docker compose up -d gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Siguiente**: [Actualización](Actualización)
|
||||||
242
Configuración-Inicial.md
Normal file
242
Configuración-Inicial.md
Normal file
@@ -0,0 +1,242 @@
|
|||||||
|
# Configuración Inicial
|
||||||
|
|
||||||
|
Después de desplegar Gitea, debes completar el asistente de instalación inicial para configurar la aplicación.
|
||||||
|
|
||||||
|
## 🌐 Acceso al Asistente
|
||||||
|
|
||||||
|
Visita `https://gitea.tudominio.com` en tu navegador. La primera vez verás el **asistente de instalación de Gitea**.
|
||||||
|
|
||||||
|
## 🗄️ 1. Configuración de Base de Datos
|
||||||
|
|
||||||
|
Esta sección ya está pre-configurada gracias a las variables de entorno del compose:
|
||||||
|
|
||||||
|
**Configuración (pre-rellenada automáticamente)**:
|
||||||
|
- **Tipo de base de datos**: PostgreSQL
|
||||||
|
- **Host**: `gitea-db:5432`
|
||||||
|
- **Nombre de usuario**: `gitea` (o el valor de `DB_USER`)
|
||||||
|
- **Contraseña**: La que configuraste en `DB_PASSWORD`
|
||||||
|
- **Nombre de base de datos**: `gitea` (o el valor de `DB_NAME`)
|
||||||
|
|
||||||
|
> ⚠️ **Importante**: Verifica que estos valores coinciden con tu archivo `.env`.
|
||||||
|
|
||||||
|
## ⚙️ 2. Configuración General del Sitio
|
||||||
|
|
||||||
|
Configura los parámetros generales de tu instalación Gitea:
|
||||||
|
|
||||||
|
### Título del Sitio
|
||||||
|
|
||||||
|
**Campo**: `Site Title`
|
||||||
|
**Valor recomendado**: `Git ICT Iberia` o el nombre de tu organización
|
||||||
|
|
||||||
|
Aparecerá en la interfaz web, emails y notificaciones.
|
||||||
|
|
||||||
|
### URL Base del Servidor
|
||||||
|
|
||||||
|
**Campo**: `Server Domain` y `Gitea Base URL`
|
||||||
|
**Valores críticos**:
|
||||||
|
- **Server Domain**: `gitea.tudominio.com`
|
||||||
|
- **Gitea Base URL**: `https://gitea.tudominio.com`
|
||||||
|
|
||||||
|
⚠️ **MUY IMPORTANTE**:
|
||||||
|
- Debe incluir `https://`
|
||||||
|
- Si usas un puerto diferente a 443, inclúyelo: `https://gitea.tudominio.com:8443`
|
||||||
|
- Esta URL se usa para clonado de repos y webhooks
|
||||||
|
|
||||||
|
### Rutas de Archivos
|
||||||
|
|
||||||
|
**Valores por defecto (recomendados)**:
|
||||||
|
- **Ruta de repositorios Git**: `/data/git/repositories`
|
||||||
|
- **Ruta raíz Git LFS**: `/data/git/lfs`
|
||||||
|
- **Ejecutar como nombre de usuario**: `git`
|
||||||
|
|
||||||
|
> ✅ No cambies estas rutas a menos que sepas lo que haces.
|
||||||
|
|
||||||
|
### SSH
|
||||||
|
|
||||||
|
**Puerto del servidor SSH**: `22`
|
||||||
|
|
||||||
|
Gitea puede servir SSH en el puerto 22 del contenedor. Para usarlo desde fuera:
|
||||||
|
- **Con Traefik/NPM**: Necesitas publicar el puerto SSH separadamente (no cubierto en este stack básico)
|
||||||
|
- **Alternativa**: Usar HTTPS para git (más simple, funciona directamente)
|
||||||
|
|
||||||
|
## 👤 3. Configuración del Administrador
|
||||||
|
|
||||||
|
**Crea tu cuenta de administrador**:
|
||||||
|
|
||||||
|
### Nombre de Usuario
|
||||||
|
|
||||||
|
**Campo**: `Administrator Username`
|
||||||
|
**Valor**: Tu nombre de usuario preferido (ej: `admin`, `groales`)
|
||||||
|
|
||||||
|
Este será el primer usuario y tendrá permisos de administrador completos.
|
||||||
|
|
||||||
|
### Contraseña
|
||||||
|
|
||||||
|
**Campo**: `Password` y `Confirm Password`
|
||||||
|
**Recomendaciones**:
|
||||||
|
- ✅ Mínimo 12 caracteres
|
||||||
|
- ✅ Combina mayúsculas, minúsculas, números y símbolos
|
||||||
|
- ✅ No reutilices contraseñas de otros servicios
|
||||||
|
|
||||||
|
### Email
|
||||||
|
|
||||||
|
**Campo**: `Email Address`
|
||||||
|
**Valor**: Tu email real
|
||||||
|
|
||||||
|
Úsalo para:
|
||||||
|
- Recuperación de contraseña
|
||||||
|
- Notificaciones (si configuras SMTP)
|
||||||
|
- Webhooks y alertas
|
||||||
|
|
||||||
|
## ⚙️ 4. Configuración Opcional
|
||||||
|
|
||||||
|
Antes de hacer clic en "Install", puedes expandir **Optional Settings** para ajustes adicionales.
|
||||||
|
|
||||||
|
### Configuración de Email
|
||||||
|
|
||||||
|
Si tienes un servidor SMTP, configúralo ahora:
|
||||||
|
|
||||||
|
- **Server and Other Services** → **Email Settings**:
|
||||||
|
- SMTP Host: `smtp.tudominio.com`
|
||||||
|
- SMTP Port: `587` (STARTTLS) o `465` (SSL)
|
||||||
|
- Send Email As: `gitea@tudominio.com`
|
||||||
|
- SMTP Username: Tu usuario SMTP
|
||||||
|
- SMTP Password: Tu contraseña SMTP
|
||||||
|
|
||||||
|
> ℹ️ También puedes configurar SMTP más tarde editando `/data/gitea/conf/app.ini`.
|
||||||
|
|
||||||
|
### Configuración del Servidor
|
||||||
|
|
||||||
|
Ajustes opcionales en **Server and Other Services**:
|
||||||
|
|
||||||
|
- **Disable Self-Registration**: ✅ Recomendado si es una instalación privada
|
||||||
|
- **Require Sign-In to View Pages**: ✅ Activar para repositorios completamente privados
|
||||||
|
- **Enable OpenID Sign-In**: ❌ Desactivar si no lo necesitas
|
||||||
|
|
||||||
|
### Notificaciones
|
||||||
|
|
||||||
|
- **Enable Email Notifications**: ✅ Activar si configuraste SMTP
|
||||||
|
- **Disable Gravatar Service**: ❌ Dejar activado (usa avatares de Gravatar)
|
||||||
|
|
||||||
|
## ✅ 5. Completar Instalación
|
||||||
|
|
||||||
|
1. Revisa que todo esté correcto
|
||||||
|
2. Haz clic en **Install Gitea**
|
||||||
|
3. Espera unos segundos mientras se configura
|
||||||
|
|
||||||
|
Si todo va bien, serás redirigido a la pantalla de login.
|
||||||
|
|
||||||
|
## 🔐 6. Primer Inicio de Sesión
|
||||||
|
|
||||||
|
1. Introduce tu nombre de usuario y contraseña del administrador
|
||||||
|
2. Haz clic en **Sign In**
|
||||||
|
|
||||||
|
¡Bienvenido a Gitea! Ya puedes empezar a crear repositorios.
|
||||||
|
|
||||||
|
## 🛠️ Post-Instalación
|
||||||
|
|
||||||
|
### Verificar Configuración
|
||||||
|
|
||||||
|
Accede al panel de administración:
|
||||||
|
|
||||||
|
1. Haz clic en tu avatar (esquina superior derecha)
|
||||||
|
2. Selecciona **Site Administration**
|
||||||
|
3. Revisa las secciones:
|
||||||
|
- **Dashboard**: Estado general del sistema
|
||||||
|
- **Configuration**: Ver configuración completa
|
||||||
|
- **Users**: Gestionar usuarios
|
||||||
|
|
||||||
|
### Crear tu Primer Repositorio
|
||||||
|
|
||||||
|
1. Haz clic en el **+** en la esquina superior derecha
|
||||||
|
2. Selecciona **New Repository**
|
||||||
|
3. Configura:
|
||||||
|
- **Owner**: Tu usuario
|
||||||
|
- **Repository Name**: Nombre del proyecto
|
||||||
|
- **Visibility**: Public/Private
|
||||||
|
- ✅ **Initialize Repository**: Añade README, .gitignore, License
|
||||||
|
4. Haz clic en **Create Repository**
|
||||||
|
|
||||||
|
### Configurar SSH (Opcional)
|
||||||
|
|
||||||
|
Ver la sección SSH en la página [Personalización](Personalización).
|
||||||
|
|
||||||
|
## 📝 Notas Importantes
|
||||||
|
|
||||||
|
### Archivo app.ini
|
||||||
|
|
||||||
|
La configuración de Gitea se guarda en:
|
||||||
|
```
|
||||||
|
/data/gitea/conf/app.ini
|
||||||
|
```
|
||||||
|
|
||||||
|
Para editarlo:
|
||||||
|
```bash
|
||||||
|
docker compose exec gitea vi /data/gitea/conf/app.ini
|
||||||
|
|
||||||
|
# Después de editar, reiniciar Gitea
|
||||||
|
docker compose restart gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cambiar URL Base Después
|
||||||
|
|
||||||
|
Si necesitas cambiar la URL base después de la instalación:
|
||||||
|
|
||||||
|
1. Edita `/data/gitea/conf/app.ini`
|
||||||
|
2. Busca `[server]`
|
||||||
|
3. Modifica:
|
||||||
|
```ini
|
||||||
|
DOMAIN = gitea.tudominio.com
|
||||||
|
ROOT_URL = https://gitea.tudominio.com/
|
||||||
|
```
|
||||||
|
4. Reinicia: `docker compose restart gitea`
|
||||||
|
|
||||||
|
### Primer Usuario = Admin
|
||||||
|
|
||||||
|
El primer usuario que crees automáticamente tiene permisos de administrador. Si deshabilitaste auto-registro, solo tú podrás crear tu cuenta.
|
||||||
|
|
||||||
|
## 🆘 Solución de Problemas
|
||||||
|
|
||||||
|
### "Database connection failed"
|
||||||
|
|
||||||
|
**Causa**: Gitea no puede conectar a PostgreSQL
|
||||||
|
|
||||||
|
**Solución**:
|
||||||
|
```bash
|
||||||
|
# Verificar que gitea-db está corriendo
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
# Ver logs de PostgreSQL
|
||||||
|
docker compose logs gitea-db
|
||||||
|
|
||||||
|
# Verificar que están en la red gitea-internal
|
||||||
|
docker network inspect gitea-internal
|
||||||
|
```
|
||||||
|
|
||||||
|
### "Cannot save configuration"
|
||||||
|
|
||||||
|
**Causa**: Permisos incorrectos en el volumen
|
||||||
|
|
||||||
|
**Solución**:
|
||||||
|
```bash
|
||||||
|
# Verificar permisos
|
||||||
|
docker compose exec gitea ls -la /data/gitea
|
||||||
|
|
||||||
|
# Si es necesario, recrear el volumen
|
||||||
|
docker compose down
|
||||||
|
docker volume rm gitea_data
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### No puedo acceder a https://gitea.tudominio.com
|
||||||
|
|
||||||
|
**Causa**: Problema con el proxy inverso
|
||||||
|
|
||||||
|
**Solución**:
|
||||||
|
- **Traefik**: Verifica labels en el contenedor: `docker inspect gitea`
|
||||||
|
- **NPM**: Verifica que el Proxy Host está configurado correctamente
|
||||||
|
- Comprueba que el puerto 3000 está accesible: `docker compose exec gitea netstat -ln | grep 3000`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Siguiente paso**: [Personalización](Personalización)
|
||||||
100
Home.md
Normal file
100
Home.md
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
# Wiki de Gitea
|
||||||
|
|
||||||
|
Bienvenido a la wiki de **Gitea**, un servidor Git autoalojado ligero y rápido.
|
||||||
|
|
||||||
|
## 📋 Índice de Contenidos
|
||||||
|
|
||||||
|
### Despliegue
|
||||||
|
- **[Traefik](Traefik)**: Despliegue con Traefik como reverse proxy (requiere override)
|
||||||
|
- **[Nginx Proxy Manager](NPM)**: Despliegue con Nginx Proxy Manager (usa compose base)
|
||||||
|
|
||||||
|
### Configuración y Mantenimiento
|
||||||
|
- **[Configuración Inicial](Configuración-Inicial)**: Asistente de instalación y primeros pasos
|
||||||
|
- **[Personalización](Personalización)**: SMTP, SSH, webhooks, integración CI/CD
|
||||||
|
- **[Backup y Restauración](Backup-y-Restauración)**: Protege tus repositorios
|
||||||
|
- **[Actualización](Actualización)**: Mantener Gitea actualizado
|
||||||
|
- **[Solución de Problemas](Solución-de-Problemas)**: Resolver errores comunes
|
||||||
|
|
||||||
|
## 🔧 ¿Qué es Gitea?
|
||||||
|
|
||||||
|
Gitea es un servidor Git autoalojado escrito en Go. Es una alternativa ligera a GitLab y GitHub on-premises que ofrece:
|
||||||
|
|
||||||
|
- 🚀 **Ligero y rápido**: Consume menos de 100MB de RAM
|
||||||
|
- 📦 **Fácil de instalar**: Un solo binario, no requiere Node.js ni Ruby
|
||||||
|
- 🔒 **Seguro y confiable**: Gestión completa de permisos y accesos
|
||||||
|
- 📱 **Interfaz moderna**: UI similar a GitHub, intuitiva y responsive
|
||||||
|
- 🔄 **Git completo**: Pull requests, issues, wiki, projects, CI/CD
|
||||||
|
|
||||||
|
## ⚠️ Consideraciones Importantes
|
||||||
|
|
||||||
|
Antes de desplegar Gitea:
|
||||||
|
|
||||||
|
1. **PostgreSQL incluido**: Este stack incluye PostgreSQL 16 Alpine
|
||||||
|
2. **Contraseña segura**: Genera `DB_PASSWORD` fuerte para la base de datos
|
||||||
|
3. **Backups esenciales**: Un servidor Git sin backups es un riesgo crítico
|
||||||
|
4. **HTTPS recomendado**: Para push/pull seguro y autenticación
|
||||||
|
5. **Usuario administrador**: El primer usuario creado es automáticamente admin
|
||||||
|
6. **URL base correcta**: Debe configurarse en el asistente inicial con HTTPS
|
||||||
|
|
||||||
|
## 🔑 Generar DB_PASSWORD
|
||||||
|
|
||||||
|
**Antes de cualquier despliegue**, genera una contraseña segura para PostgreSQL:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
openssl rand -base64 32
|
||||||
|
```
|
||||||
|
|
||||||
|
Guarda el resultado, lo necesitarás como `DB_PASSWORD`.
|
||||||
|
|
||||||
|
> ⚠️ **Importante**: Usa comillas simples en el archivo `.env` si contiene caracteres especiales.
|
||||||
|
> Ejemplo: `DB_PASSWORD='tu_password_generado'`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Inicio Rápido
|
||||||
|
|
||||||
|
### Elección del Modo de Despliegue
|
||||||
|
|
||||||
|
| Modo | Recomendado | Requisitos | Características |
|
||||||
|
|------|-------------|------------|-----------------|
|
||||||
|
| **Traefik** | ✅ Sí | Red `proxy`, Traefik con Let's Encrypt | SSL automático, configuración simple |
|
||||||
|
| **NPM** | ✅ Sí | Red `proxy`, NPM configurado | Configuración manual de proxy host |
|
||||||
|
|
||||||
|
### Variables de Entorno
|
||||||
|
|
||||||
|
**Todas las configuraciones requieren**:
|
||||||
|
|
||||||
|
```env
|
||||||
|
DB_PASSWORD='tu_password_generado' # Contraseña PostgreSQL (entre comillas simples)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Para Traefik necesitas también**:
|
||||||
|
```env
|
||||||
|
DOMAIN_HOST=gitea.tudominio.com # Sin protocolo
|
||||||
|
```
|
||||||
|
|
||||||
|
**Opcionales** (tienen valores por defecto):
|
||||||
|
```env
|
||||||
|
DB_NAME=gitea # Nombre de la base de datos (default: gitea)
|
||||||
|
DB_USER=gitea # Usuario PostgreSQL (default: gitea)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 Recursos Adicionales
|
||||||
|
|
||||||
|
- [README del repositorio](https://git.ictiberia.com/groales/gitea)
|
||||||
|
- [Documentación oficial de Gitea](https://docs.gitea.com/)
|
||||||
|
- [GitHub de Gitea](https://github.com/go-gitea/gitea)
|
||||||
|
- [Gitea Awesome](https://gitea.com/gitea/awesome-gitea)
|
||||||
|
|
||||||
|
## 🆘 Soporte
|
||||||
|
|
||||||
|
Si encuentras problemas:
|
||||||
|
|
||||||
|
1. Consulta la página **[Solución de Problemas](Solución-de-Problemas)**
|
||||||
|
2. Revisa los logs: `docker compose logs gitea` o `docker compose logs gitea-db`
|
||||||
|
3. Verifica la configuración en `/data/gitea/conf/app.ini`
|
||||||
|
4. Consulta la documentación oficial de Gitea
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Última actualización**: Diciembre 2025
|
||||||
195
NPM.md
Normal file
195
NPM.md
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
# Despliegue con Nginx Proxy Manager (NPM)
|
||||||
|
|
||||||
|
Esta guía te ayudará a desplegar Gitea usando **Nginx Proxy Manager** como reverse proxy.
|
||||||
|
|
||||||
|
## ✅ Requisitos Previos
|
||||||
|
|
||||||
|
Antes de comenzar, asegúrate de tener:
|
||||||
|
|
||||||
|
- ✅ Nginx Proxy Manager funcionando y accesible
|
||||||
|
- ✅ Red Docker `proxy` creada y NPM conectado a ella
|
||||||
|
- ✅ Dominio configurado apuntando a tu servidor
|
||||||
|
- ✅ Puertos 80 y 443 abiertos y dirigidos a NPM
|
||||||
|
- ✅ DB_PASSWORD generada
|
||||||
|
|
||||||
|
### Verificar Red Proxy
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker network ls | grep proxy
|
||||||
|
```
|
||||||
|
|
||||||
|
Si no existe, créala:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker network create proxy
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔑 Generar DB_PASSWORD
|
||||||
|
|
||||||
|
**Antes de cualquier despliegue**, genera una contraseña segura para PostgreSQL:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
openssl rand -base64 32
|
||||||
|
```
|
||||||
|
|
||||||
|
Guarda el resultado, lo necesitarás para las variables de entorno.
|
||||||
|
|
||||||
|
> ⚠️ **Importante**: Usa comillas simples en el archivo `.env` si contiene caracteres especiales.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Despliegue desde Portainer
|
||||||
|
|
||||||
|
### Opción A: Git Repository (Recomendada)
|
||||||
|
|
||||||
|
Esta opción mantiene tu stack actualizado con el repositorio Git.
|
||||||
|
|
||||||
|
1. En Portainer, ve a **Stacks** → **Add stack**
|
||||||
|
2. Nombre del stack: `gitea`
|
||||||
|
3. Selecciona **Git Repository**
|
||||||
|
4. Configura el repositorio:
|
||||||
|
- **Repository URL**: `https://git.ictiberia.com/groales/gitea`
|
||||||
|
- **Repository reference**: `refs/heads/main`
|
||||||
|
- **Compose path**: `docker-compose.yml`
|
||||||
|
- **Additional paths**: Dejar vacío (no necesitas override para NPM)
|
||||||
|
|
||||||
|
5. En **Environment variables**, añade:
|
||||||
|
|
||||||
|
```env
|
||||||
|
DB_PASSWORD='tu_password_generado'
|
||||||
|
```
|
||||||
|
|
||||||
|
⚠️ **Nota**: Otras opciones se configuran desde el panel de administración de Gitea después del despliegue.
|
||||||
|
|
||||||
|
6. Haz clic en **Deploy the stack**
|
||||||
|
|
||||||
|
### Opción B: Web Editor
|
||||||
|
|
||||||
|
Si prefieres usar el editor web de Portainer:
|
||||||
|
|
||||||
|
1. Copia el contenido consolidado del [README - Sección NPM](https://git.ictiberia.com/groales/gitea#despliegue-con-nginx-proxy-manager)
|
||||||
|
2. Pégalo en el Web Editor
|
||||||
|
3. Configura las variables de entorno como en la Opción A
|
||||||
|
|
||||||
|
## 🖥️ Despliegue desde CLI
|
||||||
|
|
||||||
|
### 1. Clonar el repositorio
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://git.ictiberia.com/groales/gitea.git
|
||||||
|
cd gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Configurar variables de entorno
|
||||||
|
|
||||||
|
No necesitas archivo override. El `docker-compose.yml` base es suficiente para NPM.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
|
Edita el archivo `.env` y configura:
|
||||||
|
|
||||||
|
```env
|
||||||
|
DB_PASSWORD='tu_password_generado'
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Iniciar el servicio
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Verificar el despliegue
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ver logs
|
||||||
|
docker compose logs -f gitea
|
||||||
|
docker compose logs -f gitea-db
|
||||||
|
|
||||||
|
# Verificar que el contenedor está corriendo
|
||||||
|
docker compose ps
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Configurar Nginx Proxy Manager
|
||||||
|
|
||||||
|
Ver la sección de configuración a continuación.
|
||||||
|
|
||||||
|
## 🔧 Configuración en Nginx Proxy Manager
|
||||||
|
|
||||||
|
Una vez que Gitea esté corriendo, configura el Proxy Host en NPM:
|
||||||
|
|
||||||
|
### 1. Crear Proxy Host
|
||||||
|
|
||||||
|
1. En NPM, ve a **Proxy Hosts** → **Add Proxy Host**
|
||||||
|
|
||||||
|
2. En la pestaña **Details**:
|
||||||
|
- **Domain Names**: `gitea.tudominio.com`
|
||||||
|
- **Scheme**: `http`
|
||||||
|
- **Forward Hostname / IP**: `gitea`
|
||||||
|
- **Forward Port**: `3000`
|
||||||
|
- ✅ **Block Common Exploits**: Activar
|
||||||
|
- ✅ **Websockets Support**: Activar (recomendado para mejor rendimiento)
|
||||||
|
|
||||||
|
3. En la pestaña **SSL**:
|
||||||
|
- ✅ **Force SSL**: Activar
|
||||||
|
- **SSL Certificate**: Request a new SSL Certificate
|
||||||
|
- Marca las opciones:
|
||||||
|
- ✅ Force SSL
|
||||||
|
- ✅ HTTP/2 Support
|
||||||
|
- ✅ HSTS Enabled
|
||||||
|
|
||||||
|
4. Haz clic en **Save**
|
||||||
|
|
||||||
|
### 2. Verificar Acceso
|
||||||
|
|
||||||
|
Visita `https://gitea.tudominio.com` - deberías ver el asistente de instalación de Gitea.
|
||||||
|
|
||||||
|
## 📝 Notas Técnicas
|
||||||
|
|
||||||
|
### Red Interna
|
||||||
|
|
||||||
|
Gitea y PostgreSQL se comunican a través de la red `gitea-internal`:
|
||||||
|
|
||||||
|
- **gitea**: Conectado a `proxy` (para NPM) y `gitea-internal` (para DB)
|
||||||
|
- **gitea-db**: Solo conectado a `gitea-internal` (aislado de internet)
|
||||||
|
|
||||||
|
### Puerto Interno
|
||||||
|
|
||||||
|
Gitea escucha en el puerto `3000` internamente. NPM se encarga de:
|
||||||
|
- Proxy inverso desde puerto 443 (HTTPS) → 3000 (Gitea)
|
||||||
|
- Terminación SSL
|
||||||
|
- Redirección HTTP → HTTPS
|
||||||
|
|
||||||
|
### Persistencia de Datos
|
||||||
|
|
||||||
|
Dos volúmenes:
|
||||||
|
- `gitea_data`: Repositorios, configuración, avatares, LFS
|
||||||
|
- `gitea_db`: Base de datos PostgreSQL
|
||||||
|
|
||||||
|
## 🛠️ Comandos Útiles
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ver configuración de Gitea
|
||||||
|
docker compose exec gitea cat /data/gitea/conf/app.ini
|
||||||
|
|
||||||
|
# Acceder al contenedor de Gitea
|
||||||
|
docker compose exec gitea bash
|
||||||
|
|
||||||
|
# Acceder a PostgreSQL
|
||||||
|
docker compose exec gitea-db psql -U gitea
|
||||||
|
|
||||||
|
# Reiniciar solo Gitea (sin afectar DB)
|
||||||
|
docker compose restart gitea
|
||||||
|
|
||||||
|
# Ver espacio usado por volúmenes
|
||||||
|
docker system df -v | grep gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔄 Actualización
|
||||||
|
|
||||||
|
Ver la página [Actualización](Actualización) para instrucciones detalladas.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Siguiente paso**: [Configuración Inicial](Configuración-Inicial)
|
||||||
211
Personalización.md
Normal file
211
Personalización.md
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
# Personalización
|
||||||
|
|
||||||
|
Configuraciones avanzadas y personalización de tu instancia de Gitea.
|
||||||
|
|
||||||
|
## 📧 Configuración de Email (SMTP)
|
||||||
|
|
||||||
|
Para notificaciones, recuperación de contraseñas y webhooks.
|
||||||
|
|
||||||
|
### Editar app.ini
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose exec gitea vi /data/gitea/conf/app.ini
|
||||||
|
```
|
||||||
|
|
||||||
|
Añade o modifica la sección `[mailer]`:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[mailer]
|
||||||
|
ENABLED = true
|
||||||
|
FROM = gitea@tudominio.com
|
||||||
|
MAILER_TYPE = smtp
|
||||||
|
HOST = smtp.tudominio.com:587
|
||||||
|
IS_TLS_ENABLED = true
|
||||||
|
USER = gitea@tudominio.com
|
||||||
|
PASSWD = tu_password_smtp
|
||||||
|
```
|
||||||
|
|
||||||
|
Para Gmail:
|
||||||
|
```ini
|
||||||
|
HOST = smtp.gmail.com:587
|
||||||
|
USER = tu_email@gmail.com
|
||||||
|
PASSWD = tu_app_password
|
||||||
|
```
|
||||||
|
|
||||||
|
Reinicia Gitea:
|
||||||
|
```bash
|
||||||
|
docker compose restart gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔑 Configuración de SSH
|
||||||
|
|
||||||
|
### Generar Clave SSH (Cliente)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh-keygen -t ed25519 -C "tu_email@ejemplo.com"
|
||||||
|
cat ~/.ssh/id_ed25519.pub
|
||||||
|
```
|
||||||
|
|
||||||
|
### Añadir Clave en Gitea
|
||||||
|
|
||||||
|
1. Ve a **Settings** → **SSH / GPG Keys**
|
||||||
|
2. Haz clic en **Add Key**
|
||||||
|
3. Pega tu clave pública
|
||||||
|
4. Haz clic en **Add Key**
|
||||||
|
|
||||||
|
### Clonar con SSH
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone git@gitea.tudominio.com:usuario/repo.git
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ **Nota**: Este stack básico no expone el puerto SSH (22). Para usar SSH, necesitas publicar el puerto 22 del contenedor.
|
||||||
|
|
||||||
|
## 🔗 Webhooks
|
||||||
|
|
||||||
|
Configura notificaciones cuando ocurren eventos en tus repositorios.
|
||||||
|
|
||||||
|
### Crear Webhook
|
||||||
|
|
||||||
|
1. Ve al repositorio → **Settings** → **Webhooks**
|
||||||
|
2. Haz clic en **Add Webhook** → Selecciona tipo (Gitea, Discord, Slack, etc.)
|
||||||
|
3. Configura:
|
||||||
|
- **Target URL**: URL de tu servicio
|
||||||
|
- **HTTP Method**: POST (generalmente)
|
||||||
|
- **Content Type**: application/json
|
||||||
|
- **Secret**: Token de seguridad (opcional pero recomendado)
|
||||||
|
4. Selecciona eventos que disparan el webhook
|
||||||
|
5. Haz clic en **Add Webhook**
|
||||||
|
|
||||||
|
## 👥 Gestión de Usuarios
|
||||||
|
|
||||||
|
### Desde Panel de Administración
|
||||||
|
|
||||||
|
**Site Administration** → **User Accounts**:
|
||||||
|
|
||||||
|
- **Create User Account**: Crear usuarios manualmente
|
||||||
|
- **Edit**: Modificar usuarios existentes
|
||||||
|
- **Delete**: Eliminar usuarios
|
||||||
|
|
||||||
|
### Deshabilitar Auto-Registro
|
||||||
|
|
||||||
|
Edita `app.ini`:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[service]
|
||||||
|
DISABLE_REGISTRATION = true
|
||||||
|
REQUIRE_SIGNIN_VIEW = true # Requiere login para ver contenido
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cambiar a Usuario Admin
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose exec gitea gitea admin user change-password --username usuario --password nueva_password
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎨 Personalización Visual
|
||||||
|
|
||||||
|
### Logo y Favicon
|
||||||
|
|
||||||
|
1. Coloca tus archivos en el volumen `gitea_data`
|
||||||
|
2. Edita `app.ini`:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[ui]
|
||||||
|
DEFAULT_THEME = gitea
|
||||||
|
THEMES = gitea,arc-green
|
||||||
|
```
|
||||||
|
|
||||||
|
### Mensaje de Bienvenida
|
||||||
|
|
||||||
|
Crea un archivo Markdown en:
|
||||||
|
```
|
||||||
|
/data/gitea/custom/templates/home.tmpl
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 Integración CI/CD
|
||||||
|
|
||||||
|
Gitea soporta Gitea Actions (compatible con GitHub Actions).
|
||||||
|
|
||||||
|
### Habilitar Gitea Actions
|
||||||
|
|
||||||
|
Edita `app.ini`:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[actions]
|
||||||
|
ENABLED = true
|
||||||
|
```
|
||||||
|
|
||||||
|
### Añadir Runner
|
||||||
|
|
||||||
|
Necesitas un contenedor adicional `act_runner`. Ver [documentación oficial](https://docs.gitea.com/usage/actions/overview).
|
||||||
|
|
||||||
|
## 🔒 Autenticación Externa
|
||||||
|
|
||||||
|
### LDAP/Active Directory
|
||||||
|
|
||||||
|
**Site Administration** → **Authentication Sources** → **Add Authentication Source**
|
||||||
|
|
||||||
|
Selecciona **LDAP (via BindDN)** y configura:
|
||||||
|
- Host
|
||||||
|
- Port
|
||||||
|
- Bind DN
|
||||||
|
- User Search Base
|
||||||
|
- User Filter
|
||||||
|
|
||||||
|
### OAuth2 (Google, GitHub, etc.)
|
||||||
|
|
||||||
|
**Site Administration** → **Authentication Sources** → **OAuth2**
|
||||||
|
|
||||||
|
Configura el provider y las credenciales OAuth2.
|
||||||
|
|
||||||
|
## 📝 Configuración de Repositorios
|
||||||
|
|
||||||
|
### Límites de Tamaño
|
||||||
|
|
||||||
|
Edita `app.ini`:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[repository]
|
||||||
|
ROOT = /data/git/repositories
|
||||||
|
DEFAULT_BRANCH = main
|
||||||
|
|
||||||
|
[repository.upload]
|
||||||
|
FILE_MAX_SIZE = 50
|
||||||
|
```
|
||||||
|
|
||||||
|
### Git LFS
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[lfs]
|
||||||
|
STORAGE_TYPE = local
|
||||||
|
PATH = /data/git/lfs
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🛡️ Seguridad
|
||||||
|
|
||||||
|
### 2FA (Two-Factor Authentication)
|
||||||
|
|
||||||
|
1. Usuario → **Settings** → **Security**
|
||||||
|
2. **Two-Factor Authentication**
|
||||||
|
3. Escanea QR con app (Google Authenticator, Authy)
|
||||||
|
4. Introduce código de verificación
|
||||||
|
|
||||||
|
### Tokens de Acceso
|
||||||
|
|
||||||
|
**Settings** → **Applications** → **Generate New Token**
|
||||||
|
|
||||||
|
Úsalos para:
|
||||||
|
- API de Gitea
|
||||||
|
- CI/CD pipelines
|
||||||
|
- Automatización
|
||||||
|
|
||||||
|
## 🌐 Internacionalización
|
||||||
|
|
||||||
|
Gitea soporta múltiples idiomas. Cambia en:
|
||||||
|
|
||||||
|
**Settings** → **Account** → **Language**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Ver [Backup y Restauración](Backup-y-Restauración) para proteger tu configuración.
|
||||||
438
Solución-de-Problemas.md
Normal file
438
Solución-de-Problemas.md
Normal file
@@ -0,0 +1,438 @@
|
|||||||
|
# Solución de Problemas
|
||||||
|
|
||||||
|
Guía para resolver los problemas más comunes con Gitea.
|
||||||
|
|
||||||
|
## 🔍 Herramientas de Diagnóstico
|
||||||
|
|
||||||
|
### Ver Logs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Logs de Gitea en tiempo real
|
||||||
|
docker compose logs -f gitea
|
||||||
|
|
||||||
|
# Logs de PostgreSQL
|
||||||
|
docker compose logs -f gitea-db
|
||||||
|
|
||||||
|
# Últimas 100 líneas
|
||||||
|
docker compose logs --tail=100 gitea
|
||||||
|
|
||||||
|
# Logs dentro del contenedor
|
||||||
|
docker compose exec gitea cat /data/gitea/log/gitea.log
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verificar Estado
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Estado de contenedores
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
# Recursos usados
|
||||||
|
docker stats gitea gitea-db
|
||||||
|
|
||||||
|
# Conectividad de redes
|
||||||
|
docker network inspect gitea-internal
|
||||||
|
docker network inspect proxy
|
||||||
|
|
||||||
|
# Espacio en disco
|
||||||
|
df -h
|
||||||
|
docker system df -v | grep gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🗄️ Problemas de Base de Datos
|
||||||
|
|
||||||
|
### "Database connection failed" en instalación
|
||||||
|
|
||||||
|
**Síntomas**: Error al conectar con PostgreSQL durante el asistente
|
||||||
|
|
||||||
|
**Causas posibles**:
|
||||||
|
- PostgreSQL aún no está listo
|
||||||
|
- Contraseña incorrecta
|
||||||
|
- Configuración de red incorrecta
|
||||||
|
|
||||||
|
**Soluciones**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Verificar que gitea-db está corriendo
|
||||||
|
docker compose ps gitea-db
|
||||||
|
|
||||||
|
# 2. Ver logs de PostgreSQL
|
||||||
|
docker compose logs gitea-db | tail -20
|
||||||
|
|
||||||
|
# 3. Verificar que están en la misma red
|
||||||
|
docker network inspect gitea-internal | grep -A 10 Containers
|
||||||
|
|
||||||
|
# 4. Probar conexión manualmente
|
||||||
|
docker compose exec gitea nc -zv gitea-db 5432
|
||||||
|
|
||||||
|
# 5. Verificar contraseña
|
||||||
|
docker compose exec gitea env | grep GITEA__database__PASSWD
|
||||||
|
|
||||||
|
# 6. Reiniciar PostgreSQL
|
||||||
|
docker compose restart gitea-db
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
# 7. Reintentar instalación
|
||||||
|
```
|
||||||
|
|
||||||
|
### PostgreSQL no inicia
|
||||||
|
|
||||||
|
**Síntomas**: `gitea-db` en estado `Exited` o `Restarting`
|
||||||
|
|
||||||
|
**Soluciones**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ver error específico
|
||||||
|
docker compose logs gitea-db | grep -i error
|
||||||
|
|
||||||
|
# Verificar permisos
|
||||||
|
docker compose exec gitea-db ls -la /var/lib/postgresql/data
|
||||||
|
|
||||||
|
# Si está corrupto, restaurar desde backup
|
||||||
|
docker compose down
|
||||||
|
docker volume rm gitea_db
|
||||||
|
docker volume create gitea_db
|
||||||
|
# Restaurar BD desde backup
|
||||||
|
```
|
||||||
|
|
||||||
|
### Error de migración
|
||||||
|
|
||||||
|
**Síntomas**: Gitea no inicia después de actualizar, logs muestran migration error
|
||||||
|
|
||||||
|
**Solución**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Volver a versión anterior
|
||||||
|
docker compose down
|
||||||
|
docker pull gitea/gitea:1.20.0 # Versión previa
|
||||||
|
# Editar compose para usar versión anterior
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# 2. Restaurar BD desde backup
|
||||||
|
# (Ver página Backup y Restauración)
|
||||||
|
|
||||||
|
# 3. Intentar actualización nuevamente
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🌐 Problemas de Conectividad
|
||||||
|
|
||||||
|
### No puedo acceder a https://gitea.tudominio.com
|
||||||
|
|
||||||
|
**Síntomas**: Timeout o conexión rechazada
|
||||||
|
|
||||||
|
**Soluciones para Traefik**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Verificar que Traefik está corriendo
|
||||||
|
docker ps | grep traefik
|
||||||
|
|
||||||
|
# 2. Verificar labels de Gitea
|
||||||
|
docker inspect gitea | grep -A 20 Labels
|
||||||
|
|
||||||
|
# 3. Ver logs de Traefik
|
||||||
|
docker logs traefik | grep gitea
|
||||||
|
|
||||||
|
# 4. Verificar que está en red proxy
|
||||||
|
docker network inspect proxy | grep gitea
|
||||||
|
|
||||||
|
# 5. Probar acceso directo al puerto 3000
|
||||||
|
curl http://localhost:3000
|
||||||
|
```
|
||||||
|
|
||||||
|
**Soluciones para NPM**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Verificar Proxy Host en NPM
|
||||||
|
# Accede a NPM y revisa la configuración
|
||||||
|
|
||||||
|
# 2. Probar acceso directo
|
||||||
|
docker compose exec gitea curl localhost:3000
|
||||||
|
|
||||||
|
# 3. Verificar DNS
|
||||||
|
nslookup gitea.tudominio.com
|
||||||
|
|
||||||
|
# 4. Verificar que Gitea y NPM están en red proxy
|
||||||
|
docker network inspect proxy | grep -E "(gitea|npm)"
|
||||||
|
```
|
||||||
|
|
||||||
|
### SSL/TLS errors
|
||||||
|
|
||||||
|
**Síntomas**: Certificado inválido o ERR_CERT_AUTHORITY_INVALID
|
||||||
|
|
||||||
|
**Soluciones**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Verificar certificado
|
||||||
|
echo | openssl s_client -connect gitea.tudominio.com:443 | grep -A 5 "Certificate chain"
|
||||||
|
|
||||||
|
# Para Traefik: verificar resolver
|
||||||
|
docker exec traefik cat /etc/traefik/traefik.yml | grep -A 10 certificatesResolvers
|
||||||
|
|
||||||
|
# Para NPM: regenerar certificado
|
||||||
|
# En NPM: Edit Proxy Host → SSL → Force SSL → Request New Certificate
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📥 Problemas con Git Operations
|
||||||
|
|
||||||
|
### No puedo hacer push/pull
|
||||||
|
|
||||||
|
**Síntomas**: `fatal: unable to access` o autenticación fallida
|
||||||
|
|
||||||
|
**Soluciones**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Verificar URL del remoto
|
||||||
|
git remote -v
|
||||||
|
|
||||||
|
# 2. Probar con verbose
|
||||||
|
GIT_CURL_VERBOSE=1 git push origin main
|
||||||
|
|
||||||
|
# 3. Verificar credenciales
|
||||||
|
git config credential.helper
|
||||||
|
|
||||||
|
# 4. Limpiar cache de credenciales
|
||||||
|
git credential-cache exit
|
||||||
|
|
||||||
|
# 5. Verificar URL base en Gitea
|
||||||
|
docker compose exec gitea cat /data/gitea/conf/app.ini | grep ROOT_URL
|
||||||
|
```
|
||||||
|
|
||||||
|
### Push rechazado por tamaño
|
||||||
|
|
||||||
|
**Síntomas**: `error: RPC failed; HTTP 413`
|
||||||
|
|
||||||
|
**Solución**:
|
||||||
|
|
||||||
|
Edita `app.ini`:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[repository.upload]
|
||||||
|
FILE_MAX_SIZE = 100 # En MB
|
||||||
|
```
|
||||||
|
|
||||||
|
Reinicia:
|
||||||
|
```bash
|
||||||
|
docker compose restart gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔑 Problemas de Autenticación
|
||||||
|
|
||||||
|
### Olvidé contraseña de administrador
|
||||||
|
|
||||||
|
**Solución**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Cambiar contraseña desde línea de comandos
|
||||||
|
docker compose exec gitea gitea admin user change-password \
|
||||||
|
--username admin \
|
||||||
|
--password nueva_password_segura
|
||||||
|
```
|
||||||
|
|
||||||
|
### No puedo iniciar sesión
|
||||||
|
|
||||||
|
**Síntomas**: Credenciales correctas pero login falla
|
||||||
|
|
||||||
|
**Soluciones**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Verificar que el usuario existe
|
||||||
|
docker compose exec gitea gitea admin user list
|
||||||
|
|
||||||
|
# 2. Ver logs durante el intento de login
|
||||||
|
docker compose logs -f gitea
|
||||||
|
|
||||||
|
# 3. Verificar sesiones
|
||||||
|
docker compose exec gitea-db psql -U gitea -c "SELECT * FROM session LIMIT 5;"
|
||||||
|
|
||||||
|
# 4. Limpiar sesiones antiguas
|
||||||
|
docker compose exec gitea-db psql -U gitea -c "DELETE FROM session WHERE expiry < NOW();"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📧 Problemas de Email
|
||||||
|
|
||||||
|
### Emails no se envían
|
||||||
|
|
||||||
|
**Síntomas**: No llegan notificaciones
|
||||||
|
|
||||||
|
**Soluciones**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Verificar configuración SMTP en app.ini
|
||||||
|
docker compose exec gitea cat /data/gitea/conf/app.ini | grep -A 10 "\[mailer\]"
|
||||||
|
|
||||||
|
# 2. Probar envío desde Gitea
|
||||||
|
# Site Administration → Configuration → Send Testing Email
|
||||||
|
|
||||||
|
# 3. Ver logs de error
|
||||||
|
docker compose logs gitea | grep -i mail
|
||||||
|
|
||||||
|
# 4. Verificar conectividad SMTP
|
||||||
|
docker compose exec gitea nc -zv smtp.tudominio.com 587
|
||||||
|
```
|
||||||
|
|
||||||
|
## 💾 Problemas de Espacio
|
||||||
|
|
||||||
|
### Disco lleno
|
||||||
|
|
||||||
|
**Síntomas**: Gitea lento, errores al hacer push
|
||||||
|
|
||||||
|
**Soluciones**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Ver espacio usado
|
||||||
|
df -h
|
||||||
|
docker system df -v
|
||||||
|
|
||||||
|
# 2. Limpiar logs antiguos
|
||||||
|
docker compose exec gitea find /data/gitea/log -name "*.log" -mtime +30 -delete
|
||||||
|
|
||||||
|
# 3. Limpiar imágenes Docker sin usar
|
||||||
|
docker image prune -a
|
||||||
|
|
||||||
|
# 4. Limpiar volúmenes huérfanos
|
||||||
|
docker volume prune
|
||||||
|
|
||||||
|
# 5. Ver tamaño de repositorios
|
||||||
|
docker compose exec gitea du -sh /data/git/repositories/*
|
||||||
|
```
|
||||||
|
|
||||||
|
### Volumen corrupto
|
||||||
|
|
||||||
|
**Síntomas**: Errores de I/O, contenedor no inicia
|
||||||
|
|
||||||
|
**Solución drástica**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. HACER BACKUP SI ES POSIBLE
|
||||||
|
docker compose exec gitea tar czf /tmp/backup.tar.gz /data
|
||||||
|
|
||||||
|
# 2. Copiar backup fuera del contenedor
|
||||||
|
docker cp gitea:/tmp/backup.tar.gz ./
|
||||||
|
|
||||||
|
# 3. Recrear volumen
|
||||||
|
docker compose down
|
||||||
|
docker volume rm gitea_data
|
||||||
|
docker volume create gitea_data
|
||||||
|
|
||||||
|
# 4. Restaurar desde backup
|
||||||
|
docker run --rm -v gitea_data:/data -v $(pwd):/backup alpine \
|
||||||
|
sh -c "cd /data && tar xzf /backup/backup.tar.gz --strip-components=1"
|
||||||
|
|
||||||
|
# 5. Reiniciar
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## ⚡ Problemas de Rendimiento
|
||||||
|
|
||||||
|
### Gitea muy lento
|
||||||
|
|
||||||
|
**Síntomas**: Interfaz web tarda mucho, git operations lentas
|
||||||
|
|
||||||
|
**Soluciones**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Verificar recursos
|
||||||
|
docker stats gitea gitea-db
|
||||||
|
|
||||||
|
# 2. Ver procesos dentro de Gitea
|
||||||
|
docker compose exec gitea top
|
||||||
|
|
||||||
|
# 3. Optimizar PostgreSQL
|
||||||
|
# Editar compose, añadir a gitea-db:
|
||||||
|
command: postgres -c shared_buffers=256MB -c max_connections=200
|
||||||
|
|
||||||
|
# 4. Ver queries lentas en PostgreSQL
|
||||||
|
docker compose exec gitea-db psql -U gitea -c "
|
||||||
|
SELECT query, calls, total_time, mean_time
|
||||||
|
FROM pg_stat_statements
|
||||||
|
ORDER BY mean_time DESC
|
||||||
|
LIMIT 10;"
|
||||||
|
|
||||||
|
# 5. Verificar disco
|
||||||
|
iostat -x 5
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔄 Problemas de Actualización
|
||||||
|
|
||||||
|
### Contenedor no inicia después de actualizar
|
||||||
|
|
||||||
|
**Soluciones**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Ver logs de error
|
||||||
|
docker compose logs gitea | grep -i error
|
||||||
|
|
||||||
|
# 2. Volver a versión anterior
|
||||||
|
docker compose down
|
||||||
|
# Editar compose: image: gitea/gitea:VERSION_ANTERIOR
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# 3. Si persiste, restaurar desde backup
|
||||||
|
# (Ver página Backup y Restauración)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🆘 Comandos de Emergencia
|
||||||
|
|
||||||
|
### Reiniciar Completamente
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Reinicio completo manteniendo datos
|
||||||
|
docker compose restart
|
||||||
|
|
||||||
|
# Recrear contenedores manteniendo volúmenes
|
||||||
|
docker compose down
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Forzar recreación
|
||||||
|
docker compose up -d --force-recreate
|
||||||
|
```
|
||||||
|
|
||||||
|
### Reiniciar TODO (CUIDADO)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# ⚠️ ESTO ELIMINA TODOS LOS DATOS
|
||||||
|
docker compose down -v
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Tendrás que:
|
||||||
|
# 1. Pasar por el asistente de instalación nuevamente
|
||||||
|
# 2. Restaurar desde backup
|
||||||
|
```
|
||||||
|
|
||||||
|
### Acceder al Shell
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Shell de Gitea
|
||||||
|
docker compose exec gitea bash
|
||||||
|
|
||||||
|
# Shell de PostgreSQL
|
||||||
|
docker compose exec gitea-db bash
|
||||||
|
|
||||||
|
# Ejecutar comando sin shell interactivo
|
||||||
|
docker compose exec gitea ls -la /data/gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📞 Obtener Ayuda
|
||||||
|
|
||||||
|
Si ninguna solución funciona:
|
||||||
|
|
||||||
|
1. **Recopila información**:
|
||||||
|
```bash
|
||||||
|
docker compose logs > logs.txt
|
||||||
|
docker compose ps > ps.txt
|
||||||
|
docker inspect gitea > inspect.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Consulta recursos**:
|
||||||
|
- [Gitea Documentation](https://docs.gitea.com/)
|
||||||
|
- [Gitea Discourse](https://discourse.gitea.io/)
|
||||||
|
- [GitHub Issues](https://github.com/go-gitea/gitea/issues)
|
||||||
|
|
||||||
|
3. **Abre un issue** con:
|
||||||
|
- Versión de Gitea (`gitea --version`)
|
||||||
|
- Logs relevantes
|
||||||
|
- Pasos para reproducir
|
||||||
|
- Configuración (sin contraseñas)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Volver a**: [Home](Home)
|
||||||
180
Traefik.md
Normal file
180
Traefik.md
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
# Despliegue con Traefik
|
||||||
|
|
||||||
|
Esta guía te ayudará a desplegar Gitea usando **Traefik** como reverse proxy con certificados SSL automáticos de Let's Encrypt.
|
||||||
|
|
||||||
|
## ✅ Requisitos Previos
|
||||||
|
|
||||||
|
Antes de comenzar, asegúrate de tener:
|
||||||
|
|
||||||
|
- ✅ Traefik funcionando con soporte para Let's Encrypt
|
||||||
|
- ✅ Red Docker `proxy` creada y Traefik conectado a ella
|
||||||
|
- ✅ Dominio configurado apuntando a tu servidor
|
||||||
|
- ✅ Puertos 80 y 443 abiertos en el firewall
|
||||||
|
- ✅ DB_PASSWORD generada
|
||||||
|
|
||||||
|
### Verificar Red Proxy
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker network ls | grep proxy
|
||||||
|
```
|
||||||
|
|
||||||
|
Si no existe, créala:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker network create proxy
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔑 Generar DB_PASSWORD
|
||||||
|
|
||||||
|
**Antes de cualquier despliegue**, genera una contraseña segura para PostgreSQL:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
openssl rand -base64 32
|
||||||
|
```
|
||||||
|
|
||||||
|
Guarda el resultado, lo necesitarás para las variables de entorno.
|
||||||
|
|
||||||
|
> ⚠️ **Importante**: Usa comillas simples en el archivo `.env` si contiene caracteres especiales.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Despliegue desde Portainer
|
||||||
|
|
||||||
|
### Opción A: Git Repository (Recomendada)
|
||||||
|
|
||||||
|
Esta opción mantiene tu stack actualizado con el repositorio Git.
|
||||||
|
|
||||||
|
1. En Portainer, ve a **Stacks** → **Add stack**
|
||||||
|
2. Nombre del stack: `gitea`
|
||||||
|
3. Selecciona **Git Repository**
|
||||||
|
4. Configura el repositorio:
|
||||||
|
- **Repository URL**: `https://git.ictiberia.com/groales/gitea`
|
||||||
|
- **Repository reference**: `refs/heads/main`
|
||||||
|
- **Compose path**: `docker-compose.yml`
|
||||||
|
- **Additional paths**: `docker-compose.override.traefik.yml.example`
|
||||||
|
|
||||||
|
5. En **Environment variables**, añade:
|
||||||
|
|
||||||
|
```env
|
||||||
|
DOMAIN_HOST=gitea.tudominio.com
|
||||||
|
DB_PASSWORD='tu_password_generado'
|
||||||
|
```
|
||||||
|
|
||||||
|
⚠️ **Importante**:
|
||||||
|
- `DOMAIN_HOST` es el dominio sin protocolo
|
||||||
|
- **Usa comillas simples** en `DB_PASSWORD` para evitar problemas con caracteres especiales
|
||||||
|
- Reemplaza con tu contraseña real generada anteriormente
|
||||||
|
|
||||||
|
6. Haz clic en **Deploy the stack**
|
||||||
|
|
||||||
|
### Opción B: Web Editor
|
||||||
|
|
||||||
|
Si prefieres usar el editor web de Portainer:
|
||||||
|
|
||||||
|
1. Copia el contenido consolidado del [README - Sección Traefik](https://git.ictiberia.com/groales/gitea#despliegue-con-traefik)
|
||||||
|
2. Pégalo en el Web Editor
|
||||||
|
3. Configura las variables de entorno como en la Opción A
|
||||||
|
|
||||||
|
## 🖥️ Despliegue desde CLI
|
||||||
|
|
||||||
|
### 1. Clonar el repositorio
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://git.ictiberia.com/groales/gitea.git
|
||||||
|
cd gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Copiar el archivo override
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp docker-compose.override.traefik.yml.example docker-compose.override.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Configurar variables de entorno
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
|
Edita el archivo `.env` y configura:
|
||||||
|
|
||||||
|
```env
|
||||||
|
DOMAIN_HOST=gitea.tudominio.com
|
||||||
|
DB_PASSWORD='tu_password_generado'
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Iniciar el servicio
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Verificar el despliegue
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ver logs de Gitea
|
||||||
|
docker compose logs -f gitea
|
||||||
|
|
||||||
|
# Ver logs de PostgreSQL
|
||||||
|
docker compose logs -f gitea-db
|
||||||
|
|
||||||
|
# Verificar que ambos contenedores están corriendo
|
||||||
|
docker compose ps
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Configuración Inicial
|
||||||
|
|
||||||
|
Una vez desplegado, accede a `https://gitea.tudominio.com` y completa el asistente de instalación.
|
||||||
|
|
||||||
|
Ver la página [Configuración Inicial](Configuración-Inicial) para más detalles.
|
||||||
|
|
||||||
|
## 📝 Notas Técnicas
|
||||||
|
|
||||||
|
### Red Interna
|
||||||
|
|
||||||
|
Gitea y PostgreSQL se comunican a través de la red `gitea-internal`:
|
||||||
|
|
||||||
|
- **gitea**: Conectado a `proxy` (para Traefik) y `gitea-internal` (para DB)
|
||||||
|
- **gitea-db**: Solo conectado a `gitea-internal` (aislado de internet)
|
||||||
|
|
||||||
|
### Labels de Traefik
|
||||||
|
|
||||||
|
El override configura:
|
||||||
|
|
||||||
|
- ✅ Redirección automática HTTP → HTTPS
|
||||||
|
- ✅ Certificado SSL con Let's Encrypt
|
||||||
|
- ✅ Puerto interno 3000 (puerto web de Gitea)
|
||||||
|
- ✅ Middleware de redirección permanente
|
||||||
|
|
||||||
|
### Persistencia de Datos
|
||||||
|
|
||||||
|
Dos volúmenes:
|
||||||
|
- `gitea_data`: Repositorios, configuración, avatares, LFS
|
||||||
|
- `gitea_db`: Base de datos PostgreSQL
|
||||||
|
|
||||||
|
## 🛠️ Comandos Útiles
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ver configuración de Gitea
|
||||||
|
docker compose exec gitea cat /data/gitea/conf/app.ini
|
||||||
|
|
||||||
|
# Acceder al contenedor de Gitea
|
||||||
|
docker compose exec gitea bash
|
||||||
|
|
||||||
|
# Acceder a PostgreSQL
|
||||||
|
docker compose exec gitea-db psql -U gitea
|
||||||
|
|
||||||
|
# Reiniciar solo Gitea (sin afectar DB)
|
||||||
|
docker compose restart gitea
|
||||||
|
|
||||||
|
# Ver espacio usado por volúmenes
|
||||||
|
docker system df -v | grep gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔄 Actualización
|
||||||
|
|
||||||
|
Ver la página [Actualización](Actualización) para instrucciones detalladas.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Siguiente paso**: [Configuración Inicial](Configuración-Inicial)
|
||||||
30
_Sidebar.md
Normal file
30
_Sidebar.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# 📚 Wiki de Gitea
|
||||||
|
|
||||||
|
## Inicio
|
||||||
|
- [🏠 Home](Home)
|
||||||
|
|
||||||
|
## 🚀 Despliegue
|
||||||
|
- [Traefik](Traefik)
|
||||||
|
- [Nginx Proxy Manager](NPM)
|
||||||
|
|
||||||
|
## ⚙️ Configuración
|
||||||
|
- [Configuración Inicial](Configuración-Inicial)
|
||||||
|
- [Personalización](Personalización)
|
||||||
|
|
||||||
|
## 🔧 Mantenimiento
|
||||||
|
- [Backup y Restauración](Backup-y-Restauración)
|
||||||
|
- [Actualización](Actualización)
|
||||||
|
- [Solución de Problemas](Solución-de-Problemas)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📖 Enlaces Útiles
|
||||||
|
|
||||||
|
- [📦 Repositorio](https://git.ictiberia.com/groales/gitea)
|
||||||
|
- [📝 README](https://git.ictiberia.com/groales/gitea#readme)
|
||||||
|
- [🌐 Gitea Docs](https://docs.gitea.com/)
|
||||||
|
- [💬 Gitea Discourse](https://discourse.gitea.io/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Última actualización**: Diciembre 2025
|
||||||
Reference in New Issue
Block a user