--- created: 2026-08-24 modified: 2026-08-24 type: note tags: - family - home-lab - portal - build aliases: - Home Lab Console Build --- # Home Lab Console — Build Status Status of the [[FAMILY Enterprise Homelab AI Multimedia Suite. Systems Architecture & Blueprint|Home Lab]] console portal build. Authoritative plan: `/home/sam/home_network/custom_tools/family_home_lab/plan.md` (FINAL v3, approved). Design: `DESIGN.md` (Notion language — canvas `#f6f5f4`, primary `#0075de`, indigo login `#213183`). ## Where it runs - **Host:** `.13` (192.168.20.13, nixos-desktop, Docker host) - **Compose:** `/home/sam/Docker/Containers/family-home-lab/` (ported from repo) - **Proxy/DNS:** existing Caddy on `.35`; public zone `*.lab.audasmedia.com.au` → router → `.35` → `.13` - **Portal:** FastAPI + Jinja2 + HTMX, port `8500`, `console.lab.audasmedia.com.au` ## Repo-local code (written 2026-08-24, not yet deployed) > **Update 2026-08-24 (deploy):** core stack **deployed and live** at https://console.lab.audasmedia.com.au (login → dashboard verified over public HTTPS). Garage up with buckets `sam, jo-media, harry, finn, shared-media`; portal key RW on all. Borg backup edit to `backup.nix` pending (needs sudo). > > (Original, below, now historical.) - `portal/` — `main.py` (routes, first-run admin seed), `auth.py` (bcrypt + signed HTTP-only session cookies), `database.py` (SQLAlchemy async + pgvector/pg16), `tasks.py` (Celery + RabbitMQ), `tools.py` (per-user dsh URL), `config.py`, `Dockerfile`, `requirements.txt` - `portal/templates/` (9 pages) + `portal/static/tokens.css` + `app.css` - `docker-compose.yml` (postgres / redis / rabbitmq / garage / portal / worker; tool containers behind `profile: tools`), `garage/garage.toml`, `.env.example`, per-tool `README`s (image/video/audio/ai/docs/chat) ## Verified - All modules compile; all 9 templates render; per-user sections + dsh link resolve; `docker compose config -q` valid. ## Deployment checklist (pending) 1. Local smoke test of login → dashboard flow. 2. Sync repo → `.13` at `/home/sam/Docker/Containers/family-home-lab/`; `docker compose up -d`. 3. Generate Garage tokens + create buckets `sam jo harry finn shared-media` + access keys (runbook in `deploy/DEPLOYMENT.md`). 4. Apply `deploy/caddy/Caddyfile.snippet` on `.35` and reload. 5. Add `/mnt/data/family-home-lab/` to `.13` Borg backup sources. 6. Enable tool containers (`--profile tools`) once images verified (plan §4). ## Deployment checklist (further) 1. ✅ Core stack up on `.13`; console URL live. 2. ✅ Garage buckets + portal access key provisioned (`jo` → `jo-media` per S3 name rules). 3. ✅ Caddy `console` + `photo`/`video`/`audio` rules applied & reloaded on `.35`; certs obtained. 4. ✅ **Media tools live**: Photopea (photo), KdenLive (video), Audacity (audio) — public URLs verified. Images: shtse8/photopea:1.0, lscr.io/linuxserver/kdenlive, lscr.io/linuxserver/audacity. Host ports video **8083** / audio **8084** (moved off airflow-8081 & NixOS-3000). 5. ⏳ Add `/mnt/data/family-home-lab/` to `.13` `backup.nix` (`services.borgbackup.jobs."local-to-storage".paths`) — needs sudo. 6. ⏳ DeepSeek Harness instances (dsh agent) — console already routes `dsh-{user}.lab.audasmedia.com.au`. ## Related - [[FAMILY Enterprise Homelab AI Multimedia Suite. Systems Architecture & Blueprint]] - [[FAMILY S3 Storage Integration & Blueprint]] - [[FAMILY DeepSeek Harness (dsh) Home Lab Setup]]