Zdrowie serwera
bez niespodzianek.

Open-source narzędzie w Pythonie, które codziennie po cichu pilnuje Twojego serwera Linux — i daje znać tylko wtedy, gdy coś faktycznie wymaga uwagi. Aktualizacje bezpieczeństwa APT, wygaśnięcia SSL, blacklisty, usługi i wiele więcej.

pip install git+https://github.com/Belikebee1/watchlog.git
v0.1.0 — wydane Licencja MIT Python 3.10+ natywny systemd

01.Czym wyróżnia się watchlog

🔒

Bezpieczeństwo na pierwszym miejscu

Aktualizacje bezpieczeństwa APT oznaczane jako critical. Codzienne sprawdzenie blacklist IP. Śledzenie brute-force SSH.

🤫

Bez spamu

Mail tylko, gdy coś jest naprawdę nie tak. Konfigurowalny próg severity dla każdego kanału.

🧩

Modułowe

Jeden plik = jedno sprawdzenie, jeden plik = jeden reporter. Dodaj swoje bez dotykania core.

Sprawdzenia bez zależności

Każde sprawdzenie używa standardowych narzędzi (apt, systemctl, openssl, dig). Nic egzotycznego do instalowania.

📨

Wiele kanałów

Email teraz, Telegram bot z przyciskami akcji wkrótce, apka mobilna przez REST API później.

📋

Ślad audytowy

Każde uruchomienie archiwizowane jako JSON w /var/log/watchlog/ do późniejszego debugowania.

02.Co sprawdza (od razu po instalacji)

apt_updates Liczy upgradable pakietów, eskaluje security do critical. CRITICAL przy security
ssl_certs Wygaśnięcia certów Let's Encrypt na wszystkich aktywnych certach. WARN <30 dni
disk_space Wykorzystanie filesystemu per mount, ignoruje tmpfs/snap. WARN >80%
memory MemAvailable z /proc/meminfo. WARN <500MB
services systemctl is-active dla skonfigurowanych krytycznych usług. CRITICAL gdy down
docker_images Lokalny digest vs digest :latest z registry. INFO gdy outdated
ip_blacklist Lookup w Spamhaus, Barracuda, SpamCop, SORBS. CRITICAL gdy listed
dns_records Regression check obecności SPF/DKIM/DMARC/MX/A. CRITICAL gdy missing
ssh_brute Failed loginy SSH z ostatnich 24h, posortowane wg źródłowego IP. WARN >próg

03.Jak to działa w praktyce

watchlog tylko wykrywa i powiadamia. Żeby faktycznie zainstalować łatki bezpieczeństwa automatycznie, sparuj go z unattended-upgrades (wbudowane narzędzie Ubuntu, często domyślnie wyłączone). Razem dają end-to-end zautomatyzowany security bez logowania przez SSH.

Typowy security update — od początku do końca

14:00 UTC

Ubuntu wydaje aktualizację bezpieczeństwa

Nowy pakiet pojawia się w suite -security. Mirror Hetznera (lub Twój) syncuje go w ciągu ~30 min.

16:00 UTC (max +4h)

watchlog uruchamia się (co 4 godziny)

  • Wykrywa security update przez apt list --upgradable
  • Eskaluje do CRITICAL (suite security)
  • Wysyła mail: "1 security update available"
  • Aktualizuje /status.json heartbeat
06:00 UTC dnia następnego

unattended-upgrades uruchamia się (codziennie)

  • Instaluje tylko pakiety z suite -security
  • Restart automatyczny jeśli kernel update tego wymaga (domyślnie 03:30, nie zrestartuje gdy są zalogowani userzy)
  • Wysyła mail: "Successfully installed: php8.3-fpm"
08:00 UTC

watchlog uruchamia się znów

Potwierdza że security update jest zainstalowany. Worst severity wraca do OK lub INFO. Już brak maili.

Łączny time-to-patch: ~16 godzin od release Ubuntu do w pełni załatanego serwera, w pełni automatycznie. Bez SSH.

Dwa współpracujące timery

watchlog.timer

co 4 godziny · 00, 04, 08, 12, 16, 20 UTC
Wykrywa + powiadamia
📧 mail przy WARN/CRITICAL
📋 /status.json heartbeat
📁 /var/log/watchlog/*.json

apt-daily-upgrade.timer

codziennie ~06:00 UTC
Instaluje aktualizacje bezpieczeństwa
📧 mail przy zmianie
🔁 reboot jeśli kernel update
📁 /var/log/unattended-upgrades/

04.Zacznij w 5 minut

Zainstaluj

pip install git+https://github.com/Belikebee1/watchlog.git

Skonfiguruj

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

Uruchom raz, żeby zweryfikować

sudo watchlog run

Włącz systemd timer

# Domyślnie: co 4 godziny (00, 04, 08, 12, 16, 20 UTC)
sudo watchlog install
systemctl list-timers watchlog

Sparuj z unattended-upgrades (zalecane)

# Domyślnie zainstalowane na Ubuntu — wystarczy włączyć:
echo 'APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";' | sudo tee /etc/apt/apt.conf.d/20auto-upgrades

# Ustaw email do powiadomień
sudo sed -i 's|//Unattended-Upgrade::Mail "";|Unattended-Upgrade::Mail "ty@example.com";|' \
    /etc/apt/apt.conf.d/50unattended-upgrades

# Weryfikacja
systemctl list-timers apt-daily-upgrade watchlog

05.Plan rozwoju

v0.1 — Wydane

9 sprawdzeń, reportery stdout / email / JSON, instalator systemd.

🤖

v0.2 — Telegram

Interaktywne notyfikacje z przyciskami Apply / Postpone / Ignore. Long-polling, bez webhooka.

📱

v0.3 — REST API + panel

Daemon FastAPI, web UI dla historii sprawdzeń, action endpointy dla klientów mobilnych.

🛡️

v0.4 — Więcej sprawdzeń

fail2ban stats, baseline diff otwartych portów, integralność plików (AIDE), CVE matching.