Repository navigation
docs(ntfy): name the in-house topics so the iPhone can tell them apart - #1337
Merged
Merged
Conversation
The iOS ntfy app shows the topic name and has no display name, so each in-house topic becomes its channel's word plus a random hex tail. The tail stays: #136 keeps the names like a credential, and ntfy.sh sees the SHA-256 of each topic URL. The secrets carry the new names in a second commit by the operator. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🔵 Needs a closer look
The encrypted alert-path changes span two independently deployed hosts, requiring operator verification of the coordinated cutover, phone resubscriptions, and end-to-end delivery on both phones across all three channels.
No open issues 🎉
What changed in this PR
This PR gives the three in-house ntfy channels recognizable names on iOS while retaining random suffixes for privacy. It updates the encrypted topic settings and corresponding Alertmanager receiver URLs; the external ntfy.sh channels remain unchanged.
Changes:
- Adopt channel-prefixed topic names:
alerts-…,urgent-…, andsecurity-…, each with twelve random hex characters. - Align example configuration and setup instructions with the new naming scheme.
- Document iOS naming limitations, Android display names, and the privacy rationale.
| File | Description |
|---|---|
stacks/sensitive/README.md |
Clarifies topic names on iOS and display-name settings on Android. |
secrets/sensitive.sops.yaml |
Updates the three encrypted in-house topic values. |
secrets/sensitive.example.yaml |
Documents topic generation and updates placeholders. |
secrets/observability.sops.yaml |
Updates the three encrypted in-house receiver URLs. |
secrets/observability.example.yaml |
Aligns receiver URL placeholders with the topic examples. |
docs/runbooks/build-the-sensitive-tier-host.md |
Updates topic-generation instructions. |
docs/changelog.md |
Records the rename, privacy rationale, and related alert silencing. |
Review effort: Balanced
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
The three in-house ntfy topic names change shape: the channel's word, a dash, and twelve hex characters (
alerts-…,urgent-…,security-…). This commit has the docs and example files. The operator's two commits put the new names insecrets/sensitive.sops.yaml(NTFY_TOPIC_*, edited on trinity) and insecrets/observability.sops.yaml(the three in-houseALERTMANAGER_*_WEBHOOK_URLkeys). Each commit changes only those keys. A comparison that printed only true/false confirmed each topic matches its URL and has the word-dash-12-hex shape. The ntfy.sh pair don't change.Why
The iOS ntfy app shows a subscription by its topic name and can't rename it (binwiederhier/ntfy#1314), so on the iPhone the three channels showed up as random strings. A bare word was ruled out: #136 keeps the names like a credential, and
upstream-base-urlsends ntfy.sh the SHA-256 of each topic URL, so…/urgentwould let anyone watch when a page is sent. The changelog entry has the full reasoning.Blast radius
trinity's ntfy access list andprometheus's Alertmanager receivers. If the two hosts disagree, warnings on the in-house channel are lost andAlertmanagerNotificationsFailingpages through ntfy.sh. Pages still arrive over the ntfy.sh copies the whole time.secrets/*.sops.yamlVerification
python3 scripts/check_docs.py: docs OK../scripts/lint.sh: every check PASS, none skipped. I didn't run the fullmake validate, because this commit is docs and example files only.Cutover, after the secrets commit, merged just after a :29 so the converge timer doesn't race it: silence
AlertmanagerNotificationsFailingfor 30 minutes, runmake up STACK=sensitiveon trinity, then on prometheus runmake renderand force-recreate Alertmanager. Resubscribe both phones, then run the test page and warning fromverify-the-alert-path.md.make validatepassesDeployed to the lab and confirmed working
Docs updated (
docs/, service README, ordocs/roadmap.md)🤖 Generated with Claude Code