2026-05-10 22:05:16 +02:00
|
|
|
topology:
|
|
|
|
|
mesh: tailscale
|
|
|
|
|
git_provider: forgejo
|
|
|
|
|
|
|
|
|
|
deployment:
|
|
|
|
|
mode: pull
|
|
|
|
|
orchestrator: saturn
|
|
|
|
|
|
2026-06-30 16:23:57 +02:00
|
|
|
# Ingress dla usług domowych przez NPM @ PIHA + wildcard cert kapala.org.
|
|
|
|
|
# Od 2026-06-30. Poprzednia ścieżka (add-on Tailscale na ha-ken) PORZUCONA.
|
|
|
|
|
# DNS kapala.org: Cloudflare, wildcard *.kapala.org via DNS-01 (auto-renew).
|
|
|
|
|
# Mail: Fastmail (MX/DKIM/SPF na CF, DNS only).
|
|
|
|
|
# Subdomeny mesh: A → 100.108.208.3 (Tailscale PIHA), DNS only.
|
|
|
|
|
ingress:
|
|
|
|
|
dns_provider: cloudflare # kapala.org od 2026-06-30
|
|
|
|
|
wildcard_cert:
|
|
|
|
|
domain: "*.kapala.org"
|
|
|
|
|
method: dns-01 # Cloudflare DNS-01, auto-renew
|
|
|
|
|
proxy: npm-piha # Nginx Proxy Manager @ PIHA
|
|
|
|
|
services:
|
|
|
|
|
home_assistant:
|
|
|
|
|
host: 192.168.31.7
|
|
|
|
|
port: 8123
|
|
|
|
|
ingress: ha.kapala.org # NPM @ PIHA, cert *.kapala.org, mesh-only
|
|
|
|
|
access: tailscale # 100.108.208.3
|
|
|
|
|
cert: wildcard-kapala # DNS-01 Cloudflare, auto-renew
|
|
|
|
|
immich:
|
|
|
|
|
host: 192.168.31.5
|
|
|
|
|
port: 2283
|
|
|
|
|
ingress: immich.kapala.org # NPM @ PIHA, cert *.kapala.org, mesh-only
|
|
|
|
|
access: tailscale
|
|
|
|
|
cert: wildcard-kapala
|
|
|
|
|
|
2026-05-10 22:05:16 +02:00
|
|
|
nodes:
|
|
|
|
|
|
|
|
|
|
saturn:
|
|
|
|
|
roles:
|
|
|
|
|
- control
|
|
|
|
|
- development
|
|
|
|
|
|
|
|
|
|
piha:
|
|
|
|
|
roles:
|
|
|
|
|
- infra
|
|
|
|
|
- monitoring
|
2026-06-01 17:54:36 +02:00
|
|
|
services:
|
|
|
|
|
- node-agent
|
|
|
|
|
- ha-diag-agent
|
|
|
|
|
- brain-watchdog
|
2026-06-17 15:02:37 +02:00
|
|
|
- vikunja # Task management (vikunja + postgres), public via npm
|
2026-06-22 19:59:58 +02:00
|
|
|
- kb-postgres # KB spine: Postgres 16 + pgvector, port 5433 (always-on)
|
2026-07-03 13:41:44 +02:00
|
|
|
- llm-gateway # FastAPI router -> Ollama @ SOLARIA (Tailscale-internal :8080)
|
feat(kb): faza 3 krok 5 — cykliczny ingest (systemd timer) + alerting
documents-ingest-cyclic (jobs/documents-ingest/src/documents_ingest/cyclic_ingest.py):
orkiestruje paperless_adapter -> chunk_embed -> summarize(--backend anthropic,
claude-haiku-4-5) -> summarize(--embed-summaries) bez zmian w samych jobach. Ollama@SOLARIA
(availability_target: medium) jest tolerowana offline: probe GET /api/tags przed obu
etapami embed, brak -> pominięcie, nie fail (oba embed passy idempotentne, nadrobią się na
kolejnym ticku). Czwarty etap (embed-summaries) dopisany ponad plan §7.1 (który wymieniał
tylko 3 kroki) — bez niego nowe streszczenia miałyby embedding=NULL i byłyby niewidoczne dla
cascade_query (bramka kroku 4, WHERE embedding IS NOT NULL); potwierdzone z Oskarem.
Predykaty pass/fail każdego etapu 1:1 z exit-checkiem danego joba (chunks_errors,
llm_errors, stats-balance itd.) — etapy izolowane, nie fail-fast (wcześniejszy fail nie
blokuje kolejnych, tak jak joby izolują błędy per wiersz). Metryki .prom (atomowy zapis,
last_success_timestamp trzymany z poprzedniego pliku przy failu) do
/opt/homelab/state/node-exporter/kb-ingest.prom. 36 nowych testów (202/202 pakietu).
systemd (jobs/documents-ingest/systemd/): pierwszy systemd-timer w repo — kb-ingest.timer
(OnCalendar=*-*-* 03:30, Persistent=true, plan §7.1) + kb-ingest.service (host-level, User
oskar, EnvironmentFile /opt/homelab/kb/.env) + kb-ingest-run.sh (log per-run do
/opt/homelab/logs/kb-ingest/, konwencja repo). Instalacja i sekrety udokumentowane w
README (Faza 3 krok 5) — instalacja na PIHA dopiero po merge.
fleet-prometheus (rules/kb-ingest.yml): KbIngestStale (>172800s od last_success, critical)
+ KbEmbedBacklogGrowing (backlog>0 przez 72h, warning) — dostawa istniejącym torem
brain-watchdog->Telegram, bez Alertmanagera (konwencja liveness.yml).
node_exporter: owner_node vps -> per-host (service.yaml) + wpis + override
(--collector.textfile.directory, bez nowego mountu — czyta przez istniejący /:/host:ro) +
topology.yaml dla PIHA. Domyka pozycję z docs/backlog.md "stability-agent / node_exporter
owner_node single, biegaja wielomiejscowo -> per-host" (połowę — node_exporter; stability-agent
zostaje osobnym follow-upem) w ramach paczki B inwentaryzacji monitoringu dla PIHA.
Test end-to-end na żywo na PIHA (2× --apply, po potwierdzeniu z Oskarem): pierwszy run
złapał 5 dokumentów faktycznie nowych w Paperless (nieoczekiwane, niezwiązane z tym
taskiem) -> 82 nowe chunki (2 ocr_junk), 5 nowych streszczeń, 5 embeddingów streszczeń,
0 błędów, metryki zapisane. Drugi run: pełna idempotencja, wszystko 0. ANTHROPIC_API_KEY
dodany przez Oskara ręcznie do /opt/homelab/kb/.env (nigdy nie logowany/generowany).
Co dalej: prawdziwa instalacja systemd (services.yaml już przygotowany, po merge),
zdecydowanie czy stability-agent też idzie na per-host przy okazji.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 15:05:18 +02:00
|
|
|
- node_exporter # per-host (also vps) — textfile collector for kb-ingest metrics
|
2026-05-10 22:05:16 +02:00
|
|
|
|
|
|
|
|
solaria:
|
|
|
|
|
roles:
|
|
|
|
|
- compute
|
|
|
|
|
- ai
|
feat(kb-mail): fundament — pgvector spine, koperta, archiwum, pakiet domeny
- services/kb-postgres: pgvector/pgvector:pg16 na SOLARIA (:5433), named
volume, init/001_envelope.sql (CREATE EXTENSION vector + zamrożona tabela
envelope: id/source/ts/geo/raw_ref/entities), service.yaml, healthcheck,
README z poprawnym mechanizmem deploy (deploy-node.sh składa dwa -f)
- hosts/solaria/runtime/kb-postgres/docker-compose.override.yml: mem_limit 4g
- inventory/topology.yaml + hosts/solaria/services.yaml: kb-postgres wpisany
- packages/kb-mail: nowa konwencja shared lib (pip install /repo/packages/<lib>/)
envelope.py — @dataclass Envelope, walidacja tz-aware ts
db.py — insert_envelope / get_envelope (asyncpg, ON CONFLICT DO NOTHING)
archive.py — save_eml append-only (asyncio.to_thread, FileExistsError na dup)
tests: 15 unit pass + 5 integration (@pytest.mark.integration, wymaga KB_TEST_DSN)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 21:50:49 +02:00
|
|
|
services:
|
|
|
|
|
- node-agent
|
2026-05-10 22:05:16 +02:00
|
|
|
|
|
|
|
|
vps:
|
|
|
|
|
roles:
|
|
|
|
|
- edge
|
|
|
|
|
- ingress
|
2026-05-21 11:40:55 +02:00
|
|
|
- control-plane
|
2026-06-01 17:54:36 +02:00
|
|
|
services:
|
|
|
|
|
# Repo-managed GitOps services (hosts/vps/services.yaml is authoritative)
|
|
|
|
|
- node-agent
|
|
|
|
|
- control-plane # executor, observer, supervisor, operator-ui
|
|
|
|
|
- node_exporter
|
2026-06-24 17:13:55 +02:00
|
|
|
- fleet-prometheus # Fleet liveness source of truth (Tailscale-internal)
|
2026-06-01 17:54:36 +02:00
|
|
|
- stability-agent
|
|
|
|
|
- npm # Nginx Proxy Manager — public ingress, TLS termination
|
|
|
|
|
- outline # Team wiki (outline + postgres + redis)
|
|
|
|
|
- joplin # Note sync server (joplin-server + postgres)
|
|
|
|
|
- ai-cluster # AI workers: codex-worker, openclaw, planner-worker,
|
|
|
|
|
# service-ops-worker, redis, mosquitto
|
2026-07-09 17:29:28 +02:00
|
|
|
- gokapi # Public file-share (Firefox Send alt), share.okit.pl via npm@VPS,
|
|
|
|
|
# local disk storage, E2E encryption ON — separate from private Nextcloud
|
2026-05-10 22:05:16 +02:00
|
|
|
|
2026-05-20 14:23:57 +02:00
|
|
|
chelsty-infra:
|
|
|
|
|
site: chelsty
|
2026-05-10 22:05:16 +02:00
|
|
|
roles:
|
2026-05-11 13:26:23 +02:00
|
|
|
- remote
|
2026-05-10 22:05:16 +02:00
|
|
|
- hypervisor
|
2026-05-20 14:23:57 +02:00
|
|
|
- infra
|
2026-05-10 22:05:16 +02:00
|
|
|
- staging
|
2026-05-11 13:26:23 +02:00
|
|
|
connectivity:
|
|
|
|
|
uplink: lte
|
|
|
|
|
intermittent: true
|
|
|
|
|
home_automation:
|
|
|
|
|
offline_operation_required: true
|
|
|
|
|
services:
|
|
|
|
|
- zigbee2mqtt
|
|
|
|
|
- mosquitto
|
|
|
|
|
coordinator:
|
|
|
|
|
model: SLZB-06U
|
|
|
|
|
connection: network
|
|
|
|
|
usb: false
|
2026-05-20 14:23:57 +02:00
|
|
|
|
|
|
|
|
chelsty-ha:
|
|
|
|
|
site: chelsty
|
|
|
|
|
roles:
|
|
|
|
|
- remote
|
|
|
|
|
- homeassistant
|
|
|
|
|
connectivity:
|
|
|
|
|
uplink: lte
|
|
|
|
|
intermittent: true
|
|
|
|
|
home_automation:
|
|
|
|
|
offline_operation_required: true
|
|
|
|
|
services:
|
|
|
|
|
- homeassistant
|
2026-06-10 13:02:04 +02:00
|
|
|
|
|
|
|
|
lustro:
|
|
|
|
|
roles:
|
|
|
|
|
- edge
|
|
|
|
|
services:
|
|
|
|
|
- node-agent
|