Wie installiert man GitBucket mit Nginx auf Ubuntu 20.04 LTS

GitBucket ist eine Open-Source-Git-Webplattform, die von Scala betrieben wird. Sie bietet eine Github-ähnliche Benutzeroberfläche mit Funktionen wie Git-Repository-Hosting über HTTP und SSH, Probleme, Wiki, Repository-Viewer und Pull-Anfragen. Sie verfügt über eine Vielzahl von Funktionen. Einige davon sind unten aufgeführt:

  • Intuitive Benutzeroberfläche
  • Unterstützung für GitLFS
  • Öffentliche und private Git-Repositorys unterstützen
  • Aktivitätszeitleiste und E-Mail-Benachrichtigungen
  • API-Kompatibilität mit GitHub
  • Konto- und Gruppenverwaltung

In diesem Tutorial werden wir erklären, wie man GitBucket mit Nginx unter Ubuntu 20.04 installiert.

Voraussetzungen

  • Ein Server mit Ubuntu 20.04 mit 2 GB RAM.
  • Einen gültigen Domain-Namen, der auf Ihren Server zeigt.
  • Ein Root-Passwort wird auf Ihrem Server konfiguriert.

Java installieren

Da GitBucket auf Java basiert, müssen Sie es auf Ihrem System installieren. Sie können es mit dem folgenden Befehl installieren:

apt-get install default-jdk -y

Nach der Installation überprüfen Sie die Java-Version mit dem folgenden Befehl:

java -version

Sie sollten die folgende Ausgabe erhalten:

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)

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Installieren und Konfigurieren von GitBucket

Bevor Sie beginnen, ist es eine gute Idee, einen separaten Benutzer und eine separate Gruppe zum Ausführen von GitBucket zu erstellen. Sie können eine neue Gruppe und einen neuen Benutzer mit dem Namen gitbucket mit dem folgenden Befehl erstellen:

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

Erstellen Sie als nächstes ein neues Verzeichnis für GitBucket mit dem folgenden Befehl:

mkdir /opt/gitbucket

Laden Sie als nächstes die neueste Version von GitBucket aus dem GitBucket-Verzeichnis herunter:

cd /opt/gitbucket
wget https://github.com/gitbucket/gitbucket/releases/download/4.33.0/gitbucket.war

Als Nächstes ändern Sie den Eigentümer des GitBucket-Verzeichnisses:

chown -R gitbucket:gitbucket /opt/gitbucket

GitBucket wird mit einer eingebetteten H2-Datenbank geliefert. Sie können eine neue Datenbank-Konfigurationsdatei mit dem folgenden Befehl erstellen:

nano /opt/gitbucket/database.conf

Fügen Sie die folgenden Zeilen hinzu:

db {
  url = "jdbc:h2:${DatabaseHome};MVCC=true"
  user = "sa"
  password = "sa"
}

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Systemdienstdatei für GitBucket erstellen

Als nächstes müssen Sie eine Systemdatei erstellen, um den GitBucket-Dienst zu verwalten. Sie können sie mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/gitbucket.service

Fügen Sie die folgenden Zeilen hinzu:

# 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

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Laden Sie dann den systemd-Dämon mit dem folgenden Befehl neu:

systemctl daemon-reload

Als nächstes starten Sie den GitBucket-Dienst und aktivieren ihn nach dem Systemneustart mit dem folgenden Befehl:

systemctl start gitbucket
systemctl enable gitbucket

Überprüfen Sie dann den Status des GitBucket-Dienstes mit folgendem Befehl:

systemctl status gitbucket

Sie sollten die folgende Ausgabe erhalten:

? 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>

Zu diesem Zeitpunkt läuft und hört GitBucket auf Port 8080.

Konfigurieren Sie Nginx als Reverse-Proxy

Standardmäßig läuft GitBucket auf Port 8080. Daher ist es eine gute Idee, Nginx als Reverse-Proxy für GitBucket zu konfigurieren.

Installieren Sie zunächst den Nginx-Webserver mit dem folgenden Befehl:

apt-get install nginx -y

Erstellen Sie als Nächstes eine Nginx-Konfigurationsdatei für den virtuellen Host für GitBucket:

nano /etc/nginx/sites-available/gitbucket

Fügen Sie die folgenden Zeilen hinzu:

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/;
  }
}

Speichern und schließen Sie die Datei. Erstellen Sie dann einen symbolischen Link auf das Sites-aktivierte Verzeichnis:

ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/

Als Nächstes überprüfen Sie Nginx mit dem folgenden Befehl auf einen Syntaxfehler:

nginx -t

Sie sollten die folgende Ausgabe erhalten:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie schließlich den Nginx-Dienst neu, um die Änderungen zu implementieren:

systemctl restart nginx

Sichern Sie GitBucket mit Let’s Encrypt

Als nächstes müssen Sie den Certbot-Client installieren, um Ihr GitBucket mit Let’s Encrypt SSL zu sichern.

Fügen Sie zunächst das Certbot-Repository mit folgendem Befehl hinzu:

add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471

Aktualisieren Sie dann das Repository und installieren Sie den Certbot-Client mit folgendem Befehl:

apt-get update -y
apt-get install certbot python3-certbot-nginx -y

Führen Sie dann den folgenden Befehl aus, um Let’s Encrypt SSL für Ihre Website herunterzuladen und zu installieren:

certbot --nginx -d gitbucket.linuxbuz.com

Sie werden gebeten, Ihre E-Mail-Adresse anzugeben und die Nutzungsbedingungen zu akzeptieren:

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

Wählen Sie als nächstes, ob HTTP-Verkehr zu HTTPS umgeleitet werden soll oder nicht:

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

Geben Sie 2 ein und drücken Sie Enter, um die Installation abzuschließen.

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

Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Zugang zu GitBucket

Öffnen Sie nun Ihren Webbrowser und geben Sie die URL https://gitbucket.linuxbuz.com ein. Sie werden auf die folgende Seite umgeleitet:

GitBucket

Klicken Sie auf die Schaltfläche Anmelden. Sie sollten die Anmeldeseite von GitBucket sehen:

GitBucket-Anmeldung

Geben Sie den Standardbenutzernamen von GitBucket als Root und das Passwort als Root ein und klicken Sie auf die Schaltfläche Anmelden. Sie sollten das GitBucket-Dashboard auf der folgenden Seite sehen:

GitBucket dashboard

Klicken Sie als nächstes auf die Kontoeinstellungen in der oberen rechten Ecke, um das Standard-Root-Passwort zu ändern:

Konto-Einstellungen

Geben Sie ein neues sicheres Passwort ein und klicken Sie auf die Schaltfläche Speichern, um das Root-Passwort zu aktualisieren.

Administrator-Profil

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben GitBucket mit Nginx als Reverse-Proxy unter Ubuntu 20.04 erfolgreich installiert und gesichert. Sie können nun Ihr eigenes Git-Repository mit GitBucket hosten.

Das könnte dich auch interessieren …