Ett komplett övervakningssystem byggt från grunden — med agenter på varje server och en live-dashboard i webbläsaren. Inga molntjänster, inga abonnemang. Allt kör lokalt.
📅 Projekt startat 2025⏱ ~1 år av utveckling👤 Adam Halvars
Jag ville ha koll på mina servrar utan att behöva logga in på varje enskild maskin. Och utan att betala för tjänster som Datadog eller Zabbix. Lösningen blev SkyNode — ett egenutvecklat system där en liten agent på varje server rapporterar sin status, och en HTML-sida samlar ihop allt i en live-dashboard.
Projektet tog ungefär ett år att växa fram till vad det är idag — med idéer, omskrivningar, testande och lärande längs vägen. Det är inte perfekt, men det är mitt — och det funkar.
2
Agent-varianter Windows + Linux
9191
Porten agenterna lyssnar på
~1 år
Tid det tagit att bygga systemet
Hur fungerar systemet?
Arkitektur i ett nötskal
Systemet bygger på ett enkelt koncept: varje server kör en liten agent-process som samlar ihop information om sig själv. Dashboarden (en HTML-fil) frågar sedan varje agent och ritar upp resultatet i realtid.
🖥 Server kör agenten
→
HTTP :9191 /status
→
🌐 Dashboard hämtar data
→
📊 Live-vy i webbläsaren
Dashboarden behöver inte ligga på samma maskin som agenterna — den är bara en HTML-fil som kan öppnas i vilken webbläsare som helst, var som helst på nätverket. Den frågar agenterna direkt via HTTP.
Vad är en agent?
Den lilla programmet som körs på varje server
Agenten är ett litet program som startar automatiskt när servern startar och sedan bara sitter och lyssnar. När dashboarden frågar, svarar agenten med ett JSON-paket fyllt med info om servern.
Agenten behöver inga externa bibliotek eller beroenden — den är avsiktligt enkel och portabel.
🪟 Windows-agenten
Skriven i PowerShell
Kör som Administrator
Autostart via Task Scheduler
Hämtar CPU, RAM, diskar
Övervakar Windows-tjänster
Kopplar mot SQL Server/MySQL
Skapar brandväggsregel automatiskt
🐧 Linux-agenten
Skriven i Python 3
Kör som root (sudo)
Autostart via systemd
Läser /proc för CPU + RAM
Kör df för diskinformation
Kollar systemctl-tjänster
Stöd för MySQL + PostgreSQL
Vad samlar agenten in?
All data som skickas till dashboarden
Varje gång dashboarden frågar agenten returnerar den ett JSON-objekt med all relevant serverinformation. Det ser ut ungefär så här:
Agenten lyssnar på port 9191 och svarar på tre olika adresser.
GET
http://<server-ip>:9191/status
Returnerar all serverinformation som JSON. Det är detta dashboarden anropar varje gång den uppdaterar sig. Svaret innehåller CPU, RAM, diskar, tjänster och databaser.
GET
http://<server-ip>:9191/health
En enkel hälsokontroll. Svarar alltid med {"ok": true} om agenten är igång. Bra för att snabbt kolla om agenten lever.
Dashboarden är en vanlig HTML-fil som du öppnar i webbläsaren. Inget Node.js, inga npm-paket, inget backend. Allt JavaScript är inbyggt i filen och kommunicerar direkt med agenterna via fetch().
🌐 Webbläsare öppnar HTML-fil
→
fetch() varje 30 sek
→
Agenter svarar med JSON
→
📊 Uppdaterar vyn automatiskt
I dashboardens CONFIG-objekt listar man sina servrar med IP och port. Dashboarden frågar sedan alla servrar parallellt, ritar upp ett kort per server och uppdaterar sig automatiskt var 30:e sekund. Om en server inte svarar visas den som offline.
💡 Tips: Dashboarden fungerar utmärkt från en NAS eller en Synology — öppna bara HTML-filen i valfri webbläsare på nätverket. Ingen installation krävs.
Autostart — agenten startar med servern
Systemd på Linux, Task Scheduler på Windows
Agenten är designad att starta automatiskt och köra i bakgrunden utan att störa det övriga systemet. På Linux används systemd, på Windows Task Scheduler.
WINDOWS — TASK SCHEDULER (automatiskt via install-skript)
# Kör install-skriptet som Administrator:
powershell -ExecutionPolicy Bypass -File install-windows.ps1
# Skriptet sköter automatiskt:✓ Kopierar agenten till C:\Monitor\
✓ Skapar brandväggsregel för port 9191
✓ Skapar schemalagd uppgift som kör som SYSTEM
✓ Startar agenten direkt
⚠ Säkerhet: Agenten lyssnar på port 9191 utan kryptering. Den är avsedd för användning på ett internt nätverk — exponera den inte mot internet utan ett lager av skydd (VPN eller reverse proxy med HTTPS). Agenten har ett valfritt token-skydd via X-Monitor-Token-headern.
Inga molntjänster. Ingen prenumeration. Bara egna servrar som pratar med varandra på det lokala nätverket.
Projektet — ungefär ett år av byggande
Hur SkyNode växte fram
Tidigt 2025
Idén föds
Trött på att logga in på varje server för att kolla status. Börjar skissa på ett enkelt PowerShell-skript som svarar på HTTP-anrop.
Vår 2025
Första fungerande prototypen
Windows-agenten kan svara på /status med CPU och RAM. En enkel HTML-sida visar resultatet. Inga diskgrafer, ingen tjänstövervakning ännu.
Sommar 2025
Linux-agenten tillkommer
Porterar logiken till Python 3 utan externa bibliotek. Agenten läser /proc direkt för CPU och minne. Systemd-integrationen läggs till.
Höst 2025
Dashboarden växer
Lägger till pie-grafer för diskar, tjänstövervakning, SQL-databasstorlekar och filter för Windows/Linux/kritiska servrar. Auto-refresh implementeras.
Tidigt 2026
Polering och install-skript
Install-skript för automatisk driftsättning. Token-autentisering, bättre felhantering och responsiv design. Projektet döps till SkyNode.
Vad du får med SkyNode
Windows-agent skriven i PowerShell
Linux-agent i Python 3
Live-dashboard som körs direkt i webbläsaren
Automatisk uppdatering
Stöd för MySQL, MariaDB och PostgreSQL
Inga molntjänster, inga externa beroenden
Designad för internt nätverk med valfritt token-skydd
Nyfiken på att bygga något liknande?
Hör av dig — jag berättar gärna mer om hur det är uppbyggt och vad jag lärt mig längs vägen.