Cách cài đặt NetBox IRM (Công cụ mô hình hóa tài nguyên cơ sở hạ tầng) trên máy chủ Ubuntu 24.04

theanh

Administrator
Nhân viên
NetBox là Infrastructure Resource Modelling (IRM) được thiết kế cho mục đích tự động hóa mạng và kỹ thuật cơ sở hạ tầng. Ban đầu, NetBox được nhóm DigitalOcean tạo ra và hiện đã trở thành một dự án mã nguồn mở được phát hành theo Giấy phép Apache 2.

NetBox được tạo ra trong khuôn khổ Python Django Web với PostgreSQL là cơ sở dữ liệu mặc định và quá trình cài đặt NetBox khá giống với các ứng dụng web Python Django khác.

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt Netbox IRM trên máy chủ Ubuntu 24.04 với PostgreSQL là cơ sở dữ liệu và Apache là proxy ngược. Bạn cũng sẽ bảo mật Netbox bằng HTTPS thông qua Certbot và Letsencrypt.

Điều kiện tiên quyết​

Trước khi tiếp tục, hãy đảm bảo bạn có những điều sau:
  • Máy chủ Ubuntu 24.04
  • Người dùng không phải root có quyền quản trị viên
  • Tên miền trỏ đến địa chỉ IP của máy chủ

Cài đặt Dependencies​

Để cài đặt Netbox, bạn phải đảm bảo các dependency được cài đặt trên máy chủ Ubuntu của mình. Điều này bao gồm Python3, máy chủ PostgreSQL, máy chủ web Apache, Redis và các thư viện hệ thống. Trong phần này, bạn sẽ cài đặt các gói đó bằng trình quản lý gói APT.

Trước tiên, hãy chạy lệnh sau để cập nhật chỉ mục gói Ubuntu của bạn.
Mã:
sudo apt update
Sau khi cập nhật, hãy cài đặt các gói phụ thuộc cho Netbox bằng lệnh sau. Trong ví dụ này, bạn sẽ cài đặt PostgreSQL, Apache, Python, Redis, Certbot, xây dựng các phụ thuộc và một số thư viện.
Mã:
sudo apt install apache2 postgresql postgresql-common libpq-dev redis-server git certbot python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libssl-dev zlib1g-dev
Nhập 'Y' để xác nhận cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22333%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, chạy lệnh 'systemctl' bên dưới để xác minh trạng thái máy chủ web Apache.
Mã:
sudo systemctl is-enabled apache2
sudo systemctl status apache2
Trong kết quả đầu ra sau, bạn có thể thấy Apache đang chạy và được bật.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22209%22%3E%3C/svg%3E


Cuối cùng, hãy kiểm tra trạng thái máy chủ PostgreSQL bằng sau:
Mã:
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
Trong kết quả đầu ra bên dưới, bạn có thể thấy PostgreSQL được bật và đang chạy với trạng thái thoát (systemd không tìm thấy dịch vụ để giám sát).


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22183%22%3E%3C/svg%3E

Đang thiết lập PostgreSQL​

Sau khi các phụ thuộc được cài đặt, bạn cần thiết lập máy chủ PostgreSQL bằng cách tạo người dùng và cơ sở dữ liệu mới mà Netbox sẽ sử dụng.

Đăng nhập vào máy chủ PostgreSQL bằng lệnh bên dưới.
Mã:
sudo -u postgres psql
Bây giờ hãy chạy các truy vấn sau để tạo người dùng mới 'netbox' với mật khẩu 'netboxpassword' và cơ sở dữ liệu mới 'netboxdb'.
Mã:
CREATE USER netbox LOGIN CREATEDB PASSWORD 'netboxpassword';
CREATE DATABASE netboxdb OWNER netbox;
Sau khi cơ sở dữ liệu và người dùng được tạo, hãy xác minh danh sách cơ sở dữ liệu và người dùng trên PostgreSQL bằng lệnh sau.
Mã:
\l
\du
Bạn có thể thấy bên dưới cơ sở dữ liệu 'netboxdb' và người dùng 'netbox' đã được tạo.

Loại 'quit' để thoát khỏi máy chủ PostgreSQL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22216%22%3E%3C/svg%3E



data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22747%22%20height=%22206%22%3E%3C/svg%3E

Đang tải xuống Cấu hình Netbox​

Bây giờ Cơ sở dữ liệu PostgreSQL đã sẵn sàng, bạn sẽ tải xuống và cài đặt Netbox vào máy Ubuntu của mình. Bạn sẽ thiết lập tên miền, khóa bí mật và cơ sở dữ liệu cho Netbox.

Đầu tiên, hãy chạy lệnh bên dưới để tạo người dùng mới 'netbox' trên máy Ubuntu của bạn.
Mã:
sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
Bây giờ hãy chạy lệnh bên dưới để tải xuống mã nguồn Netbox bằng lệnh 'git' và thay đổi quyền sở hữu thành 'netbox' người dùng.
Mã:
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git /opt/netbox
sudo chown -R netbox:netbox /opt/netbox
Di chuyển đến thư mục '/opt/netbox/netbox/netbox' và thực thi tệp 'generate_secret_key.py'. Sao chép khóa bí mật vào ghi chú của bạn.
Mã:
cd /opt/netbox/netbox/netbox
sudo -u netbox python3 ../generate_secret_key.py
Tiếp theo, sao chép tệp 'configuration.py' và sửa đổi tệp này bằng trình chỉnh sửa 'nano'.
Mã:
sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox nano configuration.py
Thêm địa chỉ IP cục bộ và tên miền của bạn vào 'ALLOWED_HOSTS'.
Mã:
ALLOWED_HOSTS = ['netbox.howtoforge.local', '192.168.10.60']
Nhập tên cơ sở dữ liệu PostgreSQL, người dùng và mật khẩu của bạn vào phần 'DATABASE'.
Mã:
# database configuration
DATABASE = {
'NAME': 'netboxdb', # Database name
'USER': 'netbox', # PostgreSQL username
'PASSWORD': 'netboxpassword', # PostgreSQL password
'HOST': 'localhost', # Database server
'PORT': '', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age (seconds)
}
Dán khóa bí mật của bạn vào 'SECRET_KEY' section.
Mã:
SECRET_KEY = '98%D9uh8S%)T0QhQ@Z3zYf%Hik^CqWJ)Uwz%0J7TZUztmNiitG'
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.

Di chuyển Netbox và thiết lập quản trị viên​

Bây giờ bạn đã cấu hình Netbox với máy chủ PostgreSQL, bạn đã sẵn sàng di chuyển cơ sở dữ liệu và tạo người dùng quản trị viên để cài đặt Netbox.

Thực thi tập lệnh 'upgrade.sh' bằng lệnh bên dưới. Lệnh này sẽ tạo một môi trường Python, cài đặt các phụ thuộc cho Netbox, di chuyển cơ sở dữ liệu Netbox, kết nối với Redis, sau đó tạo các tệp tĩnh.
Mã:
sudo -u netbox /opt/netbox/upgrade.sh

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22464%22%3E%3C/svg%3E


Dưới đây, bạn có thể thấy quá trình di chuyển cơ sở dữ liệu cho Netbox.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22319%22%3E%3C/svg%3E


Và bên dưới khi 'manage.py' tạo ra các tệp tĩnh.

Sau khi quá trình hoàn tất, bạn cần tạo một người dùng quản trị mới cho Netbox thông qua tập lệnh 'manage.py'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22313%22%3E%3C/svg%3E


Chạy lệnh sau để kích hoạt môi trường ảo Netbox. Sau khi được kích hoạt, shell của bạn sẽ trở thành '(venv) user@hostname'.
Mã:
source /opt/netbox/venv/bin/activate
Đi tới thư mục '/opt/netbox/netbox' và thực thi tập lệnh 'manage.py' như sau:
Mã:
cd /opt/netbox/netbox
python3 manage.py createsuperuser
Nhập tên người dùng, địa chỉ email và mật khẩu của bạn cho quản trị viên Netbox.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22284%22%3E%3C/svg%3E


Sau khi hoàn tất, hãy thực hiện lệnh 'deactivate' để thoát khỏi môi trường ảo Netbox.

Chạy Netbox dưới dạng dịch vụ​

Trong phần này, bạn sẽ sao chép các cấu hình Netbox sẽ được sử dụng để chạy Netbox dưới dạng dịch vụ systemd. Bạn cần đảm bảo rằng Netbox đang chạy dưới Gunicorn, sau đó sao chép các tệp dịch vụ Netbox vào thư mục '/etc/systemd/system'.

Trước tiên, hãy sao chép tập lệnh 'gunicorn.py' vào thư mục '/opt/netbox'. Tập lệnh này chứa cấu hình để Netbox chạy dưới máy chủ WSGI Python.
Mã:
sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
Bây giờ hãy chạy lệnh bên dưới để sao chép các tệp dịch vụ cho Netbox vào thư mục '/etc/systemd/system' và tải lại trình quản lý systemd.
Mã:
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
sudo systemctl daemon-reload
Sau khi systemd được tải lại, hãy chạy Lệnh 'systemctl' bên dưới để khởi động và kích hoạt dịch vụ Netbox.
Mã:
sudo systemctl enable --now netbox netbox-rq netbox-housekeeping

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2294%22%3E%3C/svg%3E


Cuối cùng, hãy xác minh dịch vụ Netbox để đảm bảo nó đang chạy với lệnh sau lệnh.
Mã:
sudo systemctl status netbox netbox-rq netbox-housekeeping
Trong kết quả đầu ra sau, bạn có thể thấy dịch vụ 'netbox' đang chạy và được bật.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22192%22%3E%3C/svg%3E


Đối với dịch vụ 'netbox-rq', bạn sẽ nhận được kết quả đầu ra như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22182%22%3E%3C/svg%3E


Cuối cùng, 'netbox-housekeeping' có trạng thái 'đã chết' vì nó sẽ chạy như một bộ đếm thời gian.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22165%22%3E%3C/svg%3E

Cấu hình Apache làm proxy ngược​

Lúc này, Netbox đang chạy ở chế độ nền như một dịch vụ trong máy chủ Python WSGI. Để có thể truy cập từ bên ngoài, bạn cần cấu hình Apache làm proxy ngược. Trước đó, bạn cũng cần tạo chứng chỉ SSL để bảo mật cài đặt Netbox.

Đầu tiên, hãy chạy lệnh bên dưới để dừng dịch vụ 'apache2'.
Mã:
sudo systemctl stop apache2
Bây giờ, hãy tạo chứng chỉ SSL từ Letsencrypt bằng lệnh 'certbot' bên dưới. Hãy đảm bảo thay đổi tên miền và địa chỉ email bằng thông tin của bạn.
Mã:
sudo certbot certonly --standalone --preferred-challenges http -d netbox.howtoforge.local
Sau khi quá trình hoàn tất, chứng chỉ SSL của bạn sẽ có trong thư mục '/etc/letsencrypt/live/domain.com'.

Tiếp theo, sao chép cấu hình Apache cho Netbox vào tệp '/etc/apache2/sites-available/netbox.conf' và sửa đổi bằng lệnh 'nano' biên tập viên.
Mã:
sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
sudo nano /etc/apache2/sites-available/netbox.conf
Thay thế tên miền trong tùy chọn 'ServerName' và thay đổi đường dẫn chứng chỉ SSL của bạn.
Mã:
# CHANGE THIS TO YOUR SERVER'S NAME
ServerName netbox.howtoforge.local

...



ProxyPreserveHost On

# CHANGE THIS TO YOUR SERVER'S NAME
ServerName netbox.howtoforge.local

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/netbox.howtoforge.local/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/netbox.howtoforge.local/privkey.pem
...
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.

Bây giờ hãy chạy lệnh bên dưới để kích hoạt các mô-đun Apache và tệp máy chủ ảo 'netbox.conf'.
Mã:
sudo a2enmod ssl proxy proxy_http headers rewrite
sudo a2ensite netbox.conf
Sau khi máy chủ ảo được kích hoạt, hãy chạy lệnh sau để khởi động lại Apache và áp dụng các thay đổi của bạn. Với điều này, cài đặt Netbox của bạn sẽ chạy dưới proxy ngược Apache với HTTPS được bật.
Mã:
sudo systemctl restart apache2
Cuối cùng, hãy truy cập https://netbox.howtoforge.local/ bằng trình duyệt web của bạn và bạn sẽ được chuyển hướng đến trang đăng nhập Netbox. Nhập tên người dùng và mật khẩu quản trị viên của bạn, sau đó nhấp vào Đăng nhập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22622%22%20height=%22627%22%3E%3C/svg%3E


Bạn sẽ thấy bảng điều khiển Netbox sau nếu bạn có thông tin đăng nhập quản trị viên phù hợp.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22371%22%3E%3C/svg%3E


Nhấp vào menu Admin > System để xem thông tin về cài đặt Netbox của bạn. Trong đầu ra sau, bạn có thể thấy Netbox v4.1.7 được cài đặt với cơ sở dữ liệu PostgreSQL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22360%22%3E%3C/svg%3E

Kết luận​

Xin chúc mừng! Bạn đã hoàn tất cài đặt Netbox IRM trên máy chủ Ubuntu 24.04. Bạn đã đưa Netbox vào hoạt động với PostgreSQL làm máy chủ cơ sở dữ liệu và Apache làm proxy ngược. Bạn cũng đã bảo mật Netbox bằng HTTPS thông qua Certbot.
 
Back
Bên trên