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