Aplikasi web monitoring server berbasis SSH yang modern dan real-time, terinspirasi dari SwiftServer.
- CPU: Usage, load average, history chart
- Memory: RAM & Swap usage dengan breakdown detail
- Disk: Monitor semua partisi dengan usage percentage
- Network: Traffic upload/download per interface
- Processes: Top CPU & Memory processes
- Docker: Container monitoring (optional)
- GPU: NVIDIA GPU monitoring (optional)
- Monitor unlimited servers secara bersamaan
- Simple dashboard view: Hanya CPU & Memory di card
- Detailed view: Klik server untuk lihat semua metrics lengkap
- Independent SSH connections per server
- Grid layout responsive (1-3 columns)
- Single-user authentication (password lokal)
- JWT-based session management
- Encrypted password storage (AES-256)
- Server credentials stored in encrypted fields inside SQLite database (
data/database.sqlite) - Private keys stored as .pem files dengan permissions 0600 (owner-only)
- Private key files tersimpan di
data/ssh-keys/(excluded from git) - No agent installation on servers
- SSH connection only
- Atomic file operations untuk data persistence
- WebSocket untuk live data streaming
- Auto-refresh setiap 5 detik
- Connection status indicator
- Error handling & reconnection
- Sequential SSH command execution
- Dark mode support
- Responsive design (desktop & mobile)
- Beautiful charts & visualizations
- Tailwind CSS styling
- Two-level view: Simple cards + Detailed page
- Node.js v18 atau lebih baru
- npm atau yarn
- SSH access ke servers yang akan dimonitor
git clone <repository-url>
cd server-monitoringnpm run install:allAtau manual:
# Install root dependencies
npm install
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm installSalin file contoh environment dan sesuaikan nilainya.
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.envVariable penting:
| Key | Keterangan |
|---|---|
NODE_ENV |
Gunakan production saat deploy |
PORT |
Port HTTP backend (default 3000) |
JWT_SECRET |
String panjang random (β₯32 char) untuk menandatangani token |
ENCRYPTION_KEY |
String panjang random (β₯32 char) untuk enkripsi credential |
DEFAULT_ADMIN_PASSWORD |
Password awal login (wajib diganti setelah deploy) |
CORS_ORIGIN |
Daftar origin yang diizinkan (pisahkan dengan koma) |
SOCKET_PING_INTERVAL / SOCKET_PING_TIMEOUT |
(Opsional) tuning koneksi WebSocket |
Generate secret secara cepat:
node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"| Key | Keterangan |
|---|---|
VITE_API_URL |
URL backend API (sertakan suffix /api) |
VITE_SOCKET_URL |
URL untuk koneksi Socket.io (tanpa /socket.io) |
npm run devAtau jalankan terpisah:
Backend (Terminal 1):
cd backend
npm run devFrontend (Terminal 2):
cd frontend
npm run devAplikasi akan berjalan di:
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
- WebSocket: ws://localhost:3000
- Password awal: Nilai
DEFAULT_ADMIN_PASSWORDpadabackend/.env
PENTING: Ganti password dari halaman Settings β Ubah Password segera setelah deploy!
Akses http://localhost:5173 dan login menggunakan password yang Anda set di DEFAULT_ADMIN_PASSWORD
- Klik tombol "Add Server"
- Isi informasi server:
- Name: Nama server (e.g., "Production Server 1")
- Host: IP address atau hostname
- Port: SSH port (default: 22)
- Username: SSH username
- Authentication: Pilih Password atau Private Key
- Group: Kategori server (optional)
- Klik "Add Server"
Setelah server ditambahkan, monitoring akan dimulai secara otomatis:
- CPU usage & load average
- Memory & Swap usage
- Disk partitions
- Network interfaces
- Top processes
Data akan di-update setiap 5 detik via WebSocket
- Refresh: Reload data server
- Edit: Update credentials atau info server
- Delete: Hapus server dari monitoring
βββββββββββββββββββ
β React Frontend β β Browser (localhost:5173)
β (Vite) β
ββββββββββ¬βββββββββ
β HTTP REST API + WebSocket
ββββββββββΌβββββββββ
β Express.js API β β Backend (localhost:3000)
β + Socket.io β
ββββββββββ¬βββββββββ
β SSH (Port 22)
ββββββββββΌβββββββββ
β Target Servers β β Your servers
β (Linux) β
βββββββββββββββββββ
server-monitoring/
βββ backend/
β βββ src/
β β βββ server.js # Main server
β β βββ routes/ # API routes
β β βββ services/ # Business logic
β β βββ middleware/ # Auth middleware
β β βββ utils/ # Utilities
β βββ data/ # SQLite database & SSH key storage
β βββ package.json
βββ frontend/
β βββ src/
β β βββ pages/ # React pages
β β βββ components/ # React components
β β βββ services/ # API & Socket services
β β βββ store/ # State management (Zustand)
β β βββ App.jsx
β βββ package.json
βββ package.json # Root package
βββ README.md
- Node.js + Express.js - REST API
- Socket.io - WebSocket real-time
- ssh2 - SSH client
- bcryptjs - Password hashing
- jsonwebtoken - JWT authentication
- better-sqlite3 - Embedded SQLite database access
- React 18 - UI library
- Vite - Build tool
- Tailwind CSS - Styling
- Recharts - Charts & graphs
- Zustand - State management
- Axios - HTTP client
- Socket.io-client - WebSocket client
- React Router - Routing
- Lucide React - Icons
Jika port 3000 atau 5173 sudah digunakan, edit:
- Backend port:
backend/.envβPORT=3001 - Frontend port:
frontend/vite.config.jsβserver.port: 5174 - Update juga:
frontend/.envβVITE_API_URLdanVITE_SOCKET_URL
- Pastikan port SSH (22) terbuka di firewall
- Verifikasi username & password/key correct
- Test manual SSH:
ssh username@host -p 22
- Pastikan backend server running
- Check browser console untuk errors
- Verify CORS settings di backend
- Check SSH connection status
- Verify Linux commands available di server (
top,free,df,iostat) - Check backend logs untuk errors
Jalankan ulang:
npm run install:allAplikasi ini menggunakan command standar Linux:
top- CPU usagefree -m- Memory infodf -h- Disk usageiostat- Disk I/Oip/ifconfig- Network info/proc/net/dev- Network statisticsps aux- Process listuptime- System uptimehostname- Hostnameuname- System info
Optional (jika tersedia):
docker ps- Docker containersdocker stats- Container statsnvidia-smi- GPU info (Nvidia)
- Set
NODE_ENV=production - Ganti
JWT_SECRETdanENCRYPTION_KEY - Setup reverse proxy (nginx/apache)
- Enable HTTPS
- Setup process manager (PM2):
npm install -g pm2
cd backend
pm2 start src/server.js --name server-monitoring
pm2 save
pm2 startup- Build production:
cd frontend
npm run build- Deploy
dist/folder ke web server
MIT License
Contributions are welcome! Feel free to open issues or pull requests.
Jika ada pertanyaan atau issue, silakan buat issue di repository ini.
Happy Monitoring! π