commit e8326ce6d569a0621ef7c02b091d176da1d10116 Author: groales Date: Wed Dec 3 16:27:25 2025 +0100 Wiki completa de Gitea: 9 páginas en español diff --git a/Actualización.md b/Actualización.md new file mode 100644 index 0000000..e57cf8f --- /dev/null +++ b/Actualización.md @@ -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) diff --git a/Backup-y-Restauración.md b/Backup-y-Restauración.md new file mode 100644 index 0000000..e43020a --- /dev/null +++ b/Backup-y-Restauración.md @@ -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) diff --git a/Configuración-Inicial.md b/Configuración-Inicial.md new file mode 100644 index 0000000..1a80590 --- /dev/null +++ b/Configuración-Inicial.md @@ -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) diff --git a/Home.md b/Home.md new file mode 100644 index 0000000..029fcf0 --- /dev/null +++ b/Home.md @@ -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 diff --git a/NPM.md b/NPM.md new file mode 100644 index 0000000..92ef518 --- /dev/null +++ b/NPM.md @@ -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) diff --git a/Personalización.md b/Personalización.md new file mode 100644 index 0000000..308a248 --- /dev/null +++ b/Personalización.md @@ -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. diff --git a/Solución-de-Problemas.md b/Solución-de-Problemas.md new file mode 100644 index 0000000..788e2b0 --- /dev/null +++ b/Solución-de-Problemas.md @@ -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) diff --git a/Traefik.md b/Traefik.md new file mode 100644 index 0000000..276282a --- /dev/null +++ b/Traefik.md @@ -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) diff --git a/_Sidebar.md b/_Sidebar.md new file mode 100644 index 0000000..e750f30 --- /dev/null +++ b/_Sidebar.md @@ -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