Commit Graph
191 Commits
Author SHA1 Message Date
PhilandClaude Opus 5.5 078c32cdc3 Answer every apex WebFinger query with phil's record
Tailscale's issuer lookup didn't match the resource=acct:phil@ filter,
got redirected to GoToSocial, found no issuer and fell back to Authentik.
phil is the only account here, so serve the same record for all queries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 09:05:22 -06:00
PhilandClaude Opus 5.5 c9c05df534 Serve WebFinger on the apex domain for Tailscale and the fediverse
Tailscale finds the tailnet's login provider through the OpenID issuer
link in phil@'s WebFinger record, which now points at Pocket ID. The
same record carries GoToSocial's links, since the apex is its account
domain; other fediverse discovery paths redirect to GoToSocial. All of
these returned 404 before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 08:55:08 -06:00
PhilandClaude Opus 5.5 ba0b1b319d Turn off legacy OpenID 2.0 login in Gitea
ENABLE_OPENID_SIGNUP let anyone with an OpenID URL register despite
DISABLE_REGISTRATION (an account was created that way on 2026-09-30).
All logins go through Pocket ID now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 08:48:26 -06:00
PhilandClaude Opus 5.5 0371004150 Move Gitea login from Authentik to Pocket ID
The OAuth2 source in Gitea's database was renamed to PocketID and pointed
at Pocket ID with 'gitea admin auth update-oauth', and the existing
user's external login was remapped to the Pocket ID user. Here the
container now resolves the Pocket ID host instead of Authentik; the
runner never needed the login host. Credentials are in vault_gitea.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 08:46:06 -06:00
PhilandClaude Opus 5.5 5255049c10 Remove the unused Glance dashboard
Drop the Glance stack, its home. route and DNS record, the glance.*
labels on every container, and the Glance restart in the Warhammer
feed cron script. Update docs to match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 08:34:14 -06:00
PhilandClaude Opus 5.5 1601d47d4c Move GoToSocial login from Authentik to Pocket ID
The first Pocket ID login linked to the existing account by email, then
GTS_OIDC_LINK_EXISTING was switched off so only that Pocket ID identity
can sign in. The Authentik credentials stay in the vault for rollback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 08:33:21 -06:00
PhilandClaude Opus 5.5 b902c0bfb0 Move Karakeep login from Authentik to Pocket ID
The first Pocket ID login linked to the existing account by email, then
email-based account linking was switched off so only that Pocket ID
identity can sign in. The client ID now comes from the vault instead of
being written in the template.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 08:25:16 -06:00
PhilandClaude Opus 5.5 ea3092779c Add Kavita as the new book server
Runs next to Calibre-Web at a temporary kavita. subdomain until it takes
over books. Each book lives in its own folder under
/opt/stacks/kavita/books, because Kavita names a book after its folder.
The admin password is in the vault as vault_kavita.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 08:19:57 -06:00
PhilandClaude Opus 5.5 e17e37be31 Move Paperless login from Authentik to Pocket ID
Pocket ID was added as a second allauth provider first, so the existing
account could be connected from the Paperless profile page. With that
done, the Authentik provider is removed. Its credentials stay in the
vault for rollback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 17:10:23 -06:00
PhilandClaude Opus 5.5 fea0d1042d Move Manyfold login from Authentik to Pocket ID
Manyfold matches linked users on provider + uid, so the existing user's
auth_uid was remapped to the Pocket ID user before deploying.
HTTPS_ONLY is needed so Manyfold builds an https callback URL behind
Caddy. The Authentik credentials stay in the vault for rollback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 08:57:11 -06:00
PhilandClaude Opus 5.5 ef3a850996 Move ByteStash login from Authentik to Pocket ID
ByteStash matches users on issuer + sub only, so the existing user row
was remapped to the Pocket ID user before this was deployed. The old
Authentik credentials stay in the vault for rollback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 08:39:46 -06:00
PhilandClaude Opus 5.5 206dbcb151 Add Pocket ID as a passkey login provider at id.thesatelliteoflove.com
Runs next to Authentik. The encryption key lives in vault_pocketid, and
the .env task hides its diff so the key doesn't show up in output.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 08:39:46 -06:00
PhilandClaude Opus 5.5 8071c29fe0 Restart apprise, audiobookshelf and dawarich after reboots
apprise and audiobookshelf had no restart policy, and the dawarich app
and sidekiq used on-failure. Docker stops containers cleanly on a
reboot or daemon upgrade, so none of them came back on their own.
Use unless-stopped like the other services.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:30:43 -06:00
PhilandClaude Opus 5.5 bc0fe0ec15 Remove the micropub route from the main site
micropub_server-micropub-1 no longer exists, so /micropub on
thesatelliteoflove.com only returned errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:08:42 -06:00
PhilandClaude Opus 5.5 57c29f1a7f Stop regenerating the dir2opds hash so Caddy isn't restarted every run
bcrypt uses a random salt, so hashing the basic auth password on every
run changed the Caddyfile each time and triggered the Caddy restart
handler. Reuse the deployed hash while it still matches the vault
password, and only make a new one when it doesn't (or on a fresh host).

