Instalasi NetBox Menggunakan Docker

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:

  1. Manajemen IP Address (IPAM)
    • Mendokumentasikan ruang alamat IP, subnet, VLAN, dan grup IP.
    • Melacak alokasi IP dan ketersediaan IP dalam jaringan.
  2. Manajemen Perangkat Jaringan
    • Dokumentasi perangkat keras (seperti router, switch, server, firewall).
    • Informasi tentang lokasi fisik perangkat (rak, ruangan, situs).
  3. Manajemen Koneksi Jaringan (DCIM)
    • Mendokumentasikan hubungan antara perangkat, kabel, dan port.
    • Melacak topologi jaringan.
  4. Manajemen Rute & ASN
    • Mendokumentasikan rute BGP, ASN (Autonomous System Number), dan peering.
  5. Customisasi dan Automasi
    • Mendukung API RESTful untuk integrasi dengan alat lain.
    • Fitur scripting untuk memperluas fungsionalitas aplikasi.
  6. 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/