From 795908e1ef5a08794033263a29dc3968f2d1e99c Mon Sep 17 00:00:00 2001 From: jeremy Date: Wed, 6 May 2026 13:10:47 -0500 Subject: [PATCH] infra: deploy Rongorongo decipherment engine to hf-pdocker-01 Standalone Compose service running a locally-built nginx image that serves a static Anthropic-API frontend. Traefik dynamic route added for public HTTPS access. Blackbox probe added to prometheus.yml for uptime monitoring. CLAUDE.md updated with service entry. Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 111 +- compose/hf-pdocker-01/rongorongo/Dockerfile | 13 + .../rongorongo/docker-compose.yml | 25 + .../rongorongo/frontend/index.html | 2057 +++++++++++++++++ compose/hf-pdocker-01/rongorongo/nginx.conf | 36 + stacks/monitoring/prometheus.yml | 14 +- stacks/traefik/dynamic/rongorongo.yml | 28 + 7 files changed, 2207 insertions(+), 77 deletions(-) create mode 100644 compose/hf-pdocker-01/rongorongo/Dockerfile create mode 100644 compose/hf-pdocker-01/rongorongo/docker-compose.yml create mode 100644 compose/hf-pdocker-01/rongorongo/frontend/index.html create mode 100644 compose/hf-pdocker-01/rongorongo/nginx.conf create mode 100644 stacks/traefik/dynamic/rongorongo.yml diff --git a/CLAUDE.md b/CLAUDE.md index cf06b97..8bbc6db 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,14 +4,14 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Repository Overview -This repository manages a **homelab infrastructure** with self-hosted services running across 3 nodes using a **hybrid orchestration** model: Docker Swarm for core infrastructure services, standalone Docker Compose for isolated services. +This repository manages a **homelab infrastructure** with self-hosted services running across 3 nodes using **standalone Docker Compose** on all nodes. (Docker Swarm was fully dismantled on 2026-04-01.) ### Cluster Architecture **Nodes:** -- **hf-pdocker-01** (192.168.86.192) - Swarm Manager, core infrastructure + Frigate NVR - **RESTORED (2026-03-08)** -- **hf-pdocker-02** (192.168.86.100) - Standalone Compose services (dev tools, utilities) -- **bart** (192.168.86.167) - Standalone Compose services (media stack, OpenVAS) +- **hf-pdocker-01** (192.168.86.192) - Core infrastructure + Frigate NVR - **RESTORED (2026-03-08)** +- **hf-pdocker-02** (192.168.86.100) - Dev tools, utilities +- **bart** (192.168.86.167) - Media stack, OpenVAS **Synology NAS** (192.168.86.30) - Centralized NFS storage for all service data @@ -20,47 +20,47 @@ This repository manages a **homelab infrastructure** with self-hosted services r ### Service Distribution ``` -hf-pdocker-01 (Manager, 23GB RAM, i7-7700T, NVMe, HD 630 GPU) -- RESTORED (2026-03-08, hardware repaired) +hf-pdocker-01 (23GB RAM, i7-7700T, NVMe, HD 630 GPU) -- RESTORED (2026-03-08, hardware repaired) ├── [COMPOSE] Frigate NVR (:5000) -- OpenVINO GPU detector, 13 cameras active ├── [COMPOSE] Frigate-Notify v2 (:5199) -- MQTT->AI->Matrix notifications ├── [COMPOSE] clip-service (:5200) -- CLIP embeddings (ViT-L-14, CPU) -├── [COMPOSE] Open WebUI (:3010) -- AI chat UI (Ollama + Anthropic backends) ├── [COMPOSE] Home Assistant (:8123) ├── [COMPOSE] ESPHome (:6052) ├── [COMPOSE] Mosquitto (:1883, :8883) ├── [COMPOSE] Synapse/Matrix (:8008) + synapse-db (postgres) + wellknown (:8010) ├── [COMPOSE] Guacamole (:8199) + guacd + guacamole-db (mysql, LOCAL /var/lib/guacamole-db) -├── [COMPOSE] AI Agents (margaret:18790, spirit:18795 [infra ops], clippy:18800, bob:18810, travis:18815) +├── [COMPOSE] AI Agents (margaret:18790, spirit:18795 [infra ops]) ├── [COMPOSE] Traefik (reverse proxy, ports 80/443/8090) ├── [COMPOSE] AdGuard Home (:3000, :53) ├── [COMPOSE] Monitoring (Grafana :3001, Prometheus :9095, Alertmanager :9093, InfluxDB :8086, Blackbox :9115, matrix-receiver :9094) ├── [COMPOSE] Farm Manager API (:8888) -- dashboard + API server ├── [COMPOSE] Farm Agent (:8889) -├── [SWARM] Telegraf (global), Node-exporter (global) +├── [COMPOSE] Rongorongo (:8181) -- static HTML/JS decipherment engine (Anthropic API direct from browser) +├── [REMOVED] VoiceCoach -- moved to GPU machine (192.168.86.150) 2026-04-04 +├── [COMPOSE] Node-exporter (:9100) -- standalone with pid:host +├── [COMPOSE] Telegraf -- metrics collection to InfluxDB ├── [CRON] sync-frigate-to-nas (daily 2am), cleanup-frigate-media (weekly Sun 3am), restart-frigate (daily 4am) ├── 5TB USB disk at /mnt/frigate-recordings (Frigate recordings storage) -bart (Worker, 15GB RAM, i5-4570T, HDD) +bart (15GB RAM, i5-4570T, HDD) ├── [COMPOSE] Media Stack (Jellyfin, Sonarr, Radarr, SABnzbd, NZBHydra2, Jellyseerr) ├── [COMPOSE] OpenVAS (vulnerability scanner) -├── [COMPOSE] Onyx (:3005) -- AI document search/RAG (Ollama backend: llava:13b on 192.168.86.196) ├── [COMPOSE] Farm Agent (:8889) +├── [COMPOSE] Node-exporter (:9100) -- standalone with pid:host +├── [COMPOSE] Telegraf -- metrics collection to InfluxDB ├── [COMPOSE] Watchtower -├── [SWARM] Telegraf (global), Node-exporter (global) -hf-pdocker-02 (Worker, 7.6GB RAM, i7-6700T, HDD) +hf-pdocker-02 (7.6GB RAM, i7-6700T, HDD) ├── [COMPOSE] Unifi + unifi-db (MongoDB) ├── [COMPOSE] Gitea + gitea-db (PostgreSQL) ├── [COMPOSE] Semaphore + semaphore-db (MySQL) ├── [COMPOSE] Wiki.js + wikijs-db (PostgreSQL) ├── [COMPOSE] Vaultwarden, Actual Budget, MCPO, Trivy -├── [COMPOSE] SearXNG (:8888) -- self-hosted meta-search engine (Onyx web search backend) -├── [COMPOSE] Unstructured API (:8000) -- document parsing for Onyx file ingestion -├── [COMPOSE] n8n + n8n-db (PostgreSQL) -- Clippy workflow automation -├── [COMPOSE] NetClaw/Aaron (:1179) -- AI network agent +├── [COMPOSE] n8n + n8n-db (PostgreSQL) -- workflow automation ├── [COMPOSE] Farm Agent (:8889) +├── [COMPOSE] Node-exporter (:9100) -- standalone with pid:host +├── [COMPOSE] Telegraf -- metrics collection to InfluxDB ├── [COMPOSE] Watchtower -├── [SWARM] Telegraf (global), Node-exporter (global) ``` @@ -70,7 +70,7 @@ hf-pdocker-02 (Worker, 7.6GB RAM, i7-6700T, HDD) You are working in a **WSL 2 environment** on Windows. Docker is NOT directly available in WSL - all Docker operations must be performed by connecting to the remote nodes via SSH. -**Critical:** Use the `docker-swarm-ops` agent (via Task tool) for ALL Docker operations. Do not attempt to run docker commands directly in bash - they will fail. +**Critical:** Docker is not available locally in WSL. All Docker operations must be performed by connecting to the remote nodes via SSH. ### Storage Architecture @@ -84,7 +84,7 @@ All service data lives on the **Synology NAS** via NFS, mounted at `/mnt/docker- ├── traefik/ # Let's Encrypt certs └── compose/ # Standalone compose files per node ├── hf-pdocker-01/{frigate,frigate-notify,clip-service,matrix,smarthome,guacamole,ai-agents,traefik,adguard}/ - ├── hf-pdocker-02/{unifi,gitea,semaphore,wikijs,vaultwarden,actual-budget,mcpo,trivy,netclaw,watchtower}/ + ├── hf-pdocker-02/{unifi,gitea,semaphore,wikijs,vaultwarden,actual-budget,mcpo,trivy,watchtower}/ └── bart/{media,openvas,watchtower}/ ``` @@ -95,13 +95,10 @@ All service data lives on the **Synology NAS** via NFS, mounted at `/mnt/docker- ### Repository File Structure ``` -stacks/ # Swarm stack definitions (deployed on hf-pdocker-01) -├── {service-name}/ -│ ├── docker-compose.yml -│ └── .env (if needed) +stacks/ # LEGACY Swarm stack definitions (Swarm dismantled 2026-04-01, kept for reference) compose/ # Standalone Compose definitions (deployed per-node) -├── hf-pdocker-01/ # Frigate +├── hf-pdocker-01/ # Core infrastructure + Frigate ├── hf-pdocker-02/ # Dev tools & utilities │ ├── {service}/docker-compose.yml │ └── {service}/.env @@ -110,20 +107,15 @@ compose/ # Standalone Compose definitions (deployed per-node) ### Deployment Workflow -**Swarm services (stacks/):** -1. Edit stack file in `stacks/{service-name}/docker-compose.yml` -2. SCP to hf-pdocker-01 and redeploy: `docker stack deploy -c ` - -**Standalone Compose services (compose/):** +**All services (compose/):** 1. Edit compose file in `compose/{node}/{service}/docker-compose.yml` 2. SCP to NAS path or node, then: `cd /mnt/docker-data/compose/{node}/{service} && docker compose up -d` ### Service Architecture Patterns **Network Patterns:** -- **Swarm services**: Overlay networks for inter-service communication - **Compose services**: Bridge networks for service isolation -- **Public services** (Traefik): Connect to `traefik-public` overlay + Traefik labels +- **Public services** (Traefik): Traefik labels + dynamic config files in `/mnt/docker-data/traefik/dynamic/` **Database Patterns:** - PostgreSQL: `postgres:15-alpine` or `postgres:16-alpine` @@ -146,8 +138,8 @@ compose/ # Standalone Compose definitions (deployed per-node) - Home Assistant: `yoda.hobbs.farm` - Vaultwarden: `vault.hobbs.farm` - Gitea: `git.hobbs.farm` -- Onyx: `onyx.hobbs.farm` -- Open WebUI: `open.hobbs.farm` +- VoiceCoach: `coach.hobbs.farm` (LiveKit WebRTC: `voice.hobbs.farm`) +- Rongorongo: `rongorongo.hobbs.farm` ### Internal Services by Node @@ -155,7 +147,6 @@ compose/ # Standalone Compose definitions (deployed per-node) - Frigate: :5000 - Frigate Alerts (v2): :5199 (web UI + REST API) - clip-service: :5200 (CLIP embeddings, ViT-L-14, CPU) -- Open WebUI: :3010 (AI chat UI, public at open.hobbs.farm) - Home Assistant: :8123 - ESPHome: :6052 - Mosquitto: :1883 @@ -170,9 +161,11 @@ compose/ # Standalone Compose definitions (deployed per-node) - InfluxDB: :8086 - Blackbox Exporter: :9115 - matrix-alertmanager-receiver: :9094 -- AI Agents (margaret :18790, spirit :18795 [infra ops — monitors #notifications, auto-remediates alerts], clippy :18800, bob :18810, travis :18815) -- LAN-accessible (bind=lan, 0.0.0.0) +- AI Agents (margaret :18790, spirit :18795 [infra ops — monitors #notifications, auto-remediates alerts]) -- LAN-accessible (bind=lan, 0.0.0.0) - Farm Manager: :8888 (dashboard + API) - Farm Agent: :8889 +- Rongorongo: :8181 (web at rongorongo.hobbs.farm) +- ~~VoiceCoach~~ -- moved to GPU machine (192.168.86.150) 2026-04-04 **hf-pdocker-02 (192.168.86.100):** - Farm Agent: :8889 @@ -184,9 +177,6 @@ compose/ # Standalone Compose definitions (deployed per-node) - Actual Budget: :5006 - MCPO: :8001 - Trivy: :4954 -- SearXNG: :8888 (meta-search, Onyx web search backend) -- Unstructured API: :8000 (document parsing for Onyx file ingestion) -- NetClaw/Aaron: :1179 (internal only) **bart (192.168.86.167):** - Farm Agent: :8889 @@ -197,19 +187,27 @@ compose/ # Standalone Compose definitions (deployed per-node) - NZBHydra2: :5076 - Jellyseerr: :5055 - OpenVAS: :9392 -- Onyx: :3005 (AI document search/RAG) -**GPU Machine (192.168.86.196, RTX 3090):** -- Ollama: :11434 (vision LLM, llava:13b) +**GPU Machine (192.168.86.150, RTX 3090, 15GB RAM):** +- Ollama: :11434 (llama3.1:8b for VoiceCoach LLM, qwen2.5:14b, others) +- [COMPOSE] VoiceCoach (all services co-located): + - voicecoach-livekit: :7880/:7881, UDP 50000-50100 (public at voice.hobbs.farm) + - voicecoach-speaches-gpu: :8000 (GPU Whisper STT + Kokoro TTS, CUDA float16) + - voicecoach-speechbrain: :8001 (emotion analysis) + - voicecoach-token-server: :8080 (token + settings API) + - voicecoach-pipecat: pipeline agent (LLM via local Ollama llama3.1:8b) + - voicecoach-web: :8085 (public at coach.hobbs.farm) + - voicecoach-openclaw: :3100 (idle, kept for future Claude API routing) +- Compose: ~/voicecoach-speaches/docker-compose.yml ### Port Conflict Notes Port conflicts already resolved: -- Port 8000: Now used by Unstructured API on hf-pdocker-02 (MCPO moved to 8001, Portainer moved elsewhere) +- Port 8000: Freed (MCPO moved to 8001, Portainer moved elsewhere) - Port 3000: AdGuard Home (Gitea moved to 3003) - Port 3001: Grafana (Semaphore moved to 3004) - Port 5000: Frigate uses host networking (registry container stopped) -- AI Agent ports re-spaced (2026-03-15): openclaw 2026.3.13 uses gateway+2 and gateway+3 for browser/chrome-relay. Agents now spaced 5 apart: margaret=18790, spirit=18795, clippy=18800, bob=18810, travis=18815 +- AI Agent ports re-spaced (2026-03-15): openclaw 2026.3.13 uses gateway+2 and gateway+3 for browser/chrome-relay. Agents spaced 5 apart: margaret=18790, spirit=18795 ## Critical Configuration Preservation @@ -235,20 +233,11 @@ Do NOT wait for the user to ask. Do NOT skip "because the change was small." Eve ## Common Operations -### Deploy/Update a Swarm Service - -1. Edit `stacks/{service}/docker-compose.yml` -2. Use docker-swarm-ops agent to SCP and deploy: - ```bash - docker stack deploy -c - ``` - ### Deploy/Update a Compose Service 1. Edit `compose/{node}/{service}/docker-compose.yml` -2. Use docker-swarm-ops agent to: +2. SSH to the target node and run: ```bash - # On the target node: cd /mnt/docker-data/compose/{node}/{service} docker compose up -d ``` @@ -256,11 +245,7 @@ Do NOT wait for the user to ask. Do NOT skip "because the change was small." Eve ### Troubleshoot ```bash -# Swarm services (on hf-pdocker-01): -docker service ls -docker service logs {stack}_{service} --tail 100 - -# Compose services (on target node): +# On target node: docker compose -f /mnt/docker-data/compose/{node}/{service}/docker-compose.yml logs --tail 100 docker ps --format "table {{.Names}}\t{{.Status}}" ``` @@ -268,13 +253,8 @@ docker ps --format "table {{.Names}}\t{{.Status}}" ### Check Cluster Health ```bash -# On hf-pdocker-01: -docker node ls # Swarm node status -docker service ls # Swarm services -docker stack ls # Deployed stacks - # On each node: -docker ps # Local containers (Compose + Swarm) +docker ps # Local containers ``` ## Data Management @@ -296,9 +276,6 @@ All persistent data on NAS at `/mnt/docker-data/`: ## Specialized Agents -### docker-swarm-ops -**Use for:** All Docker operations (Swarm + Compose) on any node - ### vault-credential-manager **Use for:** Storing/retrieving credentials from Vaultwarden diff --git a/compose/hf-pdocker-01/rongorongo/Dockerfile b/compose/hf-pdocker-01/rongorongo/Dockerfile new file mode 100644 index 0000000..5cdeb19 --- /dev/null +++ b/compose/hf-pdocker-01/rongorongo/Dockerfile @@ -0,0 +1,13 @@ +FROM nginx:1.25-alpine + +RUN rm -rf /usr/share/nginx/html/* + +COPY frontend/index.html /usr/share/nginx/html/index.html +COPY nginx.conf /etc/nginx/conf.d/default.conf + +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD wget -qO- http://localhost/health || exit 1 + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] diff --git a/compose/hf-pdocker-01/rongorongo/docker-compose.yml b/compose/hf-pdocker-01/rongorongo/docker-compose.yml new file mode 100644 index 0000000..34c7285 --- /dev/null +++ b/compose/hf-pdocker-01/rongorongo/docker-compose.yml @@ -0,0 +1,25 @@ +services: + rongorongo: + build: + context: . + dockerfile: Dockerfile + image: rongorongo:latest + container_name: rongorongo + restart: unless-stopped + ports: + - "8181:80" + mem_limit: 128M + memswap_limit: 128M + healthcheck: + test: ["CMD", "wget", "-qO-", "http://localhost/health"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 10s + labels: + - "com.centurylinklabs.watchtower.enable=false" + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" diff --git a/compose/hf-pdocker-01/rongorongo/frontend/index.html b/compose/hf-pdocker-01/rongorongo/frontend/index.html new file mode 100644 index 0000000..3a8b08c --- /dev/null +++ b/compose/hf-pdocker-01/rongorongo/frontend/index.html @@ -0,0 +1,2057 @@ + + + + + +Rongorongo · Decipherment Engine + + + + + + +
+ + +
+
+ Rongorongo + Decipherment Engine +
+
+
+ Corpus 0 images · + Glyphs 0 · + Anchors 0 +
+ + +
+
+ + + + + +
+ + +
+ + +
+ +
𓀠
+
Drop images here or click to browse
+
JPG · PNG · WEBP · Multiple files supported
+
+ +
+ +
+
Suggested Sources
+
+
— Barthel's Grundlagen zur Entzifferung der Osterinselschrift (1958) — 26 authenticated objects
+
— Fischer's Rongorongo: The Easter Island Script (1997)
+
— Musée de l'Homme, Paris · Smithsonian NMNH · Bishop Museum, Honolulu
+
— Santiago Staff tablet (highest glyph density, ~2320 glyphs)
+
+
+
+ + +
+ + +
+
+
Select Image to Annotate
+ +
+ +
+
+ + + Draw a box around a glyph +
+
+
+ + +
+
+ + +
+
+
+ +
+
Glyph Registry
+
+
No glyphs tagged yet
+
+ +
+
+
+ + +
+ + +
+
Analysis Mode
+
+ + + + + + +
+ +
+ +
+
+
+ +
+ ◉ ANALYSIS OUTPUT +
Upload images and run an analysis to begin
+
+ + +
+ + +
+ + +
+
+
+ + +
+
+ + +
+
+ +
+ +
+ ◇ SEQUENCE MATCHES +
Load multiple tablet images then run the matcher
+
+
+ + +
+ + +
+
Rapa Nui Phoneme Inventory (Known)
+
+ CV structure dominant. Consonants: p t k m n ŋ h r v. Vowels: a e i o u.
+ Most frequent syllables (corpus analysis): ko · ma · ta · ra · ka · ha · na · te · ai · oa +
+ +
+ + +
+ + +
+ + +
+
+
+
Define New Anchor
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
Anchor Registry
+
+
No anchors defined
+
+
+
+
+ + +
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+ +
+ +
+ ⊕ PROPAGATION OUTPUT +
Define anchors and select one to simulate propagation
+
+
+ + +
+ + +
+
Select Anchors to Test
+
+
No anchors defined. Go to Anchor Lab first.
+
+
+
+ +
+ + + + +
+
+
+ + +
+
+ +
+ + + +
+ ✦ FEASIBILITY REPORT +
Define and select anchors, then run tests
+
+ + +
+ + +
+ + +
+
Run feasibility tests to populate confidence tracking
+
+
+ + +
+ + +
+ +
+
Ask Against Scholarship
+ + +
+ 📜 SCHOLARSHIP ANALYSIS +
Ask a question about existing decipherment scholarship
+
+
+
+ + +
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ +
+ + + + + diff --git a/compose/hf-pdocker-01/rongorongo/nginx.conf b/compose/hf-pdocker-01/rongorongo/nginx.conf new file mode 100644 index 0000000..687c7d6 --- /dev/null +++ b/compose/hf-pdocker-01/rongorongo/nginx.conf @@ -0,0 +1,36 @@ +server { + listen 80; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-XSS-Protection "1; mode=block" always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; + + # CSP — allows Anthropic API calls and Google Fonts + add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob:; connect-src 'self' https://api.anthropic.com; worker-src blob:;" always; + + gzip on; + gzip_types text/html text/css application/javascript; + gzip_min_length 1024; + + location /health { + access_log off; + return 200 "ok\n"; + add_header Content-Type text/plain; + } + + location / { + try_files $uri $uri/ /index.html; + expires -1; + add_header Cache-Control "no-store, no-cache, must-revalidate"; + } + + location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff2)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } +} diff --git a/stacks/monitoring/prometheus.yml b/stacks/monitoring/prometheus.yml index ddded41..7a22470 100644 --- a/stacks/monitoring/prometheus.yml +++ b/stacks/monitoring/prometheus.yml @@ -57,7 +57,6 @@ scrape_configs: - http://192.168.86.192:5000 # Frigate NVR (standalone, host network) - http://192.168.86.192:5199/health # Frigate Notify - http://192.168.86.192:5200/health # clip-service (CLIP embeddings) - - http://192.168.86.192:3010 # Open WebUI - http://192.168.86.192:8888/health # Farm Manager API - http://192.168.86.192:8889/health # Farm Agent - http://192.168.86.192:8123 # Home Assistant @@ -69,8 +68,9 @@ scrape_configs: - http://192.168.86.192:3001 # Grafana - http://192.168.86.192:9095 # Prometheus - http://192.168.86.192:9093 # Alertmanager - - http://192.168.86.192:18815 # Travis (NemoClaw agent) - http://192.168.86.192:18795 # Spirit (infra ops agent) + - http://192.168.86.192:8085 # VoiceCoach web client + - http://192.168.86.192:7880 # VoiceCoach LiveKit server relabel_configs: - source_labels: [__address__] target_label: __param_target @@ -93,9 +93,6 @@ scrape_configs: - http://192.168.86.100:5006 # Actual Budget - http://192.168.86.100:8001/openapi.json # MCPO - http://192.168.86.100:8889/health # Farm Agent - - http://192.168.86.100:8888 # SearXNG - - http://192.168.86.100:8000/healthcheck # Unstructured API - - http://192.168.86.100:9000 # Portainer relabel_configs: - source_labels: [__address__] target_label: __param_target @@ -135,10 +132,6 @@ scrape_configs: - http://192.168.86.167:5055 # Jellyseerr - http://192.168.86.167:9392 # OpenVAS - http://192.168.86.167:8889/health # Farm Agent - - targets: - - http://192.168.86.167:3005 # Onyx - labels: - name: onyx relabel_configs: - source_labels: [__address__] target_label: __param_target @@ -159,7 +152,8 @@ scrape_configs: - https://yoda.hobbs.farm # Home Assistant - https://vault.hobbs.farm # Vaultwarden - https://git.hobbs.farm # Gitea - - https://open.hobbs.farm # Open WebUI + - https://coach.hobbs.farm # VoiceCoach web client + - https://rongorongo.hobbs.farm # Rongorongo decipherment engine relabel_configs: - source_labels: [__address__] target_label: __param_target diff --git a/stacks/traefik/dynamic/rongorongo.yml b/stacks/traefik/dynamic/rongorongo.yml new file mode 100644 index 0000000..d7bf6af --- /dev/null +++ b/stacks/traefik/dynamic/rongorongo.yml @@ -0,0 +1,28 @@ +http: + routers: + rongorongo: + rule: "Host(`rongorongo.hobbs.farm`)" + entryPoints: + - websecure + middlewares: + - security-headers + service: rongorongo + tls: + certResolver: letsencrypt + rongorongo-http: + rule: "Host(`rongorongo.hobbs.farm`)" + entryPoints: + - web + middlewares: + - rongorongo-https-redirect + service: rongorongo + middlewares: + rongorongo-https-redirect: + redirectScheme: + scheme: https + permanent: true + services: + rongorongo: + loadBalancer: + servers: + - url: "http://192.168.86.192:8181"