Getting Started
What is sznuper?
Section titled “What is sznuper?”sznuper (/ˈʂnu.pɛr/) is a lightweight server monitor for Linux. It runs healthchecks on a schedule and sends notifications when something needs attention - to Discord, Slack, Telegram, Teams, email, and more.
The name comes from the Silesian word sznupać - to sniff, to poke around, to rummage. A sznuper is someone who sticks their nose where it doesn’t belong and won’t stop bothering you about what they found.
sznuper itself is a dumb binary. It doesn’t know what it’s monitoring. It just runs executables or scripts (healthchecks), reads their output, and routes notifications. Running sznuper init sets up a config with official healthchecks as defaults, but they’re fetched remotely on first run just like any other healthcheck. You can replace them with your own in any language.
Why sznuper?
Section titled “Why sznuper?”There’s no good unified solution for “tell me when something goes wrong on my VPS”. Most sysadmins end up with a pile of cron jobs, custom scripts calling raw APIs, or cobbling together shell one-liners. On the other end of the spectrum, tools like Grafana, Prometheus, or Zabbix require multiple services just to send a notification when disk is full - overkill for a simple VPS.
sznuper fills the gap:
- Just a binary. No runtime, no database, no systemd required. Runs on any Linux.
- Expands on cron jobs. Built-in support for interval, cron, file watch, and pipe triggers - a single alert can run on multiple triggers at once.
- Versatile. Use official healthchecks or write your own in any language.
- Unified notifications. One config for Discord, Slack, Telegram, Teams, email, webhooks, and more.
Prerequisites
Section titled “Prerequisites”- Linux (amd64 or arm64)
curl
Install
Section titled “Install”curl -fsSL https://raw.githubusercontent.com/sznuper/dist/main/install.sh | shTo pin a specific version:
curl -fsSL https://raw.githubusercontent.com/sznuper/dist/main/install.sh | VERSION=v0.11.0 shThe script installs the binary and, when run as root, sets up a systemd service.
| Root | Non-root | |
|---|---|---|
| Binary | /usr/local/bin/sznuper | ~/.local/bin/sznuper |
| Config | /etc/sznuper/config.yml | ~/.config/sznuper/config.yml |
Initialize
Section titled “Initialize”Generate a config file interactively:
sznuper initThis walks you through adding notification services and generates a config with sensible defaults, including healthchecks for disk usage, CPU, memory, and SSH events (where supported).
To skip the TUI and add services directly:
sznuper init --add-service "telegram:telegram://${TELEGRAM_TOKEN}@telegram?chats=${CHAT_ID}"Use --from to base your config on a URL or local file, and --force to overwrite an existing config.
The install script already enables the systemd service, so if you had a config before installing, sznuper is already running. After running sznuper init, restart the service to pick up the new config:
sudo systemctl restart sznuperOr run directly without systemd:
sznuper startUse --dry-run to simulate without sending notifications.
Validate
Section titled “Validate”Check your config and verify all healthchecks are reachable:
sznuper validateRun once
Section titled “Run once”Test a specific alert without starting the daemon:
sznuper run my-alert --dry-runOr run all alerts once:
sznuper runHow does it work?
Section titled “How does it work?”Simplified overview of the sznuper daemon lifecycle: