Cómo instalar Cloudflare Ddns en Docker - DNS Dinámico automático en Docker

Imagen
Cloudflare DDNS | Dynamic DNS | Docker Cloudflare DDNS: DNS dinámico automático autohospedado en Docker Actualiza automáticamente registros DNS en Cloudflare cuando tu IP cambia. Soporta IPv4 e IPv6, notificaciones, proxy Cloudflare. Ideal para acceso remoto a casa o servidor. ¿Qué es Cloudflare DDNS? Cloudflare DDNS es un actualizador de DNS dinámico automático que detecta cambios en tu dirección IP pública y actualiza automáticamente tus registros DNS en Cloudflare. Si tu ISP asigna IPs dinámicas (cambio frecuente), necesitas DDNS para que tu dominio siempre apunte a tu dirección actual. Casos de uso: Acceso remoto a tu servidor/NAS en casa con dominio personalizado, monitoreo de hogar, Plex/Jellyfin en línea, Minecraft privado, VPN casera. Ejecutándose en Docker, se actualiza automáticamente cada 5 minutos (configurable). Soporta IPv4 e IPv6. Integración nativa con Cloudflare API. Notificaciones en Discord/Telegr...

Cómo instalar Gitea en Docker - Gestor Git self-hosted en Docker

Gitea | Git Hosting | Self-Hosted | Docker

Gitea en Docker: Plataforma Git self-hosted ligera y potente

Plataforma de alojamiento Git auto-hospedable, ligera y de rápido despliegue. Alternativa open-source a GitHub y GitLab con CI/CD integrado, gestión de issues y mucho más.

¿Qué es Gitea?


Gitea es una plataforma de alojamiento Git auto-hospedable
de código abierto. Es una alternativa ligera y rápida a GitHub, GitLab y Bitbucket, diseñada para ser fácil de instalar y ejecutar con recursos mínimos. Perfecta para equipos pequeños, homelabs y proyectos personales.

En Docker: Gitea se despliega fácilmente con Docker Compose. Puede usar SQLite por defecto o conectarse a MySQL/PostgreSQL. Incluye servidor SSH integrado, CI/CD con Gitea Actions, y una interfaz web moderna y responsive.

Ventaja principal: Extremadamente ligero en comparación con GitLab. Requiere menos recursos (puede correr en un Raspberry Pi), es rápido, fácil de configurar y mantiene tus datos de código bajo tu control total.

Características principales

Gestión de repositorios

Creación, clonación, push/pull de repositorios Git.

Issues y Projects

Sistema de seguimiento de issues y gestión de proyectos.

Pull Requests

Revisiones de código con pull requests y code review.

Gitea Actions

CI/CD integrado compatible con GitHub Actions.

Servidor SSH integrado

SSH dedicado para operaciones Git sin dependencias externas.

Wikis

Wikis integradas en cada repositorio para documentación.

Registros y paquetes

Registro de contenedores y gestión de paquetes.

Multi-usuario y equipos

Gestión de usuarios, organizaciones y equipos con roles.

Webhooks

Integración con servicios externos vía webhooks.

Autenticación externa

OAuth2, LDAP, SMTP y más métodos de autenticación.

Interfaz responsive

UI moderna que funciona en móviles y tablets.

Multi-idioma

Soporte para 40+ idiomas incluyendo español.

Requisitos del sistema

  • Docker y Docker Compose instalados
  • 512 MB de RAM (1 GB recomendado para producción)
  • 2 GB de disco para repositorios y datos
  • Puerto 3000 para web (configurable)
  • Puerto 222 para SSH (configurable)
  • SQLite (por defecto) o MySQL/PostgreSQL
Nota importante: Asegúrate de que el directorio de datos tenga los permisos correctos. El usuario dentro del contenedor tiene UID/GID 1000 por defecto.

Instalación rápida con Docker Compose

Paso 1: Crear directorio y archivo docker-compose.yml

mkdir -p gitea cd gitea

Paso 2: Crear docker-compose.yml básico

services: server: image: docker.gitea.com/gitea:1.26.1 container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 restart: always volumes: - ./gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "222:22"

Paso 3: Iniciar Gitea

docker compose up -d

Paso 4: Completar instalación

Abre en tu navegador: http://localhost:3000

Completa el asistente de instalación web. Si usas SQLite, no necesitas configurar base de datos externa.

