Der Betrieb eines lokalen Gitea-Servers (GIT) ist eigentlich recht einfach und für den lokalen oder privaten Gebrauch völlig ausreichend. Wenn dieser Teil abgeschlossen ist, kann auf einen vollständigen Gitea-Server im lokalen Netzwerk zugegriffen werden.
Zusammenfassend sind folgende Schritte notwendig, um das Ziel dieses ersten Teils zu erreichen:
Diese einfachste Ausbaustufe des ersten Teils ist NICHT für den öffentlichen Betrieb geeignet!
Der Zugriff erfolgt (noch) nicht über eine verschlüsselte Verbindung. Eine Transportverschlüsselung erfolgt bewusst nicht lokal, da GIT sehr allergisch auf selbstsignierte oder selbstgemachte Zertifikate reagiert. Das funktioniert zwar notfalls, ist aber umständlich.
Zeitaufwand: ca. 60 Minuten.
Letzte Aktualisierung:
In diesem Artikel wird so viel wie möglich per Copy'n'Paste ermöglicht/vorbereitet.
Gerade bei längeren Konfigurationen kommt dann so etwas vor:
cat > DATEINAME.sh << 'EOF'
BEFEHL1
BEFEHL2
BEFEHL3
'EOF'
Das erzeugt eine Datei mit dem Namen DATEINAME.sh mit dem Inhalt:
BEFEHL1
BEFEHL2
BEFEHL3
Also immer komplett von cat bis EOF kopieren und einfügen!
Damit sieht das Setup lokal so aus:
┌─────────────────────────────┐
│ TrueNAS │
│ 192.168.178.100 │
│ ┌─────────────────────────┐ │
│ │ Git-Jail │ │
│ │ 192.168.178.103 │ │
│ │ │ │
LAN: 0.0.0.0:3000 ──┼─┼─► gitea │ │
│ └─────────────────────────┘ │
└─────────────────────────────┘
Die Verzeichnisse /usr/local/etc/gitea
und /var/db/gitea
können in eigene Datasets außerhalb des Jails abgelegt werden. Damit sind diese Daten unabhängig vom Jail gespeichert. Ziel ist es, âhnlich wie bei Docker, möglichst wenig vom Jail selber abhängig zu sein. Wenn das Jail aus irgendeinem Grund beschädigt oder gelöscht wurde, sind wir so in der Lage, die vorherige Konfiguration und Daten mit minimalem Aufwand wiederherzustellen. Wie das (generisch) erreicht werden kann, habe ich hier beschrieben.
Dies ist eher für fortgeschrittenen Anwender gedacht, die schon etwas Erfahrung besitzen. Da im Detail drauf einzugehen, würde den Rahmen hier etwas sprengen. Das wichtigste ist aber: Es werden 2 neue Verzeichnisse (Datasets) benötigt, die alles Gitea relevante beinhalten.
└── jails_data
└── GITEA
├── config # /usr/local/etc/gitea Verzeichnis
└── data # /var/db/gitea
Damit zeigt z.B im Jail GITEA
das Verzeichnis /usr/local/etc/gitea
auf das eigentlich extern liegende Verzeichnis /mnt/ZPOOLNAME/jails_data/GITEA/config
und /var/db/gitea
auf /mnt/ZPOOLNAME/jails_data/GITEA/data
. Alles klar? Gut!
Login per SSH in das GITEA Jail:
ssh USERNAME@GITEAIP
oder ssh USERNAME@GITEAHOSTNAME
um mit su
root Rechte zu erlangen.
Nun die Paketquelle mit pkg update
aktualisieren und dann die benötigten Pakete installieren: pkg install gitea
Dienste aktivieren damit diese beim Start des Jails automatisch mit starten: service gitea enable
In Vergleich zur mitgelieferten Standard-Konfiguration hat diese mitunter ein paar Änderungen:
REPO_INDEXER_ENABLED = true
)DISABLE_GRAVATAR = true
)ENABLED = false
)SHOW_FOOTER_BRANDING = false
)DISABLE_SSH = true
)HTTP_ADDR = 0.0.0.0
)cat > /usr/local/etc/gitea/conf/app.ini << 'EOF'
APP_NAME = Gitea
RUN_USER = git
RUN_MODE = prod
[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = gitea
PASSWD =
PATH = /var/db/gitea/gitea.db
USER = root
SSL_MODE = disable
[indexer]
ISSUE_INDEXER_PATH = /var/db/gitea/indexers/issues.bleve
REPO_INDEXER_ENABLED = true
[log]
ROOT_PATH = /var/log/gitea
MODE = file
LEVEL = Info
[mailer]
ENABLED = false
[oauth2]
JWT_SECRET = GITEAJWTSECRET
[picture]
AVATAR_UPLOAD_PATH = /var/db/gitea/data/avatars
DISABLE_GRAVATAR = true
ENABLE_FEDERATED_AVATAR = false
[repository]
ROOT = /var/db/gitea/gitea-repositories
SCRIPT_TYPE = sh
DISABLED_REPO_UNITS = repo.packages,repo.releases
DEFAULT_BRANCH = main
[repository.upload]
TEMP_PATH = /var/db/gitea/data/tmp/uploads
[security]
INSTALL_LOCK = true
INTERNAL_TOKEN = GITEAINTERNALTOKEN
SECRET_KEY = GITEASECRETKEY
[session]
PROVIDER = file
PROVIDER_CONFIG = /var/db/gitea/data/sessions
[server]
DOMAIN = GITEAHOSTNAME
HTTP_ADDR = 0.0.0.0
HTTP_PORT = 3000
ROOT_URL = http://GITEAHOSTNAME:3000/
DISABLE_SSH = false
SSH_DOMAIN = %(DOMAIN)s
SSH_PORT = 22
DISABLE_SSH = true
OFFLINE_MODE = false
APP_DATA_PATH = /var/db/gitea/data
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = true
[other]
SHOW_FOOTER_BRANDING = false
SHOW_FOOTER_VERSION = false
SHOW_FOOTER_TEMPLATE_LOAD_TIME = false
'EOF'
Nachträglich werden noch gefüllt:
GITEAHOSTNAME
, GITEAINTERNALTOKEN
, GITEAJWTSECRET
und GITEASECRETKEY
sed -i '' 's/GITEAHOSTNAME/'`hostname -f`'/' /usr/local/etc/gitea/conf/app.ini
sed -i '' 's/GITEAINTERNALTOKEN/'`openssl rand -base64 64 | tr '/' "T" | tr -d \\n`'/' /usr/local/etc/gitea/conf/app.ini
sed -i '' 's/GITEAJWTSECRET/'`openssl rand -base64 32 | tr '/' "T" | tr -d \\n`'/' /usr/local/etc/gitea/conf/app.ini
sed -i '' 's/GITEASECRETKEY/'`openssl rand -hex 16`'/' /usr/local/etc/gitea/conf/app.ini
Zum Schluss noch die Berechtigung der Konfigurationsdatei mit chown git:git /usr/local/etc/gitea/conf/app.ini
anpassen
Damit sind wir nun am Ende der Vorbereitungen angelangt und Gitea wird mit service gitea start
gestartet.
Nun erfolgt der erste Aufruf von Gitea, in dem direkt der erste Benutzer registriert wird.
Hierzu mit dem Lieblingsbrowser nun die IP oder Hostname des Gitea Jails aufrufen:
http://GITEAIP:3000 oder http://GITEAHOSTNAME:3000
Dieser erste Benutzer ist dann automatisch auch der Benutzer mit Administrations Rechten
Der Benutzer darf *NICHT admin
heissen
Nachdem der erste "Admin"-Benutzer erstellt wurde, kann in Betracht gezogen werden, die eigenständige Registrierung zu deaktivieren und dem Admin die Aufgabe zu übertragen, neue Benutzer im System anzulegen. Dazu genügt es in der /usr/local/etc/gitea/conf/app.ini
den Eintrag DISABLE_REGISTRATION
von false
auf true
zu setzen und den Gitea Dienst mit service gitea restart
neu zu starten.
Voilá
Damit das ganze auch unterwegs aus genutzt werden kann, wird in Teil 2 erklärt
und für die ersten Schritte mit einem Git wurde ein eigener Artikel gewidmet.