Gitea es un servidor Git gratuito, de código abierto, autohospedado y muy conocido, escrito en el lenguaje de programación Go. Es una plataforma de control de versiones similar a Github. Es robusto, escalable y ofrece muchas funciones, incluidos problemas y seguimiento de tiempo, bifurcación de repositorios, bloqueo y etiquetado de archivos, fusión y muchos otros. Si está buscando un servicio Git autohospedado, probablemente Gitea sea la mejor opción que pueda usar.
En este tutorial, le mostraré cómo instalar Gitea en Debian 11.
Requisitos
- Un servidor que ejecuta Debian 11.
- Se configura una contraseña raíz en el servidor.
Instalar y configurar la base de datos MariaDB
Gitea utiliza MariaDB/MySQL como base de datos. Por lo tanto, el servidor de la base de datos debe estar instalado en su servidor. Si no está instalado, puede instalarlo ejecutando el siguiente comando:
apt-get install mariadb-server -y
Una vez que MariaDB esté instalado, deberá establecer una contraseña de MariaDB y asegurar la instalación. Puede hacerlo ejecutando el script mysql_secure_installation:
mysql_secure_installation
Responda todas las preguntas como se muestra a continuación:
Enter current password for root (enter for none): OK, successfully used password, moving on... Set root password? [Y/n] Y Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Luego, conéctese a la interfaz MariaDB usando el siguiente comando:
mysql -u root -p
Una vez que esté conectado, cree una base de datos y un usuario para Gitea con el siguiente comando:
MariaDB [(none)]> CREATE DATABASE gitea;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password';
A continuación, elimine los privilegios y salga de MariaDB con el siguiente comando:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;
Instalar Gitea
Primero, deberá crear un usuario dedicado para ejecutar Gitea. Puedes crearlo con el siguiente comando:
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /opt/git git
Debería ver el siguiente resultado:
Adding system user `git' (UID 109) ... Adding new group `git' (GID 115) ... Adding new user `git' (UID 109) with group `git' ... Creating home directory `/opt/git' ...
A continuación, descarga la última versión de Gitea con el siguiente comando:
curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest |grep browser_download_url | cut -d '"' -f 4 | grep '\linux-amd64$' | wget -i -
A continuación, mueva el binario de Gitea a la ruta del sistema con el siguiente comando:
mv gitea-*-linux-amd64 /usr/local/bin/gitea
A continuación, establezca el permiso ejecutable para el binario de Gitea:
chmod +x /usr/local/bin/gitea
A continuación, verifica la versión de Gitea usando el siguiente comando:
gitea --version
Debería ver el siguiente resultado:
Gitea version 1.15.3 built with GNU Make 4.1, go1.16.8 : bindata, sqlite, sqlite_unlock_notify
A continuación, deberá crear una estructura de directorios para Gitea. Puedes crearlo con el siguiente comando:
mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
A continuación, establezca el permiso y la propiedad adecuados con el siguiente comando:
chown git:git /var/lib/gitea/{data,indexers,log}
chmod 750 /var/lib/gitea/{data,indexers,log}
chown root:git /etc/gitea
chmod 770 /etc/gitea
Una vez que haya terminado, puede continuar con el siguiente paso.
Crear un archivo de servicio Systemd para Gitea
A continuación, deberá crear un archivo de servicio systemd para Gitea. Puedes crearlo con el siguiente comando:
nano /etc/systemd/system/gitea.service
Agregue las siguientes líneas:
[Unit] Description=Gitea (Git with a cup of tea) After=syslog.target After=network.target After=mysql.service [Service] LimitMEMLOCK=infinity LimitNOFILE=65535 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=/opt/git GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.target
Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd con el siguiente comando:
systemctl daemon-reload
A continuación, inicie y habilite el servicio de Gitea con el siguiente comando:
systemctl start gitea
systemctl enable gitea
Para verificar el servicio de Gitea, ejecute el siguiente comando:
systemctl status gitea
Debería ver el siguiente resultado:
? gitea.service - Gitea (Git with a cup of tea) Loaded: loaded (/etc/systemd/system/gitea.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2021-10-02 12:59:27 UTC; 9s ago Main PID: 19179 (gitea) Tasks: 8 (limit: 4679) Memory: 128.3M CPU: 1.415s CGroup: /system.slice/gitea.service ??19179 /usr/local/bin/gitea web -c /etc/gitea/app.ini Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 cmd/web.go:102:runWeb() [I] Starting Gitea on PID: 19179 Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/setting/setting.go:569:NewContext() [W] Custom config '/etc/gitea/app.ini' not> Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/local/bin/gitea Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /var/lib/gitea Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /var/lib/gitea/custom Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /var/lib/gitea/log Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:25:PreloadSettings() [I] Preparing to run install page Oct 02 12:59:28 debian11 gitea[19179]: 2021/10/02 12:59:28 ...s/install/setting.go:28:PreloadSettings() [I] SQLite3 Supported Oct 02 12:59:29 debian11 gitea[19179]: 2021/10/02 12:59:29 cmd/web.go:196:listen() [I] Listen: http://0.0.0.0:3000 Oct 02 12:59:29 debian11 gitea[19179]: 2021/10/02 12:59:29 ...s/graceful/server.go:62:NewServer() [I] Starting new Web server: tcp:0.0.0.0:300>
En este punto, Gitea se inicia y escucha en el puerto 3000. Puede verificarlo con el siguiente comando:
ss -antpl | grep 3000
Debería ver el siguiente resultado:
LISTEN 0 4096 *:3000 *:* users:(("gitea",pid=19179,fd=6))
Una vez que haya terminado, puede continuar con el siguiente paso.
Configurar Nginx para Gitea
A continuación, deberá instalar y configurar Nginx como proxy inverso para Gitea. Primero, instale Nginx con el siguiente comando:
apt-get install nginx -y
A continuación, cree un archivo de configuración de host virtual Nginx con el siguiente comando:
nano /etc/nginx/conf.d/gitea.conf
Agregue las siguientes líneas:
server { listen 80; server_name gitea.example.com; access_log /var/log/nginx/gitea_access.log; error_log /var/log/nginx/gitea_error.log; location / { proxy_pass http://localhost:3000; } }
Guarde y cierre el archivo, luego verifique el Nginx para cualquier error de sintaxis:
nginx -t
Debería ver el siguiente resultado:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, reinicie el servicio Nginx con el siguiente comando:
systemctl restart nginx
Para verificar el estado de Nginx, ejecute el siguiente comando:
systemctl status nginx
Debería ver el siguiente resultado:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-10-02 13:00:33 UTC; 4s ago Docs: man:nginx(8) Process: 19209 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 19211 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 19212 (nginx) Tasks: 3 (limit: 4679) Memory: 3.2M CPU: 50ms CGroup: /system.slice/nginx.service ??19212 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??19213 nginx: worker process ??19214 nginx: worker process Oct 02 13:00:33 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server... Oct 02 13:00:33 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
A continuación, deberá editar el archivo Gitea app.ini y definir la información de su dominio:
nano /etc/gitea/app.ini
Cambie las siguientes líneas:
DOMAIN = gitea.example.com ROOT_URL = http://gitea.example.com/
Guarde y cierre el archivo y luego reinicie el servicio de Gitea para aplicar los cambios:
systemctl restart gitea
Una vez que haya terminado, puede continuar con el siguiente paso.
Acceder a la interfaz web de Gitea
Ahora, abra su navegador web y acceda a la interfaz web de Gitea usando la URL http://gitea.example.com . Será redirigido a la siguiente página:
Proporcione la información de su base de datos de Gitea, la URL, el nombre de usuario del administrador, la contraseña, el puerto y haga clic en Instalar Gitea botón. Debería ver el panel de control de Gitea en la siguiente página:
Conclusión
¡Felicidades! Ha instalado correctamente Gitea con Nginx como proxy inverso en Debian 11. Puede implementar Gitea en su entorno de desarrollo para realizar un seguimiento y administrar su proyecto.