Cómo instalar Gitea Code Hosting Platform con HTTPS en CentOS 8

Cómo instalar Gitea Code Hosting Platform con HTTPS en CentOS 8

Gitea es una aplicación web de alojamiento de código escrita en Go. 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á la instalación de Gitea en CentOS 8 con un proxy inverso Nginx HTTPS.

Requisitos

  • Un sistema CentOS 8 en el que tenga privilegios de root.
  • Un nombre de dominio registrado que apunta a su servidor.
  • La variable de entorno $EDITOR debe establecerse en su editor de texto preferido.
  • 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.

NOTA: Esta guía asume que SELinux está configurado como deshabilitado o permisivo.

Paso 1: Preparando el sistema

Comience instalando las actualizaciones disponibles y reiniciando:

dnf update -y
reboot

Para esta configuración, se requieren varios componentes de software:

  • Git, una dependencia de Gitea.
  • PostgreSQL, ya que Gitea requiere una base de datos.
  • Nginx, que se utilizará como proxy inverso.
  • Sudo, para ejecutar comandos como usuario del sistema postgres.
  • Obtener
  • Certbot, una utilidad para obtener certificados SSL de Let’s Encrypt. Certbot se instalará por separado ya que no está disponible en los repositorios de software de CentOS.

Instálelos de la siguiente manera:

dnf install -y git postgresql postgresql-server nginx sudo wget

Certbot-auto es un script que gestiona la instalación de certbot. Descargalo:

wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto

Asegúrese de que se hayan establecido los permisos correctos:

chmod 0755 /usr/local/bin/certbot-auto

Ejecute lo siguiente para instalar certbot. El administrador de paquetes le pedirá que confirme la instalación de las dependencias, responda ‘y’.

certbot-auto --install-only

A continuación, cree un usuario para ejecutar Gitea:

useradd --system --shell /bin/bash --create-home --home-dir /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 /var/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.

Habilite el tráfico a los puertos 80 y 443 de forma permanente:

firewall-cmd --add-port 80/tcp --add-port 443/tcp --permanent
firewall-cmd --reload

El acceso al puerto 3000 solo se requiere temporalmente para la configuración inicial, ya que configuraremos gitea para usar un socket Unix en su lugar.

firewall-cmd --add-port 3000/tcp

Paso 2: Configuración de la base de datos

Inicializar Postgres:

postgresql-setup --initdb --unit postgresql

Asegúrese de que esté habilitado y ejecutándose:

systemctl enable --now postgresql.service

Inicie sesión en Postgres:

sudo -u postgres psql

A continuación, cree un rol de usuario y una base de datos para que los utilice Gitea:

postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password';
postgres=# CREATE DATABASE gitea;
postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
postgres=# \q

Abra el archivo de configuración de autenticación del cliente de Postgres:

$EDITOR /var/lib/pgsql/data/pg_hba.conf

Agrega la siguiente línea justo después de # Conexiones locales IPv4:

# IPv4 local connections:
host	gitea		gitea		127.0.0.1/32		md5

Guarde el archivo y reinicie Postgres:

systemctl restart postgresql.service

Paso 3: Instalación de Gitea

Descarga la versión binaria linux-amd64 de Gitea desde Página de descarga de Gitea. Por ejemplo:

wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea

Establezca los permisos correctos en el binario descargado:

chmod 755 /usr/local/bin/gitea

A continuación, cree un archivo de unidad systemd:

$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 en el arranque:

systemctl enable gitea.service

Paso 4: Configuración de Gitea

Para la configuración inicial, usaremos el instalador 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
  • Anfitrión: 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
  • Gitea HTTP Escuchar Publicación: 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 razones de rendimiento, ahora configuraremos Gitea para escuchar en un socket Unix en lugar del puerto TCP predeterminado.

Detenga a 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 esté en el 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

Elimine la siguiente línea de la sección del servidor:

HTTP_PORT = 3000

Y agregue las siguientes líneas en la sección del servidor:

HTTP_ADDR        = /run/gitea/gitea.sock
PROTOCOL         = unix
UNIX_SOCKET_PERMISSION = 666

Paso 5: Configuración del proxy inverso

Detenga Nginx si se está ejecutando, para permitir que certbot escuche en el puerto 80:

systemctl stop nginx.service

Utilice el siguiente comando para obtener un certificado para su dominio:

certbot-auto 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/conf.d/gitea.conf

E ingrese los siguientes bloques de servidor:

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 hemos configurado Gitea para escuchar.

Una vez que haya guardado la configuración anterior, verifique si hay errores de sintaxis y edite su configuración si es necesario:

nginx -t

Finalmente, inicie Nginx y Gitea:

systemctl start nginx.service gitea.service

Su instancia de Gitea ahora debería estar ejecutándose correctamente. Accede a él en https://tu_dominio

Pasos opcionales

Configuración de registro

De forma predeterminada, Gitea registra mensajes de nivel de gravedad Info y superiores. Lo más probable es que desee cambiar eso a Warn o Error. Para hacerlo, abra /etc/gitea/app.ini y cambie el parámetro LEVEL en el [log] sección a una de: rastreo, depuración, información, advertencia, error, crítico, fatal, ninguno. Por ejemplo, para registrar mensajes de gravedad Advertencia y superior, utilice:

[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 al [server] sección de configuración:

START_SSH_SERVER = true

Y cambie el puerto SSH a cualquier número superior a 1024, por ejemplo:

SSH_PORT = 2222

Luego reinicie Gitea para aplicar los cambios y habilitar el tráfico al puerto elegido:

firewall-cmd --add-port 2222/tcp --permanent
firewall-cmd --reload

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *