NetBox là một phần mềm mã nguồn mở dựa trên web, được thiết kế nhằm mô hình hóa tài nguyên hạ tầng (Infrastructure Resource Modeling – IRM) và tự động hóa các hoạt động quản trị mạng. Khi triển khai NetBox, bạn sẽ được sử dụng các công cụ mạnh mẽ như IP Address Management (IPAM) để quản lý các địa chỉ IP và Data Center Infrastructure Management (DCIM) giúp tài liệu hóa cũng như giám sát hệ thống mạng một cách hiệu quả.
Bài viết này sẽ chỉ dẫn chi tiết cách cài đặt và cấu hình NetBox trên Ubuntu 20.04, cung cấp nền tảng vững chắc cho việc quản trị và quản lý tài liệu mạng lưới một cách chuyên nghiệp và hiệu quả.
Yêu cầu
- Triển khai một máy chủ Ubuntu 20.04 LTS đã được cập nhật đầy đủ trên DataOnline Cloud Firewalls với tối thiểu 2GB RAM và 1 lõi vCPU.
- Tạo một tài khoản người dùng không phải root có quyền sudo.
1. Cài đặt và cấu hình PostgreSQL
- Cài đặt PostgreSQL:
$ sudo apt install postgresql libpq-dev -y
- Khởi động server cơ sở dữ liệu:
$ sudo systemctl start postgresql
- Cài đặt PostgreSQL tự động khởi động cùng hệ thống:
$ sudo systemctl enable postgresql
- Thay đổi mật khẩu mặc định cho PostgreSQL:
$ sudo passwd postgres
- Chuyển sang tài khoản
postgres
:$ su - postgres
- Đăng nhập vào PostgreSQL:
$ psql
- Tạo cơ sở dữ liệu netbox:
CREATE DATABASE netbox;
- Tạo người dùng
netbox
với mật khẩumy_strong_password
. (Hãy sử dụng mật khẩu mạnh thay thế chomy_strong_password
.)CREATE USER netbox WITH ENCRYPTED password 'my_strong_password';
- Cấp toàn bộ quyền trên cơ sở dữ liệu
netbox
cho người dùngnetbox
:GRANT ALL PRIVILEGES ON DATABASE netbox to netbox;
- Thoát khỏi PostgreSQL:
\q
- Trở lại tài khoản người dùng sudo không phải root:
$ exit
2. Cài đặt Redis®
Redis® là một kho lưu trữ giá trị key-based trong bộ nhớ. NetBox sử dụng Redis cho mục đích caching và quản lý hàng đợi.
- Cài đặt Redis®:
$ sudo apt install -y redis-server
3. Cài đặt và cấu hình NetBox
Khuyến nghị cài đặt NetBox từ kho git chính thức để đảm bảo khả năng nâng cấp liền mạch bằng cách kéo về branch master mới nhất.
- Cài đặt các gói cần thiết:
$ sudo apt install python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev git -y
- Cập nhật
pip
lên phiên bản mới nhất:$ sudo pip3 install --upgrade pip
- Sử dụng thư mục
/opt/netbox/
làm thư mục cài đặt. Tạo thư mục/opt/netbox/
và chuyển sang đó:$ sudo mkdir -p /opt/netbox/ && cd /opt/netbox/
- Clone NetBox từ kho git chính thức vào thư mục hiện tại:
$ sudo git clone -b master https://github.com/netbox-community/netbox.git .
- Tạo một tài khoản hệ thống (system user) có tên
netbox
:$ sudo adduser --system --group netbox
- Cấp quyền sở hữu cho người dùng
netbox
đối với thư mục/opt/netbox/netbox/media/
:$ sudo chown --recursive netbox /opt/netbox/netbox/media/
- Chuyển sang thư mục
/opt/netbox/netbox/netbox/
:$ cd /opt/netbox/netbox/netbox/
- Sao chép tệp cấu hình mẫu
configuration.example.py
thànhconfiguration.py
để cấu hình dự án:$ sudo cp configuration.example.py configuration.py
- Tạo một liên kết tượng trưng đến binary Python:
$ sudo ln -s /usr/bin/python3 /usr/bin/python
- Sinh ra một
SECRET_KEY
ngẫu nhiên với độ dài tối thiểu 50 ký tự chữ và số:$ sudo /opt/netbox/netbox/generate_secret_key.py
Sau khi chạy, bạn sẽ nhận được một key ngẫu nhiên như ví dụ dưới đây. Hãy sao chép và lưu lại, vì bạn sẽ cần nó để cấu hình tệp configuration.py:
-^%YEl*Q2etCR6$kNG70H=&sM(45XvJaBWdf3O)inZ@L9j8_w1
- Mở và chỉnh sửa tệp cấu hình configuration.py:
$ sudo nano /opt/netbox/netbox/netbox/configuration.py
Trong tệp, bạn cần chỉnh sửa các mục sau:
ALLOWED_HOSTS = ['*'] DATABASE = { 'NAME': 'netbox', # Database name you created 'USER': 'netbox', # PostgreSQL username you created 'PASSWORD': 'my_strong_password', # PostgreSQL password you set 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) } SECRET_KEY = '-^%YEl*Q2etCR6$kNG70H=&sM(45XvJaBWdf3O)inZ@L9j8_w1'
- Chạy script nâng cấp (upgrade script):
$ sudo /opt/netbox/upgrade.sh
- Kích hoạt môi trường ảo Python:
$ source /opt/netbox/venv/bin/activate
- Chuyển đến thư mục
/opt/netbox/netbox
:$ cd /opt/netbox/netbox
- Tạo tài khoản superuser:
$ python3 manage.py createsuperuser
- Khởi động lại hệ thống để áp dụng các thay đổi:
$ sudo reboot
4. Cấu hình Gunicorn
- Sao chép tệp
/opt/netbox/contrib/gunicorn.py
sang/opt/netbox/gunicorn.py
:$ sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
5. Cấu hình Systemd
- Sao chép các tệp dịch vụ (service) c
ontrib/netbox.service
vàcontrib/netbox-rq.service
vào thư mục/etc/systemd/system/
:$ sudo cp /opt/netbox/contrib/*.service /etc/systemd/system/
- Tải lại daemon để áp dụng các thay đổi của Systemd:
$ sudo systemctl daemon-reload
- Khởi động các dịch vụ
netbox
vànetbox-rq
:$ sudo systemctl start netbox netbox-rq
- Kích hoạt các dịch vụ để khởi động cùng hệ thống:
$ sudo systemctl enable netbox netbox-rq
6. Cấu hình Nginx Web Server
- Cài đặt Nginx:
$ sudo apt install -y nginx
- Sao chép tệp cấu hình Nginx của NetBox (
CCCCC
) vào thư mục/etc/nginx/sites-available/netbox
:$ sudo cp /opt/netbox/contrib/nginx.conf /etc/nginx/sites-available/netbox
- Chỉnh sửa tệp cấu hình netbox:
$ sudo nano /etc/nginx/sites-available/netbox
Thay thế toàn bộ nội dung trong tệp bằng đoạn mã dưới đây. (Chú ý: thay đổi giá trị
server_name
thành địa chỉ IP của máy chủ của bạn.)server { listen 80; # CHANGE THIS TO YOUR SERVER'S NAME server_name 192.0.2.10; client_max_body_size 25m; location /static/ { alias /opt/netbox/netbox/static/; } location / { proxy_pass http://127.0.0.1:8001; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; } }
- Xóa tệp
/etc/nginx/sites-enabled/default
:$ sudo rm /etc/nginx/sites-enabled/default
- Tạo một liên kết tượng trưng (symlink) trong thư mục sites-enabled đến tệp cấu hình
netbox
:$ sudo ln -s /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/netbox
- Khởi động lại Nginx để áp dụng cấu hình mới:
$ sudo systemctl restart nginx