Commit graph

18 commits

Author SHA1 Message Date
Brian Pooe
1815beadf4 refactor: restructure docs, sync stacks with Caddyfile, harden compose templates
- Add compose stacks for apps already proxied by Caddy: bento-pdf,
  it-tools, paperless-ngx, and beszel-hub (with Makefile targets)
- Remove the unused Vault stack and the drawio Caddyfile block
- Fix Caddyfile gramps upstream to port 80 to match the compose file
- Bring immich and gramps-web up to the shared template pattern
  (no-new-privileges, log rotation, memory limits, healthchecks)
- Single-quote vaultwarden SSO_AUDIENCE_TRUSTED so regex values like
  ^\d{18}$ render as valid YAML
- Move root docs into kebab-case topic folders, rebuild the docs index
  to cover every doc, and fix all broken links
2026-07-03 17:45:16 +02:00
Brian Pooe
f5a1c53713 chore: track .env.sample files for all stacks
Now that .gitignore allows docker-compose-files/**/.env.sample, add the
existing sample files that were previously untracked.
2026-07-02 22:28:44 +02:00
Brian Pooe
bba03c675a Fix arr-stack OOM kills and decluttarr auth for 25 GB downloads
- qbittorrent memory limit 1G → 3G: piece-verification buffers for 25 GB+
  torrents exceed 1G and trigger cgroup OOM kill mid-download
- bazarr, prowlarr, seerr limits 512M → 1G: all three were at 40-67% at
  idle with insufficient headroom for subtitle batch events, RSS floods,
  and Emby library syncs respectively
- Add *media-data-mount and storage-guard dependency to decluttarr so
  detect_deletions can access /data/media paths
- Fix decluttarr auth ban loop: add Docker bridge 172.18.0.0/16 to
  qBittorrent WebUI auth subnet whitelist (applied live via API)
- Update README mount table (Decluttarr now gets /data/media), memory
  limit table with per-service rationale sized for 25 GB average files
- Add TROUBLESHOOTING sections 5e-5j covering qBittorrent path issues,
  OOM kill pattern, and decluttarr auth ban loop with fixes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 17:52:19 +02:00
Brian Pooe
34da2eb196 Document deployment lessons from arr-stack LXC build
Four issues encountered during the arr-stack LXC 101 deployment that were not
covered or not clear enough in existing docs:

PROXMOX-NVIDIA-LXC.md — expanded Section 4 into four explicit sub-steps:
  4a: copy installer into LXC via pct push (it lives on the Proxmox host)
  4b: install userspace libs with --no-kernel-module then run ldconfig
  4c: install Container Toolkit (must come after libs, not before)
  4d: switch runtime mode auto→legacy with clear explanation of why CDI fails
      in an LXC even after the libraries are installed

TROUBLESHOOTING.md — new section 5c for the stale gluetun namespace error:
  "joining network namespace of container: No such container"
  Cause: gluetun recreated with new container ID, qbittorrent holds old ID
  Fix: docker rm -f qbittorrent && docker compose up -d qbittorrent
  Renumbered old 5c (HTTPS 502) to 5d

arr-stack README.md — AirVPN preshared key warning in the Installation section:
  AirVPN generates per-server preshared keys; the built-in airvpn provider
  selects a server dynamically so the key never matches → silent VPN failure.
  Documents when and how to use VPN_SERVICE_PROVIDER=custom with a pinned server.

DEPLOYMENT.md — two new sections:
  Section 9: Set a Static IP — via Proxmox .conf net0 line, not inside the LXC
  Section 10: Rename a Container (VMID change) — lvrename + conf file swap

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 15:44:30 +02:00
Brian Pooe
8b546ac123 Support Gluetun custom provider and document NVIDIA legacy mode for LXC
- Add optional WIREGUARD_PUBLIC_KEY, WIREGUARD_ENDPOINT_IP, WIREGUARD_ENDPOINT_PORT
  to gluetun template so custom provider renders cleanly without manual patching
