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.

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

Nach der Installation sind Sie eingeloggt

Sie können ein neues Repository erstellen

Sie haben das erste Repository

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.