Gitea est un progiciel gratuit et open-source permettant d'auto-héberger un serveur Git. Il offre également des fonctionnalités collaboratives telles que le suivi des bogues, les wikis et la révision du code. Gitea est une solution de code communautaire légère é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 à cette fin. Il est similaire à GitHub, Bitbucket, etc.
Dans ce tutoriel, nous apprenons à installer Gitea en utilisant docker sur Ubuntu 20.04 .
Prérequis
- Un nœud installé avec Ubuntu 20.04
- Un utilisateur avec le privilège sudo
É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 privilèges sudo :
$ sudo usermod -aG docker username
Étape 2 :Exécuter 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 notre 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écuter 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 est en cours d'exécution
$ 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 proxy inverseur 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.
Jetons un coup d'œil à certains détails de notre conteneur MySQL, tels que 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
Accédez ensuite à 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 Let's Encrypt gratuit ou un certificat d'une autorité de certification.
Copiez le certificat
$ cp gitea.websitefortesting.com.crt /etc/nginx/certs/
Copiez la clé
$ cp gitea.websitefortesting.com.key /etc/nginx/certs/
Étape 5 :Exécuter le docker Gitea
Pour faire fonctionner 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 "Connexion" afin de continuer 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 dépôt
Vous avez le premier dépôt
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.