Otomatisasi jaringan,
dari satu dashboard.
Platform otomatisasi jaringan dengan konektivitas perangkat nyata: discovery adapter & host, eksekusi perintah via SSH/Telnet, generator konfigurasi Jinja2, task automation terjadwal, monitoring trafik realtime, dan visualisasi topologi — dalam satu antarmuka web.
🖥️ Network Automation Dashboard
↻ Refresh NetworkTujuh modul di sidebar, satu shell aplikasi
Seluruh modul berbagi satu kerangka: AppBar Network Automation Platform v2.0 di atas dan
drawer permanen 250 px di kiri (otomatis jadi drawer geser di layar < 900 px).
Tema MUI dark dengan warna primer #00bcd4,
latar #0a1929, dan kartu
#0f2a3f.
Berikut tampilan tiap layar beserta deskripsi fungsinya.
🖥️ Network Automation Dashboard
↻ Refresh Network| IP Address | MAC Address | Hostname | Source | Status | Last Seen | Actions |
|---|---|---|---|---|---|---|
| 192.168.1.1 | a4:2b:b0:1c:3d:9e | gateway.lan | ARP | ONLINE | 11/09 09:41:02 | Details |
| 192.168.1.20 | 00:1c:58:7a:11:02 | sw-core-01 | PING | ONLINE | 11/09 09:41:02 | Details |
| 192.168.1.45 | Unknown | Unknown | ARP | PENDING | 11/09 09:40:55 | Details |
Dashboard
Rute /dashboard · komponen Dashboard.tsx
Halaman pertama yang terbuka (rute / otomatis dialihkan ke sini).
Saat mount, komponen langsung memanggil auto-discover agar daftar perangkat di jaringan lokal terisi tanpa aksi manual,
lalu menarik empat sumber data sekaligus dan me-refresh dirinya tiap 30 detik.
- Empat kartu statistik — Active Adapters (adapter aktif di host), Connected Devices (hasil ARP + ping sweep), Managed Devices (perangkat terdaftar, lengkap dengan hitungan online/offline), dan Automation Tasks (running/pending).
- Tiga grafik Recharts — pie komposisi tipe perangkat, bar distribusi status task, dan line performa CPU / Memory / Network per jam.
- Panel MRTG — monitor bandwidth IN/OUT realtime per adapter, tertanam di dashboard (lihat Layar 08).
- Tabel Connected Network Devices — kolom IP, MAC, Hostname, Source, Status, Last Seen, dan tombol Details yang membuka dialog detail perangkat. Tombol Scan Network memicu pemindaian ulang.
- Tabel Recent Automation Tasks — lima task terakhir dengan progress bar dan chip status.
- Penanganan error — bila backend tidak terjangkau, muncul alert berisi alamat backend (
http://localhost:8000) dan tombol Retry.
GET /api/devices/
GET /api/tasks/
GET /api/automation/network/adapters/active
GET /api/automation/network/devices/connected
POST /api/automation/network/devices/auto-discover
Network Devices
+ Add DeviceDevices
Rute /devices · komponen DeviceList.tsx
Inventaris perangkat yang dikelola platform. Semua aksi terhadap perangkat nyata — uji koneksi, eksekusi perintah, dan push konfigurasi — dijalankan dari tabel ini, dengan notifikasi react-hot-toast untuk setiap hasil.
- Tabel perangkat — Name (plus tombol salin ID), Host:Port, Type, Connection, Status, dan Last Connected.
- Empat aksi baris — Test Connection (mengukur keberhasilan login & mengambil fakta perangkat), Execute Commands (dialog perintah show, satu baris satu perintah, output ditampilkan sebagai teks monospace), Push Configuration (mengirim baris konfigurasi ke mode config), dan Delete Device.
- Dialog Add Network Device — Device Name, Host/IP (divalidasi sebagai IP atau hostname di backend), Port (1–65535), Device Type, Connection Type, Username, Password, dan Enable Password opsional.
- Device Type yang didukung — Cisco IOS, Cisco IOS-XE, Cisco NX-OS, Arista EOS, Juniper JunOS, Huawei VRP (model backend juga mengenal
cisco_ios_telnetdanlinux). - Status perangkat — online, offline, pending, error, maintenance; ditampilkan sebagai chip berwarna.
GET /api/devices/
POST /api/devices/
DELETE /api/devices/{id}
POST /api/devices/{id}/test
POST /api/devices/{id}/commands
POST /api/devices/{id}/config
Network Adapters
Rute /network-adapters · komponen NetworkAdapterManager.tsx
Menampilkan adapter jaringan nyata milik host (Windows, Linux, atau macOS) dan menjadikannya titik awal network discovery. Di mode Docker, data adapter diambil dari host agent di port 9999 agar adapter asli mesin tetap terbaca dari dalam container.
- Empat kartu ringkasan — Total Adapters, Active, Ethernet, dan WiFi.
- Tabel adapter — Name, Type (Ethernet, WiFi, VPN, PPP, Loopback), IP Address, Netmask, MAC Address, CIDR, dan Status (connected / disconnected / degraded).
- Scan All memindai CIDR seluruh adapter aktif; tombol scan per baris memindai satu subnet saja. Pemindaian berjalan sebagai background task, jadi UI tidak terkunci.
- Banner progres — saat scan berjalan tampil alert “Scanning 192.168.1.0/24” dengan progress bar; setelah selesai berganti jadi alert hijau berisi jumlah device yang ditemukan.
- Dialog hasil scan — tabel IP, Hostname, Type, dan Protocol (SSH / Telnet / SNMP / HTTP-HTTPS) dari hasil deteksi port.
- Kartu Active Adapters — ringkasan adapter yang sedang terhubung, termasuk SSID untuk adapter WiFi.
GET /api/automation/network/adapters
GET /api/automation/network/adapters/active
POST /api/devices/discovery/scan
GET /api/devices/discovery/status
GET /api/devices/discovery/results
Automation
Rute /automation · komponen AutomationTaskManager.tsx
Pusat kendali automation task: membuat, menjalankan, memantau progres, dan membatalkan pekerjaan otomatis pada perangkat. Daftar task di-poll berkala sehingga kolom progress bergerak mengikuti eksekusi di backend.
- Empat kartu ringkasan — Total Tasks, Running, Completed, dan Failed.
- Tabel task — Task ID (8 karakter pertama), Device ID, Type (chip huruf kapital), Description, Progress 0–100%, Status, dan Actions.
- Aksi per baris — Execute untuk task pending, Stop / Cancel untuk task yang sedang berjalan, dan Details untuk melihat hasil JSON serta pesan error.
- Dialog Create New Automation Task — Device ID, Task Type (daftar diambil langsung dari backend beserta deskripsinya), dan Description.
- 11 tipe task tersedia, dari config backup sampai konfigurasi SNMP — daftar lengkapnya ada di bagian 04 halaman ini.
- Siklus status — pending → running → completed / failed / cancelled, dengan retry counter (maksimal 3 kali) di sisi backend.
GET /api/automation/tasks
GET /api/automation/tasks/types
POST /api/automation/tasks/create
POST /api/automation/tasks/{id}/execute
POST /api/automation/tasks/{id}/cancel
Configuration Generator
Config Generator
Rute /config · komponen configGenerator.tsx
Membangun konfigurasi perangkat dari template Jinja2 di sisi backend, tanpa mengetik manual. Panel kiri untuk input, panel kanan menampilkan hasil render pada editor Monaco (read-only, tema vs-dark, dengan nomor baris) yang bisa langsung diunduh sebagai berkas teks.
- Select Device — daftar diambil dari inventaris perangkat; nama device dipakai pada header konfigurasi yang dihasilkan.
- Template Type — Interface Configuration, BGP Configuration, atau Full Configuration (gabungan interfaces + bgp). Backend juga menyimpan template
snmp.j2. - Editor interface dinamis — tiap blok berisi Interface Name, Description, Mode (Access/Trunk), dan field VLAN yang berubah label otomatis menjadi Access VLAN atau Allowed VLANs sesuai mode. Blok bisa ditambah dan dihapus.
- Generate Configuration — mengirim data ke backend, yang merender template Jinja2 dan mengembalikan teks konfigurasi beserta nama template yang dipakai.
- Download — menyimpan hasil render sebagai berkas konfigurasi di komputer operator.
- Template tersimpan di folder
templates/dan dibuat otomatis saat pertama kali service dijalankan, sehingga bisa diedit atau ditambah tanpa mengubah kode.
GET /api/devices/
POST /api/config/generate
GET /api/config/templates
POST /api/config/validate
🚀 Task Runner
▶ Create New TaskTask Runner
Rute /tasks · komponen TaskRunner.tsx
Tampilan operasional untuk menjalankan pekerjaan pada perangkat terpilih dan mengikuti jalannya eksekusi baris per baris. Berbeda dengan layar Automation yang berorientasi tabel manajemen, Task Runner disusun sebagai daftar aktivitas dengan progress bar yang hidup.
- Kartu Task Statistics — ringkasan Total Tasks, Running, Completed, dan Failed dalam satu kolom.
- Daftar Running Tasks — tiap baris menampilkan ikon status, jenis task dalam huruf kapital, device ID, waktu mulai, progress bar “xx% complete”, chip status, serta tombol Details dan Stop.
- Dialog Create New Task — pilih Device dari inventaris, pilih Task Type, dan isi Parameters dalam format JSON, misalnya
{"interface": "GigabitEthernet0/1", "vlan": "10"}. - Dialog Task Details — memuat status, waktu, parameter, hasil, dan pesan error bila eksekusi gagal.
- Stop menghentikan task yang sedang berjalan; baris kosong diganti pesan “No tasks running. Create a new task to get started.”
GET /api/devices/
GET /api/automation/tasks
POST /api/automation/tasks/create
POST /api/automation/tasks/{id}/stop
Network Topology
Rute /topology · komponen NetworkTopology.tsx
Peta jaringan interaktif yang digambar sebagai SVG kustom — bukan gambar statis. Node disusun melingkar mengelilingi mesin operator, dengan gateway di posisi atas. Kanvas mendukung drag untuk menggeser dan scroll untuk zoom (0,3× sampai 3×).
- Panel kiri (240 px) — daftar interface host (WiFi, Ethernet, VPN) lengkap dengan CIDR dan SSID; memilih salah satunya menentukan subnet yang dipetakan.
- Scan Network — memicu discovery pada subnet terpilih, menampilkan status berjalan dan jumlah device yang ditemukan, lalu statistik Total Node, Accessible, dan Links.
- Empat kategori node — This Machine (biru), Gateway/Router (ungu), Accessible Device (hijau, port manajemen terbuka), dan Detected Device (abu-abu, terdeteksi lewat ARP/ping saja).
- Badge protokol pada node — SSH, TEL (Telnet), WEB (HTTP/HTTPS), atau SNM (SNMP), sesuai port yang terbuka saat scan.
- Jenis tautan — garis solid untuk koneksi kabel, garis putus-putus oranye untuk koneksi nirkabel.
- Klik node membuka dialog detail (IP, hostname, MAC, protokol, kategori) dengan opsi menampilkan tabel ARP perangkat tersebut pada drawer kanan.
- Kontrol kanvas — tombol Zoom In, Zoom Out, dan Reset View, indikator “100% · 9 nodes · 8 links”, serta legenda di sudut kiri bawah.
GET /api/automation/network/adapters
POST /api/devices/discovery/scan
GET /api/devices/discovery/results
GET /api/automation/network/devices/connected
GET /api/automation/network/devices/arp
📊 Network Traffic Monitor (MRTG)
Network Traffic Monitor (MRTG)
Panel di dalam /dashboard · komponen MRTGTraffic.tsx
Monitor bandwidth bergaya MRTG yang membaca counter byte adapter host dan mengubahnya menjadi laju per detik. Data ditarik setiap 2 detik dan disimpan sebagai riwayat bergulir, sehingga grafik terus bergerak selama halaman terbuka.
- Tab per adapter — hanya adapter aktif non-loopback yang tampil; titik hijau berdenyut menandakan adapter sedang melewatkan trafik.
- Baris info adapter — nama lengkap adapter, chip tipe, alamat IP dan CIDR, serta tombol Refresh untuk menarik sampel seketika.
- Kartu IN (RX) dan OUT (TX) — laju saat ini dalam font monospace, dilengkapi nilai Peak, Avg, dan Total byte kumulatif sejak adapter aktif.
- Grafik area ganda — hijau untuk trafik masuk, merah untuk trafik keluar, dengan keterangan rentang waktu “last 120s · updates every 2s”.
- Sumber data — di Windows counter dibaca lewat host agent (port 9999) sehingga tetap akurat ketika backend berjalan di dalam container Docker.
- Status awal — sebelum dua sampel terkumpul, panel menampilkan indikator “Collecting data...”.
GET /api/automation/network/adapters
GET /api/automation/traffic
GET /api/automation/traffic/{adapter_name}
Empat lapis: UI, API, konektivitas perangkat, dan agen host
Pemisahan tanggung jawab yang jelas membuat platform bisa dijalankan langsung di mesin operator maupun sebagai dua container Docker.
Frontend
Single-page app dengan MUI v5 bertema dark, React Router v6 untuk tujuh rute, TanStack Query untuk pengambilan & caching data, dan react-hot-toast untuk notifikasi aksi.
- Recharts untuk pie, bar, line, dan area chart
- Monaco Editor untuk pratinjau konfigurasi
- Vite sebagai dev server dan bundler
Backend
Empat router REST — devices, config, tasks, automation — plus endpoint WebSocket per perangkat. Service layer memisahkan logika device, task, automation, dan konfigurasi.
- Validasi request dengan Pydantic v2
- Eksekusi task sebagai background job asinkron
- Logging terstruktur ke folder
logs/
Konektivitas Perangkat
Netmiko menangani sesi SSH dan Telnet ke perangkat multi-vendor; NAPALM menyediakan operasi tingkat tinggi seperti get facts, LLDP neighbors, serta merge/commit konfigurasi.
- Connection pool yang dapat dipakai ulang (hemat waktu login)
- Eviction koneksi terlama saat pool penuh
- Tipe koneksi pada model: SSH, Telnet, NETCONF, RESTCONF, gNMI
Host Agent
Skrip Python ringan tanpa dependensi yang membaca adapter dan counter trafik asli mesin Windows, lalu menyajikannya sebagai JSON untuk backend — termasuk saat backend berjalan di dalam Docker.
/adapters— daftar adapter & IP/traffic— laju RX/TX per adapter/health— status agen
Apa yang benar-benar dikerjakan platform ini
Setiap fitur di bawah terhubung langsung ke endpoint dan layar yang sudah dibahas di bagian 01.
Tambah, ubah, hapus, dan uji perangkat. Uji koneksi melakukan login nyata lalu menyimpan waktu koneksi terakhir serta pesan error bila gagal.
Discovery memakai cache ARP lebih dulu untuk mempercepat proses, dilanjutkan ping sweep dan pemeriksaan port 22, 23, 80, 161, 443 secara paralel, lalu menyimpulkan tipe perangkat dan protokol aksesnya.
Render template Jinja2 (interfaces, bgp, snmp, full) menjadi konfigurasi siap pakai, dengan pratinjau di editor kode dan opsi unduh.
Kirim perintah show maupun baris konfigurasi ke satu perangkat, atau jalankan sekaligus ke banyak perangkat lewat endpoint bulk.
Peta SVG dengan pan, zoom, kategori node berwarna, badge protokol, dan detail ARP per node.
Pengukuran bandwidth IN/OUT per adapter tiap 2 detik lengkap dengan nilai peak, rata-rata, dan total kumulatif.
Sebelas jenis task dengan progres 0–100%, mekanisme retry, pembatalan, dan eksekusi massal ke banyak perangkat sekaligus.
Skrip automation_menu.py menyediakan menu berbasis terminal untuk adapter, scan jaringan, backup, monitoring, compliance, dan konfigurasi interface — memakai API yang sama dengan UI web.
Docker Compose menjalankan backend (port 8000) dan frontend Nginx (port 3000) dengan healthcheck, volume untuk konfigurasi, template, backup, serta log.
Sebelas jenis pekerjaan otomatis
Daftar ini dikirim backend ke UI melalui GET /api/automation/tasks/types, sehingga pilihan pada dialog pembuatan task selalu mengikuti kemampuan backend.
config_backupConfig BackupBackup konfigurasi perangkatconfig_deploymentConfig DeploymentDeploy konfigurasi ke perangkatdevice_monitoringDevice MonitoringPantau status dan metrik perangkatcompliance_checkCompliance CheckPeriksa kepatuhan konfigurasireport_generationReport GenerationHasilkan laporan perangkatinterface_configInterface ConfigKonfigurasi interface jaringanrouting_configRouting ConfigKonfigurasi routingacl_managementACL ManagementKelola access control listvlans_managementVLANs ManagementKelola VLANport_channelPort ChannelKonfigurasi port channelsnmp_configSNMP ConfigKonfigurasi SNMPDari klik di browser sampai perintah dieksekusi di perangkat
Contoh berikut mengikuti satu aksi nyata: menjalankan perintah pada sebuah router dari layar Devices.
Operator memilih perangkat dan mengetik perintah pada dialog Execute Commands.
DeviceList.tsx
Permintaan dikirim ke prefix /api yang diteruskan Nginx atau proxy Vite ke backend port 8000.
POST /api/devices/{id}/commands
FastAPI memvalidasi payload dengan Pydantic, mengambil kredensial perangkat dari device service.
api/devices.py
Connection Manager memakai koneksi dari pool, atau membuka sesi Netmiko baru, lalu menjalankan perintah.
core/connection.py
Output dikembalikan sebagai JSON, ditampilkan di dialog, dan cache TanStack Query di-invalidate agar tabel ikut segar.
WS /ws/{device_id}
Endpoint REST yang tersedia di backend
Seluruh endpoint di bawah adalah rute yang benar-benar terdaftar pada aplikasi FastAPI. Dokumentasi interaktif otomatis tersedia di http://localhost:8000/docs.
Devices
Prefix /api/devices — inventaris dan eksekusi perangkat
Discovery
Prefix /api/devices/discovery — pemindaian jaringan
Automation Tasks
Prefix /api/automation — siklus hidup task
Network & Traffic
Prefix /api/automation/network — adapter, host, bandwidth
Config
Prefix /api/config — template Jinja2
Tasks & Sistem
Eksekusi perintah sederhana dan status layanan
Ringkasan teknologi dan cara menjalankan
| Versi aplikasi | 2.0.0 |
| Backend | FastAPI 0.104 + Uvicorn (Python 3.8+) |
| Frontend | React 18 + TypeScript 5, bundler Vite 5 |
| UI library | Material UI v5 (tema dark, primary #00bcd4) |
| Data fetching | TanStack Query v5 + Axios |
| Visualisasi | Recharts (chart) & SVG kustom (topologi) |
| Editor konfigurasi | Monaco Editor (read-only, tema vs-dark) |
| Konektivitas perangkat | Netmiko 4.3 (SSH/Telnet) & NAPALM 4.1 |
| Templating | Jinja2 — interfaces.j2, bgp.j2, snmp.j2, full.j2 |
| Realtime | WebSocket /ws/{device_id} + polling 2–30 detik |
| Vendor yang didukung | Cisco (IOS, IOS-XE, NX-OS), Arista EOS, Juniper JunOS, Huawei VRP, Linux |
| Discovery | Cache ARP → ping sweep → port 22/23/80/161/443 |
| Menjalankan (lokal) | start.bat — backend 8000, frontend 3000 |
| Menjalankan (Docker) | docker compose up -d — Nginx 3000, API 8000, host agent 9999 |
| Dokumentasi API | /docs (Swagger UI) dan /redoc |
Siap mengotomatisasi jaringan Anda?
Arsitektur modular, endpoint terdokumentasi, dan antarmuka yang siap dipakai untuk operasi harian.