Betawulf - Services & Container Documentation

Host: betawulf (Ubuntu 24.x, kernel 6.17)  |  Generated: 2026-06-02

Host Network

InterfaceIPPurpose
eno1192.168.100.12Primary host LAN IP
eno2192.168.100.15Secondary IP — used by phishingclub, erpnext, odoo (Traefik upstream)
eno3192.168.100.21Tertiary IP
eno4192.168.100.20Quaternary IP
tailscale0100.91.96.110Tailnet IP for remote access
cni0 / flannel.110.42.0.0/24k3s pod network (k3s running on host)
Cross-subnet note: .12 is blocked from alphawulf subnet — Traefik on alphawulf (192.168.50.10) must point to 192.168.100.15:PORT for FoxForm and other services.

Public URLs (via Traefik on alphawulf)

URLServiceUpstream
https://foxform.silverwulf.workFoxForm (KPI / form builder)192.168.100.15:8085
https://kc-foxform.silverwulf.workKoboCAT (data submissions)192.168.100.15:8085
https://ee-foxform.silverwulf.workEnketo (web forms)192.168.100.15:8085
https://nomad.silverwulf.comProject N.O.M.A.D. admin192.168.100.12:8080
https://odoo.silverwulf.workOdoo 18 Community ERP192.168.100.15:8069
https://erpnext.silverwulf.workERPNext v16192.168.100.15:8090
https://phishingclub.silverwulf.workPhishingClub (admin HTTPS self-signed)192.168.100.15:443 (insecureSkipVerify)
https://rustdesk.silverwulf.workRustDesk relay (raw TCP/UDP, bypasses Traefik)direct edge → betawulf 21115-21119

FoxForm / KoboToolbox Stack

Project name: kobobe (backend) + kobo-docker (frontend). Config at ~/kobo-docker/, env at ~/kobo-env/, install conf at ~/kobo-install/.run.conf.

ContainerImagePortPurpose
kobo-docker-nginx-1nginx:1.278085→80Front nginx for all Kobo services (KPI, KC, EE)
kobo-docker-kpi-1kobotoolbox/kpi:2.026.12e8000 (internal)KPI form builder web UI
kobo-docker-beat-1kobotoolbox/kpi:2.026.12eCelery beat scheduler
kobo-docker-worker-1kobotoolbox/kpi:2.026.12eCelery default worker
kobo-docker-worker_kobocat-1kobotoolbox/kpi:2.026.12eKoboCAT worker
kobo-docker-worker_low_priority-1kobotoolbox/kpi:2.026.12eLow-priority worker
kobo-docker-worker_long_running_tasks-1kobotoolbox/kpi:2.026.12eLong-task worker (exports etc.)
kobo-docker-enketo_express-1kobotoolbox/enketo-express-extra-widgets:7.6.08005 (internal)Enketo web form renderer
kobobe-postgres-1postgis/postgis:14-3.25432 (internal)Primary Postgres for KPI + KC
kobobe-mongo-1mongo:5.027017 (internal)Mongo for submissions
kobobe-redis_main-1redis:7.26379 (internal)Redis main broker
kobobe-redis_cache-1redis:7.26379 (internal)Redis cache

FoxForm Access

URL: https://foxform.silverwulf.work
Admin user: foxadmin
Password: FoxForm2026!
API token: 0c4b0233808dcdaa3e1de2e0d60a0b61a558322d
Postgres: kobo / 48380bb7316994e397ce
Mongo: kobo / 46064c79bb028d1f418e
Redis: 076b43f5cf0a35d96895

Deployed Forms

FormUIDEnketo public link
ISP Daily Field ReportaaFAieyGF6f9JntFEupyQchttps://ee-foxform.silverwulf.work/x/aaFAieyGF6f9JntFEupyQc
Victory Air Field Timesheeta6yr6vX3xnCZNMQyNVkpNjhttps://ee-foxform.silverwulf.work/x/a6yr6vX3xnCZNMQyNVkpNj
Tip — Branding: After any Kobo container restart, re-apply FoxForm branding:
cd ~/ai/projects/bayou_safety_forms && bash apply_branding.sh
Replaces logos, injects CSS, patches "KoboToolbox" → "FoxForm" in templates and compiled JS.
Tip — Start backend:
cd ~/kobo-docker && docker compose -p kobobe -f docker-compose.backend.yml -f docker-compose.backend.override.yml up -d
Tip — Start frontend:
cd ~/kobo-docker && docker compose -f docker-compose.frontend.yml -f docker-compose.frontend.override.yml up -d

