Commit Graph
122 Commits
Author SHA1 Message Date
ginnoirandClaude Sonnet 4.6 a1c57ca899 feat: add Nextcloud + OnlyOffice files stack
Deploy Caddyfile to valhalla / deploy (push) Successful in 2m20s
Replaces ownCloud with Nextcloud (postgres + redis) and adds OnlyOffice
Document Server for Google Docs-style editing. Migration is staged:
nextcloud.ginnoir.com for testing, files.ginnoir.com still points at
ownCloud until cutover is verified.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 22:55:00 -05:00
ginnoirandClaude Sonnet 4.6 a937de7bda docs: document Authentik OIDC standard for new services
Pattern A (native OAuth2) is preferred — create provider + app in
Authentik, configure service with discovery URL. Pattern B (Caddy
forward_auth) is the fallback for services with no native auth.
Reusable Authentik flow/scope PKs pinned so they don't need re-deriving.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 22:44:59 -05:00
ginnoirandClaude Sonnet 4.6 acdf61500c chore(plans): mark TB-019 Immich done
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 22:21:36 -05:00
ginnoirandClaude Sonnet 4.6 dbe4a95059 feat(photos): add Immich stack
Deploy Caddyfile to valhalla / deploy (push) Successful in 46s
Self-hosted photo backup at photos.ginnoir.com (internal/tailnet only).
Server + machine-learning + postgres (vectorchord) + redis.
Upload storage: /storage1/labdata/immich/upload (ZFS).
DB/model-cache: /config/immich/ (SSD).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 22:15:28 -05:00
ginnoirandClaude Sonnet 4.6 11f51559b0 chore(plans): record new service decisions and drop list
New services: all in except TB-020 Mealie (deferred to famapp).
Active interest: TB-015 Vault, TB-027 Jellyfin, TB-028 HA, TB-031 Pingvin.
Dropped: TB-017 MinIO consolidation, TB-018 Plane, TB-029 Firefly III,
TB-030 AdGuard (handled at router), TB-032 Wiki.js (using BookStack).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 22:08:55 -05:00
ginnoirandClaude Sonnet 4.6 c6e8af7e62 chore(media): remove maintainerr
Deploy Caddyfile to valhalla / deploy (push) Successful in 48s
Too complex to configure for the use case; not worth the overhead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 22:03:12 -05:00
ginnoirandClaude Sonnet 4.6 29d04980fd feat(media): update maintainerr to v3 (new GHCR org)
Image moved from ghcr.io/jorenn92/maintainerr to ghcr.io/maintainerr/maintainerr
with the v3.x release series. v3 runs its own DB migrations on startup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 21:35:26 -05:00
ginnoirandClaude Sonnet 4.6 fb3938c71b feat: migrate Overseerr → Seerr
Deploy Caddyfile to valhalla / deploy (push) Successful in 1m20s
Replace sctx/overseerr:latest with ghcr.io/seerr-team/seerr:latest.
Same port (5055), same config volume (/config/overseerr:/app/config) —
Seerr auto-migrates the DB on first boot. Add init: true as required.
Rename container overseerr → seerr; update Caddy upstream to match.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 21:00:09 -05:00
ginnoirandClaude Sonnet 4.6 1bc648f33b fix(maintainerr): correct data volume path and enable TLS bypass for Plex
- Mount /config/maintainerr to /opt/data (actual DB location, not /opt/maintainerr/data)
- Add NODE_TLS_REJECT_UNAUTHORIZED=0 so Node.js accepts Plex's self-signed cert
- Mark TB-007/008/009/012/013/016 tasks as done/dropped in improvement plan

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 20:52:06 -05:00
ginnoir 79b99cf883 docs: document plex as external systemd service on valhalla 2026-06-15 20:27:48 -05:00
ginnoir f923cd5b49 feat(media): add maintainerr for stale overseerr request cleanup
Deploy Caddyfile to valhalla / deploy (push) Successful in 1m11s
2026-06-15 20:25:51 -05:00
ginnoir 8ef2f689f6 chore(media): retire deluge, qbit is the sole torrent client
Deploy Caddyfile to valhalla / deploy (push) Successful in 1m7s
2026-06-15 20:19:16 -05:00
ginnoir 76679dd030 fix(code-server): scope mount to projects dir and ai extension configs 2026-06-15 20:15:38 -05:00
ginnoir ecf5c955f3 feat: add wa4.ginnoir.com chest checklist static site
Deploy Caddyfile to valhalla / deploy (push) Successful in 46s
2026-06-15 02:06:39 -05:00
ginnoirandClaude Sonnet 4.6 a44adc4814 docs: document gitea-first homelab deploys
Switch CLAUDE.md and AGENTS.md to Gitea-primary language. Remove
github-runner from the management plane now that Gitea Actions handles
Caddy reloads and famapp builds. Disable GitHub deploy workflow.
Update apply-compose.ps1 status text.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 00:38:15 -05:00
ginnoirandClaude Sonnet 4.6 e3937dcf52 fix(famapp): pull image from valhalla registry
Switch famapp container from ghcr.io/ginnoir/famapp:latest to
registry.ginnoir.com/ginnoir/famapp:latest.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 00:17:28 -05:00
ginnoirandClaude Sonnet 4.6 fb4de751ed fix: alias gitea.ginnoir.com on Caddy for Portainer go-git TLS
Portainer go-git resolves gitea.ginnoir.com inside Docker. Alias was on
the gitea container → port 443 refused. Moved alias to Caddy so go-git
reaches Caddy:443 (TLS ok) → proxies to gitea:3000.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 00:04:08 -05:00
ginnoir 1138e41e22 fix: add gitea.ginnoir.com edge alias so Portainer go-git resolves internally 2026-06-14 23:36:38 -05:00
ginnoir 67234b3948 fix(caddy-deploy): install docker.io in job container for docker exec
Deploy Caddyfile to valhalla / deploy (push) Successful in 49s
2026-06-14 23:14:34 -05:00
ginnoir 5558c03bac ci: add gitea caddy deploy workflow
Deploy Caddyfile to valhalla / deploy (push) Failing after 27s
2026-06-14 22:59:04 -05:00
ginnoir ef107dd743 fix: make portainer stacks use stack env only 2026-06-14 22:56:38 -05:00
ginnoir 2a76a8f1f8 refactor: move gitea and registry to management plane 2026-06-14 22:54:31 -05:00
ginnoir 3918f24970 chore: add registry auth credentials 2026-06-14 22:53:22 -05:00
ginnoir 0b58c11f2b test: add portainer stack env guard 2026-06-14 22:52:13 -05:00
ginnoir 1289e0a615 fix: preserve gitea database password in dev stack 2026-06-12 01:22:42 -05:00
ginnoirandClaude Sonnet 4.6 17be6410ba chore: rotate GITHUB_STACKS_PAT
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 23:33:22 -05:00
ginnoirandClaude Sonnet 4.6 96e3ef9a4d chore(authentik): upgrade to 2026.5.2 (hop 2 of 2)
Final target version. Intermediate 2025.12.5 hop applied and validated
before this upgrade.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 23:07:38 -05:00
ginnoirandClaude Sonnet 4.6 113af2d8e2 chore(authentik): upgrade to 2025.12.5 (hop 1 of 2)
Intermediate step on the way to 2026.5.2 — Authentik requires passing
through the latest 2025 release before jumping to 2026.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:57:41 -05:00
ginnoir eff906f298 feat: add uptime checking script for scheduled reports 2026-06-11 20:14:07 -05:00
ginnoir e3bf11d18e Add Caddy bypasses so MCP can reach *arr and Uptime Kuma through Authentik.
Deploy to valhalla / deploy (push) Has been cancelled
TB-006 forward_auth blocks machine clients with HTML/302; route /api on *arr
sites and /api plus socket.io on uptime (LAN/tailnet only) before forward_auth.
Also add Cursor interview-first rule and small Authentik/FreshRSS debug helpers.
2026-06-11 17:37:21 -05:00
ginnoir 776478c035 feat(proxy): add idlegame internal site
Deploy to valhalla / deploy (push) Has been cancelled
2026-06-11 17:31:05 -05:00
ginnoir fdc2eddf03 fix(dev): use resolvable bookstack mariadb tag 2026-06-11 17:18:38 -05:00
ginnoir f91a993c58 feat(dev): add gitea actions runner 2026-06-11 17:13:39 -05:00
ginnoirandClaude Sonnet 4.6 993504106e feat(caddy): bypass Authentik forward_auth for Plane API key requests
Deploy to valhalla / deploy (push) Has been cancelled
Adds a named matcher @plane_api that matches /api/* requests carrying
X-API-Key, routing them directly to plane_api:8000 without hitting the
Authentik outpost. Browser/UI sessions still go through forward_auth.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 15:32:09 -05:00
ginnoir 792305e5fa Mark homelab quick wins complete in plan briefs and task menu.
Close TB-002–004 and TB-033 with done-when checkboxes and update PLAN-BRIEF priority to the next themes.
2026-06-11 03:00:45 -05:00
ginnoir 67be0d6aff Replace expired GITHUB_STACKS_PAT so Portainer git pulls match the working token in Obsidian. 2026-06-11 02:55:49 -05:00
ginnoir 9bad6f3d22 Point Servarr download clients at internal Docker hosts so API calls bypass Authentik forward_auth.
After batch 2 SSO, Sonarr/Radarr hitting nzbget.ginnoir.com got 302 from Caddy instead of NZBGet JSON-RPC.
2026-06-11 02:47:54 -05:00
ginnoir 51acb44322 Ship homelab quick wins: Recyclarr, infra pins, jd.ginnoir.com, and LAN lockdown.
Deploy to valhalla / deploy (push) Has been cancelled
Add Recyclarr to the media stack, pin database/object-store/Caddy/Vault images with Watchtower disabled, expose JDownloader at jd.ginnoir.com, and restrict minio/homarr/docs to internal_only. Mark TB-002–004 and TB-033 complete; bundle batch-3 OIDC env for FreshRSS, ownCloud, and Reactive Resume.
2026-06-11 02:28:06 -05:00
ginnoir 1ce63153ab Persist TB-006 batch 2 media SSO and batch 1 auth fixes to the repo.
Media sites get Caddy forward_auth; Authentik scripts cover all proxy providers. BookStack OIDC and Plane admin routing fixes included, plus ops scripts for external auth on valhalla.
2026-06-11 01:19:06 -05:00
ginnoir 63889fc150 Complete TB-006 batch 1 SSO so admin apps use Authentik without double login.
Deploy to valhalla / deploy (push) Has been cancelled
Native OAuth/OIDC for Homarr, BookStack, Gitea, and MinIO console; forward_auth with local auth disabled for code-server, uptime, and kopia; Caddy and Authentik scripts updated to match.
2026-06-10 23:52:14 -05:00
ginnoir 109cc0d5cb Fix Homarr appdata bind mount and deploy Authentik forward auth on admin sites.
Deploy to valhalla / deploy (push) Has been cancelled
Homarr-labs stores state under /appdata; the old compose mapped empty paths and lost the dashboard on redeploy. TB-006 batch 1 adds Caddy forward_auth for 12 admin UIs with API and webhook bypasses.
2026-06-10 23:14:32 -05:00
ginnoir 1253825541 Mark TB-005 Obsidian hardening complete.
Record deployed internal_only gate and update plan brief gaps.
2026-06-10 22:47:02 -05:00
ginnoir 80b0fc6904 Restrict Obsidian LiveSync to LAN and tailnet only.
Deploy to valhalla / deploy (push) Has been cancelled
Closes TB-005: obsidian.ginnoir.com was publicly reachable; sync clients use tailnet.
2026-06-10 22:19:50 -05:00
ginnoir d5a54b24cc Mark TB-001 backup stack complete.
Kopia+B2 deployed, cron scheduled, ntfy wired, restore tests passed.
2026-06-10 22:17:29 -05:00
ginnoir c053f285b8 Fix backup cron scripts for Kopia password and MariaDB dumps.
Pass KOPIA_REPOSITORY_PASSWORD into snapshot create; use MARIADB_ROOT_PASSWORD for romm and bookstack app user for bookstack root mismatch.
2026-06-10 22:01:26 -05:00
ginnoir 4bb9413391 Set explicit Kopia UI credentials for web login.
Use HTTP basic auth username kopia with KOPIA_REPOSITORY_PASSWORD; document in README.
2026-06-10 21:38:10 -05:00
ginnoir 9878f17673 Add internal-only Caddy proxy for Kopia backup UI.
backup.ginnoir.com reverse-proxies kopia:51515; regenerate bookmark pages.
2026-06-10 21:32:06 -05:00
ginnoir bb18e0e338 Mount backup scripts from /config/backup on host.
Portainer CE git stacks cannot bind-mount relative repo paths; sync auxiliary files to the host path documented in README.
2026-06-10 21:28:56 -05:00
ginnoir f660bc9c4b Fix backup stack env for Portainer git deploy.
Remove compose ${VAR} overrides that blanked stack.env values and map KOPIA_REPOSITORY_PASSWORD in init-kopia; use hostname-only B2 endpoint.
2026-06-10 21:26:02 -05:00
ginnoir 7c7f6dfebc Add Kopia backup stack with Backblaze B2 offsite target.
Protects /config, selective labdata, and nightly DB dumps; documents homelab improvement plan briefs.
2026-06-10 21:21:34 -05:00