Files
obsidian-vault/300 areas/360 Dev-Ops Network Computers/FAMILY CONSOLE.md

52 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
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.
---
created: 2026-08-26
modified: 2026-08-26
type: note
tags:
- family
- home-lab
- console
- portal
- maintenance
aliases:
- Family Console
- Home Lab Console
---
# FAMILY CONSOLE
Single reference for the self-hosted **Family Home Lab** console. Consolidates the four daily FAMILY notes (Build Status, Enterprise Architecture, S3/Garage, dsh Harness). Authoritative code/plan: `/home/sam/home_network/custom_tools/family_home_lab/` (repo on `.27` desktop; pushed to Gitea `sam/family_home_lab`).
## What it is
A private web **dashboard + tool launcher + chat tieren** for the family. Log in at `https://console.lab.audasmedia.com.au` and reach every self-hosted service in the home lab (media, docs, storage, AI, notes, portfolio), one per-user account.
## Where it runs / how traffic flows
- **Portal + core stack** run on the **`.13` server** (`/home/sam/Docker/Containers/family-home-lab/`): FastAPI + Jinja2 + HTMX portal on port `8500`, with Postgres (users/prefs), Redis, RabbitMQ, Celery, Garage S3.
- **Reverse proxy / DNS**: existing **Caddy on `.35`**; public zone `*.lab.audasmedia.com.au` → `.35` → `.13`. `*.home.lab` are LAN-only.
- **Data** under `/mnt/data/family-home-lab/` (garage, shared-media, dsh, pi-dashboard) — covered by Borg backup on `.13`.
## How it works (key pieces)
- **Accounts:** four users `sam` / `jo` / `harry` / `finn`. Login = bcrypt password in Postgres (changeable via the portal **Password** page). No SSO — every app keeps its own login.
- **Home dash:** a categorized catalogue with a search box listing all services. Cards open tools; badges mark LAN-only / has-own-login / admin.
- **Files:** upload from your browser → files appear in the webtop tools (e.g. GIMP) under `/media/<user>/`, with thumbnail + view + download (console → email etc.).
- **Transcriber:** audio → MIDI (Basic Pitch) and sheet music (MuScriptor).
- **Admin** (sam only): add/rename users, change passwords, **Pi Dashboard** (live pi agent sessions synced from the pi host), manage the tool catalogue.
## Chat bot (dsh)
A per-user DeepSeek chat harness (`dsh-sam·jo·harry·finn.lab`), **custom FastAPI + SSE**, one container each on `.13` (ports 3081–3084). Includes:
- **Model picker** — chat (opencode-go flash) · reasoning (deepseek flash) · coding (deepseek pro) · **multimodal (GLM-5v)**. Default is opencode-go flash.
- **Memory** — conversations saved with a sidebar (list/new/delete).
- **Web & doc summarise**, **image ingest**, **image generate**, **video/screen-recording analyze** (ffmpeg → GLM).
- **Hardened** — no shell/system calls: `cap_drop ALL`, read-only rootfs, non-root; read /workspace per user (on `/mnt/data/.../dsh/<user>/`).
- Vision/media go through **OpenRouter**; text chat through **OmniRoute** on `.13:20129`.
## Insights for future LLMs / maintenance (how to fix, edit, add)
- **Edit → deploy flow:** change code in the repo (`.27`), commit + push to Gitea, then `scp`/rsync the changed folders to the matching `.13` dir and `docker compose up -d --build <service>`. Caddy edits happen on **`.35`** (back up `Caddyfile` first; reload with `caddy reload`).
- **Auth gotcha:** Caddy basic-auth was **removed from the browser media/chat tools** earlier because it broke their asset loading (401s) — those have no login now. Apps with their own login kept it. Keep this in mind when adding a web tool.
- **OmniRoute:** the built-in `auto/best-*` pools are flaky (stream empty). **Don't add combos via its API** (creates empty combos). dsh pins **deterministic** provider/model strings instead. OmniRoute is now behind Caddy basic-auth + a strong password (was being brute-forced).
- **Secrets hygiene:** never put `.env`, API keys, or passwords in the repo. `.gitignore` covers `.env`/`.pi/`. OmniRoute/OpenRouter tokens are held by Sam (keep out of memory/notes).
- **Kids:** jo/harry/finn get a reduced view (no AI/chat, no admin-only tools) and no shell in dsh.
- **Storage:** Garage S3 buckets `sam, jo-media, harry, finn, shared-media` (S3 needs ≥3-char names). Per-user files land in `shared-media/<user>/`.
## Related
- Repo: `/home/sam/home_network/custom_tools/family_home_lab/` (`README.md`, `docs/websites.md`, `plan.md`)
- [[Websites on Nixos-Dekstop 13]] · [[Home Network Map Overview]] · [[Docker Containers]]