mini
Beelink / SER5-class mini PC
- Inference: cpu (ngl=0)
- Context: 32768
- Model:
Ternary-Bonsai-27B-Q2_0.gguf - CPU preferred on APU; do not force NGL in docker-compose.override.yml
Docker Compose stack combining VPN-locked torrents (*arr + qBittorrent via gluetun), Usenet (SABnzbd), media (Jellyfin), local LLM inference (Prism llama-server + Open WebUI), Forgejo git, OpenHands agent, Caddy LAN landing page, and Cloudflare DDNS.
http://192.168.8.123/ (Caddy landing)tim · OS: Ubuntu Server 24.04tim / asdfasdfApply with ./scripts/apply-profile.sh mini|mid|gaming
Beelink / SER5-class mini PC
Ternary-Bonsai-27B-Q2_0.gguf~8GB AMD discrete GPU, ~16GB system RAM
Qwen3.5-9B-abliterated-v2-MAX.Q4_K_M.gguf~16GB AMD GPU, ~64GB system RAM
Ternary-Bonsai-27B-Q2_0.ggufAll services deploy by default (docker compose up -d). Replace HOST with 192.168.8.123. Links use plain http:// (no TLS).
| ID | Name | Category | Port | URL | Purpose |
|---|---|---|---|---|---|
landing | Landing (Caddy) | gateway | 80 | http://192.168.8.123/ | Dark-mode LAN resource map |
gluetun | gluetun | vpn | — | — | WireGuard VPN + killswitch |
qbittorrent | qBittorrent | download | 8080 | http://192.168.8.123:8080/ | Torrent client (VPN-only via gluetun) |
sabnzbd | SABnzbd | download | 8085 | http://192.168.8.123:8085/ | Usenet NZB downloader |
prowlarr | Prowlarr | download | 9696 | http://192.168.8.123:9696/ | Indexer manager (torrents + NZB) |
flaresolverr | FlareSolverr | download | 8191 | http://flaresolverr:8191 (internal) | Cloudflare JS challenge proxy for Prowlarr |
sonarr | Sonarr | media | 8989 | http://192.168.8.123:8989/ | TV automation |
radarr | Radarr | media | 7878 | http://192.168.8.123:7878/ | Movie automation |
lidarr | Lidarr | media | 8686 | http://192.168.8.123:8686/ | Music automation |
bazarr | Bazarr | media | 6767 | http://192.168.8.123:6767/ | Subtitles |
jellyfin | Jellyfin | media | 8096 | http://192.168.8.123:8096/ | Media server / playback |
bonsai | Bonsai (llama-server) | ai | 8081 | http://192.168.8.123:8081/v1 | Local LLM OpenAI-compatible API (Prism build) |
open-webui | Open WebUI | ai | 3000 | http://192.168.8.123:3000/ | Chat UI + RAG + tools |
searxng | SearXNG | ai | 8888 | http://127.0.0.1:8888/ (localhost only) | Private search for Open WebUI RAG |
openhands | OpenHands | ai | 3001 | http://192.168.8.123:3001/ | AI coding agent (always deployed) |
forgejo | Forgejo | code | 3002 | http://192.168.8.123:3002/ | Self-hosted Git |
cloudflare-ddns | Cloudflare DDNS | dns | — | — | Update public IPv4 A records for domain + subdomains |
generate-specification.py — Regenerate specification.json + specification.html (this file)apply-profile.sh — Merge profiles/{mini,mid,gaming}.env into .envbootstrap-stack.sh — Fresh bring-up: dirs, models, compose up all, heal gluetun, usenet, cloudflaredownload-models.sh — Download Bonsai 27B and/or Qwen 9B GGUF into models/bonsaidownload-bonsai-model.sh — Wrapper → download-models.shconfigure-usenet.sh — SABnzbd folders + Newshosting/Tweaknews from secrets/.envrender-cloudflare-ddns-env.sh — Build config/cloudflare-ddns/ddns.env from secretsgluetun-endpoint-watch.sh — If gluetun unhealthy: dig WG host, update Endpoint, recreate gluetun+qbitEdit secrets/.env first, then:
./scripts/render-cloudflare-ddns-env.shdocker compose up -d cloudflare-ddns --force-recreate./scripts/configure-usenet.shTest servers in SABnzbd UIUpdate API key in Prowlarr UIEdit wireguard/wg0.confdocker compose up -d gluetun --force-recreateor ./scripts/gluetun-endpoint-watch.shEdit .envdocker compose up -d (+ build bonsai if backend changes)cp .env.example .env; fill STACK_HOST, LAN_SUBNET, usenet, cloudflare keysPlace wireguard/wg0.conf (Endpoint IP + # EndpointHost = hostname)./scripts/apply-profile.sh mini|mid|gaming./scripts/bootstrap-stack.shOne-time UI: Prowlarr apps, Jellyfin libraries, Forgejo/Open WebUI admin (demo user/pass)cd /opt/stack && git pulldocker compose up -drebuild bonsai if Dockerfile/profile backend changedansible/site.ymlcommon, docker, amd_vulkan, firewall, stack, users.envsecrets/.envwireguard/wg0.confconfig/models/**/*.ggufdata/