- Make SERVER_COUNTRIES optional (:-) so re-renders don't fail for custom provider
- Document the required mode = "legacy" change in /etc/nvidia-container-runtime/config.toml
  for NVIDIA Container Toolkit in a privileged LXC; the default "auto" CDI mode fails
  until userspace libraries are installed and the mode is explicitly set to legacy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 15:20:54 +02:00
Brian Pooe
e02f79092f Fix arr-stack docs for real-world UNAS NFSv3 constraints
Correct DEPLOYMENT.md fstab entry (vers=3, UUID path, 10.0.10.25) and
add No Root Squash requirement note to the chown step. Fix arr-stack
README to document host-side chown from a privileged LXC instead of
the incorrect unprivileged-LXC warning. Also carries forward nfs-mounts.md
from the previous session.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 14:23:25 +02:00
Brian Pooe
fc2d5b24ca Standardize UNAS share naming to underscores (arr_data) 2026-06-16 18:08:58 +02:00
Brian Pooe
7dd49a94ab Streamline documentation for privileged LXC and GPU support 2026-06-16 18:01:02 +02:00
Brian Pooe
a8c22c8267 Integrate NVIDIA GPU passthrough for Proxmox 9 and arr-stack 2026-06-16 17:15:53 +02:00
Brian Pooe
396df066d4 Document Recyclarr bootstrap sequence 2026-06-15 22:16:56 +02:00
Brian Pooe
b0730b342f Align Arr Stack storage with TRaSH Guides 2026-06-15 22:12:17 +02:00
Brian Pooe
21db349dbd Document Arr Stack environment variables 2026-06-15 21:54:29 +02:00
Brian Pooe
2547531125 Document LXC sizing and Gateway exceptions 2026-06-15 21:49:28 +02:00
Brian Pooe
708f260cfc Standardize stack deployment guides 2026-06-15 10:53:29 +02:00
Brian Pooe
d99d21263a fix: documentation alignment to new hardware 2026-06-12 18:14:16 +02:00
Brian Pooe
ad260360dc feat: adapt arr storage for Proxmox LXC 2026-06-11 21:20:58 +02:00
Brian Pooe
c21ec44583 feat: add per-stack template files and homeassistant stack
Fixes .gitignore to track the new folder-per-stack layout introduced in
the previous refactor commit. The old rule only whitelisted *_template.*
filenames; templates named template.yaml and config/ files were silently
ignored, leaving the repository missing most of its content.

.gitignore
- Whitelist docker-compose-files/**/template.* so the canonical
  template.yaml / template.yml naming is tracked
- Whitelist docker-compose-files/**/config/** so per-stack config
  templates (mosquitto.conf, zigbee2mqtt_configuration.yaml, etc.)
  are tracked alongside their compose template

New stack templates (all migrated from *_template.yaml flat files)
- arr-stack/template.yaml
- beszel-agent/template.yaml
- gramps-web/template.yaml
- postgres/template.yaml — volumes switched from {{DOCKERCONFDIR}} to
  relative ./appdata/ paths (DOCKERCONFDIR reserved for arr-stack only)
- socket-proxy/template.yaml
- technitium/template.yaml
- vault/template.yaml — same DOCKERCONFDIR → ./appdata/ migration

New homeassistant stack
- homeassistant/template.yaml — Home Assistant + Eclipse Mosquitto 2.x +
  Zigbee2MQTT on a shared bridge network (ha-network) so all services
  are reachable by container name (mqtt:1883, zigbee2mqtt:8080)
- homeassistant/config/mosquitto.conf — Mosquitto 2.x config with
  explicit listener declarations (required since 2.0), persistence, and
  WebSocket listener on 9001
- homeassistant/config/zigbee2mqtt_configuration.yaml — Zigbee2MQTT 2.x
  config for SMLIGHT SLZB-06U over PoE+ (TCP socket via {{SLZB06_HOST}}:6638,
  adapter: ember for Silicon Labs EFR32, MQTT via container name mqtt:1883)
2026-03-29 21:18:43 +02:00
Brian Pooe
d102a532ef refactor: organize by stack 2026-03-29 21:09:33 +02:00