Open-source Python tool that quietly watches your Linux server every day โ and pings you only when something needs attention. APT security updates, SSL expiry, blacklists, services, and more.
APT security updates flagged as critical. IP blacklists checked daily. SSH brute-force tracked.
Email only when something is actually wrong. Configurable severity threshold per channel.
One file per check, one file per reporter. Add your own without touching the core.
Each check uses standard tools (apt, systemctl, openssl, dig). Nothing exotic to install.
Email today, Telegram bot with action buttons next, mobile app via REST API later.
Every run archived as JSON in /var/log/watchlog/ for retro debugging.
watchlog only detects and notifies. To actually apply security
patches automatically, pair it with unattended-upgrades (Ubuntu's built-in tool, often disabled by default).
Together they give you end-to-end automated security with no SSH session needed.
The new package appears in the -security suite. Hetzner / your mirror syncs it within ~30 min.
apt list --upgradable/status.json heartbeat-security suiteConfirms the security update is gone. Worst severity drops back to OK or INFO. No more emails.
pip install git+https://github.com/Belikebee1/watchlog.git
sudo mkdir -p /etc/watchlog
sudo curl -o /etc/watchlog/config.yaml \
https://raw.githubusercontent.com/Belikebee1/watchlog/main/config.example.yaml
sudo $EDITOR /etc/watchlog/config.yaml
sudo watchlog run
# Default: every 4 hours (00, 04, 08, 12, 16, 20 UTC)
sudo watchlog install
systemctl list-timers watchlog
# Already preinstalled on Ubuntu โ just enable security auto-install:
echo 'APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";' | sudo tee /etc/apt/apt.conf.d/20auto-upgrades
# Set notification email
sudo sed -i 's|//Unattended-Upgrade::Mail "";|Unattended-Upgrade::Mail "you@example.com";|' \
/etc/apt/apt.conf.d/50unattended-upgrades
# Verify
systemctl list-timers apt-daily-upgrade watchlog
9 checks, stdout/email/JSON reporters, systemd installer.
Interactive notifications with Apply / Postpone / Ignore buttons. Long-polling, no webhook needed.
FastAPI daemon, web UI for checking history, action endpoints for mobile clients.
fail2ban stats, open ports baseline diff, file integrity (AIDE), CVE matching.