Cómo instalar Gitea usando Docker en Ubuntu 22.04

Gitea es un servicio Git autoalojado, gratuito y de código abierto, como GitHub, BitBuacket y GitLab. Es un fork comunitario del servicio git de Gogs, escrito en Go con una Licencia MIT. Gitea proporciona funciones para el desarrollo colaborativo y en equipo, como seguimiento de errores, wikis y revisión de código. Gita es una aplicación multiplataforma, que puede instalarse en múltiples sistemas operativos como Linux, macOS, Windows y ARM.

El objetivo principal de Gitea es proporcionar la forma más fácil, rápida y sencilla de crear y desplegar un servicio Git en tu servidor. Además, Gitea admite múltiples métodos de autenticación, como LDAP, PAM, SMTP y FreeIPA. En cuanto a los eventos de repositorio webhook, Gitea soporta múltiples webhooks como Slack, Discord, Microsoft Team, Telegram, etc.

En este tutorial, aprenderás a instalar y configurar el servidor Git autoalojado llamado Gitea con Docker en el último servidor Ubuntu 22.04. También cubre la instalación y configuración del servidor web Nginx como proxy inverso para el servicio de contenedores Gitea.

Requisitos previos

  • Un servidor Ubuntu – este tutorial utiliza el último servidor Ubuntu 22.04.
  • Un usuario no root con privilegios de root – o también puedes utilizar el usuario root.

Instalar y configurar Docker

El primer paso que harás es instalar y configurar Docker en tu máquina Ubuntu. Para este tutorial, instalarás Docker desde el repositorio oficial de Docker, por lo que tendrás que añadir la clave GPG de Docker y el repositorio a tu sistema.

Antes de empezar, ejecuta el siguiente comando apt para instalar las dependencias básicas de paquetes como gnupg2 y curl.

sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Una vez completada la instalación, ejecuta el siguiente comando para descargar y añadir la clave GPG al repositorio Docker. La clave GPG se almacenará en el directorio /etc/apt/keyrings.

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

A continuación, añade el repositorio Docker utilizando el siguiente comando.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Después, actualiza y refresca tus repositorios de Ubuntu utilizando el siguiente comando.

sudo apt update

En la siguiente captura de pantalla puedes ver que se ha añadido el repositorio Docker para Ubuntu 22.04.

configurar repositorio docker

Por último, puedes instalar el motor Docker en tu sistema Ubuntu utilizando el siguiente comando. El paquete docker-compose plugin es el sustituto del Docker Compose, que ahora puede utilizarse como plugin para Docker.

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Introduce Y para confirmar la instalación y pulsa ENTER para continuar. Se iniciará la instalación de Docker.

instala docker y docker compose

Ahora ejecuta el siguiente comando docker para verificar tu instalación de Docker.

sudo docker run hello-world

Si la instalación de Docker se ha realizado correctamente, verás el mensaje Hello World de Docker.

docker run hola-mundo

Configurar el entorno de despliegue de Gitea

Después de haber instalado correctamente Docker, ahora vas a configurar el entorno de instalación de Gitea. En este ejemplo, el servicio de contenedores de Gitea se ejecutará como usuario no root, por lo que tendrás que crear un nuevo usuario en tu sistema y añadirlo al grupo ‘docker’ para permitirle ejecutar y poner en marcha los contenedores Docker.

Ejecuta el siguiente comando para añadir un nuevo usuario llamado gitea. La opción -m se utiliza aquí para crear automáticamente un nuevo directorio de inicio para el usuario‘gitea‘ y el shell por defecto para el nuevo usuario es /bin/bash.

useradd -m -s /bin/bash gitea

A continuación, añade el usuario ‘gitea‘ al grupo‘docker‘ utilizando el siguiente comando. Y ahora el usuario ‘gitea‘ podrá ejecutar contenedores Docker.

usermod -aG docker gitea

Para verificarlo, inicia sesión como usuario ‘gitea’ utilizando el siguiente comando.

