Skip to content

n13r/ndash-bind

Repository files navigation

NDash - Bind DNS Management Dashboard

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.

Fitur

  • πŸ“Š 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

Teknologi yang Digunakan

  • Backend: Express.js
  • Template Engine: EJS
  • Styling: Tailwind CSS
  • Icons: Font Awesome
  • Date Handling: Moment.js

Instalasi

1. Install Dependencies

cd /opt/ndash
npm install

2. Konfigurasi (Opsional)

Edit file server.js untuk mengubah port atau konfigurasi lainnya:

const PORT = process.env.PORT || 3000;

3. Jalankan Aplikasi

Mode Production:

npm start

Mode Development (dengan auto-reload):

npm run dev

Aplikasi akan berjalan di http://localhost:3000

Struktur Direktori

/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

Penggunaan

Dashboard

  • 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

Manajemen DNS Zones

  1. Klik "DNS Zones" di sidebar atau "View Zones" di quick actions
  2. Untuk membuat zone baru, klik "Create New Zone"
  3. Isi form dengan nama domain dan tipe zone
  4. Klik zone untuk melihat detail dan record-nya

Manajemen DNS Records

  1. Buka detail zone yang ingin dikelola
  2. Klik "Add Record" untuk menambah record baru
  3. Pilih tipe record (A, AAAA, CNAME, MX, TXT, dll)
  4. Isi nilai dan konfigurasi record
  5. Record akan otomatis muncul di list

Tipe DNS Records yang Didukung

  • A - IPv4 Address
  • AAAA - IPv6 Address
  • CNAME - Canonical Name
  • MX - Mail Exchange
  • TXT - Text Record
  • NS - Name Server
  • PTR - Pointer
  • SRV - Service

Integrasi dengan Bind

Catatan: Versi saat ini menggunakan data storage simulasi. Untuk integrasi penuh dengan Bind DNS server, Anda perlu:

  1. Menambahkan modul untuk membaca/menulis zone files Bind
  2. Mengimplementasikan fungsi untuk reload Bind service
  3. Menambahkan validasi zone syntax
  4. Setup permission untuk mengakses direktori Bind

Contoh Integrasi (Future Enhancement):

// 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);
    }
});

Keamanan

⚠️ Penting untuk Production:

  1. Implementasikan autentikasi dan authorization
  2. Gunakan HTTPS
  3. Validasi semua input dari user
  4. Set proper file permissions untuk zone files
  5. Implementasikan rate limiting
  6. Enable CSRF protection
  7. Audit log untuk semua perubahan

Customization

Mengubah Warna Theme

Edit file /public/css/style.css untuk menyesuaikan warna:

.btn-primary {
    background: linear-gradient(135deg, #your-color 0%, #your-color-dark 100%);
}

Menambah Menu Sidebar

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>

Troubleshooting

Port sudah digunakan

Ubah port di server.js atau set environment variable:

PORT=3001 npm start

Module not found

Install ulang dependencies:

rm -rf node_modules
npm install

Roadmap

  • 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

Kontribusi sangat diterima! Silakan buat pull request atau laporkan issues.

Lisensi

ISC License

Support

Untuk pertanyaan atau masalah, silakan buat issue di repository ini.


Dibuat dengan ❀️ menggunakan Express.js dan EJS

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors