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

200 lines
6.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📝 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://<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
```bash
# 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:
```bash
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.**