Project N.O.M.A.D.

Offline-first knowledge & service platform. Public at nomad.silverwulf.com — currently runs with no auth. Config at ~/project-nomad/.

ContainerImagePortPurpose
nomad_adminghcr.io/crosstalk-solutions/project-nomad:v1.32.18080Nomad admin UI
nomad_mysqlmysql:8.03306 (internal)Admin DB
nomad_redisredis:7-alpine6379 (internal)Cache / broker
nomad_ollamaollama/ollama:0.24.011434Local LLM runtime (note: GPU-heavy work offloaded to ollamawulf)
nomad_qdrantqdrant/qdrant:v1.166333-6334Vector DB
nomad_kiwix_serverghcr.io/kiwix/kiwix-serve:3.8.28091Offline Wikipedia / zim reader (Firewolf demos pushed here)
nomad_kolibritreehouses/kolibri:0.12.88300Offline education platform
nomad_flatnotesdullage/flatnotes:v5.5.48200Markdown notes
nomad_cyberchefghcr.io/gchq/cyberchef:10.248100Data manipulation toolkit
nomad_dozzleamir20/dozzle:v10.09999Web log viewer for all Docker containers
nomad_updaterghcr.io/crosstalk-solutions/project-nomad-sidecar-updaterSelf-updater sidecar
nomad_disk_collector(local)Disk usage metrics
Tip — Dozzle: http://192.168.100.12:9999 → tail logs of every container in browser. No login configured.
Tip — Firewolf zim push: Firewolf zim demo-staging on firefolf-alpha laptop, deployed into Nomad's kiwix zim dir.
Tip — Ollama: Heavy GPU inference uses ollamawulf (RTX 4060) at tailnet IP 100.72.83.86 — shared by Nomad, onyx, ragflow, stash.

ERPNext

v16 Community ERP. Public at erpnext.silverwulf.work. Bound to 192.168.100.15:8090.

ContainerImagePortPurpose
erpnext-frontend-1frappe/erpnext:v16.15.0192.168.100.15:8090→8080Nginx + asset frontend
erpnext-backend-1frappe/erpnext:v16.15.0Frappe app server (gunicorn)
erpnext-websocket-1frappe/erpnext:v16.15.0Realtime WebSocket
erpnext-scheduler-1frappe/erpnext:v16.15.0Cron / scheduler
erpnext-queue-short-1frappe/erpnext:v16.15.0Short-running RQ worker
erpnext-queue-long-1frappe/erpnext:v16.15.0Long-running RQ worker
erpnext-db-1mariadb:11.83306 (internal)Primary DB
erpnext-redis-cache-1redis:6.2-alpine6379Redis cache
erpnext-redis-queue-1redis:6.2-alpine6379Redis queue

Odoo 18 Community

Rebrandable OSS ERP test. Public at odoo.silverwulf.work.

ContainerImagePortPurpose
odooodoo:18192.168.100.15:8069 (web), 8072 (longpoll)Odoo app
odoo_dbpostgres:165432 (internal)Odoo Postgres

Outline Wiki

Team docs / wiki at port 8095.

ContainerImagePortPurpose
outline-docker-outline-1outlinewiki/outline:latest8095→3000Outline web app
outline-docker-postgres-1postgres:165432 (internal)Outline DB
outline-docker-redis-1redis:76379 (internal)Outline cache

PhishingClub

Phishing simulation / training. Admin UI is HTTPS self-signed — Traefik fronts with insecureSkipVerify.

ContainerImagePortPurpose
phishingclubghcr.io/phishingclub/phishingclub:latest192.168.100.15:80, :443, :8000Single-container app + admin UI

