GNU/Linux >> Tutoriales Linux >  >> Fedora

Cómo instalar Gitea Code Hosting Service en Fedora 34

Gitea es una solución de alojamiento de código de código abierto basada en la plataforma Git. Está escrito en el idioma Go. Incluye un editor de archivos de repositorio, seguimiento de problemas, solicitudes de incorporación de cambios, administración de usuarios, notificaciones, wiki integrado, compatibilidad con LFS, ganchos de Git y mucho más.

Es una aplicación ligera. Por lo tanto, se puede instalar en sistemas de baja potencia. Si está buscando una plataforma Git autohospedada con una plataforma de memoria más pequeña, debe consultar Gitea.

Este artículo cubrirá cómo instalar y configurar Gitea en Fedora 34 y cómo configurar su primer repositorio Git. Gitea se puede instalar desde fuente, binario, un paquete docker o un paquete. Para nuestro tutorial, lo instalaremos desde binario.

Requisitos

  • Un servidor que ejecuta Fedora 34.
  • Un usuario sudo no root.
  • SELinux desactivado.
  • Asegúrate de que todo esté actualizado.

    $ sudo dnf update
    

Paso 1:configurar el cortafuegos

El primer paso es configurar el cortafuegos. El servidor Fedora viene con el Firewalld cortafuegos.

Compruebe si el cortafuegos se está ejecutando.

$ sudo firewall-cmd --state

Deberías obtener el siguiente resultado.

running

Verifique los servicios/puertos permitidos actualmente.

$ sudo firewall-cmd --permanent --list-services

Debería mostrar el siguiente resultado.

dhcpv6-client mdns ssh

Permitir puertos HTTP y HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Vuelva a comprobar el estado del cortafuegos.

$ sudo firewall-cmd --permanent --list-services

Debería ver un resultado similar.

dhcpv6-client http https mdns ssh

Vuelva a cargar el cortafuegos.

$ sudo systemctl reload firewalld

Paso 2:instalar Git

El primer paso es instalar Git.

$ sudo dnf install git

Verifique la instalación comprobando la versión de Git.

$ git --version
git version 2.31.1

Configurar Git

Git se puede configurar con git config dominio. Configure su nombre y dirección de correo electrónico para trabajar con Git.

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Puede verificar la configuración usando el siguiente comando.

$ git config --list
user.name=Your Name
[email protected]

Paso 3:instalar y configurar PostgreSQL

Gitea es compatible con SQLite, MySQL/Mariadb, MSSQL y PostgreSQL. Para nuestro tutorial, usaremos PostgreSQL.

Instale e inicialice PostgreSQL.

$ sudo dnf module enable postgresql:13
$ sudo dnf install postgresql-server postgresql-contrib
$ sudo postgresql-setup --initdb --unit postgresql
$ sudo systemctl enable --now postgresql

PostgreSQL utiliza el esquema de cifrado md5 para la autenticación de contraseña de forma predeterminada, lo que no es seguro. Debe cambiar a SCRAM-SHA-256 esquema. Y si se va a conectar a una base de datos PostgreSQL remota, debe configurarla para que escuche su dirección IP. Ambos se pueden cambiar editando /var/lib/pgsql/data/postgresql.conf expediente. Ábralo para editarlo.

$ sudo nano /var/lib/pgsql/data/postgresql.conf

Edite las siguientes variables de la siguiente manera.

listen_addresses = 'localhost, 201.0.110.0'
password_encryption = scram-sha-256

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Reinicie PostgreSQL.

$ sudo systemctl restart postgresql

Inicie sesión en el shell de PostgreSQL.

$ sudo -u postgres psql

Cree un nuevo usuario SQL y una base de datos para Gitea. Elija una contraseña segura para el usuario de su base de datos.

postgres-# CREATE ROLE gitea WITH LOGIN PASSWORD 'yourpassword';
postgres-# CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';

Reemplace el nombre de usuario, el nombre de la base de datos y la contraseña según corresponda.

Salga del shell escribiendo \q .

