################################################################################ # arr-stack — single config file for a tech demo / fresh host # Copy to .env and edit. Compose + bootstrap scripts read this file. # # Demo credentials (all local UIs): DEMO_USER / DEMO_PASS (default tim / asdfasdf) # Security is intentionally weak for demos. Change before any real exposure. # # Fresh rebuild checklist: # 1. Put a valid wireguard/wg0.conf (Endpoint IP + # EndpointHost = hostname) # 2. cp .env.example .env && edit paths / host IP / usenet keys # 3. ./scripts/bootstrap-stack.sh ################################################################################ # ============================================================================= # Hardware profile — apply with: ./scripts/apply-profile.sh mini|mid|gaming # mini = Beelink-class (CPU, Ternary-Bonsai-27B) # mid = 8GB AMD GPU / 16GB RAM (Vulkan, Qwen3.5-9B Abliterated Q4_K_M) # gaming = 16GB AMD GPU / 64GB RAM (Vulkan, Ternary-Bonsai-27B + Qwen download) # Full stack always deploys (no compose profiles to opt in). # ============================================================================= STACK_PROFILE=mini # ============================================================================= # Demo mode & shared login # ============================================================================= DEMO_MODE=true DEMO_USER=tim DEMO_PASS=asdfasdf # Used as OpenAI-compatible key for Bonsai / OpenHands / Open WebUI connections OPENAI_API_KEY=sk-local-bonsai # ============================================================================= # Host identity & paths # ============================================================================= PUID=1000 PGID=1000 TZ=America/Los_Angeles # Production-style (server): # CONFIG_DIR=/opt/stack/config # DATA_DIR=/storage # BONSAI_MODELS_DIR=/opt/stack/models/bonsai # AI_WORKSPACE_DIR=/opt/stack/workspace # Laptop / relative demo: CONFIG_DIR=./config DATA_DIR=./data BONSAI_MODELS_DIR=./models/bonsai AI_WORKSPACE_DIR=./workspace # LAN used by gluetun FIREWALL_OUTBOUND_SUBNETS (qBittorrent WebUI from LAN) LAN_SUBNET=192.168.8.0/24 # Public hostname/IP other PCs use to open UIs (landing page, Forgejo ROOT_URL, …) STACK_HOST=192.168.8.123 # ============================================================================= # Published ports (host → service) # ============================================================================= LANDING_PORT=80 QB_WEBUI_PORT=8080 JELLYFIN_PORT=8096 SONARR_PORT=8989 RADARR_PORT=7878 LIDARR_PORT=8686 BAZARR_PORT=6767 PROWLARR_PORT=9696 SABNZBD_PORT=8085 OPEN_WEBUI_PORT=3000 BONSAI_PORT=8081 OPENHANDS_PORT=3001 FORGEJO_HTTP_PORT=3002 FORGEJO_SSH_PORT=2222 SEARXNG_PORT=8888 # ============================================================================= # WireGuard / gluetun # ============================================================================= # Peer hostname for gluetun-endpoint-watch (must match provider; dig when unhealthy) WIREGUARD_ENDPOINT_HOST=las-183-wg.whiskergalaxy.com WIREGUARD_ENDPOINT_PORT=443 # Path to conf mounted into gluetun (create before first up) WIREGUARD_CONF=./wireguard/wg0.conf # ============================================================================= # Local AI — Ternary-Bonsai-27B # ============================================================================= BONSAI_MODEL_PATH=/models/Ternary-Bonsai-27B-Q2_0.gguf BONSAI_HF_REPO=prism-ml/Ternary-Bonsai-27B-gguf BONSAI_MAIN_FILE=Ternary-Bonsai-27B-Q2_0.gguf # Download model during bootstrap-stack.sh DOWNLOAD_MODEL=true DOWNLOAD_VISION=true DOWNLOAD_DRAFTER=false # Inference: vulkan on AMD iGPU; cpu for safe fallback BONSAI_BACKEND=vulkan BONSAI_NGL=99 BONSAI_CTX=16384 BONSAI_KV4=0 BONSAI_THREADS=12 BONSAI_TEMP=0.7 BONSAI_TOP_P=0.95 BONSAI_TOP_K=20 BONSAI_EXTRA_ARGS= # Open WebUI WEBUI_AUTH=true OPENWEBUI_DEFAULT_MODEL=openai/Ternary-Bonsai-27B-Q2_0.gguf RAG_EMBEDDING_ENGINE= RAG_CHUNK_SIZE=1000 RAG_CHUNK_OVERLAP=100 # SearXNG SEARXNG_SECRET=demo-searxng-secret-change-me # OpenHands (compose profile: coding) OPENHANDS_MODEL=openai/Ternary-Bonsai-27B-Q2_0.gguf # true = also start openhands in bootstrap START_OPENHANDS=false # ============================================================================= # Forgejo # ============================================================================= FORGEJO_DOMAIN=${STACK_HOST} FORGEJO_ROOT_URL=http://${STACK_HOST}:3002/ FORGEJO_DISABLE_REGISTRATION=false # First-run admin (set after install or via bootstrap when API allows) FORGEJO_ADMIN_USER=${DEMO_USER} FORGEJO_ADMIN_PASS=${DEMO_PASS} FORGEJO_ADMIN_EMAIL=tim@stack.local # Git remote used by server /opt/stack (see stack_deploy_method: git) STACK_GIT_REPO=ssh://git@127.0.0.1:2222/tim/stack.git STACK_GIT_BRANCH=main # ============================================================================= # Usenet / NZB (also read by scripts/configure-usenet.sh) # Prefer these names; legacy aliases still work (see configure-usenet.sh) # ============================================================================= # NZBgeek indexer (Prowlarr) NZBGEEKUSERNAME= NZBGEEKEMAIL= NZBGEEKAPI=https://api.nzbgeek.info/ NZBKEEPKEY= # aliases: NZBGEEK_API_KEY # Newshosting NEWSHOSTINGAPI=news.newshosting.com NEWSHOSTINGSSLPORT=563 NEWSHOSTINGUSER= HNEWSHOSTINGPASS= NEWSHOSTINGCONNECTIONS=20 # Tweaknews TWEAKNEWSAPI=news.tweaknews.eu TWEAKNEWSSSLPORT=563 TWEAKNEWSLOGIN= TWEAKNEWSPASSWORD= TWEAKNEWSCONNECTIONS=40 # ============================================================================= # FlareSolverr # ============================================================================= FLARESOLVERR_LOG_LEVEL=info FLARESOLVERR_CAPTCHA_SOLVER=none # ============================================================================= # Bootstrap behaviour (scripts/bootstrap-stack.sh) # ============================================================================= # Full stack always starts — no COMPOSE_PROFILES required CONFIGURE_USENET=true HEAL_GLUETUN=true COMPOSE_PULL=true