NetBox adalah sebuah aplikasi open-source berbasis web yang dirancang untuk membantu pengelolaan infrastruktur jaringan dan pusat data. Aplikasi ini terutama digunakan oleh administrator jaringan dan penyedia layanan internet (ISP) untuk mendokumentasikan dan mengelola komponen jaringan secara efisien.
Berikut adalah beberapa fitur utama NetBox:
- Manajemen IP Address (IPAM)
- Mendokumentasikan ruang alamat IP, subnet, VLAN, dan grup IP.
- Melacak alokasi IP dan ketersediaan IP dalam jaringan.
- Manajemen Perangkat Jaringan
- Dokumentasi perangkat keras (seperti router, switch, server, firewall).
- Informasi tentang lokasi fisik perangkat (rak, ruangan, situs).
- Manajemen Koneksi Jaringan (DCIM)
- Mendokumentasikan hubungan antara perangkat, kabel, dan port.
- Melacak topologi jaringan.
- Manajemen Rute & ASN
- Mendokumentasikan rute BGP, ASN (Autonomous System Number), dan peering.
- Customisasi dan Automasi
- Mendukung API RESTful untuk integrasi dengan alat lain.
- Fitur scripting untuk memperluas fungsionalitas aplikasi.
- Manajemen Tag & Metadata
- Menambahkan informasi tambahan dengan tag atau atribut khusus.
NetBox sangat populer di kalangan profesional jaringan karena kemampuannya yang fleksibel, skalabilitas tinggi, dan biaya rendah (karena gratis). Ini biasanya digunakan untuk melengkapi alat operasional lain seperti sistem monitoring (misalnya Zabbix atau Nagios).
Sebagai ISP, Anda dapat menggunakan NetBox untuk melacak detail jaringan Anda, memastikan efisiensi operasional, dan mengurangi kesalahan dokumentasi.
Instalasi
Pastikan kamu sudah menginstall Docker Engine, Jika belum silakan lihat Disini
Clone repository NetBox Docker kedalam direktory /opt/docker
cd /opt/docker/
git clone https://github.com/netbox-community/netbox-docker.git
Pergi kedalam directory netbox-docker
hasil git clone
cd /opt/docker/netbox-docker/
Ubah/Sesuaikan volumes (Ini berguna untuk memudahkan Backup/Restore).
Nantinya ketika kita akan melakukan backup/restore maka kita tinggal hanya menyalin directory netbox-docker
Original docker-compose.yml
services:
netbox: &netbox
image: docker.io/netboxcommunity/netbox:${VERSION-v4.1-3.0.2}
depends_on:
- postgres
- redis
- redis-cache
env_file: env/netbox.env
user: "unit:root"
healthcheck:
test: curl -f http://localhost:8080/login/ || exit 1
start_period: 90s
timeout: 3s
interval: 15s
volumes:
- ./configuration:/etc/netbox/config:z,ro
- netbox-media-files:/opt/netbox/netbox/media:rw
- netbox-reports-files:/opt/netbox/netbox/reports:rw
- netbox-scripts-files:/opt/netbox/netbox/scripts:rw
netbox-worker:
<<: *netbox
depends_on:
netbox:
condition: service_healthy
command:
- /opt/netbox/venv/bin/python
- /opt/netbox/netbox/manage.py
- rqworker
healthcheck:
test: ps -aux | grep -v grep | grep -q rqworker || exit 1
start_period: 20s
timeout: 3s
interval: 15s
netbox-housekeeping:
<<: *netbox
depends_on:
netbox:
condition: service_healthy
command:
- /opt/netbox/housekeeping.sh
healthcheck:
test: ps -aux | grep -v grep | grep -q housekeeping || exit 1
start_period: 20s
timeout: 3s
interval: 15s
# postgres
postgres:
image: docker.io/postgres:16-alpine
healthcheck:
test: pg_isready -q -t 2 -d $$POSTGRES_DB -U $$POSTGRES_USER
start_period: 20s
timeout: 30s
interval: 10s
retries: 5
env_file: env/postgres.env
volumes:
- netbox-postgres-data:/var/lib/postgresql/data
# redis
redis:
image: docker.io/valkey/valkey:8.0-alpine
command:
- sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env
- valkey-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
healthcheck: &redis-healthcheck
test: '[ $$(valkey-cli --pass "$${REDIS_PASSWORD}" ping) = ''PONG'' ]'
start_period: 5s
timeout: 3s
interval: 1s
retries: 5
env_file: env/redis.env
volumes:
- netbox-redis-data:/data
redis-cache:
image: docker.io/valkey/valkey:8.0-alpine
command:
- sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env
- valkey-server --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
healthcheck: *redis-healthcheck
env_file: env/redis-cache.env
volumes:
- netbox-redis-cache-data:/data
volumes:
netbox-media-files:
driver: local
netbox-postgres-data:
driver: local
netbox-redis-cache-data:
driver: local
netbox-redis-data:
driver: local
netbox-reports-files:
driver: local
netbox-scripts-files:
driver: local
Ubah menjadi seperti berikut
services:
netbox: &netbox
image: docker.io/netboxcommunity/netbox:${VERSION-v4.1-3.0.2}
depends_on:
- postgres
- redis
- redis-cache
env_file: env/netbox.env
user: "unit:root"
healthcheck:
test: curl -f http://localhost:8080/login/ || exit 1
start_period: 90s
timeout: 3s
interval: 15s
volumes:
- ./configuration:/etc/netbox/config:z,ro
- ./volumes/netbox-media-files:/opt/netbox/netbox/media:rw
- ./volumes/netbox-reports-files:/opt/netbox/netbox/reports:rw
- ./volumes/netbox-scripts-files:/opt/netbox/netbox/scripts:rw
netbox-worker:
<<: *netbox
depends_on:
netbox:
condition: service_healthy
command:
- /opt/netbox/venv/bin/python
- /opt/netbox/netbox/manage.py
- rqworker
healthcheck:
test: ps -aux | grep -v grep | grep -q rqworker || exit 1
start_period: 20s
timeout: 3s
interval: 15s
netbox-housekeeping:
<<: *netbox
depends_on:
netbox:
condition: service_healthy
command:
- /opt/netbox/housekeeping.sh
healthcheck:
test: ps -aux | grep -v grep | grep -q housekeeping || exit 1
start_period: 20s
timeout: 3s
interval: 15s
# postgres
postgres:
image: docker.io/postgres:16-alpine
healthcheck:
test: pg_isready -q -t 2 -d $$POSTGRES_DB -U $$POSTGRES_USER
start_period: 20s
timeout: 30s
interval: 10s
retries: 5
env_file: env/postgres.env
volumes:
- ./volumes/netbox-postgres-data:/var/lib/postgresql/data
# redis
redis:
image: docker.io/valkey/valkey:8.0-alpine
command:
- sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env
- valkey-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
healthcheck: &redis-healthcheck
test: '[ $$(valkey-cli --pass "$${REDIS_PASSWORD}" ping) = ''PONG'' ]'
start_period: 5s
timeout: 3s
interval: 1s
retries: 5
env_file: env/redis.env
volumes:
- ./volumes/netbox-redis-data:/data
redis-cache:
image: docker.io/valkey/valkey:8.0-alpine
command:
- sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env
- valkey-server --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
healthcheck: *redis-healthcheck
env_file: env/redis-cache.env
volumes:
- ./volumes/netbox-redis-cache-data:/data
volumes:
netbox-media-files:
driver: local
netbox-postgres-data:
driver: local
netbox-redis-cache-data:
driver: local
netbox-redis-data:
driver: local
netbox-reports-files:
driver: local
netbox-scripts-files:
driver: local
Lakukan konfigurasi ports dengan docker-compose.override.yml
*Gunakan Bash Shell
tee docker-compose.override.yml <<EOF
services:
netbox:
ports:
- 8000:8080
EOF
Jalankan Netbox Docker
docker compose up -d
Buat User Untuk Login NetBox
docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser
Lalu akan muncul tampilan interaktif seperti berikut
🧬 loaded config '/etc/netbox/config/configuration.py'
🧬 loaded config '/etc/netbox/config/extra.py'
🧬 loaded config '/etc/netbox/config/logging.py'
🧬 loaded config '/etc/netbox/config/plugins.py'
Username:
Email address:
Password:
Password (again):
Superuser created successfully.
Buat Agar Auto Start
Troubleshoot
Permission denied saat upload image
sudo chmod -R g+w /opt/docker/netbox-docker/volumes/netbox-media-files/