The old awk also turned htpasswd's trailing blank line into a stray
line in the Caddyfile; the next deploy removes it once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 22:08:34 -06:00
PhilandClaude Opus 5.5 e569a56417 Reserve fixed IPs on the lava network so Caddy can always start
lava was created by hand without an ip_range, so any container could be
given Caddy's fixed IP (172.20.0.5). After a reboot the containers race
for the low addresses and Caddy often fails with "Address already in use".

- The docker role now creates lava as 172.20.0.0/16 with dynamic
  addresses limited to 172.20.128.0/17, so 172.20.0.x is free for fixed
  IPs, and warns if the network still has the old layout.
- Gitea gets fixed IP 172.20.0.6 once the network has the reserved range,
  since its ufw-docker SSH rule points at its IP.
- ufw-docker allow rules for Caddy (80, 443) and Gitea SSH are managed by
  the playbook and follow IP changes.
- migrate-lava-network.yml recreates the existing network once: it takes
  down every compose project on lava (volumes kept), recreates the
  network, and brings them back up, Caddy first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:04:22 -06:00
PhilandClaude Opus 5.5 c0145dd5a2 Harden permissions, close exposed ports, and clean up tasks
- Quote file modes. Unquoted 644/755 were read as decimal, so files
  landed as 1204. Templates holding secrets are now 0640 root:docker.
- Stop publishing Authentik 9000/9443 and Karakeep 3000 (Caddy reaches
  them over the docker network), bind dir2opds to the Tailscale IP, and
  drop Caddy's unused 8448.
- Atuin login uses no_log and only runs once; the installer only runs
  when Atuin is missing.
- Make chsh, ufw-docker install, the bat symlink and Atuin dotfiles
  idempotent.
- Back up the Paperless data volume (SQLite DB), stopping Paperless
  during the backup.
- Close public sign-up on kosync and ByteStash.
- Replace hardcoded IPs and domains with variables.
- Remove teardown tasks and templates for 9 retired services.
- Fix the dockcheck comment: it auto-updates labelled containers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:03:54 -06:00
Phil dea3b29b6b Add godulf to Caddy properly 2026-07-01 14:52:51 -06:00
Phillip Skentelbery dcfee23132 Add Gokapi file sharing service (replaces PicoShare) 2026-07-01 10:12:33 -06:00
Phil b7b54d59af Merge branch 'main' of git.thesatelliteoflove.com:phil/ansible
No
2026-06-30 18:33:59 -06:00
Phillip Skentelbery 676e574e60 fix: add -url flag to dir2opds for correct download links behind Caddy 2026-06-30 18:33:40 -06:00
Phil 0155b42a7a Merge branch 'main' of git.thesatelliteoflove.com:phil/ansible
Trying to fix the repo
2026-06-30 18:00:01 -06:00
Phillip Skentelbery d1e5fd9d0c feat: add koreader sync server + fix apt cache in caddy task 2026-06-30 17:59:48 -06:00
Phil 662e164971 Caddy 2026-06-30 17:56:19 -06:00
Phil 0927187789 Caddy 2026-06-30 17:55:25 -06:00
Phillip Skentelbery ba992c6433 feat: expose dir2opds via Caddy with basic auth + direct tailscale access 2026-06-30 17:49:04 -06:00
Phillip Skentelbery a2b31ea1d1 feat: add dir2opds OPDS book catalog service (tailnet-only) 2026-06-29 18:30:30 -06:00
Phillip Skentelbery 3e0b2054a9 feat: add repaircafe.nerder.land redirect to listmonk signup 2026-06-27 21:07:00 -06:00
Phillip Skentelbery 639a187797 fix: add container_name for cross-project DNS resolution 2026-06-27 18:22:19 -06:00
Phillip Skentelbery 6891770a30 fix: remove unnecessary port publishing from listmonk 2026-06-27 18:00:30 -06:00
Phillip Skentelbery 767ff9dae6 feat: add listmonk mailing list service 2026-06-27 17:57:03 -06:00
Phil e47465c34d Merge branch 'main' of git.thesatelliteoflove.com:phil/ansible 2026-05-07 11:49:23 -06:00
Phil 6fc6094f84 fixed caddyfile 2026-05-07 11:47:49 -06:00
Phil d2b45435d6 playing with dawarich config 2026-05-07 11:36:10 -06:00
Phillip SkentelberyandClaude Opus 4.6 bca7e7dbae update documentation and config to reflect 21 active services
Removed references to 9 decommissioned services from CLAUDE.md,
README.md, domains.yml, services.yml, and Glance release tracking.
Added services tag and Cronmaster to docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-05 22:43:01 -06:00
Phil a18b835c53 Authentik update 2026-05-05 14:48:04 -06:00
Phillip SkentelberyandClaude Opus 4.6 b92b18d9fb add services tag to run all docker service tasks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-05 14:14:10 -06:00
Phillip SkentelberyandClaude Opus 4.6 46d8fecdfa decommission 9 services: codeserver, ghost, pinchflat, pinry, mmdl, palmr, kanboard, grocy, postiz
Replace deploy tasks with teardown tasks that stop containers and remove
stack directories. Remove Caddy routes and DNS records, with explicit
Route53 deletion for the decommissioned subdomains.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-05 14:04:51 -06:00
phil 99e36d9492 added missing auto update labels 2025-10-22 18:36:46 -06:00
phil bbb9f50eff bumped authentik version to 2025.8.4 2025-10-22 18:03:49 -06:00
phil 78fd63dcb5 restoring backed up files 2025-10-22 16:52:03 -06:00
philandClaude f088247ac0 feat: add dockcheck auto-update labels to remaining services
Add mag37.dockcheck.update labels to enable automated container update monitoring for:
- Gotify iOS assistant service
- Karakeep (Hoarder) bookmark manager and all components (Chrome, Meilisearch)
- MMDL task management service
- Postiz social media scheduler and all components (PostgreSQL, Redis)

