PXE Server Dashboard
Dashboard manajemen PXE Server untuk lab komputer, dibangun dengan Node.js + Express + EJS.
Fitur
-
✅ Login dengan username & password -
📝 Editor teks untuk fileboot.ipxe(dengan backup otomatis) -
📤 Upload/replace file:vmlinuz,initrd.img,filesystem.squashfs -
⚙ ️ Monitor & kontrol service: dnsmaq, nginx, ipxe -
🔄 Auto-refresh status service tiap 10 detik
Struktur Direktori
pxe-dashboard/
├── app.js # Entry point
├── package.json
├── middleware/
│ └── auth.js # Auth middleware
├── routes/
│ ├── auth.js # Login/logout
│ ├── dashboard.js # Halaman utama
│ ├── files.js # Editor + upload
│ └── service.js # Monitor service
├── views/
│ ├── partials/
│ │ ├── head.ejs
│ │ ├── nav.ejs
│ │ └── flash.ejs
│ ├── login.ejs
│ ├── dashboard.ejs
│ ├── boot-editor.ejs
│ ├── upload.ejs
│ └── service.ejs
└── public/
└── css/
└── style.css
Instalasi
1. Prasyarat
- Node.js >= 18
- npm >= 9
2. Install dependencies
cd pxe-dashboard
npm install
3. Konfigurasi sudo (untuk kontrol service)
Tambahkan ke /etc/sudoers (gunakan visudo):
www-data ALL=(ALL) NOPASSWD: /bin/systemctl start dnsmaq
www-data ALL=(ALL) NOPASSWD: /bin/systemctl stop dnsmaq
www-data ALL=(ALL) NOPASSWD: /bin/systemctl restart dnsmaq
www-data ALL=(ALL) NOPASSWD: /bin/systemctl start nginx
www-data ALL=(ALL) NOPASSWD: /bin/systemctl stop nginx
www-data ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx
www-data ALL=(ALL) NOPASSWD: /bin/systemctl start ipxe
www-data ALL=(ALL) NOPASSWD: /bin/systemctl stop ipxe
www-data ALL=(ALL) NOPASSWD: /bin/systemctl restart ipxe
4. Pastikan direktori PXE ada
sudo mkdir -p /var/www/html/debian12/live
sudo chown -R $USER:$USER /var/www/html
5. Jalankan aplikasi
# Development
npm run dev
# Production
npm start
Buka browser: http://localhost:3000
Login Default
| Username | Password |
|---|---|
| admin | admin123 |
⚠ ️ Ganti password di produksi! Edit fileroutes/auth.js, generate hash baru dengan:node -e "const b=require('bcryptjs'); b.hash('PASSWORD_BARU',10).then(h=>console.log(h))"
Environment Variables
PORT=3000 # Port server (default: 3000)
PXE_ROOT=/var/www/pxe-dashboard # Root direktori PXE (default: /var/www/pxe-dashboard)
Menjalankan sebagai Service (systemd)
Buat file /etc/systemd/system/pxe-dashboard.service:
[Unit]
Description=PXE Dashboard
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/path/to/pxe-dashboard
ExecStart=/usr/bin/node app.js
Restart=on-failure
Environment=PORT=3000
Environment=PXE_ROOT=/var/www/pxe-dashboard
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable pxe-dashboard
sudo systemctl start pxe-dashboard
Jalur File yang Dikelola
| File | Path |
|---|---|
| boot.uefi | /var/www/html/boot.ipxe |
| vmlinuz | /var/www/html/debian12/live/vmlinuz |
| initrd.img | /var/www/html/debian12/live/initrd.img |
| filesystem.squashfs | /var/www/html/debian12/live/filesystem.squashfs |