# ntfy.schwenk.online — personal push server (TLS terminated by Traefik) base-url: "https://ntfy.schwenk.online" listen-http: ":80" behind-proxy: true # Message cache (survives restarts, supports since= polling) cache-file: "/var/cache/ntfy/cache.db" cache-duration: "12h" cache-startup-queries: | pragma journal_mode = WAL; pragma synchronous = normal; pragma temp_store = memory; pragma busy_timeout = 15000; # Access control — create your first admin user after start: # docker exec -it ntfy.schwenk.online ntfy user add frank --role=admin auth-file: "/var/cache/ntfy/auth.db" auth-default-access: "deny-all" enable-login: true require-login: true enable-signup: false # Attachments (e.g. Grafana alerts, backup reports) attachment-cache-dir: "/var/cache/ntfy/attachments" attachment-total-size-limit: "500M" attachment-file-size-limit: "5M" attachment-expiry-duration: "24h" # iOS app: uses ntfy.sh only for poll_request signaling; message content stays here upstream-base-url: "https://ntfy.sh" keepalive-interval: "45s"