GitBucket est une plate-forme Web Git open source optimisée par Scala. Il fournit des fonctionnalités d'interface utilisateur de type Github telles que l'hébergement du référentiel Git via HTTP et SSH, les problèmes, le wiki, la visionneuse de référentiel et les demandes d'extraction. Il est livré avec un riche ensemble de fonctionnalités. Certains d'entre eux sont répertoriés ci-dessous :
- Interface utilisateur intuitive
- Compatibilité avec GitLFS
- Compatible avec les dépôts Git publics et privés
- Chronologie des activités et notifications par e-mail
- Compatibilité de l'API avec GitHub
- Gestion des comptes et des groupes
Dans ce tutoriel, nous expliquerons comment installer GitBucket avec Nginx sur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04 avec 2 Go de RAM.
- Un nom de domaine valide pointé vers votre serveur.
- Un mot de passe root est configuré sur votre serveur.
Installer Java
GitBucket est basé sur Java, vous devrez donc l'installer sur votre système. Vous pouvez l'installer avec la commande suivante :
apt-get install default-jdk -y
Une fois installé, vérifiez la version de Java à l'aide de la commande suivante :
java -version
Vous devriez obtenir le résultat suivant :
openjdk version "11.0.7" 2020-04-14 OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1) OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer et configurer GitBucket
Avant de commencer, c'est une bonne idée de créer un utilisateur et un groupe distincts pour exécuter GitBucket. Vous pouvez créer un nouveau groupe et un utilisateur nommé gitbucket avec la commande suivante :
groupadd -g 555 gitbucket
useradd -g gitbucket --no-user-group --home-dir /opt/gitbucket --no-create-home --shell /usr/sbin/nologin --system --uid 555 gitbucket
Ensuite, créez un nouveau répertoire pour GitBucket avec la commande suivante :
mkdir /opt/gitbucket
Ensuite, téléchargez la dernière version du GitBucket dans le répertoire GitBucket :
cd /opt/gitbucket
wget https://github.com/gitbucket/gitbucket/releases/download/4.33.0/gitbucket.war
Ensuite, changez le propriétaire du répertoire GitBucket :
chown -R gitbucket:gitbucket /opt/gitbucket
GitBucket est livré avec une base de données H2 intégrée. Vous pouvez créer un nouveau fichier de configuration de base de données avec la commande suivante :
nano /opt/gitbucket/database.conf
Ajoutez les lignes suivantes :
db { url = "jdbc:h2:${DatabaseHome};MVCC=true" user = "sa" password = "sa" }
Enregistrez et fermez le fichier lorsque vous avez terminé.
Créer un fichier de service Systemd pour GitBucket
Ensuite, vous devrez créer un fichier de service systemd pour gérer le service GitBucket. Vous pouvez le créer à l'aide de la commande suivante :
nano /etc/systemd/system/gitbucket.service
Ajoutez les lignes suivantes :
# GitBucket Service [Unit] Description=Manage Java service [Service] WorkingDirectory=/opt/gitbucket ExecStart=/usr/bin/java -Xms128m -Xmx256m -jar gitbucket.war User=gitbucket Group=gitbucket Type=simple Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, rechargez le démon systemd à l'aide de la commande suivante :
systemctl daemon-reload
Ensuite, démarrez le service GitBucket et activez-le après le redémarrage du système avec la commande suivante :
systemctl start gitbucket
systemctl enable gitbucket
Ensuite, vérifiez l'état du service GitBucket avec la commande suivante :
systemctl status gitbucket
Vous devriez obtenir le résultat suivant :
? gitbucket.service - Manage Java service Loaded: loaded (/etc/systemd/system/gitbucket.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-14 02:27:13 UTC; 10s ago Main PID: 93029 (java) Tasks: 36 (limit: 2282) Memory: 324.9M CGroup: /system.slice/gitbucket.service ??93029 /usr/bin/java -Xms128m -Xmx256m -jar gitbucket.war May 14 02:27:19 ubuntu2004 java[93029]: 2020-05-14 02:27:19.868:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0 May 14 02:27:19 ubuntu2004 java[93029]: 2020-05-14 02:27:19.868:INFO:oejs.session:main: No SessionScavenger set, using defaults May 14 02:27:19 ubuntu2004 java[93029]: 2020-05-14 02:27:19.875:INFO:oejs.session:main: node0 Scavenging every 600000ms May 14 02:27:20 ubuntu2004 java[93029]: 02:27:20.261 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... May 14 02:27:20 ubuntu2004 java[93029]: 02:27:20.691 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. May 14 02:27:20 ubuntu2004 java[93029]: 02:27:20.697 [main] WARN slick.util.AsyncExecutor - Having maxConnection > maxThreads can result in d> May 14 02:27:20 ubuntu2004 java[93029]: 02:27:20.721 [main] INFO g.core.servlet.InitializeListener - Check version May 14 02:27:20 ubuntu2004 java[93029]: 02:27:20.721 [main] INFO g.core.servlet.InitializeListener - Start schema update May 14 02:27:22 ubuntu2004 java[93029]: 02:27:22.156 [main] INFO l.servicelocator.ServiceLocator - Can not use class liquibase.parser.core.ya> May 14 02:27:22 ubuntu2004 java[93029]: 02:27:22.161 [main] INFO l.servicelocator.ServiceLocator - Can not use class liquibase.parser.core.js>
À ce stade, GitBucket s'exécute et écoute sur le port 8080.
Configurer Nginx en tant que proxy inverse
Par défaut, GitBucket s'exécute sur le port 8080. C'est donc une bonne idée de configurer Nginx en tant que proxy inverse pour GitBucket.
Tout d'abord, installez le serveur Web Nginx avec la commande suivante :
apt-get install nginx -y
Ensuite, créez un fichier de configuration d'hôte virtuel Nginx pour GitBucket :
nano /etc/nginx/sites-available/gitbucket
Ajoutez les lignes suivantes :
upstream gitbucket { server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5; } server { listen 80; server_name gitbucket.linuxbuz.com; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://gitbucket/; } }
Enregistrez et fermez le fichier. Ensuite, créez un lien symbolique vers le répertoire sites-enabled :
ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/
Ensuite, vérifiez le Nginx pour toute erreur de syntaxe avec la commande suivante :
nginx -t
Vous devriez obtenir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Enfin, redémarrez le service Nginx pour mettre en œuvre les modifications :
systemctl restart nginx
Sécurisez GitBucket avec Let's Encrypt
Ensuite, vous devrez installer le client Certbot pour sécuriser votre GitBucket avec Let's Encrypt SSL.
Commencez par ajouter le référentiel Certbot à l'aide de la commande suivante :
add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471
Ensuite, mettez à jour le référentiel et installez le client Certbot avec la commande suivante :
apt-get update -y
apt-get install certbot python3-certbot-nginx -y
Ensuite, exécutez la commande suivante pour télécharger et installer le SSL Let's Encrypt pour votre site Web :
certbot --nginx -d gitbucket.linuxbuz.com
Il vous sera demandé de fournir votre adresse e-mail et d'accepter les conditions d'utilisation :
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for gitbucket.linuxbuz.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/gitbucket
Ensuite, sélectionnez si vous souhaitez ou non rediriger le trafic HTTP vers HTTPS :
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Tapez 2 et appuyez sur Entrée pour terminer l'installation.
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/gitbucket - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://gitbucket.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=gitbucket.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/gitbucket.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/gitbucket.linuxbuz.com/privkey.pem Your cert will expire on 2020-08-12. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Accéder au GitBucket
Maintenant, ouvrez votre navigateur Web et tapez l'URL https://gitbucket.linuxbuz.com. Vous serez redirigé vers la page suivante :
Cliquez sur le Signer dans bouton. Vous devriez voir la page de connexion GitBucket :
Indiquez le nom d'utilisateur par défaut de GitBucket en tant que root et le mot de passe en tant que root et cliquez sur Signer dans bouton. Vous devriez voir le tableau de bord GitBucket sur la page suivante :
Ensuite, cliquez sur le Compte Paramètres dans le coin supérieur droit pour changer le mot de passe root par défaut :
Indiquez un nouveau mot de passe sécurisé et cliquez sur Enregistrer bouton pour mettre à jour le mot de passe root.
Conclusion
Toutes nos félicitations! vous avez installé et sécurisé avec succès GitBucket avec Nginx en tant que proxy inverse sur Ubuntu 20.04. Vous pouvez désormais héberger votre propre référentiel Git à l'aide du GitBucket.