Tip: Para producción, usa versiones específicas como :1.26.1 en lugar de :latest para mayor estabilidad.

Configuración avanzada

Con MySQL como base de datos

services: server: image: docker.gitea.com/gitea:1.26.1 container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=mysql - GITEA__database__HOST=db:3306 - GITEA__database__NAME=gitea - GITEA__database__USER=gitea - GITEA__database__PASSWD=gitea restart: always volumes: - ./gitea:/data ports: - "3000:3000" - "222:22" depends_on: - db db: image: docker.io/library/mysql:8 restart: always environment: - MYSQL_ROOT_PASSWORD=gitea - MYSQL_USER=gitea - MYSQL_PASSWORD=gitea - MYSQL_DATABASE=gitea volumes: - ./mysql:/var/lib/mysql

Con PostgreSQL como base de datos

services: server: image: docker.gitea.com/gitea:1.26.1 environment: - GITEA__database__DB_TYPE=postgres - GITEA__database__HOST=db:5432 - GITEA__database__NAME=gitea - GITEA__database__USER=gitea - GITEA__database__PASSWD=gitea depends_on: - db db: image: docker.io/library/postgres:14 environment: - POSTGRES_USER=gitea - POSTGRES_PASSWORD=gitea - POSTGRES_DB=gitea volumes: - ./postgres:/var/lib/postgresql/data

Volumenes nombrados (sin permisos)

networks: gitea: external: false volumes: gitea: driver: local services: server: volumes: - gitea:/data

Personalizar puertos

ports: - "8080:3000" # Web en puerto 8080 - "2221:22" # SSH en puerto 2221

Primeros pasos

1. Crear tu primer repositorio

  1. Accede a http://tu-servidor:3000
  2. Inicia sesión con tu cuenta de administrador
  3. Haz clic en Crear nuevo repositorio
  4. Clona, push y pull como en cualquier servidor Git

2. Configurar Gitea Actions (CI/CD)

  1. Ve a tu repositorio y selecciona la pestaña Actions
  2. Crea un archivo .gitea/workflows/ci.yml
  3. Usa workflows compatibles con GitHub Actions
  4. Los jobs se ejecutan automáticamente en push/PR

3. Configurar autenticación externa

  1. Ve a Administración > Configuración
  2. Añade proveedor OAuth2 (Google, GitHub, GitLab)
  3. Configura LDAP/Active Directory si lo necesitas
  4. Los usuarios pueden iniciar sesión con su cuenta externa

Actualización y mantenimiento

Actualizar a la última versión

# Cambia la versión en docker-compose.yml si es necesario docker compose pull docker compose up -d

Ver logs

docker compose logs -f server

Reiniciar Gitea

docker compose restart server

Backup de datos

# Backup del directorio de datos tar czf gitea-backup-$(date +%Y%m%d).tar.gz ./gitea

Generar claves de seguridad

docker run -it --rm docker.gitea.com/gitea:1.26.1 gitea generate secret SECRET_KEY docker run -it --rm docker.gitea.com/gitea:1.26.1 gitea generate secret INTERNAL_TOKEN
Importante: Guarda las claves SECRET_KEY e INTERNAL_TOKEN. Si las pierdes después de la instalación, los datos encriptados no se podrán recuperar.

Comparativa: Gitea vs GitLab vs GitHub

  • Gitea: Ligero, rápido, fácil de instalar, ideal para equipos pequeños y homelabs. Recursos mínimos requeridos.
  • GitLab: Completo, con muchas características empresariales, pero requiere muchos más recursos (mínimo 4GB RAM).
  • GitHub: Servicio cloud líder, no self-hosted. Ideal para proyectos open-source públicos.

Elige Gitea si quieres control total de tus datos con recursos mínimos. Elige GitLab para empresas que necesitan características avanzadas. Elige GitHub para colaboración pública.

Casos de uso

  • Homelab: Gestiona tus proyectos personales con control total
  • Pequeñas empresas: Plataforma Git interna sin costes de suscripción
  • Equipos de desarrollo: Colaboración con CI/CD integrado
  • Educación: Plataforma Git para estudiantes sin costes
  • Open Source: Alternativa auto-hospedada para proyectos open-source
  • Compliance: Cumplimiento de políticas de datos locales

Comentarios