self-hosted ntfy service with admin account

  • First, we need a script that setup admin account for us after starting the service. init.sh file that you should put inside ntfy/init.sh
    #!/bin/sh
    ntfy serve &
    sleep 2
    NTFY_PASSWORD=${NTFY_PASSWORD} ntfy user add --role=admin ${NTFY_USER}
    wait
  • Now the compose file compose.yaml or docker-compose.yaml file.
    services:
    ntfy:
    image: binwiederhier/ntfy
    container_name: ntfy
    entrypoint: [ "/bin/sh", "/var/lib/ntfy/init.sh" ]
    environment:
    - TZ=UTC \# optional: set desired timezone
    - NTFY_BASE_URL=https://ntfy.dilawars.me
    - NTFY_AUTH_FILE=/var/lib/ntfy/auth.db
    - NTFY_CACHE_FILE=/var/lib/ntfy/cache.db
    - NTFY_AUTH_DEFAULT_ACCESS=deny-all
    - NTFY_ATTACHMENT_CACHE_DIR=/var/lib/ntfy/attachments
    - NTFY_ENABLE_LOGIN=true
    - NTFY_USER=admin
    - NTFY_PASSWORD=yoyodillusingh
    volumes:
    - /var/cache/ntfy:/var/cache/ntfy
    - /etc/ntfy:/etc/ntfy
    - ./ntfy/:/var/lib/ntfy
    ports:
    - 8001:80
    healthcheck: \# optional: remember to adapt the host:port to your environment
    test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"]
    interval: 60s
    timeout: 10s
    retries: 3
    start_period: 40s
    restart: unless-stopped