NDash adalah aplikasi web untuk mengelola DNS Bind dengan antarmuka yang modern dan mudah digunakan. Aplikasi ini dibangun dengan Express.js backend dan EJS templating, dengan desain yang terinspirasi dari IDVE.
- 📊 Dashboard Informatif - Tampilan statistik DNS zone dan records
- 🌐 Manajemen DNS Zones - Buat, lihat, edit, dan hapus DNS zones
- 📝 Manajemen DNS Records - Kelola berbagai tipe DNS records (A, AAAA, CNAME, MX, TXT, dll)
- 🎨 UI Modern - Desain responsif dengan Tailwind CSS dan Shadcn-UI inspired
- ⚡ Quick Actions - Akses cepat ke fungsi-fungsi umum
- 📱 Responsive Design - Bekerja dengan baik di desktop dan mobile
- Backend: Express.js
- Template Engine: EJS
- Styling: Tailwind CSS
- Icons: Font Awesome
- Date Handling: Moment.js
cd /opt/ndash
npm installEdit file server.js untuk mengubah port atau konfigurasi lainnya:
const PORT = process.env.PORT || 3000;Mode Production:
npm startMode Development (dengan auto-reload):
npm run devAplikasi akan berjalan di http://localhost:3000
/opt/ndash/
├── data/
│ └── storage.js # Data storage (zones, records, activities)
├── public/
│ ├── css/
│ │ └── style.css # Custom CSS styles
│ └── js/
│ └── main.js # Client-side JavaScript
├── routes/
│ ├── dashboard.js # Dashboard routes
│ ├── zones.js # DNS zones routes
│ └── records.js # DNS records routes
├── views/
│ ├── partials/
│ │ ├── header.ejs
│ │ ├── sidebar.ejs
│ │ ├── header-standalone.ejs
│ │ └── footer-standalone.ejs
│ ├── zones/
│ │ ├── list.ejs # List all zones
│ │ ├── detail.ejs # Zone details with records
│ │ └── new.ejs # Create new zone
│ ├── records/
│ │ └── new.ejs # Create new record
│ └── dashboard.ejs # Main dashboard
├── server.js # Main application file
├── package.json
└── README.md
- Akses halaman utama untuk melihat overview DNS zones dan statistics
- Quick actions untuk akses cepat ke fungsi-fungsi utama
- Lihat aktivitas terbaru dan zona yang baru dibuat
- Klik "DNS Zones" di sidebar atau "View Zones" di quick actions
- Untuk membuat zone baru, klik "Create New Zone"
- Isi form dengan nama domain dan tipe zone
- Klik zone untuk melihat detail dan record-nya
- Buka detail zone yang ingin dikelola
- Klik "Add Record" untuk menambah record baru
- Pilih tipe record (A, AAAA, CNAME, MX, TXT, dll)
- Isi nilai dan konfigurasi record
- Record akan otomatis muncul di list
- A - IPv4 Address
- AAAA - IPv6 Address
- CNAME - Canonical Name
- MX - Mail Exchange
- TXT - Text Record
- NS - Name Server
- PTR - Pointer
- SRV - Service
Catatan: Versi saat ini menggunakan data storage simulasi. Untuk integrasi penuh dengan Bind DNS server, Anda perlu:
- Menambahkan modul untuk membaca/menulis zone files Bind
- Mengimplementasikan fungsi untuk reload Bind service
- Menambahkan validasi zone syntax
- Setup permission untuk mengakses direktori Bind
// Membaca zone file
const fs = require('fs-extra');
const zoneContent = await fs.readFile('/etc/bind/zones/db.example.com', 'utf8');
// Reload Bind
const { exec } = require('child_process');
exec('rndc reload', (error, stdout, stderr) => {
if (error) {
console.error('Error reloading Bind:', error);
}
});- Implementasikan autentikasi dan authorization
- Gunakan HTTPS
- Validasi semua input dari user
- Set proper file permissions untuk zone files
- Implementasikan rate limiting
- Enable CSRF protection
- Audit log untuk semua perubahan
Edit file /public/css/style.css untuk menyesuaikan warna:
.btn-primary {
background: linear-gradient(135deg, #your-color 0%, #your-color-dark 100%);
}Edit file /views/partials/sidebar.ejs:
<a href="/new-menu" class="nav-item">
<i class="fas fa-icon-name"></i>
<span>Menu Name</span>
</a>Ubah port di server.js atau set environment variable:
PORT=3001 npm startInstall ulang dependencies:
rm -rf node_modules
npm install- Autentikasi user dan role-based access
- Integrasi langsung dengan Bind9 zone files
- Export/Import zone files
- DNS query testing tools
- Backup dan restore zones
- Monitoring query statistics
- Multi-server management
- API documentation dengan Swagger
Kontribusi sangat diterima! Silakan buat pull request atau laporkan issues.
ISC License
Untuk pertanyaan atau masalah, silakan buat issue di repository ini.
Dibuat dengan ❤️ menggunakan Express.js dan EJS