Contenedor Docker con Gitea (Configuración con Compose)

Contenedor Docker con Gitea (Configuración con Compose)
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/gitea al directorio interno /data del 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