Back to articles
Technology Insight

Building a High-Speed, Real-Time Push Notification Service with Gotify on Cloud VPS

June 1, 2026

Introduction to Real-Time Communication Challenges

In today's fast-paced digital ecosystem, the ability to transmit data instantly is no longer a luxury—it is a core business requirement. Whether it is alerting an DevOps engineer about a critical server failure, notifying a financial trader of a sudden market shift, or updating a logistics team on a delivery status, real-time push notifications drive modern operational efficiency.

However, relying solely on proprietary, third-party notification services like Firebase Cloud Messaging (FCM) or Apple Push Notification service (APNs) presents distinct challenges for enterprise environments. These include unpredictable latency, data privacy concerns, vendor lock-in, and escalating API costs. To bypass these limitations, engineering teams are increasingly turning to self-hosted, lightweight alternatives. This is where Gotify shines. Combined with the flexibility of a high-performance Cloud VPS, Gotify allows businesses to establish complete data sovereignty and achieve sub-second notification delivery speeds.

What is Gotify and Why Choose It?

Gotify is an open-source, self-hosted notification server designed explicitly for sending and receiving messages. Unlike complex message brokers or bloated communication suites, Gotify focuses entirely on doing one thing exceptionally well: delivering push notifications in real time via WebSockets.

Key Features of Gotify:

  • REST API: A clean, well-documented REST API makes it incredibly simple to send messages from any application, script, or CI/CD pipeline using standard curl requests or HTTP clients.
  • WebSockets: Clients maintain a persistent, low-overhead WebSocket connection to the server, ensuring instantaneous message delivery without constant polling.
  • User & App Management: Native support for separating notifications by application tokens and managing multiple user accounts with distinct access rights.
  • Extensible Plugins: A flexible plugin system allows developers to extend Gotify's core functionality to integrate with external Webhooks or specialized databases.
  • Lightweight Footprint: Written in Go, the binary compiles into an ultra-lean executable, consuming minimal CPU and RAM resources.

When deployed on a dedicated Cloud VPS, Gotify operates free from the noisy-neighbor effects of shared hosting, ensuring that critical transactional alerts are never delayed by competing background processes.

Architectural Overview: Cloud VPS and Gotify

Before diving into the implementation, it is vital to understand the structural blueprint of a high-speed notification pipeline. The architecture consists of three core components:

  1. The Publisher: Any system capable of making an HTTP POST request. This could be your backend application (Node.js, Python, Java), a monitoring tool (Prometheus, Grafana), or a basic bash script triggering on a cron job.
  2. The Broker (Gotify Server): Hosted securely on your Cloud VPS, it receives incoming HTTP requests, processes the payload, and instantly broadcasts it over active WebSocket channels.
  3. The Subscriber (Client): The end-user interface. Gotify provides a sleek web UI, an official Android application, and a command-line interface (CLI) to receive messages instantly.
Security Note: Because push notifications often contain sensitive infrastructure details or proprietary business metrics, securing the transmission path via a Reverse Proxy with TLS/SSL encryption is mandatory for production deployments.

Step-by-Step Deployment Guide on Cloud VPS

This technical walkthrough assumes you have provisioned a clean Cloud VPS running an enterprise Linux distribution like Ubuntu 22.04 LTS or Debian 12. We will utilize Docker and Docker Compose to ensure predictable, containerized environment isolation.

Step 1: System Preparation and Prerequisites

First, update your system repositories and install the necessary dependencies, including Docker and the Docker Compose plugin.

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git apt-transport-https ca-certificates curl software-properties-common

Next, install the latest Docker engine:

curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] [https://download.docker.com/linux/ubuntu](https://download.docker.com/linux/ubuntu) $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.p/docker.list > /dev/null
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Step 2: Configuring Docker Compose for Gotify

Create a dedicated workspace directory to maintain clean configuration files and prevent permission conflicts.

mkdir -p ~/gotify-service && cd ~/gotify-service
nano docker-compose.yml

Paste the following production-optimized configuration into your docker-compose.yml file:

version: "3.8"

services:
  gotify:
    image: gotify/server:latest
    container_name: gotify_server
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:80"
    environment:
      - GOTIFY_SERVER_PORT=80
      - GOTIFY_SERVER_KEEPALIVEPERIODSECONDS=30
      - GOTIFY_SERVER_SSL_ENABLED=false
      - GOTIFY_REGISTRATION=false
    volumes:
      - ./gotify_data:/app/data

Configuration Breakdown: We bind port 80 to 127.0.0.1:8080 to prevent direct public exposure, forcing all incoming traffic to pass through our secure reverse proxy. Setting GOTIFY_REGISTRATION=false ensures unauthorized public users cannot register accounts on your server once it goes live.

Step 3: Setting Up Nginx as a Secure Reverse Proxy

To enable safe, encrypted HTTPS communication and leverage HTTP/1.1 WebSocket upgrades, we deploy Nginx directly on the host VPS system.

sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/gotify

Insert the following server configuration block, replacing notify.yourdomain.com with your actual registered domain name:

server {
    listen 80;
    server_name notify.yourdomain.com;

    location / {
        proxy_pass [http://127.0.0.1:8080](http://127.0.0.1:8080);
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Essential WebSocket Support Configuration
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        
        # Optimizing Timeouts for Long-Lived WebSocket Connections
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }
}

Enable the configuration and restart Nginx:

sudo ln -s /etc/nginx/sites-available/gotify /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx

Step 4: Obtaining a Free SSL Certificate via Let's Encrypt

Encrypt all telemetry and notification payloads by utilizing automated SSL certificates provided by Certbot.

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d notify.yourdomain.com

Follow the interactive prompts to successfully provision your SSL certificate. Certbot will automatically rewrite the Nginx configuration to enforce global HTTPS redirection.

Step 5: Launching the Service

With all configuration files safely in place, boot up your Gotify container in detached mode:

cd ~/gotify-service
sudo docker compose up -d

Integrating the Service: Testing and Verification

Open your browser and navigate to [https://notify.yourdomain.com](https://notify.yourdomain.com). Log in using the default administrative credentials (admin / admin). Immediatley change your password within the user management panel to safeguard your system.

Generating an Application Token

  1. Navigate to the Apps tab in the navigation menu.
  2. Click Create Application, assign a name (e.g., "Production Monitor"), and save.
  3. Copy the long cryptographic token string generated next to the application.

Sending a Test Notification Payload via Curl

Execute the following standard HTTP request from any terminal to verify that your Cloud VPS is routing incoming notification payloads flawlessly:

curl -X POST "[https://notify.yourdomain.com/message?token=YOUR_APP_TOKEN](https://notify.yourdomain.com/message?token=YOUR_APP_TOKEN)" \
     -F "title=System Alert" \
     -F "message=High CPU utilization detected on Core Database Server." \
     -F "priority=5"

Within milliseconds, the message will pop up inside your Gotify Web UI and connected mobile applications, maintaining a historical ledger for audit compliance.

Advanced Optimization and Hardening for Production

To transition your Gotify instance from a basic setup to an enterprise-grade engine capable of handling high throughput, implement these advanced optimizations:

  • Database Scaling: By default, Gotify stores its relational configuration in SQLite. While fine for light usage, performance-driven setups should switch to a managed PostgreSQL or MySQL backend by mapping environment variables inside the docker-compose.yml file.
  • Adjusting WebSocket Ping Intervals: Keep firewalls from killing idle client connections by fine-tuning the GOTIFY_SERVER_KEEPALIVEPERIODSECONDS environment variable to match your cloud provider's network topology.
  • Automated Data Backups: Schedule a cron job to routinely back up the local ./gotify_data volume to an offsite S3-compatible object storage container.

Conclusion

Building a proprietary, high-speed notification service on a Cloud VPS using Gotify empowers your organization with unmatched control, absolute privacy, and stellar performance. By following this guide, you have successfully eliminated dependencies on external notification systems, giving your infrastructure the fast, reliable foundation it needs to scale efficiently in a hyper-connected business world.

Building a High-Speed, Real-Time Push Notification Service with Gotify on Cloud VPS | DPTCloud