Permita que el usuario de la base de datos acceda a la base de datos creada anteriormente agregando la siguiente regla de autenticación a /var/lib/pgsql/data/pg_hba.conf .

Si la base de datos es local, agregue esta línea.

local    giteadb    gitea    scram-sha-256

Para una base de datos remota, use el siguiente código en su lugar.

host    giteadb    gitea    192.0.2.10/32    scram-sha-256

También deberá editar las siguientes líneas agregando el reemplazo ident con scram-sha-256 .

# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Deberían tener el siguiente aspecto.

# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Reinicie PostgreSQL.

$ sudo systemctl restart postgresql

También deberá agregar la siguiente regla en el firewall si desea habilitar las conexiones remotas.

$ sudo firewall-cmd --permanent--add-service=postgresql
$ sudo firewall-cmd --reload

Paso 4:crea un usuario de Git

Cree un nuevo usuario del sistema para ejecutar la aplicación Gitea.

$ sudo useradd \
   --system \
   --shell /bin/bash \
   --comment 'Git Version Control' \
   --create-home \
   --home /home/git \
   git

Este comando crea un nuevo usuario y grupo llamado git y establece el directorio de inicio en /home/git .

Paso 5 - Instalar Gitea

Abra la página de descargas de Gitea y verifique el número de versión del último binario disponible. Al momento de escribir este tutorial, la última versión es 1.14.3. Si hay una versión más nueva, cámbiela en la VERSION variable en el siguiente comando.

Usa el wget utilidad para obtener el último binario de Gitea.

$ GITEAVERSION=1.14.3
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64

Mueva el binario descargado a /usr/local/bin directorio.

$ sudo mv gitea /usr/local/bin

Haz el ejecutable binario.

$ sudo chmod +x /usr/local/bin/gitea

Ejecute los siguientes comandos para crear directorios y establecer los permisos necesarios para que Gitea funcione correctamente.

$ sudo mkdir -p /var/lib/gitea/{custom,data,log}
$ sudo chown -R git:git /var/lib/gitea/
$ sudo chmod -R 750 /var/lib/gitea/
$ sudo mkdir /etc/gitea
$ sudo chown root:git /etc/gitea
$ sudo chmod 770 /etc/gitea

El permiso para /etc/gitea El directorio se establece en 770 para que el asistente de instalación cree el archivo de configuración. Una vez que se complete la instalación, estableceremos un permiso más restrictivo.

Crear un archivo de servicio de Systemd

Ejecutaremos Gitea como un servicio systemd. Para ello, cree un nuevo archivo de entrada systemd para Gitea.

$ sudo nano /etc/systemd/system/gitea.service

Pegue el siguiente código en él.

