Gitea ist ein kostenloses Open-Source-Softwarepaket zum Selbsthosten eines Git-Servers. Es bietet auch kollaborative Funktionen wie Fehlerverfolgung, Wikis und Codeüberprüfung. Gitea ist eine von der Community betriebene 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. Zu diesem Zweck können Sie Gitea verwenden. Es ähnelt GitHub, Bitbucket usw.
In diesem Tutorial lernen wir, wie man Gitea mit Docker installiert auf Ubuntu 20.04 .
Voraussetzungen
- Ein mit Ubuntu 20.04 installierter Knoten
- Ein Benutzer mit sudo-Berechtigung
Schritt 1:Installieren Sie Docker auf Ubuntu
Gitea stellt die neueste stabile Version seiner Docker-Images aus dem 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 ohne sudo-Berechtigungen verwenden kann:
$ sudo usermod -aG docker username
Schritt 2:Nginx-Docker ausführen
Um HTTPS zu aktivieren, können Sie TLS-Beendigungsproxys wie Nginx, Apache2 oder Caddy verwenden. In unserem Fall führen wir einen unabhängigen Container als unseren Nginx-Reverse-Proxy aus.
$ 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-Datenverkehr auf HTTPS umzuleiten, wenn Sie Ihre Zertifikate integrieren. Sie sollten das zugeordnete Volume zum Integrieren Ihrer Zertifikate beachten, das /etc/nginx/certs
ist
Ö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, falls noch nicht geschehen
$ sudo ufw allow 'OpenSSH'
Aktivieren Sie jetzt UFW, falls noch nicht geschehen
$ 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:MySQL-Docker ausführen
Gitea benötigt eine Datenbank, um seine Daten zu speichern. Gitea unterstützt MySQL/MariaDB, PostgreSQL, SQLite und MSSQL. Hier führen wir einen MySQL-Container aus, 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 prü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 Reverser-Proxy auf HTTP- und HTTPS-Ports. Wenn Sie eine Firewall haben, stellen Sie sicher, dass die Ports für den Zugriff auf die Gitea-Weboberfläche geöffnet sind.
Werfen wir einen Blick auf einige Details unseres MySQL-Containers, wie z. B. die IP-Adresse, da wir sie später benötigen
$ 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 jetzt mit dem MySQL-Container
$ docker container exec -it mysql-gitea bash
Greifen Sie dann auf die MySQL-Befehlszeile zu
# 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;
Verlassen Sie nun auch den Container
# exit;
Schritt 4:SSL-Zertifikat konfigurieren
Um über einen sicheren Domainnamen auf Ihr Gitea zuzugreifen, müssen Sie das SSL-Zertifikat in den Nginx-Ordner kopieren. Sie können das kostenlose Zertifikat von Let's Encrypt oder ein 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, der mysql ist
- die IP-Adresse des MySQL-Containers
- der Name der Datenbank
- der Datenbankbenutzername
- das Passwort des Datenbankbenutzers
- 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 prü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, über die URL https://giteadomain.com
auf Gitea zuzugreifenGehen Sie nun auf „Anmelden“, um den Installationsvorgang fortzusetzen. Sie können einige Informationen wie den Seitentitel personalisieren.
Stellen Sie sicher, dass Sie den Domänennamen angeben, wo es erforderlich ist. Geben Sie auch die Informationen für das Administratorkonto an
Nach der Installation werden Sie angemeldet
Sie können ein neues Repository erstellen
Sie haben das erste Repository
Schlussfolgerung
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.