feat(ntfy): add self-hosted lab notification server #16

Open
adam wants to merge 2 commits from add-ntfy-notifications into main
Owner

Adds a self-hosted ntfy stack as a lab-wide push notification server — first consumer is Bambuddy, but anything in the lab can publish to it.

Why ntfy: self-hosted, free, fits the Dockhand + Pangolin stack, native iOS app across iPhone/iPad/Mac. (Pushover stays a possible $5 add-on later if you want Critical Alerts that bypass Do Not Disturb — ntfy cant do those.)

Key config decisions

  • NTFY_UPSTREAM_BASE_URL=https://ntfy.sh — without it, self-hosted push to iPhone can take hours (Apple background limits). With it, near-instant via ntfy.sh APNs relay; only an opaque poke leaves the lab, body is fetched from our server.
  • Env-var-only config (no server.yml mount) — dodges the stale single-file bind-mount gotcha on /mnt/user.
  • deny-all default access since it is internet-reachable via the tunnel; token auth for Bambuddy + the app.

This branch is git only — not deployed. README documents the manual follow-ups: Dockhand git-stack registration (new stack, not auto-managed), first-run user/token creation, Pangolin resource + Cloudflare DNS for ntfy.adamayala.work, and the Bambuddy notification settings.

🤖 Generated with Claude Code

Adds a self-hosted **ntfy** stack as a lab-wide push notification server — first consumer is Bambuddy, but anything in the lab can publish to it. **Why ntfy:** self-hosted, free, fits the Dockhand + Pangolin stack, native iOS app across iPhone/iPad/Mac. (Pushover stays a possible $5 add-on later if you want Critical Alerts that bypass Do Not Disturb — ntfy cant do those.) **Key config decisions** - `NTFY_UPSTREAM_BASE_URL=https://ntfy.sh` — without it, self-hosted push to iPhone can take *hours* (Apple background limits). With it, near-instant via ntfy.sh APNs relay; only an opaque poke leaves the lab, body is fetched from our server. - Env-var-only config (no `server.yml` mount) — dodges the stale single-file bind-mount gotcha on `/mnt/user`. - `deny-all` default access since it is internet-reachable via the tunnel; token auth for Bambuddy + the app. **This branch is git only — not deployed.** README documents the manual follow-ups: Dockhand git-stack registration (new stack, not auto-managed), first-run user/token creation, Pangolin resource + Cloudflare DNS for `ntfy.adamayala.work`, and the Bambuddy notification settings. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Self-hosted ntfy as a lab-wide push notification server, first consumer
being Bambuddy (print done / filament out / failure alerts). Chosen over
Pushover/HA: self-hosted, free, fits the Dockhand + Pangolin stack, native
iOS app across iPhone/iPad/Mac.

- Env-var-only config (no server.yml mount, avoids the stale single-file
  bind-mount gotcha on /mnt/user)
- NTFY_UPSTREAM_BASE_URL=https://ntfy.sh for iOS instant delivery (Apple
  background limits make direct push from a self-hosted server slow)
- deny-all default access since it's internet-reachable via the tunnel;
  token auth for Bambuddy and the iOS app
- README documents the remaining manual steps: Dockhand git-stack
  registration, first-run user/token, Pangolin+DNS wiring, Bambuddy config

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Verified Pangolin + Cloudflare access and captured the exact create-resource,
target, and DNS commands (domainId domain1, siteId 1, ntfy on 192.168.4.200:8090,
SSO off). Wildcard *.adamayala.work already resolves, so the DNS record is
optional parity.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin add-ntfy-notifications:add-ntfy-notifications
git switch add-ntfy-notifications

Merge

Merge the changes and update on Forgejo.
git switch main
git merge --no-ff add-ntfy-notifications
git switch add-ntfy-notifications
git rebase main
git switch main
git merge --ff-only add-ntfy-notifications
git switch add-ntfy-notifications
git rebase main
git switch main
git merge --no-ff add-ntfy-notifications
git switch main
git merge --squash add-ntfy-notifications
git switch main
git merge --ff-only add-ntfy-notifications
git switch main
git merge add-ntfy-notifications
git push origin main
Sign in to join this conversation.
No reviewers
No labels
lab-honing
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
adam/foundry!16
No description provided.