RustDesk Self-Hosted

Bypasses Traefik — Edge router forwards raw TCP/UDP directly to betawulf. rustdesk.silverwulf.work.

ContainerImagePortsPurpose
rustdesk-hbbsrustdesk/rustdesk-server:latest21115-21116/tcp, 21118/tcp, 21116/udpID/rendezvous server
rustdesk-hbbrrustdesk/rustdesk-server:latest21117/tcp, 21119/tcpRelay server

Stash (AI Memory MCP)

Local memory MCP server at localhost:8082/sse. Ollama-backed (nomic-embed-text 768-dim + qwen3.5:9b).

ContainerStatusNote
stash-stash-1Restarting (crash loop)Currently broken — investigate logs docker logs stash-stash-1
stash-postgres-1Exited 2 weeks agoDB stopped — likely cause of stash crash
Action: Stash MCP is down. Postgres exited cleanly 2 wks ago; bring it up first, then stash.

Onyx (Health / Law AI) — STOPPED

DO NOT DELETE. Containers stopped 7 weeks ago, data volumes preserved for future restart.
ContainerStatus
onyx-nginx-1, onyx-web_server-1, onyx-api_server-1, onyx-background-1, onyx-cache-1, onyx-code-interpreter-1, onyx-indexing_model_server-1, onyx-inference_model_server-1, onyx-minio-1, onyx-relational_db-1, onyx-index-1All Exited 7 weeks ago

Infrastructure / Management

Container / ServicePortPurpose
portainer9000 (http), 9443 (https)Docker management UI for all stacks
adguard-secondary(host net)Secondary AdGuard Home DNS filter
nomad_dozzle9999Browser log viewer (all containers)

Host systemd Services (selected)

ServicePurpose
docker.serviceDocker engine — manages 30+ running containers
k3s.serviceSingle-node Kubernetes (pod net 10.42.0.0/24) — used for AWX operator etc.
containerd.serviceContainer runtime backing both Docker and k3s
tailscaled.serviceTailscale daemon — host reachable at 100.91.96.110
ssh.serviceSSH access
cron.serviceScheduled jobs
NetworkManager / systemd-resolvedNetworking + DNS
unattended-upgrades.serviceAuto security patches
sddm.serviceDisplay manager (desktop login)

Key Filesystem Paths

PathContents
~/kobo-install/.run.confKobo install config
~/kobo-docker/Kobo compose files
~/kobo-env/Kobo env files
~/ai/projects/bayou_safety_forms/FoxForm branding + form definitions
~/ai/projects/bayou_safety_forms/.credentials.localMaster FoxForm creds
~/project-nomad/Nomad compose + config
~/odk-central/ODK Central (potential KoboToolbox replacement)
~/outline-docker/Outline wiki compose
~/adguard/AdGuard config
~/docker/Misc docker projects
/root/docker/traefik/dynamic/foxform.yml (on alphawulf)Traefik dynamic config for FoxForm

Tips & Gotchas

Traefik YAML gotcha: Broken YAML in any file under /root/docker/traefik/dynamic/*.yml blocks ALL config reloads — not just the broken one. Validate before saving.
betawulf is test/dev, NOT production. Don't apply production-grade caution by default — feel free to restart, rebuild, experiment.
SSH to alphawulf: hostname does not resolve from betawulf. Use IP 192.168.50.10 directly.
Cross-subnet IP rule: Use 192.168.100.15 (eno2) for any service that needs to be reachable from the alphawulf subnet. .12 is firewalled off.
GPU inference: All heavy LLM workloads point at http://100.72.83.86:11434 (ollamawulf, RTX 4060). Local nomad_ollama on betawulf is CPU-only fallback.
Logs fast: http://192.168.100.12:9999 (Dozzle) is faster than docker logs for browsing.
Container mgmt: https://192.168.100.12:9443 (Portainer) for stack/service control with UI.

Generated 2026-06-02 from live docker ps / systemctl / ip output on betawulf.

Addendum — Alphawulf (Proxmox VM)

Hypervisor

HostAccessNotes
Proxmoxhttps://192.168.50.250:8006/User: root   PW: Ds337! (placeholder — real in Vaultwarden)

Alphawulf Host Overview

ItemValue
Hostnamealphawulf
LAN IP192.168.50.10
Tailscale IP100.84.81.43
Public IP (work)70.186.250.158
Reverse proxyTraefik v3 (ports 80/443), routes by Host() rule
DNSCloudflare (*.silverwulf.com/.work/.org); AdGuard rewrites LAN → 192.168.50.10
Container count~85 running across multiple Docker Compose stacks
Portainerhttps://192.168.50.10:9443   User: wulftech   PW: g@!4orD12337!

How to Access (read first)

Legend: [PUB] public-capable   [LAN] LAN via AdGuard   [TS] Tailscale-only

Infrastructure & Management

ServiceAccessContainerWhat it does
Traefikhttps://traefik.silverwulf.work [LAN]traefikReverse proxy / TLS for every web service; dashboard shows routers & certs
Portainerhttps://192.168.50.10:9443 [LAN][TS]portainerWeb UI to manage Docker containers, stacks, volumes, images
Dozzlehttps://dozzle.silverwulf.org [TS]dozzleLive real-time container log viewer in the browser
Tugtainerhttp://192.168.50.10:9412 [LAN][TS]tugtainerAutomated container image update checker / updater
Uptime Kumahttp://192.168.50.10:3002 [LAN][TS]uptime-kumaUptime / status monitoring with alerting
AdGuard Homehttp://192.168.50.10:3080 [LAN][TS]adguardNetwork DNS + ad-blocking; holds LAN rewrites. Serves DNS on :53
Tailscale(VPN daemon)tailscaleMesh VPN providing 100.84.81.43; secure remote-access path
Homepagehttps://home-alpha.silverwulf.org [TS]homepageService dashboard / launcher landing page
Homelablehttps://homelab.silverwulf.com [TS]homelable-frontend/-backend/-mcpInteractive homelab topology visualizer; MCP at 127.0.0.1:8011

Portal & Landing Sites

ServiceAccessContainerWhat it does
SilverWulf Portalhttps://portal.silverwulf.work [LAN]silverwulf-portalNext.js multi-tenant portal (+ subdomains)
SilverWulf Hubhttps://apps.silverwulf.com [LAN]silverwulf-hubCentral hub linking to all self-hosted apps
Apps1 Dashboardhttps://apps1.silverwulf.com [LAN]apps1-dashboardSecondary app dashboard, protected by basic-auth

Business & Productivity

ServiceAccessContainerWhat it does
Cal.comhttps://cal.silverwulf.com [LAN]calcom + calcom-dbSelf-hosted scheduling / booking (Calendly alt)
n8nhttps://n8n.silverwulf.work [LAN]n8nWorkflow automation platform (Zapier alt)
Planehttps://plane.silverwulf.com [LAN]multi-container stackProject & issue management (Jira/Linear alt)
Nextcloudhttps://nextcloud.silverwulf.com [LAN]nextcloud + -db + -redisPrimary file sync, sharing & collaboration
Bayou Safety NChttps://bayousafety.silverwulf.com [LAN]bayousafety-nextcloud stackDedicated Nextcloud for Bayou Safety client
Scriberrhttps://meetings.silverwulf.work [LAN]scriberrAudio / meeting transcription & notes
DocuSealhttps://sign.silverwulf.com [LAN]docusealDocument e-signature platform
Shelfhttps://shelf.silverwulf.com [LAN]shelfAsset / equipment / inventory management

Document Management

ServiceAccessContainerWhat it does
Paperless-ngxhttp://192.168.50.10:8000 [LAN][TS]paperless + -redisDocument scan / OCR / archive (direct port only)
JDS Paperlesshttps://jdspaperless.silverwulf.work [LAN]jds-paperless stackSeparate Paperless-ngx instance for JDS

Password Managers

ServiceAccessContainerWhat it does
Vaultwardenhttps://vault.silverwulf.com [LAN]vaultwardenSelf-hosted Bitwarden-compatible manager
LeBlanc VWhttps://leblanc.silverwulf.com [LAN]leblanc-vaultwardenDedicated Vaultwarden for LeBlanc (ports 8282/8283)

AI & Knowledge

ServiceAccessContainerWhat it does
Onyxhttps://onyx.silverwulf.work [LAN]onyx stack (10+)AI assistant with semantic search. Cold start ~5 min
Agent Zerohttps://agent.silverwulf.work [LAN]agent-zeroGeneral-purpose autonomous AI agent framework

Public Tools & Utilities

ServiceAccessContainerWhat it does
SearXNGhttps://search.silverwulf.com [PUB]searxngPrivate meta-search engine
SnapOtterhttps://images.silverwulf.com [PUB]snapotterImage toolkit, 45+ tools, local AI
Terrainkhttps://maps.silverwulf.com [PUB]terrainkPoster / print & map design
Excalidrawhttps://draw.silverwulf.com [PUB]excalidrawCollaborative whiteboard / diagrams
Omni Toolshttps://omnitools.silverwulf.com [PUB]omnitoolsEveryday utilities collection
IT-Toolshttps://tools.silverwulf.work [LAN]it-toolsDev/sysadmin utility belt
BentoPDFhttps://pdf.silverwulf.work [LAN]bentopdfPDF manipulation suite
VERThttps://vert.silverwulf.com [PUB]vertLocal file-format converter
SkySendhttps://skysend.silverwulf.com [PUB]skysendSecure file sharing / transfer
DropSynchttps://drop.silverwulf.com [PUB]dropsyncFile drop / sync
Mazanokehttp://192.168.50.10:3474 [LAN][TS]mazanokeIn-browser local image compression

Network Documentation

ServiceAccessContainerWhat it does
NetBoxhttps://netbox.silverwulf.com [LAN][TS]netbox stackIPAM / DCIM, source of truth for IPs/racks/devices. Superuser: admin

Monitoring, Reports & Security

ServiceAccessContainerWhat it does
WulfWatchhttps://wulfwatch.silverwulf.com [LAN]wulfwatchCONTAINER UNHEALTHY — parses email backup reports
Honeypot(passive)honeypot-tarpitTarpit honeypot for unauthorized scanners

Backing Services (internal only, no direct access)

CategoryContainers
Databasescalcom-db, jds-paperless-db, nextcloud-db, bayousafety-nextcloud-db, netbox-postgres-1, plane-db, onyx-relational_db-1
Cachespaperless-redis, jds-paperless-redis, nextcloud-redis, bayousafety-nextcloud-redis, searxng-redis, plane-redis, onyx-cache-1, netbox-redis-1, netbox-redis-cache-1
Onyxonyx-api_server-1, onyx-web_server-1, onyx-background-1, onyx-inference_model_server-1, onyx-indexing_model_server-1, onyx-code-interpreter-1, onyx-index-1 (Vespa), onyx-opensearch-1, onyx-minio-1
Planeplane-api, plane-web, plane-space, plane-admin, plane-live, plane-bgworker, plane-beatworker, plane-mq (RabbitMQ), plane-minio
NetBoxnetbox-netbox-worker-1

Quick Reference — Common Tech Tasks

TaskWhere
See / restart containersPortainer https://192.168.50.10:9443 (or sudo docker ps)
Live logs of a serviceDozzle https://dozzle.silverwulf.org [TS] (or sudo docker logs <name>)
What's up / downUptime Kuma http://192.168.50.10:3002
Verify a route / certTraefik https://traefik.silverwulf.work
DNS / LAN rewritesAdGuard http://192.168.50.10:3080
IP / rack / device dataNetBox https://netbox.silverwulf.com
Remote access to hostTailscale → 100.84.81.43 (SSH or service ports)
Compose stack paths: Most live under /home/silverwulf/ (portal, public-tools, nextcloud, netbox, leblanc-vaultwarden, etc.). Onyx is at /home/silverwulf/onyx/deployment and requires sudo for docker.

Alphawulf addendum last documented 2026-06-02.