ntfy
v1.0.0Publish and subscribe to push notifications through HTTP topics.
x-arcane:
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/ntfy.svg
urls:
- https://docs.ntfy.sh/install/#docker
services:
ntfy:
image: binwiederhier/ntfy:latest
restart: unless-stopped
ports:
- "${BIND_ADDRESS:-127.0.0.1}:${PORT:-8090}:80"
labels:
com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/ntfy.svg
command: [serve]
environment:
NTFY_BASE_URL: ${BASE_URL:-http://localhost:8090}
NTFY_CACHE_FILE: /var/lib/ntfy/cache.db
NTFY_AUTH_FILE: /var/lib/ntfy/auth.db
NTFY_AUTH_DEFAULT_ACCESS: deny-all
NTFY_ENABLE_LOGIN: "true"
NTFY_ATTACHMENT_CACHE_DIR: /var/lib/ntfy/attachments
TZ: ${TZ:-Etc/UTC}
volumes:
- data:/var/lib/ntfy
volumes:
data:
BIND_ADDRESS=127.0.0.1
PORT=8090
TZ=Etc/UTC
BASE_URL=http://localhost:8090
README
Publish and subscribe to push notifications through HTTP topics.
Copy .env.example to .env, adjust the settings, then deploy with docker compose up -d or import this template in Arcane. Open http://localhost:8090 on the Docker host. Ports bind to localhost by default; set BIND_ADDRESS to a trusted interface for LAN access, or use a reverse proxy with HTTPS.
All topic access is denied until users are configured. After deployment run docker compose exec ntfy ntfy user add --role=admin admin and enter a strong password interactively. For ordinary accounts use ntfy user add USER and ntfy access USER TOPIC rw. Set BASE_URL to the public HTTPS URL when proxying.
Named volumes retain internal application state across container upgrades. Keep a backup before updating images; docker compose down -v deletes named volume data.
Upstream: installation and configuration.