Lightweight server monitor that reports events to console, Telegram, and Slack.
- Open ports (
netstat -tulpn, every 60 seconds). Alerts only for newly observed entries. - Running processes (
ps aux, every 60 seconds). Alerts only for newly observed processes. - Auth activity (
/var/log/auth.logviatail). Matches logins,sudoactivity, and opened sessions. - URL availability (configured in
urls.js, interval via env). - TLS certificate expiry (configured in
domains.js, interval via env). Alerts when a cert has 3 or fewer days left. - Free disk space (configured in
disks.js, interval and threshold via env). Alerts on low space and recovery.
- Console output (always enabled)
- Telegram (
TELEGRAM_BOT_TOKENandTELEGRAM_CHATS) - Slack (
SLACK_TOKENandSLACK_CHANNELS)
- Node.js 18+
- Linux host with
netstatavailable - Read access to
/var/log/auth.log(auth watcher is skipped if the file does not exist)
git clone https://github.com/ivanoff/junta.git
cd junta
npm install
cp .env.example .envOptional configuration files:
urls.jsfor URL checksdomains.jsfor certificate checksdisks.jsfor mount points to check free spaceprocesses_skip.jsfor noisy processes to ignore
Edit .env as needed:
SERVER_NAME=local
URLS_CHECK_DELAY_SECONDS=600
DOMAINS_CHECK_DELAY_DAYS=1
DISK_CHECK_DELAY_HOURS=1
DISK_CHECK_THRESHOLD_GB=20
TELEGRAM_BOT_TOKEN=0000000000:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
TELEGRAM_CHATS=000000001,000000002,000000003
SLACK_TOKEN=xoxb-00000000000-0000000000000-AAAAAAAAAAAAAAAAAAAAAAA
SLACK_CHANNELS=CAAAAAAAAAAAAA,CBBBBBBBBBBBBBBSERVER_NAME: Prefix added to every message.URLS_CHECK_DELAY_SECONDS: URL check interval in seconds. Default is600.DOMAINS_CHECK_DELAY_DAYS: TLS check interval in days. Default is1.DISK_CHECK_DELAY_HOURS: Disk check interval in hours. Default is1.DISK_CHECK_THRESHOLD_GB: Low-space threshold in GB. Default is20.TELEGRAM_BOT_TOKEN: Telegram bot token.TELEGRAM_CHATS: Comma-separated chat IDs.SLACK_TOKEN: Slack token.SLACK_CHANNELS: Comma-separated Slack channel IDs.
npm startnpm start runs nodemon in watch mode and sends up on startup and down on exit.

