So installierst du Gitea unter Ubuntu 22.04
Gitea ist ein kostenloser, quelloffener und selbstgehosteter Git-Dienst. Er ist in der Sprache GO geschrieben und bietet eine einfache Möglichkeit, dein eigenes Versionskontrollsystem im Internet zu hosten. Er ist einfach, leichtgewichtig und kann auch auf Systemen mit geringer Leistung installiert werden. Es ist GitHub und GitLab sehr ähnlich und bietet eine Vielzahl von Funktionen wie einen Editor für Repository-Dateien, Projektverfolgung, Benutzerverwaltung, Benachrichtigungen, ein integriertes Wiki und vieles mehr. Es ist plattformübergreifend und kann auf allen wichtigen Betriebssystemen installiert werden, darunter Linux, macOS, Windows, ARM- und PowerPC-Architekturen.
In diesem Lernprogramm zeigen wir dir, wie du den Gitea Git-Dienst mit Nginx und Let’s Encrypt SSL auf Ubuntu 22.04 installierst.
Voraussetzungen
- Ein Server, auf dem Ubuntu 22.04 läuft.
- Ein gültiger Domainname, der auf die IP deines Servers zeigt.
- Ein Root-Passwort ist auf deinem Server konfiguriert.
Erste Schritte
Aktualisiere zunächst alle Systempakete auf die neueste Version, indem du den folgenden Befehl ausführst:
apt update -y apt upgrade -y
Als Nächstes installierst du das Git-Paket, indem du den folgenden Befehl ausführst:
apt-get install git -y
Sobald das Git-Paket installiert ist, kannst du mit dem nächsten Schritt fortfahren.
MariaDB installieren und konfigurieren
Gitea verwendet MariaDB als Datenbank-Backend. Daher musst du sie auf deinem Server installieren. Du kannst sie mit folgendem Befehl installieren:
apt install mariadb-server -y
Nach der Installation. Nun musst du MariaDB sichern und ein Root-Passwort festlegen. Du kannst es sichern, indem du das Skript mysql_secure_installation ausführst:
mysql_secure_installation
Dieses Skript setzt das Root-Passwort, entfernt anonyme Benutzer, verbietet den Root-Login aus der Ferne und entfernt die Testdatenbank wie unten gezeigt:
Enter current password for root (enter for none): Set root password? [Y/n]: Y Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y
Sobald die MariaDB gesichert ist, melde dich mit folgendem Befehl in der MariaDB-Shell an:
mysql -u root -p
Gib dein Root-Passwort ein, wenn du dazu aufgefordert wirst. Dann änderst du die GLOBAL innodeb_file_per_table auf On:
MariaDB [(none)]>SET GLOBAL innodb_file_per_table = ON;
Als Nächstes erstellst du eine Datenbank und einen Benutzer für Gitea mit dem folgenden Befehl:
MariaDB [(none)]>CREATE DATABASE gitea; MariaDB [(none)]>CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'password';
Erteile der Datenbank giteadb alle Berechtigungen:
MariaDB [(none)]>GRANT ALL ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Aktualisiere dann den Zeichensatz der Datenbank mit folgendem Befehl:
MariaDB [(none)]>ALTER DATABASE gitea CHARACTER SET = utf8mb4 COLLATE utf8mb4_unicode_ci;
Schließlich löschst du die Berechtigungen und verlässt die MariaDB-Shell mit folgendem Befehl:
MariaDB [(none)]>FLUSH PRIVILEGES; MariaDB [(none)]>EXIT;
Als nächstes musst du die MariaDB-Standardkonfigurationsdatei bearbeiten und InnoDB-Parameter hinzufügen:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Füge die folgenden Zeilen in den Abschnitt [mysqld] ein:
innodb_file_format = Barracuda innodb_large_prefix = 1 innodb_default_row_format = dynamic
Speichere und schließe die Datei. Starte dann den MariaDB-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart mariadb
Jetzt ist deine MariaDB-Datenbank konfiguriert. Du kannst jetzt mit dem nächsten Schritt fortfahren.
Gitea installieren und konfigurieren
Besuche zunächst die Gitea Download-Seite, wähle die neueste Version aus und lade die neueste Gitea-Binärdatei mit dem folgenden Befehl herunter:
wget https://dl.gitea.io/gitea/1.17.1/gitea-1.17.1-linux-amd64
Sobald der Download abgeschlossen ist, kopierst du die heruntergeladene Datei in das Verzeichnis /usr/bin/ und gibst ihr Ausführungsrechte:
cp gitea-1.17.1-linux-amd64 /usr/bin/gitea chmod 755 /usr/bin/gitea
Als Nächstes erstellst du mit dem folgenden Befehl einen Systembenutzer für Gitea:
adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
Als Nächstes erstellst du eine Verzeichnisstruktur für Gitea mit dem folgenden Befehl:
mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log} chown git:git /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log} chmod 750 /var/lib/gitea/{data,indexers,log} chmod 770 /etc/gitea
Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
Gitea Systemd Service Datei erstellen
Als Nächstes musst du eine systemd-Dienstdatei erstellen, um den Gitea-Dienst mit systemd zu verwalten. Du kannst sie mit dem folgenden Befehl erstellen:
nano /etc/systemd/system/gitea.service
Füge die folgenden Zeilen ein:
[Unit] Description=Gitea After=syslog.target After=network.target After=mysql.service [Service] RestartSec=2s Type=simple User=git Group=git WorkingDirectory=/var/lib/gitea/ ExecStart=/usr/bin/gitea web -c /etc/gitea/app.ini Restart=always Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea [Install] WantedBy=multi-user.target
Speichere und schließe die Datei. Dann lädst du den systemd-Daemon neu und startest den Gitea-Dienst mit dem folgenden Befehl:
systemctl daemon-reload systemctl start gitea
Du kannst den Status des Gitea-Dienstes mit dem folgenden Befehl überprüfen:
systemctl status gitea
Du solltest die folgende Ausgabe sehen:
? gitea.service - Gitea Loaded: loaded (/etc/systemd/system/gitea.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2022-08-21 12:19:23 UTC; 8s ago Main PID: 24766 (gitea) Tasks: 6 (limit: 2242) Memory: 121.2M CPU: 800ms CGroup: /system.slice/gitea.service ??24766 /usr/bin/gitea web -c /etc/gitea/app.ini Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/bin/gitea Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /var/lib/gitea Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /var/lib/gitea/cus> Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /var/lib/gitea/log Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:25:PreloadSettings() [I] Configuration file: /etc/gitea/> Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:26:PreloadSettings() [I] Prepare to run install page Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/install/setting.go:29:PreloadSettings() [I] SQLite3 is supported Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 cmd/web.go:217:listen() [I] [630222cb-6] Listen: http://0.0.0.0:3000 Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 cmd/web.go:221:listen() [I] [630222cb-6] AppURL(ROOT_URL): http://localhost:3000/ Aug 21 12:19:23 ubuntu2204 gitea[24766]: 2022/08/21 12:19:23 ...s/graceful/server.go:61:NewServer() [I] [630222cb-6] Starting new Web server:>
Als Nächstes aktivierst du den Gitea-Dienst mit folgendem Befehl, damit er beim Neustart des Systems gestartet wird:
systemctl enable gitea
Jetzt ist Gitea gestartet und lauscht auf Port 3000. Du kannst jetzt mit dem nächsten Schritt fortfahren.
Nginx als Reverse Proxy für Gitea konfigurieren
Standardmäßig lauscht Gitea auf Port 3000. Daher musst du Nginx als Reverse Proxy konfigurieren, um auf Gitea zuzugreifen, ohne den Port anzugeben.
Installiere zunächst den Nginx-Webserver, indem du den folgenden Befehl ausführst:
apt-get install nginx -y
Nach der Installation erstellst du eine neue Nginx-Konfigurationsdatei für den virtuellen Host von Gitea:
nano /etc/nginx/sites-available/gitea
Füge die folgenden Zeilen hinzu:
upstream gitea { server 127.0.0.1:3000; } server { listen 80; server_name git.example.com; root /var/lib/gitea/public; access_log off; error_log off; location / { try_files maintain.html $uri $uri/index.html @node; } location @node { client_max_body_size 0; proxy_pass http://localhost:3000; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_max_temp_file_size 0; proxy_redirect off; proxy_read_timeout 120; } }
Speichere und schließe die Datei. Aktiviere dann die Konfigurationsdatei für den virtuellen Nginx-Host mit dem folgenden Befehl:
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/
Starte schließlich den Nginx-Dienst neu und überprüfe den Status des Nginx-Dienstes mit dem folgenden Befehl:
systemctl restart nginx
systemctl status nginx
Du solltest die folgende Ausgabe erhalten:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-08-21 12:21:23 UTC; 5s ago Docs: man:nginx(8) Process: 24799 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 24800 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 24801 (nginx) Tasks: 2 (limit: 2242) Memory: 4.5M CPU: 44ms CGroup: /system.slice/nginx.service ??24801 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ??24802 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" Aug 21 12:21:23 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server... Aug 21 12:21:23 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.
Jetzt ist Nginx so konfiguriert, dass es Gitea bedienen kann. Du kannst jetzt mit dem nächsten Schritt fortfahren.
Gitea mit Let’s Encrypt SSL sichern
Zunächst musst du den Certbot-Client installieren, um Let’s Encrypt SSL in deinem System zu installieren und zu verwalten. Du kannst ihn installieren, indem du den folgenden Befehl ausführst:
apt-get install certbot python3-certbot-nginx -y
Sobald Certbot installiert ist, führe den folgenden Befehl aus, um Let’s Encrypt SSL für die Gitea-Website herunterzuladen und zu installieren.
certbot --nginx -d gitea.linuxbuz.com
Gib deine E-Mail-Adresse an und akzeptiere die Nutzungsbedingungen wie unten gezeigt:
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): hitjethva@gmail.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 gitea.linuxbuz.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/gitea
Als Nächstes wählst du aus, ob der HTTP-Verkehr auf HTTPS umgeleitet werden soll oder nicht (siehe unten):
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
Gib 2 ein und drücke die Eingabetaste, um das Zertifikat zu installieren (siehe unten):
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/gitea - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://gitea.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=gitea.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/gitea.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/gitea.linuxbuz.com/privkey.pem Your cert will expire on 2022-11-21. 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
Jetzt ist deine Gitea-Website mit Let’s Encrypt SSL gesichert. Du kannst jetzt mit dem nächsten Schritt fortfahren.
Zugriff auf die Gitea-Weboberfläche
Öffne jetzt deinen Webbrowser und gib die URL https://git.example.com/ ein. Du wirst auf die folgende Seite weitergeleitet:
Gib den Namen deiner Gitea-Datenbank, deinen Benutzernamen, dein Passwort, den Repository-Pfad, den Run-As-Benutzernamen, den Listening-Port, die Gitea-Basis-URL, den Log-Pfad, den Gitea-Admin-Benutzernamen und das Passwort ein und klicke auf die Schaltfläche Gitea installieren. Sobald die Installation abgeschlossen ist, solltest du das Gitea Dashboard auf dem folgenden Bildschirm sehen:
Fazit
Glückwunsch! Du hast Gitea mit Nginx und Let’s Encrypt SSL erfolgreich auf einem Ubuntu 22.04 Server installiert. Jetzt kannst du Gitea in deinem Unternehmen einsetzen und mit der Erstellung deines ersten Repositorys mit Gitea beginnen. Weitere Informationen findest du in der Gitea-Dokumentation.