vault: session notes 2026-07-13
This commit is contained in:
parent
c8488c5ce5
commit
ae3903a252
|
|
@ -1709,3 +1709,13 @@ tags: [scope/global, type/log]
|
||||||
**Reason:** prompt_input_exit
|
**Reason:** prompt_input_exit
|
||||||
**Vault notes touched:**
|
**Vault notes touched:**
|
||||||
/home/jared/Documents/SecondBrain/apprise-api.md
|
/home/jared/Documents/SecondBrain/apprise-api.md
|
||||||
|
|
||||||
|
## Session — 2026-07-13T20:14:28Z
|
||||||
|
|
||||||
|
**Project:** /home/jared/dev/cc-os
|
||||||
|
**Reason:** prompt_input_exit
|
||||||
|
**Vault notes touched:**
|
||||||
|
/home/jared/Documents/SecondBrain/reference/apprise-api-selfhosted-gotchas.md
|
||||||
|
/home/jared/Documents/SecondBrain/reference/apprise-api-selfhosted-gotchas.md
|
||||||
|
/home/jared/Documents/SecondBrain/reference/apprise-api-selfhosted-gotchas.md
|
||||||
|
/home/jared/Documents/SecondBrain/reference/apprise-api-selfhosted-gotchas.md
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,16 @@ last_updated: 2026-07-13
|
||||||
|
|
||||||
Learned deploying `caronc/apprise` (apprise-api) via docker compose on ovh-vps (cc-os ADR-024, 2026-07-10).
|
Learned deploying `caronc/apprise` (apprise-api) via docker compose on ovh-vps (cc-os ADR-024, 2026-07-10).
|
||||||
|
|
||||||
|
## Image name
|
||||||
|
|
||||||
|
- The Docker Hub image is **`docker.io/caronc/apprise`** — `caronc/apprise-api` does **not** exist (404 on the Hub API), despite the project being named apprise-api on GitHub.
|
||||||
|
|
||||||
|
## Container-localhost delivery-test trap
|
||||||
|
|
||||||
|
- Inside the container, notification target URLs like `json://localhost:1` resolve to the **container's own** network namespace, not the host — stateless delivery to them always fails with HTTP 424 ("One or more notifications could not be sent").
|
||||||
|
- Integration tests against a throwaway container therefore need either an externally reachable target (opt-in via env var) or an error-round-trip assertion (expect the 424 to surface); config `add` calls are safe with unreachable URLs since they store without delivering.
|
||||||
|
- On Fedora with SELinux, `docker run` hits EACCES on this setup — use rootless **podman**.
|
||||||
|
|
||||||
## Config-dir ownership trap
|
## Config-dir ownership trap
|
||||||
|
|
||||||
- `docker exec apprise id` reports **root**, but the gunicorn workers actually run as **uid 1000** — the container chowns the mounted `/config` volume to `1000:1000` on first start.
|
- `docker exec apprise id` reports **root**, but the gunicorn workers actually run as **uid 1000** — the container chowns the mounted `/config` volume to `1000:1000` on first start.
|
||||||
|
|
@ -30,4 +40,4 @@ Learned deploying `caronc/apprise` (apprise-api) via docker compose on ovh-vps (
|
||||||
|
|
||||||
apprise-api has **no authentication** — don't expose it publicly bare. Pattern used: bind the container port to the tailscale IP + localhost only (`100.100.43.95:8901:8000`, `127.0.0.1:8901:8000`), so every tailnet machine can notify with no public exposure, no DNS, no reverse proxy. Server env (base URL + key) lives in `~/services/apprise/apprise.env` (600) on ovh-vps.
|
apprise-api has **no authentication** — don't expose it publicly bare. Pattern used: bind the container port to the tailscale IP + localhost only (`100.100.43.95:8901:8000`, `127.0.0.1:8901:8000`), so every tailnet machine can notify with no public exposure, no DNS, no reverse proxy. Server env (base URL + key) lives in `~/services/apprise/apprise.env` (600) on ovh-vps.
|
||||||
|
|
||||||
Related: [[vault-backlog-pilot-plan]] (ADR-024 context); Ruby client gem `apprise-client` at `~/dev/ruby-gems/apprise`.
|
Related: [[vault-backlog-pilot-plan]] (ADR-024 context); Ruby client gem `apprise-api` (module `Apprise`, ships `apprise-notify` CLI) at `~/dev/ruby-gems/apprise-api` — the earlier minimal `apprise-client` gem was retired and deleted 2026-07-13.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue