Kapitel 15/README.md aktualisiert

This commit is contained in:
2025-08-18 16:08:48 +00:00
parent 2f017ff38d
commit 4c73fb715b

View File

@@ -1,9 +1,26 @@
# 📝 Kapitel 15 Git (Self-Hosted mit Gitea)
## 🎯 Ziel
In diesem Kapitel setzen wir einen eigenen **Git-Server mit Gitea** auf.
Damit sichern wir unsere **Configs, Skripte und Dokumente versioniert** und behalten die volle Kontrolle.
Zusätzlich können wir mit GitHub spiegeln für **Hybridbetrieb** (intern privat, extern sichtbar).
In diesem Kapitel richten wir unser eigenes **Git-Kontrollzentrum mit Gitea** ein.
Wir geben nicht länger fremden Plattformen die alleinige Hoheit über unsere Daten, sondern holen uns die Kontrolle zurück.
Gitea ermöglicht uns, Konfigurationen, Skripte und Dokumente versioniert abzulegen und bei Bedarf zusätzlich mit GitHub zu spiegeln.
So kombinieren wir **Datenhoheit im Homelab** mit der **Reichweite öffentlicher Plattformen**.
---
## 📖 Warum Gitea?
Viele Streamer und Technik-Nerds starten mit GitHub oder GitLab. Praktisch, aber:
- 🔒 Deine Daten liegen extern, oft ohne volle Kontrolle.
- 🚫 Private Projekte sind meist eingeschränkt oder kostenpflichtig.
- 🌍 Zugriff ist nur mit Internet möglich.
Mit **Gitea im eigenen Homelab** hast du dagegen:
- ✅ Volle Kontrolle über Repos und Nutzerverwaltung.
- ✅ Keine Abhängigkeit von Dritten.
- ✅ Zugriff auch offline oder im LAN.
- ✅ Trotzdem die Möglichkeit, Projekte mit GitHub zu spiegeln.
Kurz: Gitea ist leichtgewichtig, perfekt für Low-Budget-Homelabs und bietet trotzdem alle Kernfunktionen.
---
@@ -21,7 +38,7 @@ Zusätzlich können wir mit GitHub spiegeln für **Hybridbetrieb** (intern p
apt update && apt upgrade -y
apt install -y curl gnupg lsb-release ca-certificates nano
```
👉 Damit stellen wir sicher, dass alle Pakete aktuell sind und wir wichtige Tools wie `curl` und `nano` haben.
👉 Wir aktualisieren den Container und stellen sicher, dass alle Werkzeuge für Installation und Konfiguration vorhanden sind.
---
@@ -40,7 +57,7 @@ echo \
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
```
👉 Damit haben wir **Docker Engine** + **Docker Compose Plugin** installiert.
👉 Damit haben wir die Grundlage für Container im Homelab geschaffen.
---
@@ -68,11 +85,7 @@ services:
- "222:22" # SSH
restart: always
```
👉 Erklärung:
- `USER_UID` / `USER_GID`: sorgt dafür, dass Gitea-Dateien deinem User (ID 1000) gehören.
- `3000:3000`: Web-UI erreichbar unter `http://<IP>:3000`.
- `222:22`: Host-Port 222 → Container-Port 22 (SSH). Wichtig für spätere Git-Clone-URLs.
👉 Wichtig: UID/GID sorgen für saubere Dateirechte. Port 222 ist unser SSH-Zugang nach außen.
---
@@ -81,126 +94,62 @@ services:
docker compose up -d
docker ps
```
👉 Jetzt sollte `gitea` laufen, Ports `3000` und `222` sichtbar.
👉 Jetzt sollte `gitea` laufen. Die Web-UI erreichst du unter Port 3000, SSH über Port 222.
---
## 5⃣ Erstkonfiguration im Browser
Browser öffnen: `http://<IP>:3000`
> **Wichtig:** Die Werte hier bestimmen URLs, Ports, Dateipfade und Sicherheitsverhalten deiner Instanz. Alles wird in `/data/gitea/conf/app.ini` gespeichert und ist später änderbar aber je sauberer jetzt, desto weniger Nacharbeit.
Hier legst du die Basis deiner Instanz fest was du jetzt einstellst, bestimmt dein weiteres Arbeiten.
### 5.1 Datenbankeinstellungen
- **Datenbanktyp:** `SQLite3`
*Warum:* Für Homelab klein & wartungsarm (keine Extra-DB).
- **Pfad (nur bei SQLite):** `/data/gitea/gitea.db`
*Speicherort der DB im gemounteten Datenordner.*
- **Datenbanktyp:** `SQLite3` leichtgewichtig, perfekt fürs Homelab.
- **Pfad:** `/data/gitea/gitea.db`
> **Alternativen:** MariaDB/PostgreSQL sind für Teams/Größe sinnvoll dann Host, Port, DB-Name, User, Passwort angeben. Für dieses Kapitel bleiben wir bei SQLite.
👉 Für große Teams: MariaDB/PostgreSQL möglich.
---
### 5.2 Server-Einstellungen
- **Seitentitel:** frei wählbar, z. B. *Bratonien Git*.
- **Run User:** `git` (Standard im Container).
- **Domain:** zunächst IP, später Subdomain via DynDNS/NPM.
- **SSH-Port:** `222` (wegen Mapping).
- **HTTP-Port:** `3000`.
- **Basis-URL:** `http://<IP>:3000/` später mit HTTPS über NPM.
### 5.2 Allgemeine / Server-Einstellungen
- **Seitentitel:** frei (z.B. *Bratonien Git*)
- **Ausführen als (Run User):** `git`
*Vorgabe im Container; nicht ändern.*
- **ServerDomain:** vorerst **IP** (z.B. `192.168.1.50`), später **Subdomain** (`git.deine-domain.tld`) über NPM/DynDNS.
- **SSHServerPort:** **`222`**
*Grund:* In `docker-compose.yml` haben wir `222:22` gemappt → Container lauscht auf 22, von außen nutzen wir 222. Wenn du hier 22 einträgst, generiert Gitea falsche CloneURLs.
- **HTTPListenPort:** `3000`
*Entspricht dem ComposeMapping `3000:3000`.*
- **BasisURL (App URL):** `http://<IP>:3000/`
*Später auf `https://git.deine-domain.tld/` umstellen, wenn NPM/SSL steht.*
### 5.3 Speicherorte
- **Repo-Verzeichnis:** `/data/git/repositories`
- **LFS-Wurzelpfad:** leer lassen (Large File Storage nur für große Binärdateien).
---
### 5.4 Nutzer & Sicherheit
- **Registrierung:** deaktiviert (Admin legt Accounts an).
- **Gravatar:** aus (Datenschutz).
- **Offline-Modus:** an.
- **Passwort-Hash:** `pbkdf2` (Standard, sicher).
### 5.3 Pfade & Speicher
- **RepositoryVerzeichnis:** `/data/git/repositories`
*Ablage aller Repos (im Volume).*
- **GitLFSWurzelpfad:** *leer lassen*
*LFS = Large File Storage für große Binärdateien. Für Konfigs/Markdown nicht nötig; später aktivierbar.*
- **Anhänge/Assets (falls angezeigt):** Standard belassen Homelab nutzt selten große DateiUploads über Gitea.
### 5.5 E-Mail
- Ohne SMTP reicht Dummy-Mail (z. B. `admin@localhost`).
- SMTP kann später für Passwort-Resets nachgerüstet werden.
---
### 5.6 Logging
- **Pfad:** `/data/gitea/log`
### 5.4 Registrierung, Nutzer & Darstellung
- **Öffentliche Registrierung erlauben:** *empfohlen: aus*
*Nur Admin legt Accounts an → kleiner, sicherer Kreis.*
- **Anmeldung erforderlich, um Seiten zu sehen:** optional
*Aktivieren, wenn das komplette UI privat sein soll.*
- **OpenIDAnmeldung erlauben:** optional
*Ermöglicht SSOLogin via OpenID; für Homelab meist nicht notwendig.*
- **OpenIDSelbstregistrierung erlauben:** optional
- **Gravatar deaktivieren:** **an**
*Keine externen AvatarAnfragen → Datenschutz.*
- **Föderierte Avatare/Profile:** *aus*
*Nicht erforderlich im Homelab.*
- **OfflineModus:** **an**
*Unterbindet unnötige externe Requests.*
### 5.7 Administrator-Konto
- Benutzername + Passwort wählen.
- Dummy-Mail reicht.
---
### 5.5 EMail (SMTP)
- **SMTPHost / Port / Benutzer / Passwort / From:** *leer lassen*, wenn kein Mailserver genutzt wird.
*Gitea funktioniert auch ohne SMTP; PasswortReset per Mail geht dann natürlich nicht.*
- **TLS/STARTTLS:** nur konfigurieren, wenn SMTP genutzt wird.
- **Versteckte EMailDomain:** Standard (`noreply.localhost`) belassen.
> **AdminEMail** darf eine DummyAdresse sein (z.B. `admin@localhost`), wenn kein SMTP vorhanden ist.
---
### 5.6 Sicherheit
- **PasswortHash:** `pbkdf2` (Standard; sicher & ressourcenschonend)
- **Captcha / Registrierungsbestätigung:** nur relevant, wenn offene Registrierung aktiv ist; im Homelab meist aus.
---
### 5.7 Logging
- **LogDateipfad:** `/data/gitea/log`
*Bleibt im Volume; einfach zu sichern/prüfen.*
---
### 5.8 Administrator
- **Benutzername:** z.B. `admin`
- **Passwort:** stark wählen
- **EMail:** `admin@localhost` (ohne SMTP ok)
- **Installieren** klicken → Gitea startet mit diesen Werten.
> Nach der Installation findest du die Konfig in `/data/gitea/conf/app.ini`. Änderungen sind dort oder im UI möglich.
👉 Danach klickst du auf *Installieren* Gitea startet durch.
---
## 6⃣ Erstes Repository in der Web-UI anlegen
Pflicht:
- **Besitzer:** z.B. `admin` (oder Organisation)
- **Name:** `testprojekt` (klein, mit Bindestrich)
- **Sichtbarkeit:** privat (Homelab) oder öffentlich (Sharing)
Ein Repo ist das Herzstück deiner Arbeit. Lege jetzt dein erstes Projekt an:
Initialdateien (mit Erklärung):
- **README erzeugen:** **empfohlen** → Startseite hat sofort Inhalt.
- **.gitignore:** bei Codeprojekten sinnvoll (Build/Cache raus); bei reiner Doku optional.
- **Lizenz:** *Content/Leitfaden →* **CC BY** (freie Nutzung mit Namensnennung „Bratonien Tech“).
*Hinweis:* Bei **echtem Code** wäre z.B. **MIT** üblich.
Erweitert:
- **Standardbranch:** `main` (belassen)
- **Objektformat:** `sha1` (belassen)
**Pflichtfelder:**
- Besitzer: z. B. `admin`
- Name: `testprojekt`
- Sichtbarkeit: privat oder öffentlich
**Optionale Felder:**
- **README:** hinzufügen (empfohlen)
- **.gitignore:** optional (bei Codeprojekten)
- **Lizenz:** für Content → **CC BY** (Namensnennung „Bratonien Tech“)
**Erweitert:**
- Standardbranch: `main`
- Objektformat: `sha1`
- **Besitzer:** `admin` (oder Organisation).
- **Name:** `testprojekt` (klein, sprechend).
- **Sichtbarkeit:** privat oder öffentlich.
- **README:** anlegen (Startseite wirkt sofort vollständig).
- **Lizenz:** Für Content dieses Tutorials → **CC BY** (freie Nutzung, Namensnennung „Bratonien Tech“).
---
@@ -220,36 +169,31 @@ git commit -m "Erster Commit"
# Push
git push -u origin master
```
👉 **SSH statt HTTP**:
👉 Mit SSH statt HTTP:
```bash
git remote set-url origin ssh://git@<domain-oder-ip>:222/admin/testprojekt.git
```
(SSH-Key vorher im Gitea-Userprofil hochladen)
(SSH-Key im Userprofil hinterlegen.)
---
## 8⃣ GitHub-Mirroring
- **Pull-Mirror:** GitHub → Gitea (Projekte importieren)
- **Push-Mirror:** Gitea → GitHub (eigene Projekte zusätzlich veröffentlichen)
- **Pull-Mirror:** GitHub → Gitea (Externe Projekte sichern).
- **Push-Mirror:** Gitea → GitHub (eigene Projekte zusätzlich sichtbar machen).
👉 Einrichtung im Repo unter *Settings → Mirroring*.
---
## ⚠️ Typische Stolperfallen
-**SSH-Port falsch:** immer `222` eintragen (wegen Mapping)
-**UID/GID falsch:** Container kann keine Dateien schreiben → prüfe `USER_UID=1000`, `USER_GID=1000`
-**Mailserver leer:** unkritisch, Gitea läuft auch ohne Mail
-**Lizenz vergessen:** für Content immer **CC BY** wählen
-**SSH-Port vergessen:** immer `222` eintragen.
-**UID/GID falsch:** Container kann nicht schreiben.
-**Lizenz ausgelassen:** bei Content immer **CC BY**.
-**SMTP erwartet:** nicht nötig fürs Homelab.
---
## ✅ Zusammenfassung
- Gitea läuft im Docker-Container, Daten persistieren in `/gitea/gitea`
- SSH-Port = **222**
- Git LFS bleibt leer
- Erstes Repo → README + CC-BY-Lizenz
- GitHub-Mirroring möglich
Damit haben wir unser eigenes **Git-Kontrollzentrum** in Bratonien eingerichtet.
Wir haben Gitea erfolgreich im Container eingerichtet.
Ab sofort liegt unsere Arbeit **unter eigener Kontrolle** mit der Option, Inhalte auf GitHub zu spiegeln.
Damit ist unser Homelab um einen weiteren Baustein reicher: **Versionskontrolle und Zusammenarbeit nach eigenen Regeln.**