su - gitea

Ahora ejecuta el siguiente comando docker para iniciar un nuevo contenedor con la imagen«hola-mundo«.

docker run hello-world

Deberías ver el mensaje Hola-mundo de Docker, lo que significa que estás listo para empezar a configurar un nuevo proyecto para la instalación de Gitea.

configurar docker para usuario no root

Construir los servicios de contenedor de Gitea

Después de añadir un nuevo usuario para ejecutar el servicio de contenedores Gitea, ahora vas a configurar la instalación del proyecto Gitea. Todos los comandos de esta sección se ejecutan bajo el nuevo usuario‘gitea‘.

En primer lugar, crea un nuevo directorio de proyecto con el nombre«myapp» y cambia el directorio de trabajo a él.

mkdir -p myapp; cd myapp/

Crea un nuevo archivo docker-compose.yml utilizando el editor nano.

nano docker-compose.yml

Añade la siguiente configuración al archivo docker-compose. yml.

version: "2"
volumes:
gitea-data:
driver: local
gitea-config:
driver: local

services:
server:
image: gitea/gitea:1.16.8-rootless
environment:
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
volumes:
- ./data:/var/lib/gitea
- gitea-data:/var/lib/gitea
- ./config:/etc/gitea
- gitea-config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
depends_on:
- db

db:
image: postgres:14
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data

Guarda y cierra el archivo cuando hayas terminado.

Con estas configuraciones, crearás los siguientes recursos:

  • Dos volúmenes Docker gitea-datay gitea-config para almacenar los datos de usuario y los archivos de configuración de Gitea.
  • Dos servicios con el nombre«server» y«db«.
  • El servicio contenedor de Gitea se ejecutará con el nombre«servidor», basado en la imagen Docker «gitea/gitea:1.16.8-rootless«, y exportará los puertos TCP 3000 y 2222.
  • El servicio del contenedor Gitea se ejecutará con el servicio de base de datos PostgreSQL llamado «db«.
  • El servicio «db» se ejecutará como base de datos para el servicio Gitea con la imagen Docker predeterminada PostgreSQL«postgres:14«. Todos los datos relacionados con el servicio«db» se almacenarán localmente en el directorio llamado«postgres».

A continuación, ejecuta el siguiente comando Docker para empezar a construir e iniciar los servicios del contenedor Gitea.

docker compose up -d

A continuación puedes ver el proceso de descarga de las imágenes Docker necesarias para Gitea.

iniciar el despliegue de gitea

Cuando todo el proceso se haya completado, verás la salida como en la siguiente captura de pantalla.

finalizado el despliegue de gitea

Ahora ejecuta el siguiente comando Docker para comprobar los servicios de contenedor de Gitea.

docker compose ps

En la siguiente captura de pantalla, puedes ver que el servicio llamado«server» y«db» se está ejecutando, lo que significa que el despliegue de los servicios de contenedor de Gitea se ha completado con éxito.

El servicio Gitea se está ejecutando en el localhost con el puerto 3000. Y el puerto 2222 puede utilizarse para conexiones SSH.

comprobar los servicios de contenedores gitea

Si tienes algún error durante la instalación, comprueba siempre los logs de los servicios de contenedor utilizando los siguientes comandos.

Comprobar los logs de todos los servicios de contenedor.

docker compose logs

Comprobar los logs de cada db y servidor de los servicios de contenedor.

docker compose logs db
docker compose logs server

Configurar Nginx como Proxy Inverso para Gitea

Ya has completado la instalación de los servicios de contenedor de Gitea, ahora vas a instalar y configurar el servidor web Nginx como proxy inverso para el servicio de contenedor de Gitea que se ejecuta en el puerto 3000 por defecto.

En este ejemplo, el servicio de contenedor Gitea se ejecutará con el nombre de dominio git.hwdomain.io y SSL Letsencrypt activado. Así que antes de configurar el proxy inverso nginx, asegúrate de que tienes el nombre de dominio y el SSL Letsencrypted generados para tu nombre de dominio.

