From 72d8e3e1d7d4d4de4f1757a7cb1cfcd8fac4ee3a Mon Sep 17 00:00:00 2001 From: Sam Rolfe Date: Fri, 21 Aug 2026 21:39:08 +1000 Subject: [PATCH] sam-4screen-desktop 2026-8-21:21:39:8 --- .obsidian/workspace.json | 10 +- ... DeepSeek Harness (dsh) Home Lab Setup.md} | 5 +- ...Suite. Systems Architecture & Blueprint.md | 262 ++++++++++++++++++ 3 files changed, 271 insertions(+), 6 deletions(-) rename 000 daily/{DeepSeek Harness (dsh) Home Lab Setup.md => FAMILY DeepSeek Harness (dsh) Home Lab Setup.md} (98%) create mode 100644 000 daily/FAMILY Enterprise Homelab AI Multimedia Suite. Systems Architecture & Blueprint.md diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 69ed625..5f36f22 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,12 +13,12 @@ "state": { "type": "markdown", "state": { - "file": "000 daily/DeepSeek Harness (dsh) Home Lab Setup.md", + "file": "000 daily/FAMILY DeepSeek Harness (dsh) Home Lab Setup.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "DeepSeek Harness (dsh) Home Lab Setup" + "title": "FAMILY DeepSeek Harness (dsh) Home Lab Setup" } } ] @@ -183,7 +183,7 @@ "state": { "type": "file-properties", "state": { - "file": "000 daily/DeepSeek Harness (dsh) Home Lab Setup.md" + "file": "000 daily/FAMILY DeepSeek Harness (dsh) Home Lab Setup.md" }, "icon": "lucide-info", "title": "File properties" @@ -211,8 +211,9 @@ }, "active": "a9e576f63f63e5e0", "lastOpenFiles": [ + "000 daily/FAMILY Enterprise Homelab AI Multimedia Suite. Systems Architecture & Blueprint.md", + "000 daily/FAMILY DeepSeek Harness (dsh) Home Lab Setup.md", "000 daily/basketball training.md", - "000 daily/DeepSeek Harness (dsh) Home Lab Setup.md", "000 daily/Daily Notes and To Do.md", "200 projects/210 AI Resume/AI Resume - Content Organization Plan.md", "200 projects/210 AI Resume/Trigger.Dev.md", @@ -236,7 +237,6 @@ "300 areas/360 Dev-Ops Network Computers/Home Network Map Overview.md", "300 areas/360 Dev-Ops Network Computers/Websites on Nixos-Dekstop 13.md", "300 areas/350 AI/Pi Subagent.md", - "300 areas/350 AI/Pi Agent Extensions & Skills.md", "000 daily/ThinkPad Recommendations", "500 archive/510 Daily", "300 areas/305 Ideas Businesses", diff --git a/000 daily/DeepSeek Harness (dsh) Home Lab Setup.md b/000 daily/FAMILY DeepSeek Harness (dsh) Home Lab Setup.md similarity index 98% rename from 000 daily/DeepSeek Harness (dsh) Home Lab Setup.md rename to 000 daily/FAMILY DeepSeek Harness (dsh) Home Lab Setup.md index 8884ae2..0d5a633 100644 --- a/000 daily/DeepSeek Harness (dsh) Home Lab Setup.md +++ b/000 daily/FAMILY DeepSeek Harness (dsh) Home Lab Setup.md @@ -2,7 +2,10 @@ created: 2026-08-21 20:08 modified: 2026-08-21 20:08 type: note -tags: [] +tags: + - ai + - family + - tools aliases: [] --- # [[# DeepSeek Harness (dsh) Home Lab Setup]] diff --git a/000 daily/FAMILY Enterprise Homelab AI Multimedia Suite. Systems Architecture & Blueprint.md b/000 daily/FAMILY Enterprise Homelab AI Multimedia Suite. Systems Architecture & Blueprint.md new file mode 100644 index 0000000..beea355 --- /dev/null +++ b/000 daily/FAMILY Enterprise Homelab AI Multimedia Suite. Systems Architecture & Blueprint.md @@ -0,0 +1,262 @@ +--- +created: 2026-08-21 21:37 +modified: 2026-08-21 21:37 +type: note +tags: + - ai + - family + - tools +aliases: [] +--- +# [[FAMILY Enterprise Homelab AI Multimedia Suite. Systems Architecture & Blueprint]] + +# Enterprise Homelab AI Multimedia Suite: Systems Architecture & Blueprint + +This document outlines the deployment strategy for a self-hosted, custom-built multimedia and AI workspace. It features individual family login profiles, an asynchronous RabbitMQ queue, and persistent user understanding via PostgreSQL with pgvector. + +## 1. Directory Structure (Managed via Pi) + +```text +/home/user/ai-studio/ +├── docker-compose.yml +├── caddy/ +│ └── Caddyfile +├── gateway-app/ # Custom FastAPI Web Application +│ ├── main.py # Async Web Controller +│ ├── database.py # PostgreSQL Connection Layer +│ ├── tasks.py # Background Worker Tasks (Celery) +│ ├── templates/ # HTMX / Frontend Layouts +│ └── static/ +└── storage/ + ├── shared_media/ # Central Media Asset Pool + ├── mum_workspace/ + └── son_workspace/ +``` + +## 2. Core Production Infrastructure Stack (`docker-compose.yml`) + +```yaml +version: '3.8' + +services: + # 1. NETWORK PROXY + caddy: + image: caddy:2-alpine + container_name: network_proxy + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - ./caddy/Caddyfile:/etc/caddy/Caddyfile + - caddy_data:/data + - caddy_config:/config + network_mode: host + + # 2. THE MASTER ENTRY PORTAL (Custom Gateway UI) + studio-portal: + image: python:3.11-slim + container_name: studio_portal_app + restart: unless-stopped + working_dir: /app + command: > + sh -c "pip install fastapi uvicorn psycopg2-binary celery jinja2 python-multipart && + uvicorn main:app --host 0.0.0.0 --port 8000" + ports: + - "8000:8000" + volumes: + - ./gateway-app:/app + - ./storage:/app/storage + depends_on: + - studio-db + - studio-rabbitmq + + # 3. ASYNCHRONOUS MEDIA WORKER (Fueled by RabbitMQ) + media-worker: + image: python:3.11-slim + container_name: async_media_worker + restart: unless-stopped + working_dir: /app + command: celery -A tasks worker --loglevel=info + volumes: + - ./gateway-app:/app + - ./storage:/app/storage + - /var/run/docker.sock:/var/run/docker.sock # Safe container orchestration loop + depends_on: + - studio-rabbitmq + + # 4. INDUSTRIAL MESSAGE BROKER (RabbitMQ) + studio-rabbitmq: + image: rabbitmq:3-management-alpine + container_name: studio_message_broker + restart: unless-stopped + ports: + - "5672:5672" # RabbitMQ message port + - "15672:15672" # Management Web UI dashboard + environment: + - RABBITMQ_DEFAULT_USER=studio_broker + - RABBITMQ_DEFAULT_PASS=broker_secure_pass + + # 5. ENTERPRISE COGNITIVE DATABASE + studio-db: + image: pgvector/pgvector:pg16 # PostgreSQL natively equipped with AI Vector support + container_name: studio_cognitive_db + restart: unless-stopped + environment: + - POSTGRES_USER=studio_admin + - POSTGRES_PASSWORD=studio_secure_pass + - POSTGRES_DB=studio_memory_matrix + volumes: + - postgres_data:/var/lib/postgresql/data + + # 6. OMNIROUTE GATEWAY + omniroute: + image: omniroute/gateway:latest + container_name: omniroute_gateway + restart: unless-stopped + ports: + - "20128:20128" + environment: + - OPENAI_API_KEY=your_secure_cloud_key + - GEMINI_API_KEY=your_secure_cloud_key + volumes: + - ./omniroute/config:/app/config + + # 7. MULTIMEDIA STUDIO CONTAINERS + photopea: + image: shtse8/photopea:1.0 + container_name: photopea_studio + ports: + - "8487:8887" + + kdenlive-studio: + image: lscr.io/linuxserver/kdenlive:latest # HTML5 Streamed Pro Video Studio + container_name: pro_video_studio + ports: + - "8081:3000" + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ./storage/shared_media:/config + + # AUDIO STUDIO A: Browser-Streamed Audacity + audacity-studio: + image: lscr.io/linuxserver/audacity:latest + container_name: pro_audio_audacity + ports: + - "3000:3000" + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ./storage/shared_media:/config + + # AUDIO STUDIO B: Browser-Streamed Pro DAW (Zrythm) + zrythm-studio: + image: lscr.io/linuxserver/zrythm:latest # Full multi-track timeline automation DAW + container_name: pro_audio_zrythm + ports: + - "3001:3000" + environment: + - PUID=1000 + - PGID=1000 + volumes: + - ./storage/shared_media:/config + +volumes: + postgres_data: + caddy_data: + caddy_config: +``` + +## 3. Cognitive Engine: Relational Vector Schema (`database.py`) + +```python +import psycopg2 + +def init_db(): + conn = psycopg2.connect("host=studio-db dbname=studio_memory_matrix user=studio_admin password=studio_secure_pass") + cur = conn.cursor() + + # Enable the Vector extension explicitly + cur.execute("CREATE EXTENSION IF NOT EXISTS vector;") + + # User Profile table + cur.execute(""" + CREATE TABLE IF NOT EXISTS user_profiles ( + user_id VARCHAR PRIMARY KEY, + preference_matrix JSONB, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ); + """) + + # Semantic Memory Table with Vector Embeddings + cur.execute(""" + CREATE TABLE IF NOT EXISTS user_memories ( + memory_id SERIAL PRIMARY KEY, + user_id VARCHAR, + summary TEXT, + embedding vector(1536), -- Standard cloud embedding dimensions + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ); + """) + conn.commit() + cur.close() + conn.close() +``` + +## 4. Asynchronous Task Routing Backend (`tasks.py`) + +```python +from celery import Celery +import subprocess + +# Configured to use RabbitMQ as the robust message broker +celery_app = Celery('studio_tasks', broker='amqp://studio_broker:broker_secure_pass@studio-rabbitmq:5672//') + +@celery_app.task +def process_video_rotation(input_file, output_file): + """ + Executes a fast, headless FFmpeg run inside RabbitMQ queue context. + Prevents the main FastAPI frontend from lagging during large transfers. + """ + subprocess.run([ + "docker", "run", "--rm", + "-v", "/home/user/ai-studio/storage/shared_media:/media", + "jrottenberg/ffmpeg", + "-i", f"/media/{input_file}", + "-vf", "transpose=1", + f"/media/{output_file}" + ]) +``` + +## 5. Network Routing Configuration (`Caddyfile`) + +```caddy +# Core Application Portal Entry Point +ds.home.lab { + reverse_proxy 127.0.0.1:8000 +} + +# Image Design Lab +photo.home.lab { + reverse_proxy 127.0.0.1:8487 +} + +# Pro Video Editor Layout +video.home.lab { + reverse_proxy 127.0.0.1:8081 +} + +# Pro Audio Station A (Audacity Wrapper) +audacity.home.lab { + reverse_proxy 127.0.0.1:3000 +} + +# Pro Audio Station B (Zrythm DAW Studio) +zrythm.home.lab { + reverse_proxy 127.0.0.1:3001 +} +``` +