[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=postgresql.service

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Como referencia, puede echar un vistazo al archivo systemd de muestra disponible en el repositorio de Gitea.

Vuelva a cargar el demonio systemd para habilitar el archivo que acabamos de crear.

$ sudo systemctl daemon-reload

Habilite e inicie el servicio de Gitea.

$ sudo systemctl enable --now gitea

Verifique que Gitea se esté ejecutando.

$ sudo systemctl status gitea
  gitea.service - Gitea
     Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2021-07-04 20:33:38 EDT; 1 day 8h ago
   Main PID: 46404 (gitea)
      Tasks: 7 (limit: 2328)
     Memory: 115.5M
CPU: 9min 12.061s CGroup: /system.slice/gitea.service ---46404 /usr/local/bin/gitea web -c /etc/gitea/app.ini ...

Paso 6 - Configurar Gitea

Gitea, de manera predeterminada, escucha en el puerto 3000. Puede usar un puerto diferente o quedarse con el puerto predeterminado. Por lo tanto, también debemos abrir el puerto 3000.

$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --reload

Abra su navegador y escriba https://YOURIPADDRESS:3000 y serás recibido con el instalador de Gitea. Use los siguientes valores para configurar.

Configuración de la base de datos

  • Tipo de base de datos: Elija PostgreSQL del menú desplegable
  • Anfitrión: 127.0.0.1:5432
  • Nombre de usuario: gitea
  • Contraseña: tucontraseña
  • Nombre de la base de datos: gitea

Configuración general

  • Título del sitio: Ingrese el nombre de su organización
  • Ruta raíz del repositorio: Deje la ruta predeterminada
  • Ruta raíz de Git LFS: Deje la ruta predeterminada
  • Ejecutar como nombre de usuario: git
  • Dominio del servidor SSH: Introduzca su dirección IP
  • Puerto de escucha HTTP: 3000 (puede cambiar el puerto aquí, pero deberá acceder a él a través del firewall).
  • URL base de Gitea: http://TUDIRECCIÓNIP:3000
  • Ruta de registro: Deje el valor predeterminado

Puede configurar los ajustes de correo electrónico y servidor en este punto, o puede cambiarlos más tarde. Sin embargo, debe completar la configuración de la cuenta de administrador.

Para iniciar la instalación, haga clic en Instalar Gitea* botón. Una vez completado, iniciará sesión automáticamente y será redirigido al panel de control de la cuenta.

La instalación creará el archivo de configuración de Gitea. Cambie su permiso a solo lectura.

$ sudo chmod 750 /etc/gitea
$ sudo chmod 640 /etc/gitea/app.ini

Eso es todo. Gitea ya está instalado en su servidor.

Paso 7:instale SSL con Let's Encrypt

Para instalar un certificado SSL usando Let's Encrypt, necesitamos descargar la herramienta Certbot usando el instalador del paquete Snapd incluido en Ubuntu 20.04.

Ejecute los siguientes comandos para instalar Certbot.

$ sudo dnf install certbot

Genere el certificado SSL.

$ sudo certbot certonly --standalone --preferred-challenges http -d example.com

El comando anterior descargará un certificado en /etc/letsencrypt/live/example.com directorio en su servidor.

Cree un directorio webroot de desafío para la renovación automática de Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Cree un trabajo cron para renovar el SSL. Se ejecutará todos los días para verificar el certificado y renovarlo si es necesario. Para eso, primero crea el archivo /etc/cron.daily/certbot-renew y ábralo para editarlo.

$ sudo nano /etc/cron.daily/certbot-renew

Pegue el siguiente código.

#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Cambie los permisos en el archivo de tareas para que sea ejecutable.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Paso 8:instalar y configurar Nginx

El siguiente paso es instalar el servidor Nginx.

$ sudo dnf install nginx

Cree el archivo de configuración de Nginx para Gitea.

$ sudo nano /etc/nginx/conf.d/gitea.conf

Pegue el siguiente código en él.

server {
        listen 80;
    
        location ~ /\.well-known/acme-challenge {
                root /var/lib/letsencrypt/;
        }
    
        server_name yourdomain.com;
        return 301 https://$server_name$request_uri;
}
server {
        listen 443 ssl http2;
        server_name your_domain;
    
        client_max_body_size 50m;
    
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
        ssl_session_tickets off;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20- POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
        ssl_prefer_server_ciphers off;
        ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
        ssl_stapling on;
        ssl_stapling_verify on;

        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;
    
        proxy_read_timeout 720s;
        proxy_connect_timeout 720s;
        proxy_send_timeout 720s;
        
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    
        location / {
                proxy_redirect off;
                proxy_pass http://127.0.0.1:3000;
     	}
        access_log /var/log/nginx/gitea.access.log;
        error_log /var/log/nginx/gitea.error.log;
}

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Verifique si el archivo de configuración funciona correctamente.

$ sudo nginx -t

Reinicie el servidor Nginx.

$ sudo systemctl restart nginx

A continuación, cambie el dominio de Gitea y la URL raíz. Para ello, abra el archivo de configuración /etc/gitea/app.ini .

$ sudo nano /etc/gitea/app.ini

Cambie los siguientes valores.

[server]
SSH_DOMAIN       = git.example.com
DOMAIN           = git.example.com
ROOT_URL         = https://git.example.com/

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Reinicie el servicio de Gitea.

$ sudo systemctl restart gitea

Paso 9:configuración de notificaciones por correo electrónico

Si desea recibir notificaciones por correo electrónico, puede habilitarlas a través de Sendmail o mediante un servicio de transacciones de correo electrónico de terceros, como Amazon SES, Postmark, Mailgun o Sendgrid.

Para habilitar las notificaciones, abra el archivo de configuración /etc/gitea/app.ini .

$ sudo nano /etc/gitea/app.ini

Edite la siguiente sección en el archivo y agregue el siguiente código.

[mailer]
ENABLED = true
FROM           = [email protected]
MAILER_TYPE    = smtp
HOST           = mail.mydomain.com:587
IS_TLS_ENABLED = true
USER           = [email protected]
PASSWD         = `password`

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Reinicie el servicio de Gitea.

$ sudo systemctl restart gitea

Paso 10 - Actualización de Gitea

Actualizar Gitea implica descargar y reemplazar el binario de Gitea.

Primero, detenga el servicio de Gitea.

$ sudo systemctl stop gitea

Descarga e instala el binario de Gitea.

$ GITEAVERSION=LATESTVERSION
$ wget -O gitea https://dl.gitea.io/gitea/${GITEAVERSION}/gitea-${GITEAVERSION}-linux-amd64
$ sudo mv gitea /usr/local/bin
$ sudo chmod +x /usr/local/bin/gitea

Reinicie el servicio de Gitea.

$ sudo systemctl start gitea

Paso 11 - Cómo usar SSH

Para usar SSH, debemos agregar nuestra propia clave SSH a Gitea. Si no tiene uno, puede crear uno usando el siguiente comando en su sistema local.

$ ssh-keygen -N "yourpassphrase" -t ed25519 -C "gitea_key"

Esto creará una clave llamada id_ed25519 en el ~/.ssh directorio. Para agregar esta clave, copie el contenido del archivo ~/.ssh/id_ed25519.pub a su portapapeles. Luego agregue esta clave a su página de configuración de Gitea en la pestaña Claves SSH/GPG . Haga clic en Agregar clave y asigne un nombre a la clave y péguelo en el cuadro.

Si tiene una lista de usuarios permitidos en el archivo de configuración de sshd, debe agregar git a ella.

Abra el archivo de configuración de SSHD.

$ sudo nano /etc/ssh/sshd_config

Busque una línea que debería parecerse a la siguiente.

AllowUsers myuser myotheruser git

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Reinicie el servicio SSHD.

$ sudo systemctl restart ssh

Debe agregar la frase de contraseña para la clave que creamos en ssh-agent herramienta en su sistema local para que no se le solicite repetidamente. Ejecute los siguientes comandos para hacerlo.

$ eval $(ssh-agent)
Agent pid 46436
$ ssh-add ~/.ssh/id_ed25519

Puedes clonar tu repositorio para probar la conexión SSH.

$ git clone ssh://[email protected]/username/repo.git
Cloning into 'repo'...
The authenticity of host 'example.com (201.110.80.160)' can't be established.
ECDSA key fingerprint is SHA256:Kx9l19zpGhHfbb2wHtmWeC7/WWv8e5/T3Tcws2qwVEw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'example.com,201.110.80.160' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (5/5), 4.77 KiB | 977.00 KiB/s, done.

Conclusión

Esto concluye el tutorial sobre la instalación y configuración del servicio de alojamiento de código de Gitea en Fedora 34. Si tiene alguna pregunta, publíquela en los comentarios a continuación.


Fedora
  1. Cómo instalar Gitea Self-hosted Git Service usando Docker en Ubuntu 18.04

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

  3. Cómo instalar Gitea Code Hosting Platform con HTTPS en Debian 10

  4. Cómo instalar Node.js en Fedora 35 / Fedora 34

  5. Cómo instalar y configurar Redis 6 en Fedora 34

Cómo instalar el código de Visual Studio en la estación de trabajo Fedora 35

Cómo instalar Visual Studio Code en Fedora 36 Linux

Cómo instalar Visual Studio Code (VS Code) en Fedora 34 / 35

Cómo instalar y configurar Git en Fedora 35

Cómo instalar Go en Fedora 35

Cómo instalar Gitea en Ubuntu 22.04