From b2fb176417a90fc662e02b10980eb9e95c6e258e Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 18 Aug 2025 16:23:16 +0000 Subject: [PATCH] =?UTF-8?q?Kapitel=2015/README.md=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kapitel 15/README.md | 143 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 Kapitel 15/README.md diff --git a/Kapitel 15/README.md b/Kapitel 15/README.md new file mode 100644 index 0000000..4bdb0f2 --- /dev/null +++ b/Kapitel 15/README.md @@ -0,0 +1,143 @@ +# 📘 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 MB–1 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://: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://: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@: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“**.