Centralize demo config in .env and add bootstrap-stack.sh
Expand .env.example with ports, AI, Usenet, WireGuard, demo logins, and bootstrap flags. One script creates dirs, downloads the model, starts compose, heals gluetun, and configures SABnzbd from the same file.
This commit is contained in:
parent
56ddb349b4
commit
3bf1726a99
7 changed files with 410 additions and 76 deletions
195
.env.example
195
.env.example
|
|
@ -1,88 +1,167 @@
|
|||
# Copy to .env and adjust. The compose file reads these values.
|
||||
################################################################################
|
||||
# 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
|
||||
################################################################################
|
||||
|
||||
# --- user / group that owns your media (run `id` on the host) ---
|
||||
# =============================================================================
|
||||
# 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
|
||||
|
||||
# --- your timezone (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) ---
|
||||
TZ=Europe/Berlin
|
||||
|
||||
# --- host paths (relative to this folder is fine) ---
|
||||
# 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
|
||||
|
||||
# --- your LAN subnet, so the qBittorrent WebUI stays reachable through
|
||||
# gluetun's firewall. If your machine is 192.168.1.50, use 192.168.1.0/24
|
||||
LAN_SUBNET=192.168.1.0/24
|
||||
# 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
|
||||
|
||||
# WireGuard peer hostname (used by scripts/gluetun-endpoint-watch.sh when gluetun is unhealthy)
|
||||
# =============================================================================
|
||||
# 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 on SER5 PRO / Ryzen 7735HS)
|
||||
# Local AI — Ternary-Bonsai-27B
|
||||
# =============================================================================
|
||||
|
||||
# GGUF weights directory (populated by scripts/download-bonsai-model.sh)
|
||||
BONSAI_MODELS_DIR=./models/bonsai
|
||||
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
|
||||
|
||||
# cpu (default) or vulkan — rebuild image after changing:
|
||||
# BONSAI_BACKEND=vulkan docker compose build --no-cache bonsai
|
||||
BONSAI_BACKEND=cpu
|
||||
|
||||
# GPU layers: 0 = CPU only. With vulkan image + /dev/dri, try 99.
|
||||
BONSAI_NGL=0
|
||||
|
||||
# Context size. 16384 is a solid default on 32–64 GB RAM with the Arr stack.
|
||||
# Raise for long docs / repo work; set BONSAI_KV4=1 if you run OOM.
|
||||
# Inference: vulkan on AMD iGPU; cpu for safe fallback
|
||||
BONSAI_BACKEND=vulkan
|
||||
BONSAI_NGL=99
|
||||
BONSAI_CTX=16384
|
||||
BONSAI_KV4=0
|
||||
|
||||
# Leave 0 for auto threads, or e.g. 12 on 16-thread 7735HS to leave headroom
|
||||
BONSAI_THREADS=0
|
||||
|
||||
# Sampling (Prism 27B thinking-mode defaults)
|
||||
BONSAI_THREADS=12
|
||||
BONSAI_TEMP=0.7
|
||||
BONSAI_TOP_P=0.95
|
||||
BONSAI_TOP_K=20
|
||||
|
||||
# Host port for llama-server API (OpenAI-compatible at /v1)
|
||||
BONSAI_PORT=8081
|
||||
BONSAI_EXTRA_ARGS=
|
||||
|
||||
# Open WebUI
|
||||
OPEN_WEBUI_PORT=3000
|
||||
OPENAI_API_KEY=sk-local-bonsai
|
||||
# true = login required (recommended); false = open LAN access
|
||||
WEBUI_AUTH=true
|
||||
OPENWEBUI_DEFAULT_MODEL=openai/Ternary-Bonsai-27B-Q2_0.gguf
|
||||
RAG_EMBEDDING_ENGINE=
|
||||
RAG_CHUNK_SIZE=1000
|
||||
RAG_CHUNK_OVERLAP=100
|
||||
|
||||
# Folder mounted read-only into Open WebUI as /workspace (RAG + file Q&A)
|
||||
# Point this at your git projects, notes, docs, etc.
|
||||
AI_WORKSPACE_DIR=./workspace
|
||||
# SearXNG
|
||||
SEARXNG_SECRET=demo-searxng-secret-change-me
|
||||
|
||||
# SearXNG (web search for RAG) — published on localhost only
|
||||
SEARXNG_PORT=8888
|
||||
SEARXNG_SECRET=change-me-to-a-long-random-string
|
||||
# OpenHands (compose profile: coding)
|
||||
OPENHANDS_MODEL=openai/Ternary-Bonsai-27B-Q2_0.gguf
|
||||
# true = also start openhands in bootstrap
|
||||
START_OPENHANDS=false
|
||||
|
||||
# OpenHands coding agent (docker compose --profile coding up -d)
|
||||
OPENHANDS_PORT=3001
|
||||
# LiteLLM-style id; after first start check http://host:8081/v1/models
|
||||
OPENHANDS_MODEL=openai/local
|
||||
# =============================================================================
|
||||
# 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
|
||||
|
||||
# FlareSolverr (Cloudflare helper for Prowlarr; internal only)
|
||||
# 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
|
||||
|
||||
# SABnzbd (Usenet) — credentials in secrets/.env, not here
|
||||
SABNZBD_PORT=8085
|
||||
|
||||
# Caddy landing page (LAN service map)
|
||||
LANDING_PORT=80
|
||||
|
||||
# Forgejo — self-hosted Git (web + SSH clone)
|
||||
FORGEJO_HTTP_PORT=3002
|
||||
FORGEJO_SSH_PORT=2222
|
||||
FORGEJO_DOMAIN=192.168.8.123
|
||||
FORGEJO_ROOT_URL=http://192.168.8.123:3002/
|
||||
# true after you create the admin account (blocks random signups)
|
||||
FORGEJO_DISABLE_REGISTRATION=false
|
||||
# =============================================================================
|
||||
# Bootstrap behaviour (scripts/bootstrap-stack.sh)
|
||||
# =============================================================================
|
||||
# compose profiles to enable: empty, or coding
|
||||
COMPOSE_PROFILES=
|
||||
# After containers are up, run configure-usenet.sh
|
||||
CONFIGURE_USENET=true
|
||||
# Recreate gluetun/qbittorrent if unhealthy after start
|
||||
HEAL_GLUETUN=true
|
||||
# Pull images before up
|
||||
COMPOSE_PULL=true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue