Gitea es un paquete de software gratuito y de código abierto para el autohospedaje de un servidor Git. También ofrece funciones de colaboración como seguimiento de errores, wikis y revisión de código. Gitea es una solución de código ligero e impulsada por la comunidad escrita en Go.
Los desarrolladores necesitan fusionar regularmente sus cambios de código en un repositorio central cuando trabajan. Puede suceder que necesite tener un repositorio central privado para su equipo que usted mismo alojará y administrará. Puedes usar Gitea para este propósito. Es similar a GitHub, Bitbucket, etc.
En este tutorial, aprendemos cómo instalar Gitea usando docker en Ubuntu 20.04 .
Requisitos
- Un nodo instalado con Ubuntu 20.04
- Un usuario con privilegios de sudo
Paso 1:Instalar Docker en Ubuntu
Gitea proporciona la última versión estable de sus imágenes de Docker desde el centro de Docker. Se puede instalar desde código fuente, binario y también como paquete. Aquí estamos implementando como una imagen de Docker.
Para instalar Docker, deberá instalar algunos requisitos previos:
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
Ahora agreguemos la clave GP del repositorio docker:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Ahora agregue Docker a las fuentes APT. Actualizará automáticamente el caché.
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Ahora instala docker usando el siguiente comando:
$ sudo apt install docker-ce
Agregue el usuario al grupo docker para que pueda usar el comando docker sin privilegios sudo:
$ sudo usermod -aG docker username
Paso 2:Ejecute la ventana acoplable de Nginx
Para habilitar HTTPS, puede usar proxies de terminación TLS como Nginx, Apache2 o Caddy. En nuestro caso, ejecutaremos un contenedor independiente como nuestro proxy inverso de Nginx.
$ docker run -d --name nginx -p 80:80 -p 443:443 -v /etc/nginx/htpasswd:/etc/nginx/htpasswd -v /etc/nginx/vhost.d:/etc/nginx/vhost.d:ro -v /etc/nginx/certs:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro etopian/nginx-proxy
Nos ayudará a redirigir todo el tráfico HTTP predeterminado a HTTPS cuando integre sus certificados. Debería notar el volumen asignado para integrar sus certificados que es /etc/nginx/certs
Ahora abra el puerto 80 y 443 en el firewall:
$ sudo ufw allow 80,443/tcp
Además, asegúrese de abrir ssh antes de habilitar UFW si aún no lo ha hecho
$ sudo ufw allow 'OpenSSH'
Ahora habilite UFW si aún no
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Paso 3:Ejecute la ventana acoplable de MySQL
Gitea necesita una base de datos para guardar sus datos. Gitea es compatible con MySQL/MariaDB, PostgreSQL, SQLite y MSSQL. Aquí ejecutaremos un contenedor MySQL para guardar todos los datos.
$ docker run -d --name mysql-gitea -e MYSQL_ROOT_PASSWORD=o$su876HG@zvsRt3BT -v /opt/docker-volume/mysql-gitea:/var/lib/mysql mysql:5.7
Podemos comprobar si nuestro contenedor se está ejecutando
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d41fec8b0e4 mysql:5.7 "docker-entrypoint.s…" 2 hours ago Up 2 hours 3306/tcp, 33060/tcp mysql-gitea
ec9d83a3944e etopian/nginx-proxy "forego start -r" 3 days ago Up 24 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
Por defecto, Gitea escucha las conexiones en el puerto 3000 y el proxy inverso en los puertos HTTP y HTTPS. Si tiene un firewall, asegúrese de que los puertos estén abiertos para acceder a la interfaz web de Gitea.
Echemos un vistazo a algunos detalles de nuestro contenedor MySQL, como la dirección IP, porque la necesitaremos más tarde
$ docker inspect mysql-gitea
[
{
"Id": "6d41fec8b0e4b6ca465444d5cfea11913decddfd7586f4796702463cf08897fe",
"Created": "2021-10-21T23:48:20.709365573Z",
...
...
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "3f0b32613606db9e0761af15b7fa5d7f7c3b86f4d3b4668d574c579b9468915f",
"EndpointID": "f029fc1797c70d090da19d30cb31ca34c1b6baf4537a807397e931f87262f867",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null
}
...
...
Ahora vamos a conectarnos al contenedor MySQL
$ docker container exec -it mysql-gitea bash
Luego acceda a la línea de comandos de MySQL
# mysql -u root -po$su876HG@zvsRt3BT
Ahora cree la base de datos y el usuario para Gitea
mysql> CREATE USER 'gitea-user'@'%' IDENTIFIED BY '34@zv$TKji@s097BB';
mysql> CREATE DATABASE giteadb;
mysql> GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea-user'@'%';
mysql> FLUSH PRIVILEGES;
mysql> exit;
Ahora sal también del contenedor
# exit;
Paso 4:Configurar el certificado SSL
Para acceder a su Gitea a través de un nombre de dominio seguro, deberá copiar el certificado SSL en la carpeta Nginx. Puede usar el certificado gratuito de Let's Encrypt o el certificado de una autoridad certificadora.
Copie el certificado
$ cp gitea.websitefortesting.com.crt /etc/nginx/certs/
Copia la clave
$ cp gitea.websitefortesting.com.key /etc/nginx/certs/
Paso 5:Ejecute la ventana acoplable Gitea
Para ejecutar Gitea, debemos indicar cierta información sobre el contenedor MySQL que se ha lanzado antes, como:
- El tipo de base de datos que es mysql
- la dirección ip del contenedor mysql
- el nombre de la base de datos
- el nombre de usuario de la base de datos
- la contraseña de usuario de la base de datos
- el puerto utilizado por gitea
$ docker run -d --name gitea-selfhosted -v /opt/docker-volume/gitea-selfhosted:/data -p 3000:3000 -e VIRTUAL_HOST=gitea.websitefortesting.com -e VIRTUAL_PORT=3000 -e USER_UID=1001 -e USER_GID=1001 -e DB_TYPE=mysql -e DB_HOST=172.17.0.3:3306 -e DB_NAME=giteadb -e DB_USER=gitea-user -e DB_PASSWD=34@zv$TKji@s097BB gitea/gitea:1.8
Podemos comprobar si se está ejecutando
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
321b870a0735 gitea/gitea:1.8 "/usr/bin/entrypoint…" 11 seconds ago Up 10 seconds 22/tcp, 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp gitea-selfhosted
6d41fec8b0e4 mysql:5.7 "docker-entrypoint.s…" 2 hours ago Up 3 minutes 3306/tcp, 33060/tcp mysql-gitea
ec9d83a3944e etopian/nginx-proxy "forego start -r" 3 days ago Up 29 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
Ahora puedes intentar acceder a Gitea usando la URL https://giteadomain.com
Ahora ve a "iniciar sesión" para continuar con el proceso de instalación. Puede personalizar alguna información como el título del sitio.
Asegúrese de indicar el nombre de dominio donde sea necesario. Indique también la información de la cuenta de administrador
Después de la instalación, iniciará sesión
Puedes crear un nuevo repositorio
Tienes el primer repositorio
Conclusión
Ahora conoce todos los pasos para instalar Gitea usando Docker en Ubuntu 20.04, su repositorio central privado para su código. Podrás gestionarlo en función de tus necesidades.