Apprise is a lightweight notification gateway that lets you fire alerts to 80+ services (Discord, Slack, Telegram, email, ntfy, etc.) through one unified API. This guide deploys the Apprise API server via Docker on a RamNode VPS.
1. Prerequisites
- A RamNode VPS running Ubuntu 22.04/24.04 (KVM plans work well; 1 vCPU / 1 GB RAM is plenty)
- A non-root sudo user
- (Optional) A domain name pointed at your VPS's IP if you want HTTPS via a reverse proxy
2. Initial server setup
SSH into your VPS:
ssh youruser@your-vps-ipUpdate packages and set the timezone:
sudo apt update && sudo apt upgrade -y
sudo timedatectl set-timezone UTCSet up a basic firewall:
sudo apt install -y ufw
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable3. Install Docker and Docker Compose
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp dockerVerify:
docker --version
docker compose version4. Create the project directory
mkdir -p ~/apprise/config
cd ~/apprise5. Create the Docker Compose file
nano docker-compose.ymlPaste:
services:
apprise:
image: caronc/apprise:latest
container_name: apprise
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- ./config:/config
- ./attach:/attach
environment:
- APPRISE_STATEFUL_MODE=simple
- APPRISE_WORKER_COUNT=1Notes:
/configpersists any saved notification "configs" (URLs) created through the web UI./attachis used if you send attachments through the API.APPRISE_STATEFUL_MODE=simpleenables persistent storage of configs between restarts.
6. Launch it
docker compose up -dCheck logs:
docker compose logs -fVisit http://your-vps-ip:8000 — you should see the Apprise web UI where you can add notification URLs and test them.
7. (Recommended) Put it behind a reverse proxy with HTTPS
Install Caddy (simplest option for automatic HTTPS):
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddyEdit /etc/caddy/Caddyfile:
apprise.yourdomain.com {
reverse_proxy localhost:8000
}Restart Caddy:
sudo systemctl restart caddyCaddy will automatically obtain and renew a Let's Encrypt certificate. You can now close port 8000 externally and only expose 80/443:
sudo ufw delete allow 80008. Using the API
Send a notification by POSTing to a config or a raw URL:
curl -X POST http://your-vps-ip:8000/notify/myconfig \
-F "body=Backup completed successfully" \
-F "title=Server Alert"Or without a saved config, pass URLs directly:
curl -X POST http://your-vps-ip:8000/notify \
-F "urls=tgram://bottoken/ChatID" \
-F "body=Hello from Apprise"9. Updating
cd ~/apprise
docker compose pull
docker compose up -d10. Backup
Just back up the ~/apprise/config directory — it contains any persisted notification configs.
tar czf apprise-backup-$(date +%F).tar.gz ~/apprise/config