Ahora instala el paquete Nginx utilizando el siguiente comando apt.

sudo apt install nginx

Introduce Y para confirmar la instalación y pulsa ENTER para continuar.

instalar nginx

A continuación, crea una nueva configuración SSL /etc/nginx/snippets/ssl.conf utilizando el editor nano.

sudo nano /etc/nginx/snippets/ssl.conf

Añade la siguiente configuración al archivo. Además, tendrás que cambiar la ruta del certificado SSL.

ssl_certificate /etc/letsencrypt/live/git.hwdomain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.hwdomain.io/privkey.pem;
# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
#ssl_stapling on;
#ssl_stapling_verify on;
#resolver 8.8.8.8 8.8.4.4 valid=300s;
#resolver_timeout 5s;
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

Guarda y cierra el archivo cuando hayas terminado.

A continuación, crea una nueva configuración de bloques de servidor Nginx para el proxy inverso Gitea /etc/nginx/sites-available/gitea. conf utilizando el editor nano.

sudo nano /etc/nginx/sites-available/gitea.conf

Añade la siguiente configuración al archivo, y asegúrate de cambiar el nombre de dominio git.hwdomain.io por tu dominio.

server {
    server_name git.hwdomain.io;
    listen 443 ssl http2;
    include snippets/ssl.conf;
# Log files
access_log /var/log/nginx/gitea.access.log;
error_log /var/log/nginx/gitea.error.log;

location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

Guarda y cierra el archivo cuando hayas terminado.

Ahora ejecuta el siguiente comando para activar la configuración de los bloques del servidor gitea.conf y verificar la configuración de Nginx.

sudo ln -s /etc/nginx/sites-available/gitea.conf /etc/nginx/sites-enabled/
sudo nginx -t

Si tu configuración es correcta, verás un mensaje de salida como«syntax is ok – test is successful«.

Por último, reinicia el servicio nginx para aplicar la nueva configuración de bloques del servidor Nginx gitea.conf y la configuración SSL ssl.conf.

sudo systemctl restart nginx

Ahora ya has completado la configuración de Nginx como proxy inverso para el servicio contenedor de Gitea, que ahora se ejecuta en el nombre de dominio https://git.hwdomain.io con SSL activado sobre él.

Iniciar la configuración de la instalación de Gitea

Para iniciar la instalación y configuración de Gitea, abre tu navegador web y visita el nombre de dominio gitea de tu instalación ( por ejemplo https://git.hwdomain.io). Ahora verás la página de instalación de Gitea.

En la sección Configuración inicial, déjala por defecto porque se rellena automáticamente con las credenciales de la base de datos PostgreSQL del archivo docker-compose.yml.

gitea configuración inicial

Ahora cambia el«Dominio del servidor» de Gitea y la«URL base de Gitea» con tu dominio de instalación. En este ejemplo el dominio es https://git.hwdomain.io.

configurar nombre de dominio gitea

En la sección «Configuración opcional», haz clic en la flecha de«Configuración de la cuenta de administrador«. Ahora introduce el nuevo nombre de usuario administrador, la contraseña y la dirección de correo electrónico de tu servidor de Gitea y haz clic en el botón«Instalar Gitea«.

crear usuario administrador

Una vez finalizado el proceso de instalación, serás redirigido a la página de inicio de Gitea y te conectarás como el nuevo usuario que acabas de crear.

panel de usuario de gitea

La instalación y configuración de Gitea con Docker en la última versión de Ubuntu 22.04 se ha completado con éxito.

Conclusión

¡Enhorabuena! Ya has completado la instalación de un servidor git autoalojado llamado Gitea con Docker en el último servidor Ubuntu 22.04. Además, has aprendido la configuración básica de docker-compose.yml para crear servicios de contenedor. Además, has aprendido a configurar Nginx como proxy inverso para una aplicación en contenedor, que en este ejemplo es el servicio en contenedor Gitea.

Scroll al inicio