3,2K
Gitea ist eine kostenfreie open source Lösung zum Hosten von Code. In dieser Anleitung zeige ich euch, wie ihr Gitea in wenigen Minuten mittels Docker und Traefik installiert.
Datum | Änderung |
---|---|
08.06.2022 | Erstellung dieser Anleitung. |
13.12.2022 | Docker Compose v2, Änderung auf gitea:latest, Traefik Labels angepasst |
01.06.2023 | Anpassung der Traefik Labels |
0. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- Traefik v2 + 3 – Reverse-Proxy mit CrowdSec im Stack einrichten
1. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/gitea
2. Docker Compose anlegen
Nun legen wir die eigentliche Docker Datei an. Diese dient dazu unseren späteren Container zu erstellen.
nano /opt/containers/gitea/docker-compose.yml
Bei diesem Inhalt handelt es sich um exklusiven Content für Community Plus Mitglieder und Supporter.
Bitte logge dich mit deinem Account ein um den Inhalt zu sehen.
7. Quellen
https://docs.gitea.io/en-us/config-cheat-sheet/
Hab mich mal, daran gemacht, gitlab UND gitea UND Borg-Backup UND corosync von proxmox (Cluster-Config-Sync) auf der gleichen Maschine laufen zu lassen.
Das ist nur eine bedingt gute Idee, da der Cluster verstirbt, wenn gitea, gitlab und borg beginnen das ssh anzufassen.
Also geschwind den TCP-Balancer für SSH angeworfen und alles auf verschiedene Ports gelegt.
Die beiden git’s sollen ja in den Genuß von crowdsec kommen.
gitlab: port 20
gitea: port: 24
Ich beschreibe gitea komplett und gitlab – die ruby-config
1.: Entrypoints:
git-ssh:
address: “:20”
http:
middlewares:
– traefik-crowdsec-bouncer@file
gitea-ssh:
address: “:24”
http:
middlewares:
– traefik-crowdsec-bouncer@file
gitea-docker-compose.yml:
services:
server:
SSH_PORT: “24”
SSH_LISTEN_PORT: 24
labels:
traefik.http.routers.gitea.entrypoints: “websecure”
traefik.http.routers.gitea.rule: Host(
gitea.cs.de
)traefik.http.routers.gitea.service: “gitea”
traefik.http.routers.gitea.middlewares: default@file
traefik.http.routers.gitea.tls: true
traefik.http.routers.gitea.tls.certresolver: “http_resolver”
traefik.http.services.gitea.loadbalancer.server.port: 3000
traefik.tcp.routers.gitea-ssh.entrypoints: “gitea-ssh”
traefik.tcp.routers.gitea-ssh.rule: HostSNI(
*
)traefik.tcp.routers.gitea-ssh.service: “gitea-ssh”
traefik.tcp.services.gitea-ssh.loadbalancer.server.port: “24”
Das wichtigste ist der HostSNI(
*
). Da geht natürlich nur *, weil ssh ja keinen hostnamen im Protokoll “verschickt”.Den gitlab habe ich “innen” sogar auf Port 22 gelassen: (Wäre mit gitea warscheinlich auch gegangen)
traefik.tcp.routers.gitlab-ssh.entrypoints: git-ssh
traefik.tcp.routers.gitlab-ssh.rule: HostSNI(
*
)traefik.tcp.routers.gitlab-ssh.service: “gitlab-ssh”
traefik.tcp.services.gitlab-ssh.loadbalancer.server.port: “22”
Jetzt wird kein SSH-Port von gitlab oder gitea nach aussen gemappt! Das macht der TCP-Balancers:
Jetzt hat der Proxmox-Cluster auf dem Port 22 freie Bahn und ist ungestört.
Läuft bei mir super!
Ich habe noch ein paar Niedlichkeiten eingebaut:
1.: Ich verwende KeepassXC als Passwort-Manager. Der hat die Besonderheit, dass man private-keys als Attachment hinzufügen kann. Wenn man den putty-agent oder den ssh-agent laufen hat, fügt keepassxc beim Anmelden an die Passwort-DB automatisch den Key zum Agent hinzu, ohne dass ich etwas tun muss und vor allem liegen keine private-key-files auf der Platte rum.
2.: Dann verwende ich cygwin, als GIT-Basis und VI oder Visual-Code als Editor fürs Repo.
3.: Ich verwende deshalb ssh zum einchecken – keine Passwort-Abfrage – keine im Browser gespeicherten Passworte – keine private-ssh-keys rumliegen.
Bin schwer begeistertvon gitea, weil einfach kein überflüssiger Ballast vorhanden ist. Gitea ist auf für GIT-Dummbatzen wie mich geeignet. Einfach eintippen, was in der Anleitung für ein neues Repo steht – Perfekt. Hab vor lauter Unwissen immer Github-Desktop verwendet. Ja – nicht hauen – Ich mache es ja nicht mehr.
Backup geht auch relativ einfach.
Super – Danke für den Tipp
Ich würde keine feste Version vom Gitea Image nutzen, sondern LATEST. Weil heir im dem Guide wird eine veraltete version genutzt
Eine Frage zu Gitea hätte ich noch:
Ich hatte neulich gelesen, dass man mit Bleve oder Elastic Search wohl auch Repositories und den kompletten Code durchsuchen kann – was ich sehr praktisch fände.
Magst du das vielleicht noch hinzufügen? Ich war bisher leider nicht erfolgreich.
Obacht, wenn der ssh Port verändert wird, muss auch der Befehl “ssh -T git@gitea.euredomain.de” mit “-p 2345” ergänzt werden. ansonsten gibt es eine Passwortabfrage zu einem nicht existierenden Benutzer vom Server, und nicht von Docker.
Nur aus Interesse, weil ich Gitea ja so schon am Laufen hatte, zwei Fragen:
– Ich nutze MariaDB, du hast in der Anleitung PostgreSQL genutzt. Hat letzteres Vorteile gegenüber MariaDB?
– Wofür würde man den SSH-Port bei Gitea nutzen? Bei mir läuft sonst alles wie ich es (für meine Zwecke) brauche auch ohne den Port.