These examples show common βredundancyβ setups. For full behavior and field descriptions, see docs/docs_file/notification_channels.md.
Example 1 β Telegram only (centralized)
# configs/backup.env
TELEGRAM_ENABLED=true
BOT_TELEGRAM_TYPE=centralized
Notes:
- Centralized mode pairs your node using its server identity (printed during install/upgrade).
- If the centralized service is unreachable, Telegram notifications are skipped for that run.
Example 2 β Telegram only (personal bot)
# configs/backup.env
TELEGRAM_ENABLED=true
BOT_TELEGRAM_TYPE=personal
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=987654321
Example 3 β Email relay (recommended when SMTP is blocked)
# configs/backup.env
EMAIL_ENABLED=true
EMAIL_DELIVERY_METHOD=relay
EMAIL_FALLBACK_SENDMAIL=true
EMAIL_RECIPIENT=admin@example.com
EMAIL_FROM=no-reply@proxmox.example.com
Example 4 β Local sendmail (MTA required)
# configs/backup.env
EMAIL_ENABLED=true
EMAIL_DELIVERY_METHOD=sendmail
EMAIL_RECIPIENT=admin@example.com
EMAIL_FROM=no-reply@proxmox.example.com
Example 5 β Gotify (push notifications)
# configs/backup.env
GOTIFY_ENABLED=true
GOTIFY_SERVER_URL=https://gotify.example.com
GOTIFY_TOKEN=AaBbCcDdEeFf123456
GOTIFY_PRIORITY_SUCCESS=2
GOTIFY_PRIORITY_WARNING=5
GOTIFY_PRIORITY_FAILURE=8
Example 6 β Webhook to Discord (single endpoint)
# configs/backup.env
WEBHOOK_ENABLED=true
WEBHOOK_ENDPOINTS=discord_alerts
WEBHOOK_DISCORD_ALERTS_URL=https://discord.com/api/webhooks/XXX/YYY
WEBHOOK_DISCORD_ALERTS_FORMAT=discord
WEBHOOK_DISCORD_ALERTS_METHOD=POST
Example 7 β Telegram + Email + Webhook (high redundancy)
# configs/backup.env
TELEGRAM_ENABLED=true
BOT_TELEGRAM_TYPE=centralized
EMAIL_ENABLED=true
EMAIL_DELIVERY_METHOD=relay
EMAIL_FALLBACK_SENDMAIL=true
EMAIL_RECIPIENT=admin@example.com
WEBHOOK_ENABLED=true
WEBHOOK_ENDPOINTS=discord_alerts
WEBHOOK_DISCORD_ALERTS_URL=https://discord.com/api/webhooks/XXX/YYY
WEBHOOK_DISCORD_ALERTS_FORMAT=discord
WEBHOOK_DISCORD_ALERTS_METHOD=POST
Example 8 β Testing notifications
Notifications are sent only on real runs (not –dry-run). A practical workflow:
# validate config
proxsave --dry-run --log-level debug
# deliver notifications
proxsave
Then check ${BASE_DIR}/log/ for delivery results.