This completes the rollout of dockcheck labels across all Docker services for consistent update monitoring.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-08 17:40:30 -06:00
philandClaude e1b6d3132a feat: update service versions and add backup configurations
- Update Authentik to 2025.6.4
- Update Dawarich and Karakeep to latest versions
- Add Paperless-NGX backup with S3 storage
- Improve GoToSocial backup configuration with better naming and retention
- Add dockcheck update labels for automated container monitoring

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-08 17:26:16 -06:00
philandClaude f71ded1a01 feat: add Grocy kitchen ERP service
- Add grocy subdomain to domains.yml
- Create Docker Compose template using LinuxServer image
- Add Ansible task for service deployment
- Configure Caddy reverse proxy with Authentik auth and API bypass
- Add DNS record for grocy subdomain
- Integrate with productivity services category

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 08:47:28 -06:00
philandClaude a2ae9e5ff6 feat: add Kanboard project management service
- Add kanboard subdomain to domains.yml
- Create Docker Compose template with SQLite backend and plugin store enabled
- Add Ansible task for service deployment
- Configure Caddy reverse proxy routing
- Integrate with productivity services category

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 07:21:45 -06:00
philandClaude fb6651f1dc docs: complete documentation audit and updates
- Update service count from 24 to 27 across all documentation
- Add missing services: ByteStash, Obsidian LiveSync, Gotify
- Update service categories in README.md, CLAUDE.md, docker/README.md
- Remove deprecated secrets.enc references from command examples
- Update todo.md with complete service listings
- Ensure all documentation accurately reflects current infrastructure

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-23 15:27:42 -06:00
philandClaude 58a6be8da0 docs: update documentation to reflect Pingvin → Palmr migration
- Replace all Pingvin references with Palmr in documentation
- Update README.md, CLAUDE.md, roles/docker/README.md, and todo.md
- Maintain accurate service count (24 services)
- Update service memories and productivity category listings

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-23 15:10:24 -06:00
philandClaude 17c3077cf0 feat: add Palmr file sharing service to replace Pingvin
- Add Palmr Docker Compose template with encryption enabled
- Create Palmr deployment tasks for productivity category
- Add files.thesatelliteoflove.com routing in Caddyfile
- Restore files subdomain for Palmr service
- Add Palmr to Glance dashboard with file icon
- Generate and store encryption key in vault
- Configure HTTPS, Authentik integration, and dockcheck updates

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-23 12:59:11 -06:00
philandClaude 75fabb3523 feat: deprecate Pingvin file sharing service
- Remove Pingvin Docker Compose template and deployment tasks
- Remove files.thesatelliteoflove.com routing from Caddyfile
- Remove files subdomain from domain variables
- Stop and remove Pingvin containers from remote server
- Clean up /opt/stacks/pingvin directory

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-23 12:36:58 -06:00
philandClaude 336e197176 feat: add dockcheck update labels and fix Gotify service names
- Add mag37.dockcheck.update labels to audiobookshelf, caddy, gitea services
- Fix Gotify container names in Caddyfile routing
- Add explicit container names for gotify and igotify-assistant services
- Update Authentik to version 2025.6.3
- Fix environment variable format in gotify-compose template

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-23 11:26:17 -06:00