P

pxe-utbksvr

pxe-server utbk

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