All templates

ntfy

v1.0.0

Publish and subscribe to push notifications through HTTP topics.

notifications by getarcaneapp
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:

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.