tim
1a6f915f04
Add paired specification.json and specification.html generator
...
Single SPEC source regenerates machine-readable JSON for agents and
dark HTML for humans so architecture survives lost chat sessions.
2026-07-22 19:54:42 -07:00
tim
0108868a2c
Document all post-secret-change update procedures
...
Add a single quickstart table covering Cloudflare DDNS, Usenet, NZBgeek,
WireGuard, stack .env, and bootstrap; point secrets/.env.example and
AGENTS.md at the same workflow.
2026-07-22 19:48:56 -07:00
tim
be8d21ab3d
Fix cloudflare-ddns env_file path for compose
...
Use project-relative ./config/cloudflare-ddns/ddns.env so the container
loads the rendered token and IP4_DOMAINS (not empty config.json mode).
2026-07-22 19:36:22 -07:00
tim
c130080c52
Add Cloudflare DDNS for devopshomelab.com (IPv4 A records)
...
timothyjmiller/cloudflare-ddns with host networking; render env from
secrets (apex + subdomains mc/minecraft/vpn/www/forgejo/jellyfin).
2026-07-22 19:35:21 -07:00
tim
60f8a89c87
Landing page: always use absolute http:// service URLs
...
Show full http://host:port links on every card, fall back from localhost
to the LAN IP, and warn about HTTPS-only browsers breaking plain HTTP.
2026-07-22 19:15:30 -07:00
tim
7e5444a177
Commit Beelink mini defaults: CPU inference, 32k context
...
Stop forcing Vulkan NGL in compose override (that overrode .env).
Raise mini profile context to 32768 for ~28–32GB RAM hosts.
2026-07-22 19:11:20 -07:00
tim
84a0945b10
Align quickstart first-start section with profile bootstrap
...
Replace legacy download-bonsai-only steps with apply-profile and
bootstrap-stack; note mini CPU vs mid/gaming Vulkan.
2026-07-22 19:03:36 -07:00
tim
7982d43394
Finish profile defaults in .env.example (CPU mini + Qwen catalog)
...
Align example env with mini defaults and dual-model download flags.
2026-07-22 19:01:23 -07:00
tim
a729ff14e9
Add mini/mid/gaming hardware profiles and always-on full stack
...
Profiles select CPU vs Vulkan and Bonsai-27B vs Qwen3.5-9B Abliterated
Q4_K_M. OpenHands is no longer optional; compose deploys every service.
download-models.sh fetches both GGUF families as the profile requests.
2026-07-22 19:00:59 -07:00
tim
3bf1726a99
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.
2026-07-22 13:06:08 -07:00
tim
56ddb349b4
Add Caddy landing page with dark LAN service map
...
Newbie-friendly index of media, download, AI, and git services with
short how-to blurbs; served on port 80 for other PCs on the network.
2026-07-22 13:00:21 -07:00
tim
ceba76df85
Map Tweaknews secret variable aliases in configure-usenet
...
Accept TWEAKNEWSLOGIN, TWEAKNEWSPASSWORD, TWEAKNEWSAPI (as host),
TWEAKNEWSSSLPORT, and TWEAKNEWSCONNECTIONS from secrets/.env.
2026-07-22 12:48:07 -07:00
tim
d55f3220d9
Fix sabnzbd compose: define arr-env anchor before use
...
Move SABnzbd after prowlarr so the YAML anchor resolves.
2026-07-22 12:00:16 -07:00
tim
07ae1c0c71
Add SABnzbd for Usenet NZB search and download
...
Wire Newshosting/Tweaknews via secrets-driven configure script, NZBgeek
through Prowlarr, and /data/usenet paths for hardlinks with the Arrs.
2026-07-22 11:59:51 -07:00
tim
0601de7217
Use OnCalendar for gluetun endpoint watch timer
...
OnUnitActiveSec alone left NEXT unset after enable; calendar every
five minutes schedules reliably after boot.
2026-07-22 11:19:01 -07:00
tim
218e64314d
Add gluetun endpoint watcher (5-minute systemd timer)
...
When gluetun is unhealthy, re-dig the WireGuard peer hostname, update
wg0.conf Endpoint, recreate gluetun then qbittorrent, and verify the
VPN exit IP. Keeps torrent path alive when provider endpoints rotate.
2026-07-22 11:18:39 -07:00
tim
b55754ee49
Document gluetun unhealthy caused by stale WireGuard endpoint IP
...
Note re-resolving provider endpoints and PersistentKeepalive when the
tunnel sets up but healthchecks fail with DNS i/o timeouts.
2026-07-22 11:15:35 -07:00
tim
90f3cf62c5
Make /opt/stack a Forgejo git checkout instead of rsync-only
...
Prefer stack_deploy_method=git: init/fetch on the server, register an
SSH deploy key with Forgejo, and leave local secrets untracked. Document
git pull for day-to-day updates; keep rsync as an opt-in fallback.
2026-07-22 11:12:07 -07:00
tim
6c9e085cbd
Fix Ansible stack deploy rsync chgrp permission errors
...
Skip owner/group preservation when syncing as non-root; Docker-owned
files under /opt/stack caused rsync code 23. Ownership is fixed after.
2026-07-22 11:09:04 -07:00
tim
38eaa43d04
Add FlareSolverr for Cloudflare challenges on Prowlarr indexers
...
Provides a browser proxy on arr-net so indexers behind Cloudflare JS
challenges can work; document limits (not a universal captcha solver).
2026-07-22 07:40:41 -07:00
tim
84902d5cb5
Document connecting OpenHands to Forgejo
...
Cover the Forgejo/Gitea provider (token + Docker DNS) and the workspace
clone path used with SANDBOX_VOLUMES for day-to-day coding.
2026-07-22 06:36:41 -07:00
tim
112cf3a2bf
Document agent convention: commit and push to Forgejo after changes
...
Keeps the stack repo on the home Forgejo instance in sync when the
coding agent edits the project.
2026-07-22 06:32:54 -07:00
tim
3645d1314c
Initial commit: arr-stack homelab + local AI
...
Docker Compose media stack (gluetun, *arr, Jellyfin), Ternary-Bonsai AI
(Open WebUI, Forgejo, optional OpenHands), and Ansible bootstrap for the
SER5 Ubuntu host.
2026-07-22 06:28:49 -07:00