Ce guide couvre l'installation et la configuration de base de GitBucket pour une instance Vultr exécutant Ubuntu 16.04 et suppose que vous exécutez des commandes en tant non-root
qu'utilisateur.
Conditions préalables
- Une instance de serveur Vultr avec au moins 1 Go de RAM (des instances plus petites peuvent fonctionner, quoique lentement).
openjdk-8-jre
Requis, les anciennes versions ne fonctionneront pas.
wget
Utilisé pour télécharger le package GitBucket.
nginx
Facultatif, fournit un proxy inverse à GitBucket
systemd
Gère le démarrage et l'arrêt du processus GitBucket
Installation des prérequis
GitBucket nécessite l'installation de Java 8 ou plus récent sur votre serveur. Si vous n'avez pas encore installé Java 8, mettez d'abord à jour vos listes de packages locaux.
sudo apt update
Installez ensuite le package d'exécution Java 8.
sudo apt install openjdk-8-jre
Installer GitBucket
Créer un utilisateur non privilégié
Nous devrons créer un utilisateur non privilégié pour exécuter GitBucket avant d'aller plus loin. L'exécution de GitBucket sous un utilisateur non privilégié empêche notre installation d'écrire en dehors de son propre répertoire de données, renforçant la sécurité de votre serveur. Exécutez la commande suivante pour créer un utilisateur système appelé gitbucket
.
sudo adduser --system gitbucket
Parce que nous avons créé un utilisateur système , le shell par défaut est /bin/false
, et nous serons renvoyés à notre shell actuel, sauf si nous fournissons un argument de shell supplémentaire lors de l'exécution su
. Connectez-vous à l'utilisateur nouvellement créé.
sudo su - gitbucket -s /bin/bash
L'invite de votre shell devrait changer et vous serez connecté au nouvel utilisateur système.
Téléchargement / mise à jour de GitBucket
Accédez à la page des versions de GitBucket et recherchez la dernière version disponible. Copiez l'URL du gitbucket.war
package, vérifiez que vous vous trouvez dans le répertoire personnel du nouvel utilisateur et téléchargez-le avec wget
.
cd ~/
wget https://github.com/gitbucket/gitbucket/releases/download/4.18.0/gitbucket.war
Vous devrez répéter cette étape chaque fois que vous souhaitez mettre à jour le package GitBucket.
Configuration initiale de GitBucket
Une fois le package téléchargé, nous devrons démarrer GitBucket manuellement pour effectuer une configuration initiale.
java -jar gitbucket.war --port 8080
Si le port 8080
est déjà pris par un autre processus, vous pouvez modifier le port que GitBucket écoutera maintenant. Ce guide part du principe que GitBucket écoute sur le port8080
.
Cela démarrera GitBucket sur l'interface de réseau public de votre serveur, en écoutant sur le port spécifié. Vous devriez voir, après quelques instants, le message suivant.
INFO:oejs.Server:main: Started @15891ms
Si vous utilisez le pare-feu de Vultr , vous devrez ouvrir le port sur lequel GitBucket écoute, car le pare-feu de Vultr fonctionne comme une liste blanche, rejetant le trafic pour autoriser les ports, sauf indication contraire.
Votre installation GitBucket devrait maintenant être en ligne et accessible depuis Internet. À l'aide d'un navigateur Web, connectez-vous à l'adresse publique de votre serveur (en veillant à spécifier le port sur lequel GitBucket s'exécute, (c'est http://203.0.113.0:8080
-à- dire ou http://example.com:8080
), et vous atterrirez sur la page d'accueil de GitBucket.
Cependant, le mot de passe du compte administrateur par défaut doit être modifié. Pour ce faire, connectez-vous au compte administrateur via le Sign in
bouton en haut à droite de l'interface Web. La connexion par défaut pour le compte administrateur est root
pour le nom d'utilisateur, puis à root
nouveau pour le mot de passe. Une fois connecté, le bouton sera remplacé par une icône de profil et une liste déroulante. Développez la liste déroulante et sélectionnez Account Settings
, puis définissez un nouveau mot de passe plus sécurisé dans l'assistant des paramètres de compte.
Après avoir mis à jour les informations d'identification du compte administrateur par défaut et vérifié que GitBucket démarre dans cette configuration minimale, arrêtez le processus Java avec " CTRL+C
" et fermez le shell actuel avec exit
.
Création du service Systemd
Actuellement, nous ne pouvons exécuter GitBucket qu'en accédant à notre serveur via SSH et en démarrant le processus à partir d'un shell manuellement. Heureusement, Ubuntu est livré préemballé Systemd
, ce qui nous permet de créer un service avec lequel GitBucket sera automatiquement démarré et maintenu par le système.
À l'aide de nano
, créez un nouveau fichier d'unité dans le /etc/systemd/system
répertoire.
sudo nano /etc/systemd/system/gitbucket.service
Ensuite, copiez le contenu suivant dans le fichier.
[Unit]
Description=GitBucket
After=network.target
[Service]
ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080
ExecStop=/bin/kill -SIGINT $MAINPID
Type=simple
User=gitbucket
[Install]
WantedBy=multi-user.target
Ce fichier d'unité définit le comportement de démarrage et d'arrêt de base pour GitBucket et exécute le service sous notre utilisateur système non privilégié sur l'interface réseau locale uniquement.
Si vous avez modifié le numéro de port sur lequel GitBucket écoutera, modifiez l' --port
argument de la ExecStart
commande.
Enregistrez (" CTRL+O
") le nouveau fichier d'unité, puis quittez l'éditeur (" CTRL+X
"). Vous devrez recharger Systemd pour que le nouveau fichier d'unité soit découvert.
sudo systemctl daemon-reload
Une fois Systemd rechargé, vérifiez que la nouvelle unité a été découverte et chargée.
sudo systemctl status gitbucket
Vous devriez voir la sortie suivante.
gitbucket.service - GitBucket
Loaded: loaded (/etc/systemd/system/gitbucket.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Enfin, activez la nouvelle unité pour démarrer automatiquement au démarrage de votre serveur, puis démarrez le service pour la première fois.
sudo systemctl enable gitbucket
sudo systemctl start gitbucket
Une fois le service démarré, vous pourrez accéder à GitBucket à partir de votre navigateur en utilisant à nouveau l'adresse IP et le numéro de port.
Configuration du proxy inverse Nginx
Bien que l'on puisse exposer GitBucket directement via le port 8080
, vous pouvez améliorer les performances et configurer des fonctionnalités telles que HTTP / 2, le cryptage TLS et les règles de mise en cache en exposant GitBucket via Nginx.
Configuration initiale de Nginx
Si vous n'avez pas encore installé Nginx, mettez à jour vos listes de packages.
sudo apt update
Installez ensuite le package Nginx.
sudo apt install nginx
Une fois Nginx installé, vérifiez que vous pouvez accéder au serveur Web via l'adresse IP de votre serveur sans le numéro de port (c'est http://203.0.113.0
-à- dire ou http://example.com
). En cas de succès, vous verrez la page de destination par défaut Nginx pour Ubuntu.
Création du proxy inverse
Nous allons copier la configuration du site par défaut /etc/nginx/sites-available
comme point de départ pour le proxy inverse.
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/gitbucket
Ouvrez le fichier de configuration nouvellement créé avec nano
.
sudo nano /etc/nginx/sites-available/gitbucket
Localisez le location /
bloc existant sur la ligne 43.
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
Actuellement, Nginx tentera de renvoyer les fichiers situés dans /var/www/html
lesquels correspondent les HTTP
demandes entrantes . Nous devrons changer ce comportement en configurant un proxy inverse dans ce bloc, qui enverra toutes les requêtes HTTP faites à notre serveur Nginx à l'instance GitBucket à la place. Mettez à jour le location /
bloc pour qu'il corresponde à ce qui suit.
location / {
proxy_pass http://localhost:8080; # The address GitBucket is listening on
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 4 32k;
client_max_body_size 512m; # Needed for large Git operations over HTTP
client_body_buffer_size 128k;
}
Si vous avez modifié le numéro de port sur lequel GitBucket écoutera, mettez à jour l' proxy_pass
option pour refléter cela.
Pour activer notre nouvelle configuration, vous devrez désactiver la configuration par défaut existante dans /etc/nginx/sites-enabled
, puis créer un lien symbolique vers notre nouvelle configuration /etc/nginx/sites-enabled
via les étapes suivantes.
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/gitbucket
Une fois le fichier de configuration activé, recherchez d'éventuelles erreurs de syntaxe.
sudo nginx -t
Ensuite, redémarrez le serveur Nginx pour activer notre nouvelle configuration de site.
sudo systemctl restart nginx
Vous devriez maintenant pouvoir accéder à votre installation GitBucket sur l'adresse publique de votre serveur sans numéro de port.
Sécuriser le processus GitBucket à partir d'Internet public
Actuellement, notre instance GitBucket écoute sur l' interface réseau public de notre serveur . Cela permettra aux utilisateurs de contourner le proxy Nginx en se connectant à l'adresse que GitBucket écoute actuellement, ce qui est probablement indésirable. Nous devrons modifier le fichier d'unité que nous avons créé plus tôt pour résoudre ce problème. Ouvrez le fichier d'unité avec nano
.
sudo nano /etc/systemd/system/gitbucket.service
Ajoutez --host 127.0.0.1
à la ExecStart
commande, comme ça.
...
ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080 --host 127.0.0.1
...
Cela entraînera GitBucket à accepter uniquement les connexions sur l'interface réseau locale de notre serveur. Encore une fois, enregistrez (" CTRL+O
") le fichier, fermez (" CTRL+X
") l'éditeur, rechargez Systemd et redémarrez notre unité GitBucket.
sudo systemctl daemon-reload
sudo systemctl restart gitbucket
Si vous utilisez le pare-feu de Vultr, vous devez également supprimer toutes les règles de port que vous avez ajoutées pour accéder au serveur GitBucket lors de la configuration initiale.