Kapitel 15/Tutorial.md aktualisiert
This commit is contained in:
199
Kapitel 15/Tutorial.md
Normal file
199
Kapitel 15/Tutorial.md
Normal file
@@ -0,0 +1,199 @@
|
||||
# 📝 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.**
|
||||
Reference in New Issue
Block a user