Files
Homelab--Bratonein-Kontroll…/Kapitel 13/README.md

144 lines
5.0 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)
**Logische Position:** 15 (nach **14: Backup (Basis, privat)** · vor **16: Wiki**)
**Ziel:** Ein eigenes Git-System mit **Gitea** im LXC via Docker aufsetzen, vollständig konfigurieren, erstes Repository anlegen (Web-UI + Terminal) und **GitHub-Mirroring** nutzen für **Datenhoheit** und **Hybridbetrieb** (Self-Hosted + GitHub).
---
## ✅ Voraussetzungen
- LXC: **Debian 12 (Bookworm)**
- Empfohlen: **1 vCPU**, **512 MB1 GB RAM**, **≥ 5 GB** Speicher
- Netzwerk: IPv4/IPv6
- Optional für externen Zugriff: **Nginx Proxy Manager** + **DynDNS** (siehe eigene Kapitel)
---
## 🧩 Was wir aufbauen
- **Container:** `gitea/gitea:latest`
- **Ports:** `3000:3000` (Web), `222:22` (SSH in Container → Host nutzt **222**)
- **Persistenz:** Volume `./gitea:/data` → Daten liegen auf dem Host unter **`/gitea/gitea`**
- **Rechte:** `USER_UID=1000`, `USER_GID=1000` (Dateien gehören deinem Standard-User)
---
## 🗺️ Kapitelablauf (Kurzüberblick)
1. System vorbereiten (Update, Tools)
2. **Docker & Compose** installieren
3. Arbeitsverzeichnis **`/gitea`** anlegen, `docker-compose.yml` schreiben
4. Container starten & prüfen (`docker compose up -d`, `docker ps`)
5. **Erstkonfiguration im Browser** alle Felder, inkl. **SSH-Port 222** & **LFS leer**
6. **Repository in der Web-UI** anlegen (mit **README**, **Lizenz** = **CC BY** für Content)
7. Lokales Repo initialisieren & pushen (Terminal)
8. **GitHub-Mirroring** (Pull- & Push-Mirror)
---
## 🔧 Kerneinstellungen (wichtig!)
- **SSH-Port:** In Gitea **222** eintragen
> Hintergrund: In Compose ist `222:22` gemappt → Container lauscht auf 22, von außen nutzt du 222. So stimmen die Clone-URLs.
- **LFS:** **leer lassen** (Large File Storage nur für große Binärdateien nötig)
- **UID/GID:** `USER_UID=1000`, `USER_GID=1000` → korrekte Dateirechte auf dem Host
---
## 🌐 Erstkonfiguration (Setup-Formular)
**Datenbank**
- Typ: `SQLite3` · Pfad: `/data/gitea/gitea.db`
**Allgemein**
- Seitentitel: frei (z. B. *Bratonien Git*)
- Repo-Verzeichnis: `/data/git/repositories`
- Git-LFS-Wurzelpfad: **leer lassen**
- Ausführen als: `git`
- Server-Domain: vorerst IP, später Subdomain (NPM + DynDNS)
- **SSH-Server-Port:** **222**
**Netzwerk**
- HTTP-Port: `3000`
- Basis-URL: `http://<IP>:3000/` (später `https://git.deine-domain.tld` via NPM)
**Logs**
- Pfad: `/data/gitea/log`
**Optionen (Homelab-Empfehlung)**
- ✅ Offline-Modus · ✅ Gravatar aus · ❌ Föderation aus
- 🔒 Registrierung **deaktivieren** (Admin lädt Nutzer ein) optional
- OpenID nach Bedarf
**E-Mail**
- Für Homelab meist **leer** (kein SMTP nötig)
- Admin-E-Mail: Dummy (z. B. `admin@localhost`) reicht ohne Mailserver
**Sicherheit**
- Passwort-Hash: `pbkdf2` (Standard)
**Admin-Benutzer**
- Benutzername/Passwort setzen · **Installieren**
---
## 🆕 Repository über die Web-UI anlegen (mit Substanz)
**Pflichtfelder**
- **Besitzer:** dein User (z. B. `admin`) oder eine Organisation
- **Repo-Name:** kurz, kleinschreibung-mit-bindestrich (z. B. `testprojekt`)
- **Sichtbarkeit:** *privat* (Homelab) oder *öffentlich* (Beispiel/Sharing)
**Initialdateien wann sinnvoll?**
- **README:** erzeugen → Startseite hat sofort Inhalt (**empfohlen**)
- **.gitignore:** bei Codeprojekten sinnvoll (Build/Cache raus) · bei reinen Markdown/Configs optional
- **Lizenz:**
- **Content/Leitfaden:** **CC BY** (freie Nutzung mit Namensnennung „Bratonien Tech“)
- (Bei echtem Software-Code wäre z. B. **MIT** üblich)
**Erweitert**
- Standardbranch: `main` · Objektformat: `sha1` (beides belassen)
---
## 💻 Lokales Repo pushen (HTTP & SSH)
```bash
# Beispiel HTTP
mkdir testprojekt && cd testprojekt
git init
git remote add origin http://<IP>:3000/admin/testprojekt.git
echo "# Hallo Gitea" > README.md
git add .
git commit -m "Erster Commit"
git push -u origin master
```
**SSH statt HTTP:**
```bash
git remote set-url origin ssh://git@<domain-oder-ip>:222/admin/testprojekt.git
# SSH-Key vorher in Gitea: Settings → SSH Keys
```
---
## 🔁 GitHub-Mirroring wann & warum?
- **Pull-Mirror (GitHub → Gitea):** Externe Repos sichern/weiterarbeiten.
- **Push-Mirror (Gitea → GitHub):** Intern arbeiten, öffentlich zeigen.
Einrichtung im Repo: **Settings → Mirroring** (Token/URL angeben).
---
## ⚠️ Stolperfallen
- **SSH-Port ≠ 222** → falsche Clone-URLs
- **UID/GID falsch** → Schreibrechte fehlen
- **SMTP erwartet** → für Homelab nicht nötig (Dummy-Mail reicht)
- **LFS aktiviert** ohne Bedarf → Speicherfrass
---
## 🔗 Siehe auch
- Kap.3 **Nginx Proxy Manager** (Domain/HTTPS)
- Kap.4 **DynDNS** (Erreichbarkeit von außen)
- Kap.14 **Backup (Basis, privat)** (Sicherung des `/gitea`-Volumes)
- Kap.16 **Wiki** (Dokumentation passend zu Repos)
---
## 📜 Lizenz für dieses Kapitel
**Creative Commons Attribution (CC BY)** Nutzung/Weitergabe/Anpassung erlaubt, **mit Namensnennung „Bratonien Tech“**.