Server alerts to your phone without Telegram or Slack
Updated October 17, 2026
Any server that can run curl can push an alert to your phone with NextMsg. There's no bot to create, no chat ID to look up and no workspace to join: one send key, one HTTP request. Below are recipes for failed systemd services, full disks and finished deploys.
Set the key once
Install the NextMsg app and copy your send key from Settings. On the server, store it in a file only root can read:
echo 'NEXTMSG_KEY=nextmsg_live_YOUR_KEY' | sudo tee /etc/nextmsg.env >/dev/null
sudo chmod 600 /etc/nextmsg.envTest it:
sudo sh -c '. /etc/nextmsg.env; curl -fsS -d "Hello from $(hostname)" "https://api.nextmsg.app/p/$NEXTMSG_KEY?channel=servers"'When a systemd service fails
Create one template unit, /etc/systemd/system/notify-failure@.service:
[Unit]
Description=Send a NextMsg alert that %i failed
[Service]
Type=oneshot
EnvironmentFile=/etc/nextmsg.env
ExecStart=/bin/sh -c 'curl -fsS --data-binary "❌ %i failed on %H" "https://api.nextmsg.app/p/$${NEXTMSG_KEY}?channel=servers"'Then add one line to the [Unit] section of every service you care about (for example with sudo systemctl edit nginx):
[Unit]
OnFailure=notify-failure@%n.serviceRun sudo systemctl daemon-reload. From now on, if that service crashes or a timer's job exits with an error, you get a push naming the unit and the host.
When a disk is almost full
Save as /usr/local/bin/check-disk, make it executable and run it from cron, for example every hour:
#!/bin/sh
# Alerts when the root filesystem is at least 90% full.
. /etc/nextmsg.env
used=$(df -P / | awk 'NR==2 { sub("%", "", $5); print $5 }')
if [ "$used" -ge 90 ]; then
curl -fsS --data-binary "⚠️ Disk on $(hostname) is ${used}% full" \
"https://api.nextmsg.app/p/$NEXTMSG_KEY?channel=servers" >/dev/null
fi# sudo crontab -e
0 * * * * /usr/local/bin/check-diskWhen a deploy finishes
Add a line at the end of your deploy script:
curl -fsS --data-binary "🚀 Deployed $(git rev-parse --short HEAD) to $(hostname)" \
"https://api.nextmsg.app/p/$NEXTMSG_KEY?channel=deploys"Why not a Telegram bot or Slack webhook?
- Less setup: no BotFather, chat ID lookup, Slack app or channel permissions. The send key is the whole configuration.
- One-way and least privilege: the key can only send to your inbox. It can't read messages, and there is no way to send commands back to the server.
- A quiet inbox: alerts don't compete with chats. Channels such as
serversanddeploysbecome tabs in the app. - Offline-safe: messages wait on the server for up to 72 hours if your phone is off.
Prefer self-hosting or need attachments? See the comparison with ntfy, Pushover and Telegram bots.
More guides
- Get a phone notification when a GitHub Action fails
- Notify when a cron job or backup finishes or fails
- AWS alerts to your phone: CloudWatch alarms and EventBridge events
- Make Claude Code, Cursor or any AI agent ping your phone
- Get a phone notification when Cursor's agent finishes
- Get a phone notification when OpenAI Codex finishes a task
- Phone notifications from Google Antigravity and Gemini agents