From 4c73fb715bd121516832e39a6e5ead47d93d7e22 Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 18 Aug 2025 16:08:48 +0000 Subject: [PATCH] Kapitel 15/README.md aktualisiert --- Kapitel 15/README.md | 194 +++++++++++++++---------------------------- 1 file changed, 69 insertions(+), 125 deletions(-) diff --git a/Kapitel 15/README.md b/Kapitel 15/README.md index 6019bef..8b79843 100644 --- a/Kapitel 15/README.md +++ b/Kapitel 15/README.md @@ -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://: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://: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://: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.* -- **Server‑Domain:** vorerst **IP** (z. B. `192.168.1.50`), spĂ€ter **Subdomain** (`git.deine-domain.tld`) ĂŒber NPM/DynDNS. -- **SSH‑Server‑Port:** **`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 Clone‑URLs. -- **HTTP‑Listen‑Port:** `3000` - *Entspricht dem Compose‑Mapping `3000:3000`.* -- **Basis‑URL (App URL):** `http://: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 -- **Repository‑Verzeichnis:** `/data/git/repositories` - *Ablage aller Repos (im Volume).* -- **Git‑LFS‑Wurzelpfad:** *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 Datei‑Uploads ĂŒ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.* -- **OpenID‑Anmeldung erlauben:** optional - *Ermöglicht SSO‑Login via OpenID; fĂŒr Homelab meist nicht notwendig.* -- **OpenID‑Selbstregistrierung erlauben:** optional -- **Gravatar deaktivieren:** **an** - *Keine externen Avatar‑Anfragen → Datenschutz.* -- **Föderierte Avatare/Profile:** *aus* - *Nicht erforderlich im Homelab.* -- **Offline‑Modus:** **an** - *Unterbindet unnötige externe Requests.* +### 5.7 Administrator-Konto +- Benutzername + Passwort wĂ€hlen. +- Dummy-Mail reicht. ---- - -### 5.5 E‑Mail (SMTP) -- **SMTP‑Host / Port / Benutzer / Passwort / From:** *leer lassen*, wenn kein Mailserver genutzt wird. - *Gitea funktioniert auch ohne SMTP; Passwort‑Reset per Mail geht dann natĂŒrlich nicht.* -- **TLS/STARTTLS:** nur konfigurieren, wenn SMTP genutzt wird. -- **Versteckte E‑Mail‑Domain:** Standard (`noreply.localhost`) belassen. - -> **Admin‑E‑Mail** darf eine Dummy‑Adresse sein (z. B. `admin@localhost`), wenn kein SMTP vorhanden ist. - ---- - -### 5.6 Sicherheit -- **Passwort‑Hash:** `pbkdf2` (Standard; sicher & ressourcenschonend) -- **Captcha / RegistrierungsbestĂ€tigung:** nur relevant, wenn offene Registrierung aktiv ist; im Homelab meist aus. - ---- - -### 5.7 Logging -- **Log‑Dateipfad:** `/data/gitea/log` - *Bleibt im Volume; einfach zu sichern/prĂŒfen.* - ---- - -### 5.8 Administrator -- **Benutzername:** z. B. `admin` -- **Passwort:** stark wĂ€hlen -- **E‑Mail:** `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@: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.**