So installieren Sie Gitea mit Docker unter Ubuntu 20.04

Gitea ist ein kostenloses Open-Source-Softwarepaket zum Selbsthosten eines Git-Servers. Es bietet auch kollaborative Funktionen wie Bug-Tracking, Wikis und Code-Review. Gitea ist eine Community-gesteuerte und leichtgewichtige Codelösung, die in Go geschrieben wurde.

Entwickler müssen ihre Codeänderungen während der Arbeit regelmäßig in einem zentralen Repository zusammenführen. Es kann vorkommen, dass Sie ein privates zentrales Repository für Ihr Team benötigen, das Sie selbst hosten und verwalten. Dazu können Sie Gitea verwenden. Es ähnelt GitHub, Bitbucket usw.

In diesem Tutorial lernen wir, wie man Gitea mit Docker installieren an Ubuntu 20.04.

Voraussetzungen

  • Ein mit Ubuntu 20.04 installierter Knoten
  • Ein Benutzer mit sudo Privileg

Schritt 1: Docker auf Ubuntu installieren

Gitea stellt die neueste stabile Version seiner Docker-Images vom Docker-Hub bereit. Es kann aus dem Quellcode, binär und auch als Paket installiert werden. Hier stellen wir als Docker-Image bereit.

Um Docker zu installieren, müssen Sie einige Voraussetzungen installieren:

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common

Fügen wir nun den GP-Schlüssel des Docker-Repositorys hinzu:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Fügen Sie nun Docker zu den APT-Quellen hinzu. Der Cache wird automatisch aktualisiert.

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Installieren Sie nun Docker mit dem folgenden Befehl:

$ sudo apt install docker-ce

Fügen Sie den Benutzer der Docker-Gruppe hinzu, damit er den Docker-Befehl verwenden kann, ohne sudo Privilegien:

$ sudo usermod -aG docker username

Schritt 2: Nginx Docker ausführen

Um HTTPS zu aktivieren, können Sie TLS-Terminierungs-Proxys wie Nginx, Apache2 oder Caddy verwenden. In unserem Fall werden wir einen unabhängigen Container als unseren Nginx-Reverse-Proxy ausführen.

$ 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

Es hilft uns, den gesamten Standard-HTTP-Verkehr auf HTTPS umzuleiten, wenn Sie Ihre Zertifikate integrieren. Sie sollten das zugeordnete Volumen beachten, um Ihre Zertifikate zu integrieren /etc/nginx/certs

Öffnen Sie nun die Ports 80 und 443 auf der Firewall:

$ sudo ufw allow 80,443/tcp

Stellen Sie außerdem sicher, dass Sie ssh öffnen, bevor Sie UFW aktivieren, wenn dies noch nicht geschehen ist

$ sudo ufw allow 'OpenSSH'

Jetzt UFW aktivieren, falls noch nicht

$ sudo ufw enable

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Schritt 3: Führen Sie MySQL Docker aus

Gitea benötigt eine Datenbank, um seine Daten zu speichern. Gitea unterstützt MySQL/MariaDB, PostgreSQL, SQLite und MSSQL. Hier werden wir einen MySQL-Container ausführen, um alle Daten zu speichern.

$ 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

Wir können überprüfen, ob unser Container läuft

$ 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

Gitea lauscht standardmäßig auf Verbindungen auf Port 3000 und Reverse-Proxy auf HTTP- und HTTPS-Ports. Wenn Sie über eine Firewall verfügen, stellen Sie sicher, dass die Ports für den Zugriff auf die Gitea-Weboberfläche geöffnet sind.

Schauen wir uns einige Details unseres MySQL-Containers wie die IP-Adresse an, da wir sie später brauchen werden

$ 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
}
...
...

Verbinden wir uns nun mit dem MySQL-Container

$ docker container exec -it mysql-gitea bash

Dann Zugriff auf die MySQL-Befehlszeile

# mysql -u root -po$su876HG@zvsRt3BT

Erstellen Sie nun die Datenbank und den Benutzer für 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;

Verlasse nun auch den Container

# exit;

Schritt 4: Konfigurieren Sie das SSL-Zertifikat

Um über einen sicheren Domainnamen auf Ihre Gitea zuzugreifen, müssen Sie das SSL-Zertifikat in den Nginx-Ordner kopieren. Sie können das kostenlose Let’s Encrypt-Zertifikat oder das Zertifikat einer Zertifizierungsstelle verwenden.

Kopieren Sie das Zertifikat

$ cp gitea.websitefortesting.com.crt /etc/nginx/certs/

Kopieren Sie den Schlüssel

$ cp gitea.websitefortesting.com.key /etc/nginx/certs/

Schritt 5: Gitea docker ausführen

Um Gitea auszuführen, müssen wir einige Informationen über den MySQL-Container angeben, der zuvor gestartet wurde, wie zum Beispiel:

  • Der Datenbanktyp mysql
  • die IP-Adresse des MySQL-Containers
  • der Name der Datenbank
  • der Datenbankbenutzername
  • das Datenbankbenutzerpasswort
  • der von gitea verwendete Port

$ 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

Wir können überprüfen, ob es läuft

$ 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

Jetzt können Sie versuchen, auf Gitea zuzugreifen, indem Sie die URL https://giteadomain.com verwenden

Gehen Sie nun auf “Anmelden”, um den Installationsvorgang fortzusetzen. Sie können einige Informationen wie den Site-Titel personalisieren.

Gitea-Webinterface-Datenbankeinstellungen

Stellen Sie sicher, dass Sie den Domänennamen angeben, wo er erforderlich ist. Geben Sie auch die Informationen für das Administratorkonto an

Gitea Webinterface-Domain und admin Account Einstellungen

Nach der Installation sind Sie eingeloggt

Gitea-Dashboard

Sie können ein neues Repository erstellen

neues Repository erstellen

Sie haben das erste Repository

Gitea erstes Repo

Abschluss

Jetzt kennen Sie alle Schritte zur Installation von Gitea mit Docker auf Ubuntu 20.04 – Ihrem privaten zentralen Repository für Ihren Code. Sie können es je nach Bedarf verwalten.