Kod zyl tylko na dysku PIHA w /opt/llm-gateway (bez gita). Przeniesiony do
services/llm-gateway/ pod pelny wzorzec homelaba:
- app/main.py: kod 1:1 z PIHA + OLLAMA_URL/CHAT_MODEL/CODE_MODEL
nadpisywalne przez env (defaulty bez zmian)
- docker-compose.yml: bind TYLKO do Tailscale IP (${TAILSCALE_BIND_IP},
wzorzec fleet-prometheus), nie 0.0.0.0 jak w starym compose
- service.yaml, env.example (bez sekretow), healthcheck.sh, README, testy
- hosts/piha/runtime/llm-gateway: mem_limit 256m (PIHA jest RAM-bound)
- rejestracja w hosts/piha/services.yaml i inventory/topology.yaml
Zepsuty /opt/llm-gateway/docker-compose.yml (zduplikowany klucz ports)
celowo NIE przeniesiony.
DoD: pytest 4 passed; docker build + smoke run OK (GET / -> gateway ok).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
93 lines
2.7 KiB
YAML
93 lines
2.7 KiB
YAML
host: piha
|
|
|
|
services:
|
|
ha-diag-agent:
|
|
role: ha-diagnostic-agent
|
|
deployment_model: docker-compose
|
|
exposure: local-only
|
|
offline_required: false
|
|
depends_on:
|
|
local: []
|
|
external: [homeassistant]
|
|
config:
|
|
target_url: http://localhost:8123
|
|
location_tag: "ken"
|
|
events_dir: /opt/homelab/events/piha
|
|
runtime:
|
|
config_path: /opt/homelab/config/ha-diag-agent
|
|
data_path: /var/lib/ha-diag-agent
|
|
|
|
node-agent:
|
|
role: node-stability-monitor
|
|
deployment_model: docker-compose
|
|
exposure: local-only
|
|
offline_required: true
|
|
depends_on:
|
|
local: []
|
|
external: []
|
|
runtime:
|
|
config_path: /opt/homelab/config/node-agent
|
|
data_path: /opt/homelab/state
|
|
logs_path: /opt/homelab/events
|
|
|
|
brain-watchdog:
|
|
role: control-plane-watchdog
|
|
deployment_model: docker-compose
|
|
exposure: private
|
|
offline_required: false
|
|
depends_on:
|
|
local: []
|
|
external: [control-plane]
|
|
runtime:
|
|
config_path: /opt/homelab/config/brain-watchdog
|
|
|
|
vikunja:
|
|
role: task-management
|
|
deployment_model: docker-compose
|
|
exposure: private # public via npm reverse proxy at vikunja.okit.pl
|
|
offline_required: false
|
|
depends_on:
|
|
local: []
|
|
external: [forgejo] # OIDC identity provider
|
|
ports:
|
|
- name: http
|
|
container_port: 3456
|
|
protocol: tcp
|
|
runtime:
|
|
# secrets (.env) + OIDC config (config.yml) live alongside the compose file
|
|
config_path: services/vikunja
|
|
# data is in Docker named volumes: vikunja_vikunja_db, vikunja_vikunja_files
|
|
|
|
llm-gateway:
|
|
role: llm-router # FastAPI proxy -> Ollama @ SOLARIA :11434
|
|
deployment_model: docker-compose
|
|
exposure: private # Tailscale-only bind (TAILSCALE_BIND_IP); no public ingress
|
|
offline_required: false
|
|
depends_on:
|
|
local: []
|
|
external: [ollama] # SOLARIA may be powered down -> routes 502, health stays ok
|
|
ports:
|
|
- name: http
|
|
container_port: 8080
|
|
protocol: tcp
|
|
runtime:
|
|
# .env (TAILSCALE_BIND_IP) lives alongside the compose file; stateless, no data path
|
|
config_path: services/llm-gateway
|
|
|
|
kb-postgres:
|
|
role: kb-database # KB spine: Postgres 16 + pgvector (always-on)
|
|
deployment_model: docker-compose
|
|
exposure: local-only # Tailscale-accessible; no public ingress
|
|
offline_required: false
|
|
depends_on:
|
|
local: []
|
|
external: []
|
|
ports:
|
|
- name: postgres
|
|
host_port: 5433
|
|
protocol: tcp
|
|
runtime:
|
|
config_path: /opt/homelab/config/kb-postgres
|
|
# data is in Docker named volume kb_postgres_data — must land on the NVMe
|
|
# (Docker data-root on /home); see hosts/piha/runtime/kb-postgres override.
|