Gitea es una aplicación web de alojamiento de código escrita en Go y bifurcada de Gogs. Como sugiere su nombre, está diseñado para usarse con el popular programa de control de fuente Git, de manera similar a Gitlab y Github. Esta guía explicará cómo instalar Gitea en Debian 10 detrás de un proxy inverso HTTPS (Nginx).
Requisitos
- Un sistema Debian 10 en el que tenga privilegios de root.
- Un nombre de dominio registrado que apunta a su servidor.
- Debe establecerse la variable de entorno $EDITOR.
- Acceso a un servidor SMTP para notificaciones por correo electrónico (opcional).
Asegúrese de que su (sub)dominio apunte a la dirección IPv4 de su servidor con un registro A. Opcionalmente, cree un registro AAAA que apunte a la dirección IPv6 de su servidor.
Paso 1:Preparando el sistema
Comience por actualizar su índice de paquetes e instale las actualizaciones disponibles:
apt update apt upgrade -y reboot
Para esta configuración, se requieren varios paquetes de software:
- Git, una dependencia de Gitea.
- PostgreSQL, ya que Gitea requiere una base de datos.
- Nginx, que se utilizará como proxy inverso.
- Certbot, una utilidad para obtener certificados SSL de Let's Encrypt.
- Sudo, para ejecutar comandos como usuario del sistema postgres.
Instálelos de la siguiente manera:
apt install -y git nginx certbot postgresql sudo
A continuación, cree un usuario para ejecutar Gitea:
adduser --system --disabled-password --group --shell /bin/bash --home /home/gitea gitea
Luego crea la estructura de directorios para Gitea:
mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea
Y establezca las propiedades y los permisos de la siguiente manera:
chown -R gitea:gitea /var/lib/gitea chown -R gitea:gitea /run/gitea chown -R root:gitea /etc/gitea chmod -R 750 /var/lib/gitea chmod 770 /etc/gitea
Los permisos en /etc/gitea son temporales y se reforzarán después de ejecutar el instalador web.
Paso 2:Configuración de la base de datos
Asegúrese de que Postgres esté habilitado y ejecutándose:
systemctl enable --now [email protected]
A continuación, cree un rol de usuario y una base de datos para que los utilice Gitea:
sudo -u postgres psql postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password'; postgres=# CREATE DATABASE gitea; postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea; postgres=# exit;
Paso 3:Instalación de Gitea
Descargue el último binario linux-amd64 de la página de descargas de Gitea. Por ejemplo:
wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea chmod 755 /usr/local/bin/gitea
A continuación, cree un archivo de unidad systemd para Gitea:
$EDITOR /etc/systemd/system/gitea.service
E ingresa lo siguiente:
[Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target Requires=postgresql.service [Service] Type=simple User=gitea Group=gitea WorkingDirectory=/var/lib/gitea/ RuntimeDirectory=gitea ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini Restart=always Environment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.target
Asegúrese de que la nueva unidad esté cargada:
systemctl daemon-reload
Luego instruya a systemd para iniciar Gitea al inicio del sistema:
systemctl enable gitea.service
Paso 4:Configuración de Gitea
Para la configuración inicial, usaremos el script de instalación web incluido. Primero, inicia Gitea:
systemctl start gitea.service
Luego navegue a http://your_domain:3000/install y complete los parámetros requeridos de la siguiente manera:
- Tipo de base de datos:PostgreSQL
- Host:127.0.0.1:5432
- Nombre de usuario:gitea
- Contraseña:ingrese la contraseña que eligió durante la creación del rol de Postgres.
- Nombre de la base de datos:gitea
- SSL:Deshabilitar
- Título del sitio:Título de su elección.
- Ruta raíz del repositorio:/var/lib/gitea/data/repositories
- Ruta raíz de Git LFS:/var/lib/gitea/data/lfs
- Ejecutar como nombre de usuario:gitea
- Dominio del servidor SSH:su_dominio
- Puerto del servidor SSH:22
- Publicación de escucha HTTP de Gitea:3000
- URL base de Gitea:https://tu_dominio/
- Ruta de registro:/var/lib/gitea/log
Configure el correo electrónico y las configuraciones restantes según lo considere oportuno, luego haga clic en "Instalar Gitea". Será redirigido a una URL defectuosa. Esto es normal, ya que aún no hemos configurado Nginx o HTTPS. Por motivos de rendimiento, ahora configuraremos Gitea para escuchar en un socket Unix en lugar del puerto TCP predeterminado.
Detener Gitea antes de continuar:
systemctl stop gitea.service
Ajuste los permisos en /etc/gitea como se muestra a continuación. Esto evita que cualquier persona que no pertenezca al grupo gitea lea app.ini, que contiene información confidencial, incluidas las credenciales de la base de datos.
chmod 750 /etc/gitea chown root:gitea /etc/gitea/app.ini chmod 640 /etc/gitea/app.ini
Abra su archivo de configuración:
$EDITOR /etc/gitea/app.ini
Remove the following line from the [server] section:
HTTP_PORT = 3000
And add the following lines to the [server] section:
HTTP_ADDR = /run/gitea/gitea.sock PROTOCOL = unix UNIX_SOCKET_PERMISSION = 666
Paso 5:Configuración del proxy inverso
Stop Nginx if it is running, as certbot will need to bind to port 80:
systemctl stop nginx.service
Utilice el siguiente comando para obtener un certificado para su dominio:
certbot certonly --standalone --agree-tos -m [email protected] -d your_domain
Let's Encrypt verificará la propiedad del dominio antes de emitir el certificado. Su certificado, cadena y clave privada se almacenarán en /etc/letsencrypt/live/your_domain/.
Ahora podemos configurar Nginx. Cree un nuevo archivo de configuración:
$EDITOR /etc/nginx/sites-available/gitea
E ingrese la siguiente configuración:
server { listen 80; listen [::]:80; server_name your_domain; return 301 https://$server_name$request_uri; access_log /var/log/nginx/gitea-proxy_access.log; error_log /var/log/nginx/gitea-proxy_error.log; } server { listen 443 ssl; listen [::]:443 ssl; server_name your_domain; ssl on; ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem; location / { proxy_pass http://unix:/var/run/gitea/gitea.sock; } access_log /var/log/nginx/gitea-proxy_access.log; error_log /var/log/nginx/gitea-proxy_error.log; }
El primer bloque del servidor simplemente sirve para redirigir todas las solicitudes HTTP a HTTPS. El segundo bloque escucha las conexiones HTTPS y las envía al socket de Unix en el que configuramos Gitea para escuchar.
Una vez que haya guardado la configuración anterior, ejecute lo siguiente para habilitarla:
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled
Compruebe si hay errores de sintaxis y edite su configuración en consecuencia:
nginx -t
Finalmente, inicie Nginx y Gitea:
systemctl start nginx.service gitea.service
Su instancia de Gitea ahora debería estar ejecutándose correctamente. Si no creó una cuenta de administrador con el instalador web inicial, el primer usuario que se registre tendrá la función de administrador.
Pasos opcionales
Configuración de registro
Por defecto, Gitea registra mensajes de nivel de gravedad Info y superior. Lo más probable es que desee cambiar eso a Advertencia o Error. Para hacerlo, abra /etc/gitea/app.ini y cambie el parámetro NIVEL en la sección [registro] a uno de:seguimiento, depuración, información, advertencia, error, crítico, fatal, ninguno. Por ejemplo, para registrar mensajes de gravedad Advertencia y superior, use:
[log] MODE = file LEVEL = warn ROOT_PATH = /var/lib/gitea/log
Reinicie Gitea para que los cambios surtan efecto:
systemctl restart gitea.service
Servidor SSH separado
Gitea puede utilizar alternativamente su propio servidor SSH. Para habilitarlo, agregue la siguiente línea a la sección de configuración [servidor]:
START_SSH_SERVER = true
Y cambie el puerto SSH a cualquier número por encima de 1000, por ejemplo:
SSH_PORT = 2222
Luego reinicie Gitea para aplicar los cambios.