Commit 4923a9

2026-04-09 15:48:24 Claude: Add CT 121 vaultwarden + pw.ls-cloud.biz
/dev/null .. container-und-vms.md
@@ 0,0 1,33 @@
+ # Container & VMs
+
+ > [!TIP]
+ > Diese Seite ist als schnelle Betriebsübersicht gedacht. Mit der Datentabelle kannst du nach Status, Rolle oder Namen suchen.
+
+ ## Laufende Systeme
+
+ | Typ | ID | Name | Status | IP / Zugriff |
+ |---|---:|---|---|---|
+ | CT | 101 | jellyfin | läuft | `192.168.178.55` |
+ | CT | 102 | pbs | läuft | `192.168.178.60` |
+ | CT | 103 | fileserver | läuft | `192.168.178.61` |
+ | CT | 104 | immich | läuft | `192.168.178.62` |
+ | CT | 108 | wiki | läuft | `192.168.178.77` |
+ | CT | 109 | claw | läuft | `192.168.178.75` |
+ | CT | 110 | dns | läuft | `192.168.178.78` |
+ | CT | 112 | claude-code | läuft | `192.168.178.82` / `terminal.ls-cloud.biz` |
+ | CT | 113 | cs16 | läuft | `192.168.178.83` / `cs.ls-cloud.biz` |
+ | CT | 114 | games | läuft | `192.168.178.84` / `games.ls-cloud.biz` |
+ | VM | 200 | Windows11Pro | gestoppt | Proxmox-Konsole / [[vm-200-windows11pro]] |
+
+ {{DataTable}}
+
+ ## Situative oder bewusst gestoppte Systeme
+
+ - **CT 100 `guacamole`** — derzeit gestoppt
+ - **CT 105 `downloads`** — derzeit gestoppt
+ - **CT 106 `openclaw`** — frühere Instanz / derzeit gestoppt
+ - **CT 107 `monitoring`** — nur bei aktivem Monitoring relevant
+ - **CT 111 `webserver`** — derzeit gestoppt
+
+ > [!WARNING]
+ > Bewusst gestoppt heißt hier nicht automatisch defekt. Es heißt nur: Caddy oder Nutzererwartung können trotzdem unerquicklich reagieren, wenn noch ein Pfad darauf zeigt.
/dev/null .. ct-100-guacamole.md
@@ 0,0 1,23 @@
+ # CT 100 – Guacamole
+
+ > [!NOTE]
+ > CT 100 ist der Guacamole-/Remote-Access-Kontext hinter `live.ls-cloud.biz`.
+
+ ## Basisdaten
+
+ - **CT-ID:** `100`
+ - **Name:** `guacamole`
+ - **Öffentliche URL:** `https://live.ls-cloud.biz`
+
+ ## Einordnung
+
+ - aktuell oft nur situativ relevant
+ - wenn CT 100 gestoppt ist, erklärt das öffentliche Fehlerbilder meist direkt
+
+ ## Prüfung
+
+ ```bash
+ pct status 100
+ curl -I http://192.168.178.54:8080
+ curl -k -I https://live.ls-cloud.biz
+ ```
/dev/null .. ct-101-jellyfin.md
@@ 0,0 1,22 @@
+ # CT 101 – Jellyfin
+
+ > [!NOTE]
+ > CT 101 hostet den Jellyfin-Dienst für `stream.ls-cloud.biz`.
+
+ ## Basisdaten
+
+ - **CT-ID:** `101`
+ - **Name:** `jellyfin`
+ - **IP:** `192.168.178.55`
+ - **Öffentliche URL:** `https://stream.ls-cloud.biz`
+
+ ## Prüfung
+
+ ```bash
+ pct status 101
+ curl -I http://192.168.178.55:8096
+ curl -k -I https://stream.ls-cloud.biz
+ ```
+
+ > [!TIP]
+ > Wenn Medienprobleme auftreten, nicht nur Jellyfin selbst prüfen, sondern auch Storage-/Bind-Mount-Seite mitdenken.
/dev/null .. ct-102-pbs.md
@@ 0,0 1,31 @@
+ # CT 102 `pbs`
+
+ ## Rolle
+ CT 102 stellt den **Proxmox Backup Server** für `lscloud` bereit.
+
+ ## Basisdaten
+ - **CT-ID:** 102
+ - **Hostname:** `pbs`
+ - **IP:** `192.168.178.60`
+ - **Onboot:** ja
+ - **Mount:** `/mnt/storage/pbs-datastore` → `/mnt/datastore`
+ - **Öffentliche URL:** `https://backup.ls-cloud.biz`
+
+ ## Technischer Aufbau
+ - Debian-LXC
+ - Dienst: `proxmox-backup-proxy`
+ - Datastore laut Systemstatus:
+ - `backups` → `/mnt/datastore`
+
+ ## Betriebszustand
+ - `proxmox-backup-proxy` läuft
+ - Datastore `backups` ist gelistet
+ - Im Container sind zusätzlich fehlgeschlagene ZFS-Units sichtbar:
+ - `zfs-mount.service`
+ - `zfs-share.service`
+ Diese wirken im aktuellen LXC-Kontext eher wie unnötiges Systemrauschen als wie der eigentliche PBS-Betriebsweg.
+
+ ## Relevante Hinweise
+ - PBS ist betriebsrelevant, aber oft erst dann interessant, wenn es zu spät ist
+ - Der Datastore hängt an einem Host-Mount und damit indirekt an der zentralen Storage-Schicht des Hosts
+ - Bei späteren Wartungen sollten Datastore-Pfad, Retention und Wiederherstellungsweg gesondert geprüft werden
/dev/null .. ct-103-fileserver.md
@@ 0,0 1,25 @@
+ # CT 103 – Fileserver
+
+ > [!NOTE]
+ > CT 103 hostet den Filebrowser-/Fileserver-Kontext im Setup.
+
+ ## Basisdaten
+
+ - **CT-ID:** `103`
+ - **Name:** `fileserver`
+ - **IP:** `192.168.178.61`
+ - **Öffentliche URL:** `https://files.ls-cloud.biz`
+
+ ## Relevanter Dienst
+
+ ```text
+ Filebrowser auf Port 8080
+ ```
+
+ ## Prüfung
+
+ ```bash
+ pct status 103
+ curl -I http://192.168.178.61:8080
+ curl -k -I https://files.ls-cloud.biz
+ ```
/dev/null .. ct-104-immich.md
@@ 0,0 1,22 @@
+ # CT 104 – Immich
+
+ > [!NOTE]
+ > CT 104 hostet die Immich-Instanz hinter `fotos.ls-cloud.biz`.
+
+ ## Basisdaten
+
+ - **CT-ID:** `104`
+ - **Name:** `immich`
+ - **IP:** `192.168.178.62`
+ - **Öffentliche URL:** `https://fotos.ls-cloud.biz`
+
+ ## Prüfung
+
+ ```bash
+ pct status 104
+ curl -I http://192.168.178.62:2283
+ curl -k -I https://fotos.ls-cloud.biz
+ ```
+
+ > [!WARNING]
+ > Frühere Probleme lagen hier nicht nur an Web-/Proxy-Ebene, sondern auch an I/O-/Storage-Themen.
/dev/null .. ct-105-downloads.md
@@ 0,0 1,33 @@
+ # CT 105 – Downloads
+
+ > [!NOTE]
+ > CT 105 bündelt Download-Dienste wie qBittorrent, SABnzbd und Prowlarr.
+
+ ## Basisdaten
+
+ - **CT-ID:** `105`
+ - **Name:** `downloads`
+ - **IP:** `192.168.178.63`
+
+ ## Öffentliche Domains
+
+ - `https://qbit.ls-cloud.biz`
+ - `https://usenet.ls-cloud.biz`
+ - `https://dl.ls-cloud.biz`
+
+ ## Relevante Ports
+
+ ```text
+ 8081 qBittorrent
+ 8082 SABnzbd
+ 9696 Prowlarr
+ ```
+
+ ## Prüfung
+
+ ```bash
+ pct status 105
+ curl -I http://192.168.178.63:8081
+ curl -I http://192.168.178.63:8082
+ curl -I http://192.168.178.63:9696
+ ```
/dev/null .. ct-108-wiki.md
@@ 0,0 1,42 @@
+ # CT 108 – Wiki
+
+ > [!NOTE]
+ > CT 108 hostet das interne Infrastruktur-Wiki auf Basis von OtterWiki.
+
+ ## Basisdaten
+
+ - **CT-ID:** `108`
+ - **Name:** `wiki`
+ - **IP:** `192.168.178.77`
+ - **Öffentliche URL:** `https://wiki.ls-cloud.biz`
+
+ ## Relevante Pfade
+
+ ```text
+ /opt/otterwiki/docker-compose.yml
+ /opt/otterwiki/plain-app-data/
+ /opt/otterwiki/plain-app-data/repository/
+ /opt/otterwiki/plain-app-data/settings.cfg
+ /opt/otterwiki/plain-app-data/db.sqlite
+ ```
+
+ ## Relevante Befehle
+
+ Status prüfen:
+
+ ```bash
+ pct status 108
+ pct exec 108 -- docker ps -a
+ ```
+
+ Backend direkt prüfen:
+
+ ```bash
+ curl -I http://192.168.178.77:8080
+ curl -k -I https://wiki.ls-cloud.biz
+ ```
+
+ ## Wichtige Betriebsregel
+
+ > [!IMPORTANT]
+ > Bei Host-seitigen Wiki-Edits immer sauber mounten/unmounten und Ownership im Repository im Blick behalten. Falsche Ownership kann den OtterWiki-Container in einen Restart-Loop schicken.
/dev/null .. ct-110-dns.md
@@ 0,0 1,23 @@
+ # CT 110 – DNS
+
+ > [!NOTE]
+ > CT 110 hostet aktuell Pi-hole und ist für den DNS-/Filterdienst im Setup relevant.
+
+ ## Basisdaten
+
+ - **CT-ID:** `110`
+ - **Name:** `dns`
+ - **IP:** `192.168.178.78`
+ - **Öffentliche URL:** `https://dns.ls-cloud.biz/admin/`
+
+ ## Einordnung
+
+ - Pi-hole läuft hier aktuell über den funktionierenden Web-/DNS-Pfad
+ - dokumentarisch ist wichtig: die reale Funktion zählt, nicht alte Installationsumwege
+
+ ## Prüfung
+
+ ```bash
+ pct status 110
+ curl -k -I https://dns.ls-cloud.biz/admin/
+ ```
/dev/null .. ct-111-webserver.md
@@ 0,0 1,25 @@
+ # CT 111 – Webserver
+
+ > [!NOTE]
+ > CT 111 ist der Webserver-/Webspace-Container hinter `web.ls-cloud.biz`.
+
+ ## Basisdaten
+
+ - **CT-ID:** `111`
+ - **Name:** `webserver`
+ - **IP:** `192.168.178.79`
+ - **Öffentliche URL:** `https://web.ls-cloud.biz`
+
+ ## Relevanter Punkt
+
+ > [!WARNING]
+ > Wenn CT 111 gestoppt ist, liefert `web.ls-cloud.biz` über Caddy typischerweise direkt `502`.
+
+ ## Prüfung
+
+ ```bash
+ pct status 111
+ pct exec 111 -- systemctl status nginx
+ curl -I http://192.168.178.79:80
+ curl -k -I https://web.ls-cloud.biz
+ ```
ct-113-cs16.md ..
@@ 1,267 1,27 @@
- # CT 113 `cs16`
+ # CT 113 – CS16
- ## Rolle
- CT 113 betreibt **Counter-Strike 1.6 im Browser** via Xash3D WebAssembly (Projekt: [modesage/cs1.6-browser](https://github.com/modesage/cs1.6-browser)).
- Der Server ist unter `https://192.168.178.83` erreichbar (selbstsigniertes Zertifikat → „Erweitert → Fortfahren").
-
- ---
+ > [!NOTE]
+ > CT 113 hostet aktuell den CS16-/Browser-Frontend-Kontext.
## Basisdaten
- | Eigenschaft | Wert |
- |-----------------|-------------------------------|
- | **CT-ID** | 113 |
- | **Hostname** | `cs16` |
- | **IP** | `192.168.178.83` |
- | **OS** | Debian 13 (trixie) |
- | **RAM** | 1 GB |
- | **Disk** | 7,8 GB (ca. 3,2 GB belegt) |
-
- ---
-
- ## Ports
- | Port | Protokoll | Dienst |
- |------------|-----------|----------------------------|
- | `443` | TCP/HTTPS | nginx → Reverse Proxy |
- | `8080` | TCP | cs16browser (node serve, intern) |
- | `8081` | TCP | WebSocket-Proxy (ws-proxy.js) |
- | `27015` | UDP | HLDS Game-Server |
-
- ---
-
- ## Dateipfade
- | Datei / Verzeichnis | Beschreibung |
- |-----------------------------------------------------------------------|-------------------------------|
- | `/opt/cs16browser/index.html` | Browser-Frontend |
- | `/opt/cs16browser/index.html.bak` | Backup des Originals |
- | `/opt/cs16browser/xash.wasm` | Xash3D Engine (gepatcht) |
- | `/opt/cs16browser/xash.wasm.bak` | Backup vor WASM-Patch |
- | `/opt/cs16browser/ws-proxy.js` | WebSocket → UDP Proxy |
- | `/opt/cs16browser/valve.zip` | CS 1.6 Spieldaten |
- | `/etc/nginx/sites-available/cs16` | nginx Konfiguration |
- | `/etc/nginx/ssl/cs16.crt` + `cs16.key` | Selbstsigniertes Zertifikat |
- | `/etc/systemd/system/hlds.service` | HLDS Systemd-Service |
- | `/opt/cs16browser/get_cs_assets/steamcmd/cs/` | HLDS Root-Verzeichnis |
- | `/opt/cs16browser/get_cs_assets/steamcmd/cs/cstrike/` | CS 1.6 Spielverzeichnis |
- | `/opt/cs16browser/get_cs_assets/steamcmd/cs/cstrike/server.cfg` | HLDS Server-Konfiguration |
- | `/opt/cs16browser/get_cs_assets/steamcmd/cs/cstrike/addons/metamod/` | Metamod-P Installation |
- | `/opt/cs16browser/get_cs_assets/steamcmd/cs/cstrike/addons/amxmodx/` | AMX Mod X Installation |
-
- ---
-
- ## Services
- ```bash
- systemctl status hlds # HLDS Game-Server
- systemctl status cs16browser # Node.js Frontend (Port 8080)
- systemctl status cs16-proxy # WebSocket-Proxy (Port 8081)
- systemctl status nginx # HTTPS Reverse Proxy
- ```
-
- Neustart:
- ```bash
- systemctl restart hlds
- systemctl restart cs16browser
- systemctl restart cs16-proxy
- systemctl restart nginx
- ```
-
- ---
-
- ## HLDS Server-Konfiguration
- Datei: `/opt/cs16browser/get_cs_assets/steamcmd/cs/cstrike/server.cfg`
-
- ```
- hostname "LS-CLOUD.biz FunServer"
- sv_lan 0 # Internet-Play erlaubt
- sv_maxspeed 320
- mp_timelimit 20
- sv_cheats 0
- ```
-
- **Für Internet-Play von außen:** Port `27015 UDP` am Router auf `192.168.178.83` weiterleiten.
-
- ---
-
- ## AMX Mod X & Plugins
-
- **Installierte Software:**
- - **Metamod-P** (in `addons/metamod/dlls/metamod.so`)
- - **AMX Mod X 1.10.0 git5474** (in `addons/amxmodx/`)
- - **GunGame 2.13c** (in `addons/amxmodx/plugins/gungame.amxx`)
-
- **liblist.gam** zeigt auf Metamod:
- ```
- gamedll_linux "addons/metamod/dlls/metamod.so"
- ```
-
- **Metamod plugins.ini** (`addons/metamod/plugins.ini`):
- ```
- linux addons/amxmodx/dlls/amxmodx_mm_i386.so
- ```
-
- **AMX Mod X plugins.ini** (`addons/amxmodx/configs/plugins.ini`):
- Hier werden alle AMXX-Plugins geladen. Aktive Plugins (Auswahl):
- ```
- admin.amxx
- ; GunGame
- gungame.amxx
- ```
-
- ---
-
- ## Admin einrichten (SteamID eintragen)
-
- Datei: `/opt/cs16browser/get_cs_assets/steamcmd/cs/cstrike/addons/amxmodx/configs/users.ini`
-
- Format:
- ```
- ; "STEAMID / Name / IP" "Passwort" "Flags" "Zugriffsrechte"
- "STEAM_0:0:XXXXXXXX" "" "abcdefghijklmnopqrstu" ""
- ```
-
- **Flags-Bedeutung (wichtigste):**
- | Flag | Bedeutung |
- |------|--------------------------|
- | `a` | Immunity |
- | `b` | Ban/Unban |
- | `c` | Kick |
- | `d` | RCON-Befehle |
- | `e` | Cheats |
- | `f` | Config-Änderungen |
- | `g` | Cvar-Änderungen |
- | `h` | Chat / Mute / Gag |
- | `i` | Teamwechsel erzwingen |
- | `j` | Spectator-Verwaltung |
- | `k` | Passwort-Schutz |
- | `l` | RCON-Zugriff |
- | `z` | Root-Zugriff (alles) |
-
- **Vollständiger Admin (Root):**
- ```
- "STEAM_0:0:XXXXXXXX" "" "z" ""
- ```
-
- **SteamID herausfinden:**
- ```
- # Im HLDS-Log erscheint beim Einloggen:
- # Player "Name" with STEAMID "STEAM_0:X:XXXXXXX" connected
- ```
- Oder über: [steamid.io](https://steamid.io) / [steamidfinder.com](https://steamidfinder.com)
-
- **Nach Änderung neu laden (kein Neustart nötig):**
- ```bash
- # Entweder HLDS neu starten:
- systemctl restart hlds
-
- # Oder im Spiel per RCON (als Admin):
- amx_reloadadmins
- ```
-
- ---
-
- ## GunGame konfigurieren
- Konfigurationsdatei: `/opt/cs16browser/get_cs_assets/steamcmd/cs/cstrike/addons/amxmodx/configs/gungame.cfg`
+ - **CT-ID:** `113`
+ - **Name:** `cs16`
+ - **IP:** `192.168.178.83`
+ - **Öffentliche URL:** `https://cs.ls-cloud.biz`
- Wichtige CVars:
- ```
- gg_multikill_override 0 # Kills pro Waffe (0 = Standard je nach Waffe)
- gg_knife_pro 1 # Knife-Kill → Gegner stuft ab
- gg_deathmatch 0 # Deathmatch-Modus (kein Team)
- gg_vote_intermission 0 # Map-Vote nach dem Spiel
- ```
-
- ---
+ ## Relevante Ports
- ## RCON (Remote Console)
-
- Im Spiel oder per Tool:
- ```
- rcon_password "PASSWORT" # Passwort setzen (in server.cfg)
- rcon status # Server-Status
- rcon amx_plugins # Geladene AMXX-Plugins anzeigen
- rcon amx_reloadadmins # Admins neu laden
- rcon changelevel de_dust2 # Map wechseln
- rcon sv_cheats 1 # Cheats aktivieren
+ ```text
+ 80 nginx
+ 443 nginx
+ 8080 Node/Webdienst
+ 8081 WebSocket-/Begleitdienst
```
- ---
-
- ## Technische Fixes & Hintergründe
-
- ### Problem: `[Xash3D]` vor dem Nicknamen
- **Ursache:** Xash3D Engine fügt automatisch `[Xash3D]` per `setinfo` vor den Spielernamen.
- **Fix:** Binary-Patch in `xash.wasm`:
- - Offset `3187865`: `[Xash3D]%s` → `%s` + Null-Bytes
- - Offset `3341750`: `[Xash3D]%s"` → Null-Bytes + `%s"`
- - Backup: `xash.wasm.bak`
-
- ### Problem: `AsciiToString is not a function`
- **Fix:** Eigene `wasmReadStr()`-Implementierung über direkten Speicherzugriff.
-
- ### Problem: `HEAPU8 undefined`
- **Ursache:** `raw.js` ist eine IIFE, `HEAPU8` ist Closure-Variable – nicht auf `Module` exponiert.
- **Fix:** `Module["instantiateWasm"]`-Hook fängt WASM-Instance ab → `_wasmMemory` + `_wasmExports.malloc` direkt verfügbar.
-
- ### Problem: `filesystem_stdio.wasm: file not found`
- **Fix:** WASM-Bytes werden in mehrere Pfade im virtuellen FS geschrieben (inkl. `/ddls/`-Quirk).
-
- ### Wichtige Erkenntnis zu `raw.js`
- - `HEAPU8`, `UTF8ToString`, `_malloc` sind **Closure-Variablen**, NICHT auf `Module`
- - **Auf Module exponiert:** `Module["ccall"]`, `Module["FS"]`, `Module["_Cmd_ExecuteString"]`
-
- ---
-
- ## Wichtige HLDS-Befehle (direkt auf dem Server)
+ ## Prüfung
```bash
- # HLDS-Log live ansehen
- journalctl -u hlds -f
-
- # Map wechseln (ohne Neustart)
- # Via RCON im Spiel: rcon changelevel de_dust2
-
- # Mapcycle bearbeiten
- nano /opt/cs16browser/get_cs_assets/steamcmd/cs/cstrike/mapcycle.txt
-
- # Verfügbare Maps anzeigen
- ls /opt/cs16browser/get_cs_assets/steamcmd/cs/cstrike/maps/*.bsp | xargs -n1 basename | sed 's/.bsp//'
- ```
-
- ---
-
- ## Bekannte Installationshinweise
-
- ### AMX Mod X neu installieren
- ```bash
- # AMX Mod X 1.10.0 Download-URL:
- # https://www.amxmodx.org/amxxdrop/1.10/amxmodx-1.10.0-git5474-base-linux.tar.gz
- # https://www.amxmodx.org/amxxdrop/1.10/amxmodx-1.10.0-git5474-cstrike-linux.tar.gz
-
- # Metamod-P:
- # https://github.com/mittorn/metamod-p/releases/download/1/metamod.so
-
- # Installiert nach:
- tar -xzf amxxdrop-base.tar.gz -C /opt/.../cstrike/
- tar -xzf amxxdrop-cstrike.tar.gz -C /opt/.../cstrike/
- mkdir -p /opt/.../cstrike/addons/metamod/dlls
- cp metamod.so /opt/.../cstrike/addons/metamod/dlls/
- ```
-
- ### AMXX-Plugin kompilieren (auf Proxmox Host)
- ```bash
- # 32-Bit-Libs installieren (einmalig):
- dpkg --add-architecture i386 && apt-get update && apt-get install -y libc6-i386
-
- # Compiler aus Container holen:
- pct pull 113 /opt/.../scripting/amxxpc /tmp/amxxpc
- pct pull 113 /opt/.../scripting/amxxpc32.so /tmp/amxxpc32.so
-
- # Include-Verzeichnis holen:
- pct exec 113 -- tar -czf /tmp/includes.tar.gz -C /opt/.../scripting include
- pct pull 113 /tmp/includes.tar.gz /tmp/
-
- # Kompilieren:
- cd /tmp && tar -xzf includes.tar.gz
- chmod +x amxxpc
- ./amxxpc mein_plugin.sma -i./include
+ pct status 113
+ curl -k -I https://cs.ls-cloud.biz
```
ct-114-games.md ..
@@ 1,49 1,33 @@
- # CT 114 `games`
+ # CT 114 – Games
- ## Rolle
- CT 114 hostet den web-basierten Emulator (EmulatorJS) für Retro-Spiele im Browser.
+ > [!NOTE]
+ > CT 114 hostet aktuell einen Games-/EmulatorJS-Webdienst.
## Basisdaten
- - **CT-ID:** 114
- - **Hostname:** `games`
+
+ - **CT-ID:** `114`
+ - **Name:** `games`
- **IP:** `192.168.178.84`
- **Öffentliche URL:** `https://games.ls-cloud.biz`
- - **Backend-Port:** `8080`
- - **RAM:** 2048 MB
- - **Onboot:** ja
-
- ## Technischer Aufbau
- - Debian-LXC
- - nginx serviert EmulatorJS (statisch, kein Docker)
- - Node.js ROM-API (`/opt/emulatorjs/api.js`, Port 3001 intern)
- - ROMs: extern auf Proxmox-Host via `lxc.mount.entry` eingebunden
-
- ## ROM-Speicherort
- - **Proxmox Host:** `/mnt/storage/fileserver/data/roms/[system]/`
- - **Im CT sichtbar als:** `/opt/emulatorjs/data/roms/[system]/`
- - **Im Fileserver (CT 103) sichtbar als:** `/srv/storage/fileserver/data/roms/[system]/`
- - Unterstützte Systeme: `nes`, `snes`, `gba`, `gbc`, `n64`, `psx`, `genesis`, `arcade`
- ## Snapshots
- Snapshots funktionieren normal – ROMs sind via `lxc.mount.entry` eingebunden (kein `mp0`), werden daher nicht mitgesichert.
+ ## Relevante Dienste
- ## Cron-Job auf dem Proxmox Host
+ ```text
+ nginx auf :8080
+ Node lokal auf 127.0.0.1:3001
+ ```
- Ein Cron-Job auf dem **Proxmox Host** (`/etc/cron.d/rom-chmod`) sorgt dafür, dass alle ROMs automatisch korrekte Leserechte (`644`) bekommen – nötig weil Samba-Uploads die Rechte auf `640` setzen.
+ ## Relevanter Mount
- ```
- */2 * * * * root find /mnt/storage/fileserver/data/roms -type f ! -perm 644 -exec chmod 644 {} \;
+ ```text
+ /mnt/storage/fileserver/data/roms
+ -> /opt/emulatorjs/data/roms
```
- Läuft alle 2 Minuten, korrigiert nur Dateien mit falschen Rechten.
+ ## Prüfung
- ### Cron entfernen
```bash
- rm /etc/cron.d/rom-chmod
+ pct status 114
+ curl -I http://192.168.178.84:8080
+ curl -k -I https://games.ls-cloud.biz
```
-
- ## Dienste
- | Dienst | Beschreibung |
- |--------|--------------|
- | `nginx` | Web-Frontend + ROM-Serving (Port 8080) |
- | `emulatorjs-api.service` | ROM-API (Port 3001 intern) |
/dev/null .. ct-121-vaultwarden.md
@@ 0,0 1,70 @@
+ # Vaultwarden Passwortmanager (CT 121)
+
+ ## Übersicht
+
+ | Parameter | Wert |
+ |-----------|------|
+ | CT-ID | 121 |
+ | Hostname | vaultwarden |
+ | IP | 192.168.178.91 |
+ | OS | Debian 12 Bookworm |
+ | CPU / RAM / Disk | 1 vCPU / 256 MB / 8 GB SSD |
+ | Software | Vaultwarden 1.35.4 (aus Source), Web Vault v2026.1.1 |
+ | Installiert | April 2026 |
+
+ ## Ports & Dienste
+
+ | Port | Dienst | Sichtbar |
+ |------|--------|----------|
+ | 8080 TCP | Vaultwarden (Rocket HTTP) | intern → Caddy |
+
+ ## Dateipfade
+
+ | Pfad | Inhalt |
+ |------|--------|
+ | `/opt/vaultwarden/vaultwarden` | Binary (selbst kompiliert) |
+ | `/opt/vaultwarden/web-vault/` | Web Vault UI |
+ | `/opt/vaultwarden/data/` | Datenbank, Keys, Attachments |
+ | `/opt/vaultwarden/.env` | Konfiguration |
+ | `/root/vaultwarden-credentials.txt` | Admin-Passwort (auf Proxmox-Host) |
+
+ ## Konfiguration (.env)
+
+ ```ini
+ DOMAIN=https://pw.ls-cloud.biz
+ ROCKET_PORT=8080
+ WEBSOCKET_ENABLED=true
+ SIGNUPS_ALLOWED=false # nach erstem Account deaktivieren
+ ADMIN_TOKEN=<argon2id-hash>
+ ```
+
+ ## Systemd Service
+
+ ```bash
+ systemctl status vaultwarden
+ systemctl restart vaultwarden
+ ```
+
+ ## Admin-Panel
+
+ - URL: `https://pw.ls-cloud.biz/admin`
+ - Passwort: → `/root/vaultwarden-credentials.txt` auf Proxmox-Host
+
+ ## Bitwarden-Client verbinden
+
+ 1. Bitwarden Browser Extension → Einstellungen → Server-URL
+ 2. Eintragen: `https://pw.ls-cloud.biz`
+ 3. Account anlegen / einloggen
+
+ ## Update-Prozedur
+
+ ```bash
+ # In CT 121 als root
+ # 1. Neues Binary kompilieren (oder Binary von inoffiziellem Spiegel)
+ # 2. Service stoppen
+ systemctl stop vaultwarden
+ # 3. Binary ersetzen
+ cp new_vaultwarden /opt/vaultwarden/vaultwarden
+ # 4. Service starten
+ systemctl start vaultwarden
+ ```
/dev/null .. infrastruktur-uebersicht.md
@@ 0,0 1,87 @@
+ # Infrastruktur-Übersicht
+
+ > [!NOTE]
+ > Diese Seite ist die schnelle Einordnung für `lscloud`: Was ist Kern, was hängt woran, und welche Systeme sind operativ wirklich wichtig?
+
+ ## Betriebsbild
+
+ | Bereich | Systeme | Bedeutung |
+ |---|---|---|
+ | Core | Host, Caddy, CT 108 `wiki`, CT 109 `claw`, CT 110 `dns` | Fundament für Zugriff, Doku und Agent-Kontext |
+ | Medien | CT 101 `jellyfin`, CT 103 `fileserver`, CT 104 `immich`, CT 105 `downloads` | Inhalte, Bibliotheken, Datenflüsse |
+ | Spezialdienste | CT 112 `claude-code`, CT 113 `cs16`, CT 114 `games` | Webterminal, CS-Frontend, Games/EmulatorJS |
+ | Nebenobjekte | CT 100 `guacamole`, CT 107 `monitoring`, VM 200 `Windows11Pro` | situativ wichtig, aber bewusst Teil des Setups |
+
+ ## Gesamtbild
+
+ ```mermaid
+ flowchart LR
+ classDef ingress fill:#0f172a,stroke:#64748b,color:#f8fafc;
+ classDef core fill:#1e293b,stroke:#94a3b8,color:#f8fafc;
+ classDef svc fill:#1f2937,stroke:#6b7280,color:#f9fafb;
+ classDef spec fill:#312e81,stroke:#818cf8,color:#eef2ff;
+ classDef aux fill:#3f3f46,stroke:#a1a1aa,color:#fafafa;
+
+ Internet[Internet / externe Clients]:::ingress --> Caddy[Caddy auf lscloud]:::ingress
+
+ subgraph Core[Core-Dienste]
+ Admin[Host Admin / Proxmox]:::core
+ Wiki[CT 108 Wiki]:::core
+ DNS[CT 110 DNS]:::core
+ Claw[CT 109 Claw]:::core
+ end
+
+ subgraph Media[Medien & Daten]
+ Files[CT 103 Fileserver]:::svc
+ Jelly[CT 101 Jellyfin]:::svc
+ Immich[CT 104 Immich]:::svc
+ Downloads[CT 105 Downloads]:::svc
+ Web[CT 111 Webserver]:::svc
+ end
+
+ subgraph Special[Spezialdienste]
+ Terminal[CT 112 Terminal]:::spec
+ CS[CT 113 CS16]:::spec
+ Games[CT 114 Games]:::spec
+ end
+
+ subgraph Other[Nebenobjekte]
+ Guac[CT 100 Guacamole]:::aux
+ Mon[CT 107 Monitoring]:::aux
+ Win[VM 200 Windows11]:::aux
+ end
+
+ Caddy --> Admin
+ Caddy --> Wiki
+ Caddy --> DNS
+ Caddy --> Files
+ Caddy --> Jelly
+ Caddy --> Immich
+ Caddy --> Downloads
+ Caddy --> Web
+ Caddy --> Terminal
+ Caddy --> CS
+ Caddy --> Games
+ Caddy --> Guac
+ Claw -. Agenten-/OpenClaw-Kontext .-> Wiki
+ Win -. Monitoring-Pfad .-> Mon
+ ```
+
+ ## Operative Lesart
+
+ > [!TIP]
+ > Wenn du öffentlich ein Problem siehst, beginne meist bei **Caddy**, dann beim **Zielsystem**, dann beim **Dienst im Zielsystem**.
+
+ > [!IMPORTANT]
+ > CT 109 ist der relevante OpenClaw-/Agent-Kontext. CT 112 ist aktuell eher Webterminal-/Claude-Code-Umfeld und nicht einfach als alte Jarvis-Phase zu lesen.
+
+ > [!WARNING]
+ > Gestoppte Systeme können in der öffentlichen Wahrnehmung trotzdem Fehler auslösen, wenn Caddy noch aktiv auf sie zeigt.
+
+ ## Weiterführende Seiten
+
+ - [[services-uebersicht]]
+ - [[netz-und-domains]]
+ - [[container-und-vms]]
+ - [[runbooks]]
+ - [[lscloud-inventur]]
/dev/null .. lscloud-inventur.md
@@ 0,0 1,31 @@
+ # lscloud Inventur
+
+ > [!NOTE]
+ > Diese Seite ist die längere Host-Inventur. Für den schnellen Alltag sind meist [[services-uebersicht]], [[container-und-vms]] und [[stoerungen-und-fehlerbilder]] praktischer.
+
+ ## Kurzfakten
+
+ | Bereich | Stand |
+ |---|---|
+ | Hostname | `lscloud` |
+ | Plattform | Proxmox-Host |
+ | LAN-IP | `192.168.178.46` |
+ | Tailnet | `100.90.138.17` |
+ | Edge-Dienst | `Caddy` |
+ | Relevanter Agent-Kontext | CT 109 `claw` |
+
+ ## Wichtige Beobachtungen
+
+ - Caddy ist der öffentliche Einstiegspunkt für nahezu alle Domains
+ - CT 108 hostet das Wiki
+ - CT 109 ist der relevante OpenClaw-/Agent-Kontext
+ - CT 112 liefert aktuell zusätzlich ein Webterminal
+ - CT 114 ist aktuell `games` und nicht mehr als früherer RetroArch-Zwischenstand zu lesen
+
+ ## Wohin bei welcher Frage?
+
+ - Domains / Backends → [[services-uebersicht]]
+ - Laufende / gestoppte Systeme → [[container-und-vms]]
+ - Netzwerk / Ziele → [[netz-und-domains]]
+ - typische Ausfälle → [[stoerungen-und-fehlerbilder]]
+ - wiederkehrende Eingriffe → [[runbooks]]
/dev/null .. medien-und-daten.md
@@ 0,0 1,20 @@
+ # Medien & Daten
+
+ > [!NOTE]
+ > Diese Seite bündelt die relevanten Medien-/Daten-Dienste des Setups.
+
+ ## Schnellzugriff
+
+ - [[ct-101-jellyfin]]
+ - [[ct-103-fileserver]]
+ - [[ct-104-immich]]
+ - [[ct-105-downloads]]
+ - [[ct-111-webserver]]
+
+ ## Seitenindex
+
+ {{PageIndex
+ |src=ct-10*
+ |toc=false
+ |toggle=false
+ }}
/dev/null .. netz-und-domains.md
@@ 0,0 1,51 @@
+ # Netz & Domains
+
+ > [!NOTE]
+ > Diese Seite beantwortet zwei praktische Fragen: Welche Adresse gehört wozu — und welche Domain zeigt am Ende wohin?
+
+ ## Kernadressen
+
+ | Zweck | Adresse | Hinweis |
+ |---|---|---|
+ | Host / Proxmox | `192.168.178.46` | physischer Proxmox-Host |
+ | Tailscale | `100.90.138.17` | Tailnet-Adresse des Hosts |
+ | Wiki | `192.168.178.77` | CT 108 |
+ | Claw / OpenClaw | `192.168.178.75` | CT 109 |
+ | Claude-Code / Terminal | `192.168.178.82` | CT 112 |
+ | CS16 | `192.168.178.83` | CT 113 |
+ | Games | `192.168.178.84` | CT 114 |
+
+ ## Domain-Matrix
+
+ | Domain | Ziel | Zweck |
+ |---|---|---|
+ | `admin.ls-cloud.biz` | Host / Proxmox | Adminoberfläche |
+ | `wiki.ls-cloud.biz` | CT 108 | Infrastruktur-Wiki |
+ | `dns.ls-cloud.biz` | CT 110 | Pi-hole |
+ | `files.ls-cloud.biz` | CT 103 | Filebrowser |
+ | `stream.ls-cloud.biz` | CT 101 | Jellyfin |
+ | `fotos.ls-cloud.biz` | CT 104 | Immich |
+ | `qbit.ls-cloud.biz` | CT 105 | qBittorrent |
+ | `usenet.ls-cloud.biz` | CT 105 | SABnzbd |
+ | `dl.ls-cloud.biz` | CT 105 | Prowlarr |
+ | `cs.ls-cloud.biz` | CT 113 | CS16 Browser-Frontend |
+ | `games.ls-cloud.biz` | CT 114 | Games / EmulatorJS |
+ | `terminal.ls-cloud.biz` | CT 112 | Webterminal |
+ | `web.ls-cloud.biz` | CT 111 | Webserver |
+ | `live.ls-cloud.biz` | CT 100 / Altpfad | Guacamole |
+
+ {{DataTable}}
+
+ ## Einordnung
+
+ > [!TIP]
+ > Für Außenwirkung ist diese Seite die schnellste Wahrheit: Domain → Ziel → Zweck.
+
+ > [!WARNING]
+ > Eine sauber konfigurierte Domain hilft dir genau gar nicht, wenn das Zielsystem gestoppt ist oder der Backend-Port nicht antwortet.
+
+ ## Merksätze
+
+ - Neue Domains immer gegen **Caddy**, **Backend-Port** und **Dienststatus** prüfen.
+ - Öffentliche Fehlerbilder sind oft schlichter, als sie aussehen: gestoppter CT, falscher Port, kaputter Backend-Dienst.
+ - `terminal.ls-cloud.biz` ist ein Webterminal, kein klassischer Webdienst.
/dev/null .. openclaw-agent-architektur.md
@@ 0,0 1,28 @@
+ # OpenClaw & Agent-Architektur
+
+ ## Zweck
+
+ Diese Seite beschreibt den relevanten Agent-/OpenClaw-Kontext auf `lscloud` in einer lesbaren Betriebsform.
+
+ ## Architektur
+
+ ```mermaid
+ flowchart LR
+ classDef edge fill:#0f172a,stroke:#475569,color:#e5e7eb;
+ classDef core fill:#1e293b,stroke:#94a3b8,color:#f8fafc;
+ classDef relay fill:#334155,stroke:#cbd5e1,color:#f8fafc;
+ classDef ui fill:#312e81,stroke:#818cf8,color:#eef2ff;
+
+ User[Nutzer / Chat / Webzugriff]:::edge --> UI[Web-/Bot-/Frontend-Schicht]:::ui
+ UI --> Relay[Host-Relay / Integrationspfad]:::relay
+ Relay --> Claw[CT 109 Claw\nOpenClaw aktiv]:::core
+ Claw --> Gateway[Gateway 127.0.0.1:18789]:::core
+ Claw -. Browser-Control .-> Browser[127.0.0.1:18791]:::core
+ ```
+
+ ## Einordnung
+
+ - **CT 109** ist der aktive relevante OpenClaw-Kontext
+ - `18789` ist der Gateway-Kontext
+ - `18791` ist **Browser-Control**, nicht die Chat-API
+ - frühere oder geänderte Frontends ändern nichts am Kern: CT 109 ist die maßgebliche Agent-Schicht
/dev/null .. operativer-einstieg.md
@@ 0,0 1,40 @@
+ # Operativer Einstieg
+
+ > [!NOTE]
+ > Diese Seite beantwortet die praktische Frage: **Womit fange ich an, wenn etwas kaputt ist oder ich etwas schnell einordnen muss?**
+
+ ## Wenn eine öffentliche Domain nicht geht
+
+ 1. [[services-uebersicht]] öffnen
+ 2. Zielsystem identifizieren
+ 3. In [[container-und-vms]] prüfen, ob der CT/ die VM läuft
+ 4. Backend-Port und Dienst prüfen
+ 5. erst danach Caddy verdächtigen
+
+ ## Wenn das Wiki selbst Probleme macht
+
+ 1. [[stoerungen-und-fehlerbilder]]
+ 2. [[ct-108-wiki]]
+ 3. [[runbooks]]
+
+ ## Wenn es um OpenClaw / Agenten geht
+
+ 1. CT 109 `claw` im Blick behalten
+ 2. `127.0.0.1:18789` = Gateway
+ 3. `127.0.0.1:18791` = Browser-Control
+ 4. [[runbooks]] und [[infrastruktur-uebersicht]] nutzen
+
+ ## Wenn du nur schnell Orientierung brauchst
+
+ - [[home]]
+ - [[services-uebersicht]]
+ - [[container-und-vms]]
+ - [[netz-und-domains]]
+
+ ## Nützliche Seiten
+
+ {{PageIndex
+ |src=*
+ |toc=false
+ |toggle=false
+ }}
/dev/null .. runbooks.md
@@ 0,0 1,97 @@
+ # Runbooks
+
+ > [!NOTE]
+ > Diese Seite bündelt wiederkehrende Eingriffe und typische Grundregeln. Kurz genug für den Alltag, präzise genug für den Betrieb.
+
+ ## Wiki direkt auf dem Host bearbeiten
+
+ ### 1. Container mounten
+
+ ```bash
+ pct mount 108
+ ```
+
+ ### 2. Im aktiven Repository arbeiten
+
+ ```bash
+ cd /var/lib/lxc/108/rootfs/opt/otterwiki/plain-app-data/repository/
+ ```
+
+ ### 3. Ownership nach Änderungen im Blick behalten
+
+ > [!IMPORTANT]
+ > CT 108 ist ein unprivilegierter LXC. Falsche Ownership im Repository kann OtterWiki in einen Restart-Loop schicken.
+
+ Prüfen:
+
+ ```bash
+ ls -l /var/lib/lxc/108/rootfs/opt/otterwiki/plain-app-data/repository/
+ ```
+
+ ### 4. Immer sauber unmounten
+
+ ```bash
+ pct unmount 108
+ pct config 108 | grep '^lock:'
+ ```
+
+ ## Wenn das Wiki plötzlich 502 liefert
+
+ Prüfen:
+
+ ```bash
+ pct status 108
+ pct exec 108 -- docker ps -a
+ pct exec 108 -- docker logs --tail 100 otterwiki_otterwiki_1
+ curl -I http://192.168.178.77:8080
+ curl -k -I https://wiki.ls-cloud.biz
+ ```
+
+ > [!TIP]
+ > Wenn Caddy 502 liefert, ist häufig nicht Caddy kaputt, sondern das Backend in CT 108.
+
+ ## OpenClaw-Kontext prüfen
+
+ Relevanter Container:
+
+ ```text
+ CT 109 `claw`
+ ```
+
+ Lokale Ports:
+
+ ```text
+ Gateway: 127.0.0.1:18789
+ Browser-Control: 127.0.0.1:18791
+ ```
+
+ > [!WARNING]
+ > `18791` ist Browser-Control und nicht einfach die Chat-API.
+
+ ## Caddy prüfen
+
+ Config-Datei:
+
+ ```bash
+ /etc/caddy/Caddyfile
+ ```
+
+ Dienststatus:
+
+ ```bash
+ systemctl status caddy
+ ```
+
+ Service-nahe Validierung:
+
+ ```bash
+ export $(systemctl show caddy -p Environment --value | xargs)
+ caddy validate --config /etc/caddy/Caddyfile
+ ```
+
+ > [!IMPORTANT]
+ > Die Validierung außerhalb des Service-Kontexts kann in diesem Setup am fehlenden Cloudflare-Token scheitern und ist dann nur begrenzt aussagekräftig.
+
+ ## tmux
+
+ - [[tmux]]
/dev/null .. services-uebersicht.md
@@ 0,0 1,38 @@
+ # Services & Domains auf `lscloud`
+
+ > [!NOTE]
+ > Diese Seite ist als operative Service-Matrix gedacht. Sortieren, suchen und querlesen soll hier schneller gehen als Rätselraten.
+
+ ## Service-Matrix
+
+ | Domain | Backend | System | Dienst | Status |
+ |---|---|---|---|---|
+ | `admin.ls-cloud.biz` | `https://localhost:8006` | Host `lscloud` | Proxmox Web UI | erreichbar |
+ | `backup.ls-cloud.biz` | `https://192.168.178.60:8007` | CT 102 `pbs` | Proxmox Backup Server | erreichbar |
+ | `files.ls-cloud.biz` | `192.168.178.61:8080` | CT 103 `fileserver` | Filebrowser | erreichbar |
+ | `stream.ls-cloud.biz` | `192.168.178.55:8096` | CT 101 `jellyfin` | Jellyfin | erreichbar |
+ | `fotos.ls-cloud.biz` | `192.168.178.62:2283` | CT 104 `immich` | Immich | erreichbar |
+ | `qbit.ls-cloud.biz` | `192.168.178.63:8081` | CT 105 `downloads` | qBittorrent | situativ |
+ | `usenet.ls-cloud.biz` | `192.168.178.63:8082` | CT 105 `downloads` | SABnzbd | situativ |
+ | `dl.ls-cloud.biz` | `192.168.178.63:9696` | CT 105 `downloads` | Prowlarr | situativ |
+ | `net.ls-cloud.biz` | `192.168.178.72:3000` | CT 107 `monitoring` | ntopng / Monitoring | situativ |
+ | `wiki.ls-cloud.biz` | `192.168.178.77:8080` | CT 108 `wiki` | OtterWiki | erreichbar |
+ | `dns.ls-cloud.biz` | `192.168.178.78:80` | CT 110 `dns` | Pi-hole | erreichbar |
+ | `web.ls-cloud.biz` | `192.168.178.79:80` | CT 111 `webserver` | Webserver / Webspace | nur wenn CT 111 läuft |
+ | `cs.ls-cloud.biz` | `192.168.178.83:8080/8081` | CT 113 `cs16` | Counter-Strike Browser-Frontend | erreichbar |
+ | `games.ls-cloud.biz` | `192.168.178.84:8080` | CT 114 `games` | Games / EmulatorJS-Webdienst | erreichbar |
+ | `terminal.ls-cloud.biz` | `192.168.178.82:7681` | CT 112 `claude-code` | Webterminal (Shell In A Box) | erreichbar |
+ | `live.ls-cloud.biz` | `192.168.178.54:8080` | CT 100 `guacamole` / Altpfad | Guacamole | problematisch, wenn CT 100 gestoppt |
+
+ | `pw.ls-cloud.biz` | `192.168.178.91:8080` | CT 121 `vaultwarden` | Vaultwarden Passwortmanager | erreichbar |
+
+ {{DataTable}}
+
+ ## Hinweise
+
+ > [!IMPORTANT]
+ > Gestoppte Container erklären oft auch öffentliche Fehlerbilder direkt. Erst Backend-Status prüfen, dann Caddy verdächtigen.
+
+ - `web.ls-cloud.biz` hängt am Zustand von **CT 111**
+ - `live.ls-cloud.biz` hängt am Zustand von **CT 100**
+ - `terminal.ls-cloud.biz` ist ein Webterminal, kein normaler Webdienst im klassischen Sinn
/dev/null .. stoerungen-und-fehlerbilder.md
@@ 0,0 1,80 @@
+ # Störungen & typische Fehlerbilder
+
+ > [!NOTE]
+ > Diese Seite ist für wiederkehrende Ausfälle und typische Ursachen gedacht — also für das, was im Betrieb wirklich nervt.
+
+ ## Wiki liefert 502
+
+ ### Typisches Bild
+
+ - `https://wiki.ls-cloud.biz` → `502`
+ - Caddy meldet `connect: connection refused`
+
+ ### Prüfen
+
+ ```bash
+ pct status 108
+ pct exec 108 -- docker ps -a
+ pct exec 108 -- docker logs --tail 100 otterwiki_otterwiki_1
+ curl -I http://192.168.178.77:8080
+ curl -k -I https://wiki.ls-cloud.biz
+ ```
+
+ ### Häufige Ursache
+
+ > [!IMPORTANT]
+ > Falsche Ownership im aktiven Wiki-Repository kann OtterWiki in einen Restart-Loop schicken.
+
+ ## Öffentliche Domain liefert 502
+
+ ### Typisches Bild
+
+ - Domain antwortet über Caddy mit `502`
+ - Backend-Dienst antwortet lokal nicht
+
+ ### Prüfen
+
+ ```bash
+ systemctl status caddy
+ curl -k -I https://DOMAIN
+ curl -I http://BACKEND_IP:PORT
+ ```
+
+ ### Häufige Ursache
+
+ - Zielcontainer gestoppt
+ - falscher Port
+ - Dienst im Zielcontainer läuft nicht
+
+ ## Caddy validiert nicht sauber
+
+ ### Typisches Bild
+
+ - `caddy validate` meckert, obwohl der Dienst eigentlich läuft
+
+ ### Prüfen
+
+ ```bash
+ systemctl show caddy -p Environment
+ export $(systemctl show caddy -p Environment --value | xargs)
+ caddy validate --config /etc/caddy/Caddyfile
+ ```
+
+ ### Hinweis
+
+ > [!TIP]
+ > In diesem Setup hängt die saubere Validierung am Service-Environment, weil dort der Cloudflare-Token gesetzt ist.
+
+ ## CT gemountet, Schloss bleibt stehen
+
+ ### Prüfen / beheben
+
+ ```bash
+ pct unmount CTID
+ pct config CTID | grep '^lock:'
+ ```
+
+ ### Hinweis
+
+ > [!WARNING]
+ > Mount-Leichen sind nicht dramatisch, aber unerquicklich. Nach Host-Edits an LXCs immer sauber aufräumen.
/dev/null .. storage-und-mounts.md
@@ 0,0 1,76 @@
+ # Storage & Mounts
+
+ > [!NOTE]
+ > Diese Seite ist die echte Storage-/Mount-Übersicht. Also: konkrete Pfade, konkrete Zuordnungen, keine dekorative Nebelgrafik.
+
+ ## Host-relevante Pfade
+
+ | Pfad auf dem Host | Zweck |
+ |---|---|
+ | `/` | Host-Rootfs / Betriebssystem |
+ | `/boot/efi` | EFI-Bootbereich |
+ | `/mnt/storage` | zentrales Storage für Daten, Medien, Webspace, Downloads |
+ | `/etc/pve` | Proxmox-Konfigurationsfilesystem |
+
+ ## Rootfs der Container
+
+ | CT | Name | Rootfs |
+ |---|---|---|
+ | 100 | guacamole | `local-lvm:vm-100-disk-0,size=8G` |
+ | 101 | jellyfin | `local-lvm:vm-101-disk-0,size=16G` |
+ | 102 | pbs | `local-lvm:vm-102-disk-0,size=50G` |
+ | 103 | fileserver | `local-lvm:vm-103-disk-0,size=8G` |
+ | 104 | immich | `local-lvm:vm-104-disk-0,size=40G` |
+ | 105 | downloads | `local-lvm:vm-105-disk-0,size=150G` |
+ | 106 | openclaw | `local-lvm:vm-106-disk-0,size=15G` |
+ | 107 | monitoring | `local-lvm:vm-107-disk-0,size=8G` |
+ | 108 | wiki | `local-lvm:vm-108-disk-0,size=8G` |
+ | 109 | claw | `local-lvm:vm-109-disk-0,size=32G` |
+ | 110 | dns | `local-lvm:vm-110-disk-0,size=8G` |
+ | 111 | webserver | `local-lvm:vm-111-disk-0,size=15G` |
+ | 112 | claude-code | `local-lvm:vm-112-disk-0,size=8G` |
+ | 113 | cs16 | `local-lvm:vm-113-disk-0,size=8G` |
+ | 114 | games | `local-lvm:vm-114-disk-0,size=20G` |
+
+ {{DataTable}}
+
+ ## Bind-Mounts / zusätzliche Mounts
+
+ | CT | Name | Host-Pfad | Ziel im CT | Art | Zweck |
+ |---|---|---|---|---|---|
+ | 100 | guacamole | `/dev/net/tun` | `dev/net/tun` | bind file | TUN-Device |
+ | 101 | jellyfin | `/mnt/storage/fileserver/media` | `srv/media` | bind dir | Medienbibliothek |
+ | 102 | pbs | `/mnt/storage/pbs-datastore` | `mnt/datastore` | bind dir | Backup-Datastore |
+ | 103 | fileserver | `/mnt/storage/fileserver` | `srv/storage` | bind dir | Dateidaten |
+ | 104 | immich | `/mnt/storage` | `mnt/storage` | bind dir | Storage-Zugriff |
+ | 105 | downloads | `/mnt/storage/fileserver/data/downloads` | `srv/storage/downloads` | bind dir | Downloads |
+ | 105 | downloads | `/mnt/storage/fileserver/media` | `srv/storage/media` | bind dir | Medienzugriff |
+ | 111 | webserver | `/mnt/storage/fileserver/webspace` | `var/www/html` | bind dir | Webspace |
+ | 114 | games | `/mnt/storage/fileserver/data/roms` | `opt/emulatorjs/data/roms` | bind dir | ROM-Daten |
+
+ {{DataTable}}
+
+ ## Einordnung
+
+ > [!IMPORTANT]
+ > Mehrere Dienste hängen direkt oder indirekt an `/mnt/storage`. Wenn dort I/O-Probleme oder Mount-Probleme auftreten, schlagen oft mehrere CTs gleichzeitig seltsam aus.
+
+ > [!TIP]
+ > Für Medien-, Download-, Webspace- und Games-Themen ist die Frage „welcher Host-Pfad hängt wo im CT?“ meist hilfreicher als jeder generische Architekturblock.
+
+ ## Diagramm als Ergänzung
+
+ ```mermaid
+ flowchart TB
+ classDef host fill:#111827,stroke:#9ca3af,color:#f9fafb;
+ classDef storage fill:#1e293b,stroke:#94a3b8,color:#f8fafc;
+ classDef ct fill:#1f2937,stroke:#6b7280,color:#f9fafb;
+
+ Host[lscloud Host]:::host --> Storage[mnt/storage]:::storage
+ Storage --> CT101[CT 101 Jellyfin]:::ct
+ Storage --> CT103[CT 103 Fileserver]:::ct
+ Storage --> CT104[CT 104 Immich]:::ct
+ Storage --> CT105[CT 105 Downloads]:::ct
+ Storage --> CT111[CT 111 Webserver]:::ct
+ Storage --> CT114[CT 114 Games]:::ct
+ ```
/dev/null .. tmux.md
@@ 0,0 1,81 @@
+ # tmux
+
+ > [!TIP]
+ > `tmux` ist nützlich, wenn Prozesse weiterlaufen sollen, obwohl du die SSH-Sitzung verlässt.
+
+ ## Neue Session erstellen
+
+ ```bash
+ tmux new -s NAME
+ ```
+
+ Beispiel:
+
+ ```bash
+ tmux new -s arbeit
+ ```
+
+ ## Sessions auflisten
+
+ ```bash
+ tmux ls
+ ```
+
+ ## Wieder mit einer Session verbinden
+
+ ```bash
+ tmux attach -t NAME
+ ```
+
+ Beispiel:
+
+ ```bash
+ tmux attach -t arbeit
+ ```
+
+ ## Von einer Session trennen, ohne sie zu beenden
+
+ ```text
+ Ctrl+b, dann d
+ ```
+
+ ## Eine Session beenden
+
+ Innerhalb der Session:
+
+ ```bash
+ exit
+ ```
+
+ Oder von außen:
+
+ ```bash
+ tmux kill-session -t NAME
+ ```
+
+ ## Alle Sessions beenden
+
+ ```bash
+ tmux kill-server
+ ```
+
+ ## Nützliche Kurzbefehle
+
+ Neues Fenster:
+
+ ```text
+ Ctrl+b, dann c
+ ```
+
+ Zwischen Fenstern wechseln:
+
+ ```text
+ Ctrl+b, dann n
+ Ctrl+b, dann p
+ ```
+
+ Fenster schließen:
+
+ ```bash
+ exit
+ ```
/dev/null .. vm-200-windows11pro.md
@@ 0,0 1,28 @@
+ # VM 200 – Windows11Pro
+
+ > [!NOTE]
+ > VM 200 ist die Windows-11-VM im `lscloud`-Setup. Sie ist kein Randobjekt, sondern ein bewusst vorhandenes Spezial-/Desktop-System.
+
+ ## Basisdaten
+
+ - **VM-ID:** `200`
+ - **Name:** `Windows11Pro`
+ - **Status:** aktuell gestoppt
+ - **OS-Typ:** `win11`
+ - **CPU:** `host`, 6 Cores
+ - **RAM:** `11400 MB`
+ - **Disk:** `85G` auf `local-lvm`
+ - **Firmware:** OVMF / TPM 2.0 aktiv
+
+ ## Einordnung
+
+ - eigenständige Windows-VM im Proxmox-Setup
+ - gehört in die operative Übersicht, auch wenn sie nicht ständig läuft
+ - kann je nach Nutzung in Monitoring-/Spezialpfade hineinspielen
+
+ ## Prüfung
+
+ ```bash
+ qm status 200
+ qm config 200
+ ```
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9