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.

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

Après l’installation, vous serez connecté

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

Vous avez le premier référentiel

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.