CHECKING STATUS
I AM LISTENING TO
|
  • ♩
  • ♪
  • ♫
  • ♬
  • ♩
  • ♪
  • ♫
  • ♬

Day 7: NTFY Self-Hosted Push Notification Service – 7 Days of Docker

16. February 2025
.SHARE

7 Days of Docker

Introduction

ntfy is a powerful, self-hosted push notification service that allows you to send messages to your devices via HTTP, MQTT, or WebSockets. Running ntfy in a Docker container makes deployment and management easy, ensuring a lightweight and scalable notification system.

This guide walks you through setting up ntfy with Docker, configuring it, and making the most of its features.

Prerequisites

Before we begin, ensure you have:

  • Docker installed on your machine (Get Docker)
  • (Optional) Docker Compose for easier configuration

1: Pull the ntfy Docker Image

The official ntfy image is available on Docker Hub. To pull it, run:

docker pull binwiederhier/ntfy

This command downloads the latest ntfy image to your system.

2: Run ntfy as a Docker Container

A simple way to start ntfy is by running the following command:

docker run -d \
  --name ntfy \
  -p 80:80 \
  binwiederhier/ntfy serve

This starts ntfy as a background service (-d), mapping the container’s port 80 to the host’s port 80.

You can now access ntfy by visiting http://localhost.

3: Persisting Data with a Volume

To keep your settings and messages after a container restart, you should mount a volume:

docker run -d \
  --name ntfy \
  -p 80:80 \
  -v ntfy_data:/var/lib/ntfy \
  binwiederhier/ntfy serve

This ensures that all data is stored in a persistent volume called ntfy_data.

4: Custom Configuration

For advanced settings, create a custom config file:

  1. Create a directory for ntfy:
   mkdir -p ~/ntfy
  1. Create a server.yml file with custom settings:
   listen-http: ":8080"
   base-url: "https://yourdomain.com"
   auth-file: "/var/lib/ntfy/user.db"
  1. Run ntfy with the custom configuration:
   docker run -d \
     --name ntfy \
     -p 8080:8080 \
     -v ~/ntfy:/var/lib/ntfy \
     binwiederhier/ntfy serve

This mounts your local ~/ntfy directory as the ntfy storage location, allowing persistent configuration.

5: Sending Notifications

Once ntfy is running, you can send notifications using cURL:

curl -d "Hello, ntfy!" http://localhost/mytopic

Or using the ntfy CLI:

echo "Hello, ntfy!" | ntfy publish mytopic

6: Running with Docker Compose (Optional)

That is how I currently use it.

portalZINE.DE | portalzine nmn development meets creativity blog 36

Using Docker Compose simplifies container management. Create a docker-compose.yml file:

version: '3'
services:
  ntfy:
    image: binwiederhier/ntfy
    container_name: ntfy
    command:
      - serve
    environment:
      - TZ=UTC    # optional: set desired timezone
    #user: UID:GID # optional: replace with your own user/group or uid/gid
    volumes:
      - /var/cache/ntfy:/var/cache/ntfy
      - /etc/ntfy:/etc/ntfy
    ports:
      - 3003: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

Start the service with:

docker-compose up -d

Thoughts

Running ntfy with Docker is an efficient way to manage notifications on your own infrastructure. Whether you’re using it for server monitoring, IoT notifications, or personal alerts, ntfy provides a lightweight and flexible solution.

There are also nice apps for Desktop and Mobile.

I am using it actively for all my CRON notifications and much more … https://portalzine.de/wordpress-cron-wp-cli-ntfy

Let’s Talk!

Looking for a reliable partner to bring your project to the next level? Whether it’s development, design, security, or ongoing support—I’d love to chat and see how I can help.

Get in touch,
and let’s create something amazing together!

RELATED POSTS

FAQ What is the best free open source way to back up IMAP email? For most people, mbsync (isync) pulls IMAP into a local Maildir reliably on Linux, macOS and Windows via WSL, and imap-backup does the same job with an easier cross-platform setup and no config-file syntax to learn. Pair whichever you choose with […]

Your keyboard and pointing device are the two tools you touch more than anything else on your desk — more than your monitor, more than your editor. A developer types for a living, and after enough years of it, the wrong keyboard and mouse stop being a minor annoyance and start being a wrist problem […]

If you’re a developer in Europe who works from home and runs a homelab, your chair and desk are the two pieces of hardware you touch more than any server, keyboard or monitor. You’ll spend thousands of hours in that seat, and a scary amount of expensive gear is going to live on that desk. […]

Alexander

I am a full-stack developer. My expertise include:

  • Server, Network and Hosting Environments
  • Data Modeling / Import / Export
  • Business Logic
  • API Layer / Action layer / MVC
  • User Interfaces
  • User Experience
  • Understand what the customer and the business needs

I have a deep passion for programming, design, and server architecture—each of these fuels my creativity, and I wouldn’t feel complete without them.

With a broad range of interests, I’m always exploring new technologies and expanding my knowledge wherever needed. The tech world evolves rapidly, and I love staying ahead by embracing the latest innovations.

Beyond technology, I value peace and surround myself with like-minded individuals.

I firmly believe in the principle: Help others, and help will find its way back to you when you need it.