Name Last Update
middleware Loading commit data...
node_modules Loading commit data...
public/css Loading commit data...
routes Loading commit data...
views Loading commit data...
README.md Loading commit data...
app.js Loading commit data...
package-lock.json Loading commit data...
package.json Loading commit data...

PXE Server Dashboard

Dashboard manajemen PXE Server untuk lab komputer, dibangun dengan Node.js + Express + EJS.

Fitur

  • Login dengan username & password
  • 📝 Editor teks untuk file boot.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 file routes/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