Contenedor Docker con Gitea (Configuración con Compose)
Aprende a configurar un contenedor Docker con Gitea para gestionar repositorios Git de forma sencilla y segura. Este tutorial te guía a través de los pasos para una implementación exitosa.
¿Qué es Gitea?
Gitea es una herramienta open-source y ligera para alojar proyectos utilizando un sistema de control de versiones GIT. Nos permite crear nuestro propio servidor de repositorios autoalojado, siendo un clon funcional y eficiente de GitHub.
Para saber más visita el enlace de su web
Requisitos y Configuración de Base de Datos
Gitea puede utilizar bases de datos SQLite (por defecto, la más sencilla), PostgreSQL o MySQL.
Opción 1: SQLite (Recomendado para inicio rápido)
Si no especificas nada, Gitea usará SQLite, almacenando la base de datos dentro del volumen (/srv/gitea:/data). Esta es la opción más rápida para empezar.
Opción 2: MySQL (Recomendado para entornos de producción)
Si deseas utilizar MySQL, debes tener un contenedor de MySQL o un servidor de base de datos operativo.
Script de configuración MySQL (Ejemplo): Por buenas prácticas es recomendable crear la base de datos y un usuario dedicado.
CREATE DATABASE 'gitea' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'gitea'@'%' IDENTIFIED BY 'password_segura';
GRANT ALL PRIVILEGES ON 'gitea'.* TO 'gitea'@'%';
FLUSH PRIVILEGES;
(Nota: El archivo docker-compose.yml necesitaría las variables de entorno para conectarse a este servidor MySQL).
Creando el contendor con docker-compose
Creamos un directorio para alojar el fichero de configuración de Compose y los datos persistentes de Gitea.
mkdir -p /opt/gitea
cd /opt/gitea
Creamos el fichero docker-compose.yml con la siguiente configuración (compatible con SQLite por defecto, o lista para conectar a una base de datos externa):
version: "3.3"
services:
gitea:
container_name: gitea
restart: always
image: gitea/gitea:1.21 # Se recomienda usar una versión específica, no 'latest'
volumes:
- /srv/gitea:/data # Montamos el directorio /data donde Gitea almacena todo (repositorios, configuración, base de datos SQLite por defecto, etc.)
ports:
- "13000:3000" # Puerto HTTP/Web (Externo:Interno). Usarás http://ip-del-servidor:13000 para el navegador.
- "10022:22" # Puerto SSH (Externo:Interno). Para clonar/empujar vía SSH.
environment:
# Opcional: Variables para configuración inicial o conexión a base de datos externa (PostgreSQL/MySQL)
# - DB_TYPE=mysql
# - DB_HOST=mysql_host:3306
# ...
Explicación de parámetros:
- services: Define los contenedores que componen la aplicación, en este caso sólo “gitea”.
- container_name: Nombre asignado al contenedor para una fácil referencia.
- image: Nombre de la imagen de Docker Hub.
- ports: Mapeo de puertos (Puerto_externo:Puerto_interno). El puerto 3000 es la interfaz web. El puerto 22 es para GIT vía SSH.
- volumes: Monta el directorio local
/srv/giteaal directorio interno/datadel contenedor. Esto asegura que todos los datos (repositorios, configuración, y la base de datos SQLite si se usa) persistan a pesar de reiniciar o actualizar el contenedor. - restart:
"always", asegura que el contenedor se reinicie automáticamente si falla o tras un reinicio del sistema.
Arrancando el Contenedor
Creamos y arrancamos el contenedor con el siguiente comando:
docker-compose up -d
Listamos los contenedores Docker para verificar el estado:
docker ps
Configuración Inicial de Gitea
Ahora abrimos un navegador web y probamos a conectarnos al contenedor usando el puerto mapeado:
http://ip-del-servidor:13000