Files
Homelab--Bratonein-Kontroll…/Kapitel 15/Tutorial.md

6.1 KiB
Raw Blame History

📝 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

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

# 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

mkdir /gitea && cd /gitea
nano docker-compose.yml

Beispiel docker-compose.yml:

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

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://<IP>: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://<IP>: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

# Lokal initialisieren
mkdir testprojekt && cd testprojekt
git init

# Remote hinzufügen
git remote add origin http://<IP>: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:

git remote set-url origin ssh://git@<domain-oder-ip>: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.