Cách cài đặt NetBox IRM trên Debian 11

theanh

Administrator
Nhân viên
NetBox là phần mềm Infrastructure Resource Modeling (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, phần mềm này đượ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.

NetBox giúp bạn quản lý cơ sở hạ tầng của mình, bao gồm:
  • DCIM (Quản lý cơ sở hạ tầng trung tâm dữ liệu)
  • IPAM (Quản lý địa chỉ IP)
  • Mạch dữ liệu
  • Kết nối (Mạng, bảng điều khiển và nguồn điện)
  • Giá đỡ thiết bị
  • Ảo hóa
  • Bí mật
Bài viết này sẽ hướng dẫn bạn các bước cài đặt NetBox Infrastructure Resource Modeling trên máy chủ Debian 11. Bài viết này bao gồm cài đặt cơ bản cơ sở dữ liệu PostgreSQL, máy chủ Redis và cấu hình cơ bản của Apache2 làm proxy ngược. Cuối cùng, bạn sẽ có NetBox chạy trên Debian 11 với HTTPS/SSL được bật.

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

Để hoàn thành hướng dẫn này, bạn sẽ cần các yêu cầu sau:
  • Một phiên bản máy chủ Debian 11.
  • Một người dùng không phải root có quyền root/quản trị viên.
  • Một tên miền trỏ đến Máy chủ Debian của bạn.

Cài đặt Máy chủ PostgreSQL​

Ứng dụng NetBox chỉ hỗ trợ PostgreSQL làm cơ sở dữ liệu mặc định. Vì vậy, bạn sẽ cài đặt PostgreSQL trên máy chủ Debian của mình. Sau đó, tạo một cơ sở dữ liệu và người dùng mới cho cài đặt NetBox của bạn.

Phiên bản NetBox hiện tại yêu cầu ít nhất PostgreSQL v10 trở lên. Trên Debian 11, kho lưu trữ cung cấp máy chủ PostgreSQL v13 mặc định.

Để bắt đầu, hãy chạy lệnh apt bên dưới để cập nhật kho lưu trữ Debian của bạn và làm mới chỉ mục gói.
Mã:
sudo apt update
Bây giờ hãy cài đặt máy chủ PostgreSQL bằng lệnh apt sau. Nhập Y để xác nhận và nhấn ENTER, quá trình cài đặt PostgreSQL sẽ bắt đầu.
Mã:
sudo apt install postgresql postgresql-common


Bây giờ bạn đã hoàn tất quá trình cài đặt PostgreSQL, hãy chạy lệnh systemctl sau để kiểm tra và xác minh dịch vụ PostgreSQL. Bạn sẽ thấy PostgreSQL được bật và sẽ tự động chạy khi khởi động hệ thống. Và trạng thái hiện tại của dịch vụ PostgreSQL đang chạy.
Mã:
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql


Tiếp theo, bạn sẽ tạo một cơ sở dữ liệu PostgreSQL và người dùng mới cho Nextbox. Để thực hiện điều đó, bạn phải đăng nhập vào bảng điều khiển PostgreSQL.

Chạy lệnh sau để đăng nhập vào bảng điều khiển PostgreSQL bằng vai trò "postgres".
Mã:
sudo -u postgres psql
Bây giờ hãy chạy các truy vấn sau trên bảng điều khiển PostgreSQL để tạo cơ sở dữ liệu và người dùng mới. trong ví dụ này, chúng ta sẽ tạo một cơ sở dữ liệu mới có tên là "netboxdb", và người dùng PostgreSQL "netbox" với mật khẩu "NetBoxRocks".
Mã:
CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;
Bây giờ hãy nhấn "Ctrl+d" để thoát khỏi bảng điều khiển PostgreSQL hoặc nhập "\q" để thoát.



Để xác minh cơ sở dữ liệu và người dùng, hãy chạy lệnh sau. Lệnh này sẽ kết nối với shell PostgreSQL bằng người dùng "netbox" tới cơ sở dữ liệu "netboxdb" trên máy chủ PostgreSQL của bạn.

Khi được nhắc nhập mật khẩu cơ sở dữ liệu, hãy nhập mật khẩu 'NetBoxRocks".
Mã:
sudo -u postgres psql --username netbox --password --host localhost netboxdb
Sau khi đăng nhập vào bảng điều khiển PostgreSQL và cơ sở dữ liệu "netboxdb", hãy chạy truy vấn sau để kiểm tra kết nối hiện tại. Và bạn sẽ thấy rằng mình đã kết nối với cơ sở dữ liệu PostgreSQL "netboxdb" bằng người dùng "netbox".
Mã:
\conninfo


Nhấn "Ctrl+d" để thoát khỏi bảng điều khiển PostgreSQL hoặc nhập "\q" để quit.

Cài đặt Redis Server​

Redis là cơ sở dữ liệu khóa-giá trị trong bộ nhớ sẽ được NetBox sử dụng để lưu trữ đệm và xếp hàng. Vì vậy, bây giờ bạn sẽ cài đặt máy chủ Redis trên máy chủ Debian của mình.

Tại thời điểm viết bài này, phiên bản mới nhất của NetBox yêu cầu Redis v4.0 trở lên. kho lưu trữ Debian 11 mới nhất cung cấp Redis v5.6.

Để bắt đầu cài đặt Redis, hãy chạy lệnh apt bên dưới. nhập Y để xác nhận cài đặt và nhấn ENTER, quá trình cài đặt Redis sẽ bắt đầu.
Mã:
sudo apt install redis-server


Khi quá trình cài đặt hoàn tất, hãy chạy các lệnh systemctl sau để kiểm tra và xác minh dịch vụ Redis. Bạn sẽ thấy dịch vụ Redis được bật và sẽ tự động chạy khi khởi động hệ thống. Và trạng thái hiện tại của dịch vụ Redis đang chạy.
Mã:
sudo systemctl is-enabled redis-server
sudo systemctl status redis-server


Cài đặt Redis mặc định không có xác thực. Đối với môi trường sản xuất, bạn nên sử dụng xác thực trên máy chủ Redis. Để bật xác thực Redis, bạn sẽ sửa đổi tệp cấu hình "/etc/redis/redis.conf"

Chạy lệnh sau để chỉnh sửa tệp cấu hình Redis "/etc/redis/redis.conf".
Mã:
sudo nano /etc/redis/redis.conf
Bỏ chú thích tùy chọn "requirepass" và nhập mật khẩu xác thực cho Redis. trong ví dụ này, chúng ta sẽ sử dụng mật khẩu "RedisPasswordNetBox".
Mã:
requirepass RedisPasswordNetBox
Khi bạn hoàn tất, hãy lưu và đóng tệp.

Bây giờ hãy chạy lệnh sau để khởi động lại dịch vụ Redis và áp dụng các thay đổi mới.
Mã:
sudo systemctl restart redis-server
Để xác minh xác thực Redi, hãy chạy lệnh "redis-cli" bên dưới để kết nối với bảng điều khiển Redis.
Mã:
redis-cli
Bây giờ hãy chạy lệnh sau để xác minh xác thực Redis của bạn. Nếu mật khẩu của bạn đúng, bạn sẽ thấy thông báo đầu ra như "OK".
Mã:
AUTH RedisPasswordNetBox


Bây giờ hãy nhấn "Ctrl+d" để thoát khỏi bảng điều khiển Redis.

Cài đặt NetBox IRM​

NetBox là một ứng dụng web nguồn mở được viết bằng khung Python Django. Vì vậy, quá trình cài đặt NetBox khá giống với Python Django Web-Framework. Phiên bản Netbox mới nhất yêu cầu ít nhất Python v3.8 trở lên.

Trước khi bắt đầu cài đặt NetBox, hãy chạy lệnh sau để tạo người dùng hệ thống mới "netbox" sẽ được sử dụng để chạy ứng dụng web NetBox.
Mã:
sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
Cài đặt Python3 và một số gói phụ thuộc bằng lệnh apt bên dưới.
Mã:
sudo apt install -y git python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev


Khi quá trình cài đặt hoàn tất, hãy chạy lệnh sau để tạo thư mục cài đặt NetBox mới "/opt/netbox" và sao chép mã nguồn NetBox bằng lệnh Lệnh Git.
Mã:
mkdir -p /opt/netbox; cd /opt/netbox
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
Bây giờ hãy thay đổi quyền sở hữu thư mục cài đặt NetBox thành người dùng chính xác "netbox" bằng lệnh sau.
Mã:
sudo chown -R netbox:netbox /opt/netbox


Tiếp theo, di chuyển thư mục làm việc đến "/opt/netbox/netbox/netbox" và sao chép cấu hình mẫu của NetBox "configuration_example.py" vào "configuration.py".
Mã:
cd /opt/netbox/netbox/netbox
sudo -u netbox cp configuration_example.py configuration.py
Trước khi chỉnh sửa tệp cấu hình netBox, hãy chạy lệnh sau để tạo "SECRET_KEY" cho NetBox. Sao chép "SECRET_KEY" đã tạo vào trình soạn thảo của bạn, lệnh này sẽ được sử dụng sau khi chỉnh sửa tệp "configuration.py".
Mã:
sudo -u netbox python3 ../generate_secret_key.py
Chạy lệnh sau để bắt đầu chỉnh sửa tệp "configuration.py".
Mã:
sudo -u netbox nano configuration.py
Bây giờ bạn sẽ cần thiết lập cài đặt NetBox như bên dưới:
  • Trên cấu hình "ALLOWED_HOSTS", hãy nhập tên miền để cài đặt NetBox và địa chỉ IP của máy chủ. Trong ví dụ này, NetBox sẽ được cài đặt dưới tên miền "netbox.howtoforge.local" và địa chỉ IP của máy chủ "192.168.5.20".
  • Nhập thông tin chi tiết về cơ sở dữ liệu PostgreSQL cho NetBox của bạn vào cài đặt "DATABASE".
  • Nhập mật khẩu Redis vào cấu hình "REDIS". Đảm bảo thay đổi mật khẩu trên cả hai phần "tasks" và "caching".
  • Cuối cùng, dán "SECRET_KEY" đã tạo vào tệp.
Mã:
# tên miền và địa chỉ IP
ALLOWED_HOSTS = ['netbox.howtoforge.local', '192.168.5.20']

# cấu hình cơ sở dữ liệu
DATABASE = {
 'NAME': 'netboxdb', # Tên cơ sở dữ liệu
 'USER': 'netbox', # Tên người dùng PostgreSQL
 'PASSWORD': 'NetBoxRocks', # Mật khẩu PostgreSQL
 'HOST': 'localhost', # Máy chủ cơ sở dữ liệu
 'PORT': '', # Cổng cơ sở dữ liệu (để trống theo mặc định)
 'CONN_MAX_AGE': 300, # Tuổi kết nối cơ sở dữ liệu tối đa (giây)
}

# Cấu hình bộ đệm Redis
REDIS = {
 'tasks': {
 'HOST': 'localhost', # Máy chủ Redis
 'PORT': 6379, # Cổng Redis
 'PASSWORD': 'RedisPasswordNetBox', # Mật khẩu Redis (tùy chọn)
 'DATABASE': 0, # ID cơ sở dữ liệu
 'SSL': False, # Sử dụng SSL (tùy chọn)
 },
 'caching': {
 'HOST': 'localhost',
 'PORT': 6379,
 'PASSWORD': 'RedisPasswordNetBox',
 'DATABASE': 1, # ID duy nhất cho cơ sở dữ liệu thứ hai
 'SSL': False,
 }
}

# Khóa bí mật
SECRET_KEY = 'Slr-8H@1XMcW!22_UYNLcWw+_5=$$=8mtL#JImfOlD*-KiuI6h'
Khi bạn hoàn tất, hãy lưu và đóng tệp.

Bây giờ để bắt đầu cài đặt NetBox, bạn có thể chạy tập lệnh "upgrade.sh" như bên dưới.
Mã:
sudo -u netbox /opt/netbox/upgrade.sh
Tập lệnh này sẽ tự động cài đặt và cấu hình cài đặt NetBox. Phiên bản chi tiết như bên dưới:
  • Tập lệnh này sẽ tạo một môi trường ảo Python mới cho cài đặt NetBox của bạn.
  • Tập lệnh này cũng sẽ cài đặt một số phụ thuộc và thư viện Python cho NetBox.
  • Chạy di chuyển cơ sở dữ liệu cho NetBox.
  • Tạo tài nguyên tệp tĩnh cho NetBox.
Dưới đây là đầu ra khi quá trình cài đặt bắt đầu.



Khi quá trình cài đặt hoàn tất, bạn sẽ thấy đầu ra sau.


Tạo người dùng quản trị NetBox​

Bạn đã hoàn tất cài đặt cơ bản NetBox. Bây giờ, bạn sẽ tạo một người dùng quản trị mới cho NetBox. Và đây cũng là cách tương tự khi bạn cần tạo người dùng quản trị Django.

Chạy lệnh sau để kích hoạt môi trường ảo Python.
Mã:
source /opt/netbox/venv/bin/activate
Di chuyển thư mục làm việc đến "/opt/netbox/netbox". Sau đó, chạy tập lệnh "manage.py" để tạo người dùng quản trị mới cho NetBox.
Mã:
cd /opt/netbox/netbox
python3 manage.py createsuperuser
Nhập tên người dùng, emailmật khẩu cho NextBox.

Sau khi cấu hình quản trị hoàn tất, hãy chạy lệnh sau để thiết lập tập lệnh cron cần thiết cho NetBox. lệnh này sẽ được chạy tự động hàng ngày.
Mã:
sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping


Cuối cùng, hãy chạy lệnh sau để kiểm tra và xác minh cài đặt NetBox của bạn. Nếu cài đặt của bạn đúng, bạn sẽ thấy netBox hiện đang chạy trên cổng "8000".
Mã:
python3 manage.py runserver 0.0.0.0:8000 --insecure


Bây giờ hãy nhấn "Ctrl+c" vào terminal để thực hiện quy trình. Sau đó, chạy lệnh "deactivate" để thoát khỏi môi trường ảo Python.

Thiết lập NetBox thành Dịch vụ Systemd​

Sau khi hoàn tất cấu hình quản trị cho NetBox. Bây giờ, bạn sẽ thiết lập NetBox thành dịch vụ systemd. Dịch vụ NetBox sẽ chạy dưới Gunicorn và proxy ngược HTTP.

Tất cả cấu hình NetBox Gunicorn và tập lệnh dịch vụ systemd cần thiết đều có sẵn theo mặc định trong thư mục "/opt/netbox/contrib".

Chạy lệnh sau để sao chép cấu hình Gunicorn vào "/opt/netbox/gunicorn.py". Sau đó, chỉnh sửa tệp bằng trình chỉnh sửa nano.
Mã:
sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo -u netbox nano /opt/netbox/gunicorn.py
Theo cấu hình mặc định, ứng dụng NetBox sẽ chạy trên máy chủ cục bộ với cổng "8001". Bạn có thể giữ nguyên cấu hình mặc định hoặc thực hiện các thay đổi dựa trên môi trường của mình.
Mã:
bind = '127.0.0.1:8001'
Lưu và đóng tệp cấu hình khi bạn hoàn tất.

Tiếp theo, sao chép các tệp dịch vụ systemd vào thư mục "/etc/systemd/system" bằng cách sử dụng lệnh sau. Thao tác này sẽ kích hoạt hai dịch vụ: dịch vụ "netbox" làm dịch vụ chính cho ứng dụng NetBox của bạn và dịch vụ "netbox-rq" cho dịch vụ hàng đợi yêu cầu NetBox.
Mã:
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
Bây giờ hãy tải lại trình quản lý hệ thống để áp dụng các tệp dịch vụ NetBox mới.
Mã:
sudo systemctl daemon-reload
Sau khi tải lại trình quản lý systemd, bạn có thể chạy các dịch vụ "netbox" và "netbox-rq" bằng lệnh systemctl như bên dưới. Cả hai dịch vụ sẽ được chạy tự động khi khởi động hệ thống.
Mã:
sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq


Cuối cùng, hãy kiểm tra và xác minh các dịch vụ NetBox bằng lệnh sau.
Mã:
sudo systemctl status netbox
sudo systemctl status netbox-rq
Trong đầu ra sau, bạn có thể thấy dịch vụ "netbox" đã được bật. Và trạng thái hiện tại đang chạy.



Đối với dịch vụ 'netbox-rq", bạn cũng sẽ nhận được đầu ra của dịch vụ được bật. Và nó đang chạy.


Thiết lập Apache2 làm Proxy ngược​

Chạy lệnh apt bên dưới để cài đặt máy chủ web Apache2. Nhập Y để xác nhận cài đặt và nhấn ENTER, quá trình cài đặt sẽ bắt đầu.
Mã:
sudo apt install apache2


Sau khi hoàn tất cài đặt Apache2, hãy chạy lệnh sau để bật một số mô-đun Aapche2 sẽ được sử dụng cho Proxy ngược. Bạn sẽ thấy một số mô-đun bổ sung cũng được bật.
Mã:
sudo a2enmod ssl proxy proxy_http headers


Tiếp theo, sao chép mẫu cấu hình máy chủ ảo Apache2 cho NetBox vào "/etc/apache2/sites-available/netbox.conf". Sau đó, chỉnh sửa tệp "/etc/apache2/sites-available/netbox.conf" bằng trình soạn thảo nano
Mã:
sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
sudo nano /etc/apache2/sites-available/netbox.conf
Thay đổi tên miền cho cài đặt NetBox của bạn và đường dẫn của chứng chỉ SSL. Trong ví dụ này, chúng tôi sẽ sử dụng miền "netbox.howtoforge.local" với chứng chỉ SSL từ Letsencrypt có sẵn trong thư mục "/etc/letsencrypt/live/netbox.howtoforge.local/".
Mã:
 ProxyPreserveHost On

 # ĐỔI THÀNH TÊN MÁY CHỦ CỦA BẠN
 ServerName netbox.howtoforge.local

 SSLEngine on
 SSLCertificateFile /etc/letsencrypt/live/netbox.howtoforge.local/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/netbox.howtoforge.local/privkey.pem

 Alias /static /opt/netbox/netbox/static

 
 Tùy chọn Chỉ mục FollowSymLinks MultiViews
 Cho phép Ghi đè Không có
 Yêu cầu tất cả đã cấp
 

 
 ProxyPass !
 

 RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
 ProxyPass / http://127.0.0.1:8001/
 ProxyPassReverse / http://127.0.0.1:8001/
Khi bạn hoàn tất, hãy lưu và đóng tệp.

Bây giờ hãy chạy lệnh sau để kích hoạt cấu hình máy chủ ảo "netbox.conf". Sau đó, hãy kiểm tra và xác minh cấu hình Apache. Bạn sẽ nhận được thông báo đầu ra như "Cú pháp OK", có nghĩa là cấu hình Apache2 là chính xác.
Mã:
sudo a2ensite netbox.conf
sudo apachectl configtest
Bây giờ hãy khởi động lại dịch vụ Apache2 để áp dụng các thay đổi mới cho tệp máy chủ ảo. Máy chủ web Apache2 hiện đang chạy với HTTPS/SSL được bật ngược lại với ứng dụng web NetBox đang chạy trên "localhost:8001".
Mã:
sudo systemctl restart apache2


Để xác minh cài đặt, hãy mở trình duyệt web của bạn và truy cập tên miền của cài đặt NetBox (ví dụ: https://netbox.howtoforge.local/). Và bạn sẽ nhận được quyền quản trị bảng điều khiển cho NetBox với trạng thái bị khóa.

Nhấp vào nút "Đăng nhập" ở góc trên bên phải.



Bây giờ hãy nhập tên người dùng và mật khẩu quản trị cho cài đặt netBox của bạn và nhấp vào "Đăng nhập".



Bạn sẽ nhận được quyền quản trị bảng điều khiển của NetBox.


Kết luận​

Thông qua hướng dẫn này, bạn đã thiết lập NetBox Infrastructure Resource Modelling (IRM) với cơ sở dữ liệu PostgreSQL, hệ thống lưu trữ đệm Redis, Gunicorn và proxy ngược Apache2 trên máy chủ Debian 11. Bạn cũng đã định cấu hình NetBox dưới dạng dịch vụ systemd giúp bạn dễ dàng khởi động và dừng ứng dụng web NetBox. Cuối cùng, bạn đã định cấu hình đầy đủ NetBox IRM chạy trên máy chủ Debian của mình với HTTPS/SSL bảo mật được bật trên đó.
 
Back
Bên trên