# 📝 Kapitel 15 – Git (Self-Hosted mit Gitea) ## 🎯 Ziel 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. --- ## ✅ Voraussetzungen - LXC-Container mit **Debian 12 (Bookworm)** - Empfohlen: **1 vCPU**, **512 MB – 1 GB RAM**, **≄ 5 GB Speicher** - Netzwerkzugang (IPv4/IPv6) - Optional: **Nginx Proxy Manager + DynDNS** (fĂŒr Zugriff von außen) - In diesem Kapitel installieren wir **Docker + Compose** --- ## 1ïžâƒŁ Container vorbereiten ```bash apt update && apt upgrade -y apt install -y curl gnupg lsb-release ca-certificates nano ``` 👉 Wir aktualisieren den Container und stellen sicher, dass alle Werkzeuge fĂŒr Installation und Konfiguration vorhanden sind. --- ## 2ïžâƒŁ Docker & Compose installieren ```bash # Docker GPG-Key hinzufĂŒgen mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg # Repository hinzufĂŒgen echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null # Installation apt update apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin ``` 👉 Damit haben wir die Grundlage fĂŒr Container im Homelab geschaffen. --- ## 3ïžâƒŁ Arbeitsverzeichnis & Compose-File ```bash mkdir /gitea && cd /gitea nano docker-compose.yml ``` **Beispiel `docker-compose.yml`:** ```yaml version: "3" services: gitea: image: gitea/gitea:latest container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 volumes: - ./gitea:/data ports: - "3000:3000" # Web - "222:22" # SSH restart: always ``` 👉 Wichtig: UID/GID sorgen fĂŒr saubere Dateirechte. Port 222 ist unser SSH-Zugang nach außen. --- ## 4ïžâƒŁ Container starten & prĂŒfen ```bash docker compose up -d docker ps ``` 👉 Jetzt sollte `gitea` laufen. Die Web-UI erreichst du unter Port 3000, SSH ĂŒber Port 222. --- ## 5ïžâƒŁ Erstkonfiguration im Browser Browser öffnen: `http://:3000` Hier legst du die Basis deiner Instanz fest – was du jetzt einstellst, bestimmt dein weiteres Arbeiten. ### 5.1 Datenbankeinstellungen - **Datenbanktyp:** `SQLite3` – leichtgewichtig, perfekt fĂŒrs Homelab. - **Pfad:** `/data/gitea/gitea.db` 👉 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.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.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.7 Administrator-Konto - Benutzername + Passwort wĂ€hlen. - Dummy-Mail reicht. 👉 Danach klickst du auf *Installieren* – Gitea startet durch. --- ## 6ïžâƒŁ Erstes Repository in der Web-UI anlegen Ein Repo ist das HerzstĂŒck deiner Arbeit. Lege jetzt dein erstes Projekt an: - **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“). --- ## 7ïžâƒŁ Repository per Terminal nutzen ```bash # Lokal initialisieren mkdir testprojekt && cd testprojekt git init # Remote hinzufĂŒgen git remote add origin http://:3000/admin/testprojekt.git echo "# Hallo Gitea" > README.md git add . git commit -m "Erster Commit" # Push git push -u origin master ``` 👉 Mit SSH statt HTTP: ```bash git remote set-url origin ssh://git@:222/admin/testprojekt.git ``` (SSH-Key im Userprofil hinterlegen.) --- ## 8ïžâƒŁ GitHub-Mirroring - **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 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 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.**