Comment installer Gitea à l’aide de Docker sur Ubuntu 20.04

Gitea est un progiciel gratuit et open source pour l’auto-hébergement d’un serveur Git. Il offre également des fonctionnalités collaboratives telles que le suivi des bogues, les wikis et la revue de code. Gitea est une solution de code légère et communautaire écrite en Go.

Les développeurs doivent régulièrement fusionner leurs modifications de code dans un référentiel central lorsqu’ils travaillent. Il peut arriver que vous ayez besoin d’un référentiel central privé pour votre équipe que vous hébergerez et gérerez vous-même. Vous pouvez utiliser Gitea à cet effet. Il est similaire à GitHub, Bitbucket, etc.

Dans ce tutoriel, nous apprenons à installer Gitea avec docker au Ubuntu 20.04.

Conditions préalables

  • Un nœud installé avec Ubuntu 20.04
  • Un utilisateur avec sudo privilège

Étape 1 : Installer Docker sur Ubuntu

Gitea fournit la dernière version stable de ses images Docker depuis le hub Docker. Il peut être installé à partir de la source, du binaire et également en tant que package. Ici, nous déployons en tant qu’image Docker.

Pour installer docker, vous devrez installer quelques pré-requis :

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common

Ajoutons maintenant la clé GP du référentiel docker :

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Ajoutez maintenant Docker aux sources APT. Il mettra automatiquement à jour le cache.

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Installez maintenant docker à l’aide de la commande suivante :

$ sudo apt install docker-ce

Ajoutez l’utilisateur au groupe docker afin qu’il puisse utiliser la commande docker sans sudo privilèges :

$ sudo usermod -aG docker username

Étape 2 : Exécutez le docker Nginx

Pour activer HTTPS, vous pouvez utiliser des proxys de terminaison TLS tels que Nginx, Apache2 ou Caddy. Dans notre cas, nous exécuterons un conteneur indépendant en tant que proxy inverse 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

Cela nous aidera à rediriger tout le trafic HTTP par défaut vers HTTPS lorsque vous intégrerez vos certificats. Vous devriez remarquer le volume mappé pour intégrer vos certificats qui est /etc/nginx/certs

Ouvrez maintenant les ports 80 et 443 sur le pare-feu :

$ sudo ufw allow 80,443/tcp

Assurez-vous également d’ouvrir ssh avant d’activer UFW si ce n’est pas encore fait

$ sudo ufw allow 'OpenSSH'

Activez maintenant UFW si ce n’est pas encore fait

$ sudo ufw enable

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Étape 3 : Exécutez le docker MySQL

Gitea a besoin d’une base de données pour sauvegarder ses données. Gitea prend en charge MySQL/MariaDB, PostgreSQL, SQLite et MSSQL. Ici, nous allons exécuter un conteneur MySQL pour conserver toutes les données.

$ 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

Nous pouvons vérifier si notre conteneur fonctionne

$ 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

Le Gitea écoute par défaut les connexions sur le port 3000 et le reverse proxy sur les ports HTTP et HTTPS. Si vous avez un pare-feu, assurez-vous que les ports sont ouverts pour accéder à l’interface Web de Gitea.

Regardons quelques détails de notre conteneur MySQL comme l’adresse IP car nous en aurons besoin plus tard

$ 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
}
...
...

Connectons-nous maintenant au conteneur MySQL

$ docker container exec -it mysql-gitea bash

Puis accès à la ligne de commande MySQL

# mysql -u root -po$su876HG@zvsRt3BT

Créez maintenant la base de données et l’utilisateur pour 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;

Maintenant, quittez également le conteneur

# exit;

Étape 4 : Configurer le certificat SSL

Afin d’accéder à votre Gitea via un nom de domaine sécurisé, vous devrez copier le certificat SSL dans le dossier Nginx. Vous pouvez utiliser le certificat gratuit Let’s Encrypt ou le certificat d’une autorité de certification.

Copier le certificat

$ cp gitea.websitefortesting.com.crt /etc/nginx/certs/

copier la clé

$ cp gitea.websitefortesting.com.key /etc/nginx/certs/

Étape 5 : Exécutez le docker Gitea

Pour exécuter Gitea, nous devons indiquer certaines informations sur le conteneur MySQL qui a été lancé auparavant telles que :

  • Le type de base de données qui est mysql
  • l’adresse IP du conteneur mysql
  • Le nom de la base de données
  • le nom d’utilisateur de la base de données
  • le mot de passe de l’utilisateur de la base de données
  • le port utilisé par 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

Nous pouvons vérifier s’il fonctionne

$ 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

Vous pouvez maintenant essayer d’accéder à Gitea en utilisant l’URL https://giteadomain.com

Allez maintenant dans « Se connecter » afin de poursuivre le processus d’installation. Vous pouvez personnaliser certaines informations comme le titre du site.

Paramètres de la base de données de l'interface web Gitea

Assurez-vous d’indiquer le nom de domaine là où c’est nécessaire. Indiquez également les informations du compte administrateur

domaine de l'interface web Gitea et admin paramètres du compte

Après l’installation, vous serez connecté

Tableau de bord Gitea

Vous pouvez créer un nouveau référentiel

créer un nouveau référentiel

Vous avez le premier référentiel

Gitea premier repo

Conclusion

Vous connaissez maintenant toutes les étapes pour installer Gitea à l’aide de Docker sur Ubuntu 20.04 – votre référentiel central privé pour votre code. Vous pourrez le gérer en fonction de vos besoins.