Gitea

Gitea es un servidor Git ligero, autosuficiente y muy fácil de desplegar, que proporciona una interfaz web, gestión de repositorios, permisos, SSH, API, wikis y un sistema de issues. Es una alternativa mucho más ligera a GitLab
Enlaces
Requisitos
- Docker instalado
- Portainer instalado
- Proxy Inverso Traefik o NGINX Proxy Manager.
Opcional pero recomendado
Repositorio
Dockergroales/gitea Hub:- https://hub.docker.com/r/gitea/gitea - ICT
Portainer
Add a new stack – Portainer Documentation
Web editor
En Portainer «Stack» agregamos nuevo usando el editor WEB pegando el contenido del fichero «docker-compose.yml» y el contenido del fichero de variables
Variables
################################################ Variables de entorno para Gitea
# POSTGRESCopia CONTENEDOReste ###############################################archivo POSTGRES_USER=giteaa POSTGRES_PASSWORD=CAMBIA_ESTA_PASSWORD.env POSTGRES_DB=giteay ###############################################configura los valores necesarios según tu despliegue
# DATABASEDB_PASSWORD - Contraseña de PostgreSQL (GiteaREQUERIDO)
# Genera una segura con: openssl rand ->base64 Postgres)32
################################################ GITEA__database__DB_TYPE=postgresIMPORTANTE: GITEA__database__HOST=postgres:5432Usar GITEA__database__NAME=comillas simples si contiene caracteres especiales
DB_PASSWORD=''
# DB_NAME - Nombre de la base de datos (opcional, default: gitea)
DB_NAME=gitea
GITEA__database__USER=# DB_USER - Usuario de PostgreSQL (opcional, default: gitea)
DB_USER=gitea
GITEA__database__PASSWD=${POSTGRES_PASSWORD}# DOMAIN_HOST - Dominio para Traefik (SOLO si usas Traefik)
# Ejemplo: git.tudominio.com
# No es necesario para NPM
DOMAIN_HOST=
docker-compose
services:
gitea:
container_name: gitea
image: gitea/gitea:latest-rootless
container_name: gitealatest
restart: unless-stopped
depends_on:environment:
-USER_UID: 1000
USER_GID: 1000
GITEA__database__DB_TYPE: postgres
ports:GITEA__database__HOST: gitea-db:5432
GITEA__database__NAME: ${DB_NAME:-gitea}
"3001:3000"GITEA__database__USER: ${DB_USER:-gitea}
"2222:2222"GITEA__database__PASSWD: env_file:${DB_PASSWORD}
-TZ: stack.envEurope/Madrid
volumes:
- data:gitea_data:/var/lib/gitea
- config:/etc/giteadata
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
networks:
- defaultproxy
- proxygitea-internal
postgres:depends_on:
- gitea-db
gitea-db:
container_name: gitea-db
image: postgres:18
container_name: gitea-postgres18-alpine
restart: unless-stopped
env_file:environment:
POSTGRES_DB: ${DB_NAME:-gitea}
stack.envPOSTGRES_USER: ${DB_USER:-gitea}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgresql:gitea_db:/var/lib/postgresqlpostgresql/data
networks:
- defaultgitea-internal
volumes:
data:
config:
postgresql:
networks:
default:gitea_data:
name: gitea_netgitea_data
#gitea_db:
redname: internagitea_db
Gitea <-> Postgresnetworks:
proxy:
external: true
#gitea-internal:
compartidaname: Proxy gitea-internal
Publicando detrás de un proxy
Crear registro DNS
En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "host.domain.com"
NGINX proxy

Para publicar el contenedor detrás de NGINX proxy, como el stack está en la red proxy solo deberás crear un nuevo host
Crear un nuevo "proxy host"
Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto que use (3000):

Traefik

Para publicar el contenedor detrás del proxy Traefik, deberás añadir al fichero docker-compose.yaml las siguientes etiquetas al servicio gitea
labels:
- traefik.enable=true
- traefik.http.routers.git.rule=Host(`git.dominio.com`)
- traefik.http.routers.git.tls=true
- traefik.http.routers.git.tls.certresolver=letsencrypt
- traefik.http.services.git.loadbalancer.server.port=3000
Solo IPs Privadas
Para permitir el acceso solo desde redes privadas, modifica en la sección de «labels» del fichero docker-compose.yml, para añadir la siguiente linea y configurar el «middleware» «privateIPs@file»
- traefik.http.routers.git.middlewares=privateIPs@file
Configuración inicial
Cuando nos conectamos la primera vez a la URL publicada con el proxy (https://git.dominio.com), nos aparece un asistente
Base de datos
Los parametros que salen aquí los definimos en la variables. Estarán correctos:
Configuración general
No se suele cambiar nada
Configuración opcional
Otras configuraciones (correo, cuenta admin, etc)
Todas estas configuraciones de escriben el el fichero /var/lib/docker/volumes/gitea_config/_data/app.ini. Posteriormente se modificarán directamente aquí
SSO
Microsoft EntraID
Registro de aplicación
-
Inicie sesión en el Centro de administración de Microsoft Entra
-
Entra ID->Registros de Aplicaciones y seleccione Nuevo registro.
-
Escriba un nombre descriptivo para la aplicación.
-
En Tipos de cuenta admitidos, especifique quién puede usar la aplicación. Se recomienda seleccionar solo Cuentas en este directorio organizativo para la mayoría de las aplicaciones.
- URI de redirección:
WEB->https://git.dominio.com/user/oauth2/EntraID/callback
Secreto de aplicación
-
Seleccione Certificados y secretos>Secretos de cliente>Nuevo secreto de cliente.
-
Agregue una descripción para la clave secreta de cliente.
-
Seleccione una expiración para el secreto o especifique una duración personalizada.
-
Registre el valor del secreto de cliente para usarlo en el código de la aplicación cliente. Este valor secreto nunca se muestra de nuevo después de salir de esta página.





