En este tutorial, le mostraremos cómo instalar el software Gitea en su VPS junto con Nginx como servidor web y el certificado Free Let's Encrypt, usando Ubuntu 20.04.
Gitea es un software escrito en el lenguaje de programación "Go" y es similar a Bitbucket, GitHub y Gitlab. El software se usa para el servicio Git autohospedado y es compatible con múltiples sistemas operativos como Linux, Windows, macOS y ARM.
La instalación no tomará más de 10 minutos y la disfrutarás mientras la instalas. ¡Empecemos!
Requisitos
- Instalación nueva de Ubuntu 20.04
- Privilegios de usuario:usuario root o no root con privilegios sudo
Paso Paso 1. Actualizar el sistema
Una instalación nueva de Ubuntu 20.04 necesita una actualización del sistema y es por eso que necesitamos ejecutar los siguientes comandos.
sudo apt update -y && sudo apt upgrade -y
Paso 2. Instala las dependencias requeridas
Estos paquetes deben instalarse antes de continuar con la instalación.
apt install gnupg2 git unzip -y
Paso 3. Instalar el servidor web Nginx
El servidor web Nginx se puede instalar con el siguiente comando:
sudo apt install nginx -y
Una vez que se completa la instalación, puede verificar el estado del servicio Nginx:
sudo systemctl status nginx
Paso 4. Instalar el servidor de base de datos MariaDB
MariaDB se utiliza como backend de base de datos para Gitea y se puede instalar con el siguiente comando:
sudo apt-get install mariadb-server -y
Paso 5. Configurar el servidor de base de datos MariaDB
Una vez que el servidor de la base de datos se haya instalado correctamente, debemos configurarlo.
Inicie sesión en el shell de MariaDB con “mysql ” y habilite la tabla Innodb:
MariaDB [(none)]> SET GLOBAL innodb_file_per_table = ON;
Salga del shell de MariaDB con “salir ” y abra el archivo de configuración predeterminado de MariaDB:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Agregue las siguientes líneas de código debajo de “mysqld sección ”
innodb_file_format = Barracuda
innodb_large_prefix = 1
innodb_default_row_format = dynamic
Una vez realizados los cambios, reinicie el servicio MariaDB para que los cambios surtan efecto.
sudo systemctl restart mariadb
Paso 6. Crear base de datos y usuario de base de datos
El software de Gitea requiere una base de datos y un usuario para poder funcionar correctamente. Para crearlos y otorgar los privilegios adecuados, vuelva a iniciar sesión en el shell de MariaDB y ejecute los siguientes comandos:
MariaDB [(none)]>CREATE DATABASE gitea;
MariaDB [(none)]>CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'strongpasswordhere';
MariaDB [(none)]>GRANT ALL ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'strongpasswordhere' WITH GRANT OPTION;
MariaDB [(none)]>ALTER DATABASE gitea CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>exit;
Paso 7. Instalar Gitea
Este es el paso que tanto esperábamos y es la instalación del software Gitea. Antes de instalarlo, necesitamos crear un usuario del sistema para ejecutar Gitea con el siguiente comando:
sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git
Lo siguiente es descargar la última versión de Gitea en su servidor.
sudo wget https://dl.gitea.io/gitea/1.14.6/gitea-1.14.6-linux-amd64
Una vez descargada la Gitea, necesitamos copiar el binario a la ruta del sistema y establecer los permisos correctos:
sudo cp gitea-1.14.6-linux-amd64 /usr/bin/gitea && chmod 755 /usr/bin/gitea
El siguiente paso es crear el directorio de Gitea para almacenar los datos y los registros junto con sus permisos:
sudo mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git:git /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo chmod 770 /etc/gitea
Paso 8. Crear el Servicio Gitea
Crea un archivo vacío:
sudo nano /etc/systemd/system/gitea.service
E importa las siguientes líneas de código:
[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=mysql.service
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/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
Después de crear el archivo con contenido, vuelva a cargar el archivo de configuración, habilite e inicie el servicio Gitea.
sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea
Para verificar si Gitea se está ejecutando correctamente, ejecute el siguiente comando:
sudo systemctl status gitea
La salida debería ser similar a esta:
# sudo systemctl status gitea
● gitea.service - Gitea
Cargado:cargado (/etc/systemd/system/gitea.service; habilitado; valor preestablecido del proveedor:habilitado)
Activo:activo (en ejecución) desde el lun 2021-08-09 23:36:36 CEST; hace 8 minutos
PID principal:42187 (gitea)
Tareas:6 (límite:4652)
Memoria:111,8 M
CGroup:/system.slice/gitea.service
└─42187 /usr/bin/gitea web -c /etc/gitea/app.ini
Paso 9. Nginx como proxy inverso para Gitea
Primero, cree un nuevo archivo de configuración de Nginx:
sudo nano /etc/nginx/conf.d/gitea.conf
Agregue las siguientes líneas de código:
upstream gitea {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name gitea.yourdomain.com;
root /var/lib/gitea/public;
access_log off;
error_log off;
location / {
try_files maintain.html $uri $uri/index.html @node;
}
location @node {
client_max_body_size 0;
proxy_pass http://localhost:3000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_read_timeout 120;
}
}
Una vez que se crea el archivo, guárdelo, ciérrelo y verifique la configuración de Nginx con el siguiente comando:
nginx -t
La salida debe ser:
#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Si la configuración es correcta, reinicie el servicio Nginx para obtener los cambios más recientes.
systemctl restart nginx
Paso 10. Instale el certificado SSL Let's Encrypt gratuito
A continuación, deberá instalar un certificado SSL gratuito "Let's Encrypt". 'Let's Encrypt' es actualmente uno de los proveedores de cifrado TLS más populares en los últimos años. Es la autoridad de certificación más grande del mundo, utilizada por más de 250 millones de sitios web.
Primero, debe instalar el software Certbot en el servidor con el siguiente comando:
sudo apt install certbot python3-certbot-nginx -y
Una vez que el Certbot está instalado, estamos listos para instalar el certificado para el dominio:
sudo certbot --nginx -d gitea.example.com
Durante la instalación, puede elegir la opción de redirección y todas las solicitudes de HTTP se redirigirán a HTTPS.
Después de la instalación exitosa, se recibirá el siguiente mensaje similar:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/gitea.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/gitea.example.com/privkey.pem
11. Accede a la web de Gitea de forma segura
Ahora, cuando se completa cada paso, podemos acceder a nuestro sitio web de Gitea en https://gitea.example.com Ingrese la contraseña de usuario de MySQL que usó para crear en el paso 6. Desplácese hacia abajo en la parte inferior de la página y presione "Instalar Gitea “.
¡Felicidades! Ha instalado con éxito el software Gitea y puede disfrutar usándolo ahora. Por supuesto, simplemente puede suscribirse a cualquiera de nuestros planes de alojamiento VPS de Linux y dejar que nuestros expertos configuren todo en minutos, completamente gratis.
PD. Si le gustó esta publicación sobre cómo instalar Gitea en Nginx con Free Lets Encrypt SSL en Ubuntu 20.04, compártala con sus amigos en las redes sociales usando los botones a la izquierda o simplemente deje una respuesta a continuación. Gracias.