300 lines
13 KiB
Markdown
300 lines
13 KiB
Markdown
# TOOLS.md - Local Notes
|
||
|
||
Skills define _how_ tools work. This file is for _your_ specifics — the stuff that's unique to your setup.
|
||
|
||
## What Goes Here
|
||
|
||
Things like:
|
||
|
||
- Camera names and locations
|
||
- SSH hosts and aliases
|
||
- Preferred voices for TTS
|
||
- Speaker/room names
|
||
- Device nicknames
|
||
- Anything environment-specific
|
||
|
||
## Examples
|
||
|
||
```markdown
|
||
### Cameras
|
||
|
||
- living-room → Main area, 180° wide angle
|
||
- front-door → Entrance, motion-triggered
|
||
|
||
### SSH
|
||
|
||
- home-server → 192.168.1.100, user: admin
|
||
|
||
### TTS
|
||
|
||
- Preferred voice: "Nova" (warm, slightly British)
|
||
- Default speaker: Kitchen HomePod
|
||
```
|
||
|
||
## Why Separate?
|
||
|
||
Skills are shared. Your setup is yours. Keeping them apart means you can update skills without losing your notes, and share skills without leaking your infrastructure.
|
||
|
||
---
|
||
|
||
Add whatever helps you do your job. This is your cheat sheet.
|
||
|
||
### Paperless-ngx
|
||
|
||
- URL: https://docs.home.kies-media.de/
|
||
- User: greggy
|
||
- Credentials in `.bashrc`/`.profile` (`$PAPERLESS_USER`, `$PAPERLESS_PASS`)
|
||
- Dokumenttypen: Rechnungen, Versicherungspolicen, Verträge, wichtige Entscheidungen
|
||
- Workflow: Bei Email-Check relevante Dokumente automatisch archivieren
|
||
|
||
### Google Workspace (gog CLI)
|
||
|
||
- Version: v0.12.0
|
||
- Account: `mkiesewetter9@googlemail.com`
|
||
- OAuth authentifiziert für: contacts, calendar
|
||
- Keyring-Passwort: `$GOG_KEYRING_PASSWORD` in `.bashrc`/`.profile`
|
||
- Befehle:
|
||
- Contacts: `gog contacts list --max 20`
|
||
- Calendar: `gog calendar events primary --account mkiesewetter9@googlemail.com --from <iso> --to <iso>`
|
||
- Kalender-Farben: `gog calendar colors`
|
||
|
||
### Email (AgentMail)
|
||
|
||
- Inbox: `max-kies-media-ai-assistent@agentmail.to`
|
||
- Name: Max Kies-Media AI Assistent
|
||
- API Key: `$AGENTMAIL_API_KEY` in `.bashrc`
|
||
- Signatur: "Max von Kies-Media – KI-Assistent von Martin"
|
||
- Footer in jeder Email:
|
||
```
|
||
--
|
||
Martin Kiesewetter
|
||
Tel.: 0176-45853923
|
||
Email: mki@kies-media.de
|
||
```
|
||
- Reply-To: `mki@kies-media.de` verwenden wenn möglich
|
||
|
||
### Aktive OpenClaw-Modelle
|
||
- **Primary:** `z-ai/glm-5.1` (Alias: GLM-5.1)
|
||
- **Fallback:** `openrouter/google/gemma-4-31b` (Alias: Gemma-4-31B) – auch für Coding & Git
|
||
- **Free:** `z-ai/glm-4.7-flash` (GLM-4.7-flash-free), `openrouter/deepseek/deepseek-v4-flash:free` (DeepSeek-V4-Flash)
|
||
|
||
### OpenRouter
|
||
- API Key: `$OPENROUTER_API_KEY` in `.bashrc`
|
||
- URL: https://openrouter.ai/api/v1
|
||
- ⚠️ **SICHERHEITSREGEL:** Niemals API-Keys, Passwörter, Tokens oder andere geheime Informationen an kostenlose OpenRouter-Modelle (free-Tier) weiterleiten. Diese Modelle können Daten loggen oder für Training nutzen.
|
||
- Free-Modelle (z.B. `deepseek/deepseek-v4-flash:free`) nur für unkritische Anfragen nutzen
|
||
- Bei Anfragen die Credentials/Secrets enthalten → bezahltes Modell oder lokales Modell verwenden
|
||
- ⚠️ **PATCH NACH JEDEM OPENCLAW-UPDATE:** Datei `/usr/lib/node_modules/openclaw/dist/openai-transport-stream-BkI6rJ3U.js` patchen:
|
||
- Zeile mit `function flattenStringOnlyCompletionContent(content) {` suchen
|
||
- Direkt danach, vor `if (!Array.isArray(content)) return content;`, einfügen: `if (content === null || content === undefined) return "";`
|
||
- Grund: DeepSeek V4 Flash (free) akzeptiert kein `null` in message content – OpenClaw sendet das aber bei Tool-Result-Nachrichten
|
||
- Nach dem Patch: Gateway neu starten
|
||
|
||
### Git
|
||
|
||
- Remote: `https://git.home.kies-media.de/greggy/openclaw.git`
|
||
- Branch: `master`
|
||
- User: `greggy`
|
||
- Workspace Repo: `/root/.openclaw/workspace`
|
||
- Credentials in `.bashrc`/`.profile`
|
||
|
||
|
||
|
||
### TrueNAS Server (192.168.8.112)
|
||
|
||
**Hardware:**
|
||
- Mainboard: Supermicro H12SSL-i (Milan, Dual-Sockel-fähig)
|
||
- CPU: AMD EPYC 7C13 (64 Cores)
|
||
- RAM: 512 GB DDR4 2666 MHz
|
||
- GPU: NVIDIA RTX 3060 Ti Lite Hash Rate (8 GB VRAM)
|
||
- HBA: LSI SAS 9300-16i (IT Mode, 12 Gbit/s, 16 Ports, 2× SAS3008 via PLX PEX 8724 Switch)
|
||
- Netzwerk: Mellanox ConnectX-2 MNPA19-XTR (10 GbE SFP+, PCIe x8)
|
||
- Netzwerk: 2× Broadcom BCM5720 Gigabit Ethernet (onboard)
|
||
- IPMI/BMC: ASPEED Graphics (Remote Management)
|
||
- NVMe: WD Black SN850X 1TB (boot-pool)
|
||
|
||
**Storage (Pool: Main):**
|
||
- 1× WD Black SN850X 1TB NVMe (boot-pool)
|
||
- 2× TeamGroup T253 512GB SSD (sdd, sdf)
|
||
- 2× Seagate Exos X18 16TB HDD 7200rpm (sdg, sdh) – ST16000NM000J
|
||
- 2× Toshiba MG08 16TB HDD 7200rpm (sdi, sdj) – MG08ACA16TE
|
||
- 2× HGST Ultrastar 8TB HDD 7200rpm (sdk, sdc) – HUH721008ALE600
|
||
- 2× Toshiba 8TB HDD 7200rpm (sdb, sde) – HDWG480
|
||
- 1× Seagate Exos X18 18TB HDD 7200rpm (sda, unassigned) – ST18000NM000J
|
||
|
||
**ZFS-Layout (Main-Pool):**
|
||
- 2× RAIDZ1 VDEVs (je 5 HDDs, 1 Parität pro VDEV)
|
||
- 1× Mirror SLOG (2× 512GB SSD als ZIL)
|
||
- Effektiv: ~102 TB nutzbar von ~128 TB roh
|
||
- Belegt: 65.3 TB (64%), Frei: 36.6 TB (Stand: Mai 2026)
|
||
- **Zusätzlich:** 18TB Seagate Exos X18 (sda) nicht zugewiesen, S.M.A.R.T. ✅ gesund
|
||
- ⚠️ RAIDZ1 bei 16TB-Platten: nur single parity
|
||
|
||
### TrueNAS SMB (192.168.8.112)
|
||
- Über WireGuard erreichbar: `192.168.8.112`
|
||
- User: `openclaw` (eingeschränkter User, nicht admin)
|
||
- Credentials in `.bashrc`: `$TRUENAS_SMB_USER`, `$TRUENAS_SMB_PASS`, `$TRUENAS_SMB_HOST`
|
||
- SMB-Credentials-Datei: `/root/.smb-credentials` (für fstab)
|
||
- SMB-Befehl: `smbclient //$TRUENAS_SMB_HOST/<share> -U $TRUENAS_SMB_USER%$TRUENAS_SMB_PASS`
|
||
- Shares auflisten: `smbclient -L $TRUENAS_SMB_HOST -U $TRUENAS_SMB_USER%$TRUENAS_SMB_PASS`
|
||
|
||
#### Verfügbare Shares & Berechtigungen (Stand 05/2026)
|
||
|
||
**SMB-Share-Level ACLs (alle aktiv außer ix-applications):**
|
||
|
||
| Share | Pfad | openclaw Zugriff | greggy Zugriff | Bemerkung |
|
||
|---|---|---|---|---|
|
||
| openclaw | /mnt/Main/openclaw | ✅ FULL | ✅ (via admin) | Workspace-Backup, gemounted `/mnt/openclaw-smb` |
|
||
| Austausch | /mnt/Main/Austausch | ✅ FULL (everyone@) | ✅ FULL (everyone@) | Allgemeiner Austausch-Ordner |
|
||
| martin | /mnt/Main/martin | 🔍 READ | ✅ FULL | greggy = Owner |
|
||
| Filme | /mnt/Main/Filme | ❌ | ✅ (via admin) | homelab-family: READ, rene: READ |
|
||
| isos | /mnt/Main/isos | ❌ | ✅ FULL | Nur greggy |
|
||
| Spiele | /mnt/Main/Spiele | ❌ | ✅ (via admin) | homelab-family: READ, rene: READ |
|
||
| Programme | /mnt/Main/Programme | ✅ FULL (everyone@) | ✅ FULL (everyone@) | Alle haben Vollzugriff |
|
||
| Audiobooks | /mnt/Main/Musik/Audiobooks | ❌ | ✅ (via homelab-family) | Unterverzeichnis von Musik |
|
||
| Google | /mnt/Main/Google | ❌ | ✅ (via admin) | Nur truenas_admin |
|
||
| Musik | /mnt/Main/Musik | 🔍 READ (everyone@) | ✅ FULL | Alle lesen, greggy schreibt |
|
||
| Familiensachen | /mnt/Main/Familiensachen | ❌ | ✅ (via admin) | admin + homelab-family: READ |
|
||
| Lara | /mnt/Main/Lara | ❌ | ✅ FULL | lara + greggy |
|
||
| Luisa | /mnt/Main/Luisa | ❌ | ✅ FULL | luisa + greggy |
|
||
| ix-applications | /mnt/Main/ix-applications | ❌ | ❌ | Deaktiviert |
|
||
|
||
**Wichtige Users:**
|
||
- `greggy` (uid 3000) – Gruppen: nogroup, truenas_admin, homelab-family
|
||
- `openclaw` (uid 3004) – Gruppe: AI-Martin
|
||
- `lara` (uid 3001), `luisa` (uid 3002), `rene` (uid 3003)
|
||
|
||
**⚠️ Bekanntes Problem (05/2026):** Einige Ordner hatten verwaiste Gruppe 3000 (gelöscht) – Docker-Homelab wurde auf `homelab-family` korrigiert. Bei weiteren Zugriffsproblemen Gruppenzugehörigkeit prüfen.
|
||
|
||
### OpenClaw Arbeitsbereich (TrueNAS)
|
||
- SMB-Share: `//192.168.8.112/openclaw` → gemountet auf `/mnt/openclaw-smb`
|
||
- Workspace-Spiegel: `/mnt/openclaw-smb/workspace/`
|
||
- Auto-Mount via `/etc/fstab` (credentials: `/root/.smb-credentials`)
|
||
- Sync-Scripts:
|
||
- `scripts/sync-to-truenas.sh` – synct Workspace zum TrueNAS
|
||
- `scripts/commit-and-sync.sh` – git commit + push + sync zu TrueNAS
|
||
- Workflow: Nach Datei-Änderungen → `bash scripts/commit-and-sync.sh`
|
||
|
||
### Schach-App (lara-schach-live) Testumgebung
|
||
- **Repo:** `greggy/lara-schach-live`
|
||
- **Deploy-Pfad:** `/var/www/test/html/`
|
||
- **Frontend:** Statische Dateien via Apache (Port 80/6427)
|
||
- **Backend:** `python3 server.py` (Port 8111, Stockfish-Analyse)
|
||
- **Stockfish:** `/usr/games/stockfish`
|
||
- **Log:** `/tmp/lara-schach-server.log`
|
||
- **Deploy-Workflow:**
|
||
1. `cd /tmp && rm -rf lara-schach-live && git clone https://git.home.kies-media.de/greggy/lara-schach-live.git`
|
||
2. `rsync -av --delete --exclude='.git' /tmp/lara-schach-live/ /var/www/test/html/`
|
||
3. Backend neustarten: `kill $(pgrep -f 'python3 server.py'); sleep 1; cd /var/www/test/html && STOCKFISH_PATH=/usr/games/stockfish nohup python3 server.py >> /tmp/lara-schach-server.log 2>&1 &`
|
||
4. URL posten: http://178.104.150.0:6427/
|
||
|
||
### Landingpage Testumgebung
|
||
- **Server:** Apache auf dem OpenClaw-Server (lokal)
|
||
- **DocumentRoot:** `/var/www/test/html`
|
||
- **URL (localhost):** `http://localhost:6427/`
|
||
- **URL (extern):** `http://178.104.150.0:6427/`
|
||
- **Port:** 80 + 6427
|
||
- **Deploy:** Branch klonen → rsync nach `/var/www/test/html/`
|
||
- **Repo:** `greggy/landingpage-haus-schleusingen`
|
||
- ⚠️ **Nach jedem Deploy:** URL als klickbarer Link im Chat posten: http://178.104.150.0:6427/
|
||
- **⚠️ Wichtig:** Feature-Branches werden VOR dem Merge auf die Testumgebung deployed. Nach PR-Merge ist kein erneuter Deploy nötig – main ist dann automatisch auf dem gleichen Stand.
|
||
|
||
### CloudPanel / Hetzner Server (188.245.242.194)
|
||
|
||
- **SSH:** `ssh -i /root/.ssh/hetzner-cp-kies-media root@188.245.242.194`
|
||
- **CloudPanel URL:** https://cp.kies-media.de/ (Port 8443)
|
||
- **CloudPanel CLI:** `clpctl` (v6.0.8)
|
||
- **Hetzner API Key:** `$HETZNER_API_KEY` in `.bashrc`
|
||
- **Hetzner Server-ID:** 62963324 (cpx21, 3 Cores, 4GB RAM, 80GB Disk)
|
||
- **SSH Key:** `/root/.ssh/hetzner-cp-kies-media` (ed25519)
|
||
- **Provider:** Hetzner Cloud
|
||
- **Hostname:** Cloudpanel
|
||
- **OS:** Ubuntu, Kernel 6.8.0-57-generic (x86_64)
|
||
- **Disk:** 38 GB (61% belegt)
|
||
- **RAM:** 4 GB
|
||
|
||
#### SSH Hardening (25.05.2026)
|
||
- **Config:** `/etc/ssh/sshd_config.d/99-hardening.conf`
|
||
- PasswordAuthentication: no
|
||
- PubkeyAuthentication: yes
|
||
- PermitRootLogin: prohibit-password
|
||
- MaxAuthTries: 10
|
||
- MaxSessions: 10
|
||
- X11Forwarding: no
|
||
- AllowTcpForwarding: no
|
||
- AllowAgentForwarding: no
|
||
|
||
#### UFW Firewall
|
||
- SSH (22): Nur 91.137.60.185 (Martin), 178.104.150.0, 2a01:4f8:c2c:ece1::1 (OpenClaw)
|
||
- HTTP (80): Anywhere
|
||
- HTTPS (443/tcp + udp): Anywhere
|
||
- CloudPanel (8443): Anywhere
|
||
- MySQL (3306): 172.68.159.220
|
||
|
||
#### Fail2Ban
|
||
- Aktiv, Jail: sshd
|
||
- 3 Fehlversuche → 1h Ban (bantime=3600)
|
||
- Ban via UFW
|
||
|
||
#### Hetzner Cloud API
|
||
- SSH-Key OpenClaw: ID 112794687
|
||
- SSH-Key Docker-SSH: ID 28435737
|
||
- Firewall "Firewall für Cloudpanel": ID 2055950
|
||
- ⚠️ NICHT rescue-mode aktivieren ohne Reboot-Plan (Deaktivierung allein reicht nicht, Server bootet sonst ins Rescue)
|
||
|
||
### Jellyfin / Filme & Serien
|
||
- **Episoden-/Filmtitel immer bei TMDB (themoviedb.org) nachschlagen** – nicht Wikipedia, nicht Perplexity
|
||
- Grund: Jellyfin nutzt TMDB als primäre Metadatenquelle → TMDB-Titel = das was Jellyfin anzeigt
|
||
- URL: https://www.themoviedb.org/tv/655-star-trek-the-next-generation
|
||
|
||
### TrueNAS Filme-Suche
|
||
- **Immer via SSH** auf TrueNAS suchen: `ssh root@192.168.8.112 "ls /mnt/Main/Filme/..."`
|
||
- SMB-Zugriff mit openclaw-User funktioniert nicht für alle Shares
|
||
- Filme liegen in: `/mnt/Main/Filme/` (Kategorie-Unterordner)
|
||
- Serien in Season-Unterordnern, Episoden als .mkv/.mp4/.m4v
|
||
|
||
### Download-Quellen (Warez)
|
||
|
||
**Filme / Serien:**
|
||
- https://nima4k.org/
|
||
- https://serienfans.org/
|
||
- https://serienjunkies.org/
|
||
- https://nox.to/
|
||
- https://warez.cx/
|
||
|
||
**PC-Spiele:**
|
||
- https://warez.cx/
|
||
|
||
**Hörbücher:**
|
||
- https://www.rssing.com/
|
||
|
||
### OpenBookshelf (Audiobooks)
|
||
- **URL:** https://audiobooks.home.kies-media.de/
|
||
- **API-Key:** `$OPENBOOKSHELF_API_KEY` in `.bashrc`
|
||
- API-Key in `.bashrc` speichern und über Umgebungsvariable nutzen
|
||
|
||
### TrueNAS GPU-Regeln
|
||
- **NIEMALS** den `xe`-Treiber manuell per `echo ... > /sys/bus/pci/drivers/xe/bind` oder `drivers_probe` an eine Intel Arc GPU binden – **das crasht den TrueNAS-Server (Kernel Panic/Reset)!** Schon mehrfach passiert.
|
||
- Stattdessen: vfio-pci Bindung entfernen + Server normal rebooten, damit der Treiber beim Boot sauber lädt.
|
||
- Oder TrueNAS-eigene GPU-Zuweisung (WebUI) nutzen.
|
||
- Die Intel Arc B70 Pro hat PCI-ID `8086:e223` auf Bus `0000:83:00.0`.
|
||
|
||
### Ahrefs (SEO-Datenquelle)
|
||
- **URL:** https://app.ahrefs.com
|
||
- **Login:** mkiesewetter9@googlemail.com (Passwort = Email)
|
||
- **Plan:** Ahrefs Free (Basic)
|
||
- **Project-ID:** 2032747
|
||
- **Target:** manonamission.de
|
||
- **Zugriff:** Playwright + playwright-stealth (Details: `memory/ahrefs-access.md`)
|
||
- **State-File:** `/tmp/ahrefs-state.json` (überlebt keine Reboots)
|
||
- **Gespeicherte Daten:** `memory/ahrefs-data.md` (manuell aktualisierbar)
|
||
- **Verfügbare Reports:** Dashboard, Organic Keywords, Top Pages, Backlinks, Organic Competitors, Content Gap, Opportunities, Site Audit
|
||
- **Primärer Zweck:** SEO-Analyse für manonamission.de, Blogpost-Ideen, Konkurrenz-Analyse, Linkbuilding
|
||
- ⚠️ Cloudflare Turnstile blockiert `agent-browser` CLI und `web_fetch` → immer Playwright+Stealth nutzen
|
||
|
||
### Exec-Timeouts (Konventionen)
|
||
|
||
- Kurze CLI-Abfragen: **150 Sekunden**
|
||
- Python-Skripte: **300 Sekunden**
|
||
- Browser-Vorgänge: **300 Sekunden**
|