Cách cài đặt NetBox Network Documentation and Management Tool trên Ubuntu 22.04

theanh

Administrator
Nhân viên
NetBox là một ứng dụng web quản lý cơ sở hạ tầng trung tâm dữ liệu (DCIM) và địa chỉ IP nguồn mở (IPAM) được sử dụng để quản lý và ghi lại các mạng máy tính và địa chỉ IP. Nhóm kỹ thuật mạng tại DigitalOcean ban đầu đã hình thành ý tưởng này. Nó được viết bằng khuôn khổ Django Python và sử dụng cơ sở dữ liệu PostgreSQL để lưu trữ dữ liệu. Nó cũng sử dụng cơ sở dữ liệu Redis để lưu trữ các truy vấn.

Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt công cụ NetBox trên máy chủ Ubuntu 22.04 và Nginx làm máy chủ proxy ngược.

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


  • Máy chủ chạy Ubuntu 22.04.

  • Người dùng không phải root có quyền sudo.

  • Tên miền đủ điều kiện (FQDN) như netbox.example.com.

  • Đảm bảo mọi thứ đều đã cập nhật.
Mã:
$ sudo apt update
$ sudo apt upgrade
[*]
Một số gói mà hệ thống của bạn cần.
Mã:
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên là cấu hình tường lửa. Ubuntu đi kèm với ufw (Uncomplicated Firewall) theo mặc định.

Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo ufw status
Bạn sẽ nhận được kết quả sau.
Mã:
Status: inactive
Cho phép cổng SSH để tường lửa không làm gián đoạn kết nối hiện tại khi bật nó.
Mã:
$ sudo ufw allow OpenSSH
Cho phép cả cổng HTTP và HTTPS.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Bật Tường lửa
Mã:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy trạng thái tương tự đầu ra.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)

Bước 2 - Cài đặt và cấu hình PostgreSQL​

NetBox hoạt động với PostgreSQL 11 trở lên. Ubuntu 22.04 được cung cấp với PostgreSQL 14 theo mặc định. Chúng tôi sẽ sử dụng PostgreSQL 15 cho hướng dẫn của mình.

Chạy lệnh sau để thêm khóa GPG của PostgreSQL.
Mã:
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Mã:
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Bây giờ, bạn có thể cài đặt PostgreSQL bằng lệnh bên dưới.
Mã:
$ sudo apt install postgresql postgresql-contrib
Gói postgresql-contrib chứa một số tiện ích bổ sung.

Kiểm tra trạng thái của dịch vụ PostgreSQL.
Mã:
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Tue 2022-11-27 9:10:35 UTC; 5s ago Process: 30544 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 30544 (code=exited, status=0/SUCCESS) CPU: 2ms
Dec 27 9:10:35 netbox systemd[1]: Starting PostgreSQL RDBMS...
Dec 27 9:10:35 netbox systemd[1]: Finished PostgreSQL RDBMS.
Bạn có thể thấy dịch vụ được bật và chạy theo mặc định.

Khởi chạy PostgreSQL shell.
Mã:
$ sudo -i -u postgres psql
Tạo cơ sở dữ liệu NetBox.
Mã:
postgres=# CREATE DATABASE netbox;
Tạo người dùng NetBox và chọn một mật khẩu.
Mã:
postgres-# CREATE USER netbox WITH PASSWORD 'Your_Password';
Thay đổi chủ sở hữu cơ sở dữ liệu thành người dùng NetBox.
Mã:
postgres-# ALTER DATABASE netbox OWNER TO netbox;
Thoát khỏi shell.
Mã:
postgres-# \q
Xác minh thông tin đăng nhập của bạn hoạt động.
Mã:
$ psql --username netbox --password --host localhost netbox
Password for user netbox:
psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
netbox=>
Thoát khỏi shell bằng cách nhập \q.

Bước 3 - Cài đặt và cấu hình Redis​

Ubuntu được tích hợp sẵn Redis 6.0.16. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ cài đặt phiên bản mới nhất từ kho lưu trữ chính thức.

Nhập khóa Redis GPG chính thức.
Mã:
$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Mã:
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
Cập nhật kho lưu trữ hệ thống danh sách.
Mã:
$ sudo apt update
Phát hành lệnh sau để cài đặt máy chủ Redis.
Mã:
$ sudo apt install redis
Xác nhận Redis phiên bản.
Mã:
$ redis-server -v
Redis server v=7.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=2260280010e18db8
Chúng ta hãy xác minh kết nối dịch vụ bằng cách sử dụng lệnh sau.
Mã:
$ redis-cli
Bạn sẽ được chuyển sang shell Redis.

Bước đầu tiên là đặt mật khẩu cho người dùng mặc định của Redis. Thay thế Your_Redis_Password bằng mật khẩu mạnh mà bạn chọn.
Mã:
127.0.0.1:6379> acl setuser default >Your_Redis_Password
Kiểm tra Redis Xác thực.
Mã:
127.0.0.1:6379> AUTH Your_Redis_Password
OK
Ping dịch vụ.
Mã:
127.0.0.1:6379> ping
PONG
Thoát khỏi dịch vụ bằng cách nhập exit.

Bước 4 - Tải xuống NetBox​

NetBox yêu cầu Python Django để hoạt động. Bước đầu tiên trong quá trình cài đặt NetBox là cài đặt các gói Python cần thiết. Chạy lệnh sau để cài đặt các gói Python cần thiết.
Mã:
$ sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev
Kiểm tra phiên bản Python.
Mã:
$ python3 -V
Python 3.10.6
Tạo thư mục cơ sở cho NetBox cài đặt.
Mã:
$ sudo mkdir -p /opt/netbox/
Chuyển sang thư mục.
Mã:
$ cd /opt/netbox
Sao chép nhánh chính của kho lưu trữ GitHub của NetBox vào nhánh hiện tại thư mục.
Mã:
$ sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
Cờ --depth 1 chỉ truy xuất cam kết gần đây nhất của kho lưu trữ. Nếu bạn muốn tải xuống toàn bộ lịch sử cam kết, bạn có thể bỏ qua cờ.

Kiểm tra phiên bản mới nhất của NetBox từ trang phát hành và kiểm tra bằng Git. Tại thời điểm viết hướng dẫn, 3.4.1 là phiên bản mới nhất hiện có.
Mã:
$ git config --global --add safe.directory /opt/netbox
$ sudo git checkout v3.4.1
Trước khi kiểm tra, bạn cần thêm thư mục vào danh sách thư mục an toàn của Git. Đây là tính năng bảo mật mới có trong các phiên bản Git gần đây.

Bước tiếp theo là tạo người dùng và nhóm hệ thống cho NetBox.
Mã:
$ sudo adduser --system --group netbox
Cấp quyền cho người dùng trên thư mục phương tiện của NetBox.
Mã:
$ sudo chown --recursive netbox /opt/netbox/netbox/media/

Bước 5 - Cấu hình NetBox​

Chuyển đến thư mục cấu hình NetBox.
Mã:
$ cd /opt/netbox/netbox/netbox/
Sao chép tệp cấu hình ví dụ để tạo tệp thực tế.
Mã:
$ sudo cp configuration_example.py configuration.py
Trước khi tiến hành cấu hình, chúng ta cần tạo khóa bí mật cho NetBox. Ghi lại khóa vì chúng ta cần khóa này để cấu hình.
Mã:
$ python3 ../generate_secret_key.py
dSSWi$Ar2cVvu1)V!B82sY1tJAQK9r)vzM8ReQRF7@C^+$=1+(
Mở tệp cấu hình để chỉnh sửa.
Mã:
$ sudo nano configuration.py
Tìm Biến ALLOWED_HOSTS và đặt giá trị của nó như sau. Biến này chứa danh sách các tên máy chủ và địa chỉ IP hợp lệ mà máy chủ này có thể truy cập được.
Mã:
ALLOWED_HOSTS = ['netbox.example.com', '']
Bước tiếp theo là chỉnh sửa thông tin chi tiết về cơ sở dữ liệu. Cấu hình thông tin chi tiết về cơ sở dữ liệu như sau.
Mã:
DATABASE = { 'NAME': 'netbox', # Database name 'USER': 'netbox', # PostgreSQL username 'PASSWORD': 'Your_Password', # PostgreSQL password 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) 'CONN_MAX_AGE': 300, # Max database connection age
}
Cấu hình Redis như hình minh họa. Nhập mật khẩu Redis mà bạn đã đặt ở bước 3.
Mã:
REDIS = { 'tasks': { 'HOST': 'localhost', 'PORT': 6379, # Comment out `HOST` and `PORT` lines and uncomment the following if using Redis Sentinel # 'SENTINELS': [('mysentinel.redis.example.com', 6379)], # 'SENTINEL_SERVICE': 'netbox', 'PASSWORD': 'Your_Redis_Password', 'DATABASE': 0, 'SSL': False, # Set this to True to skip TLS certificate verification # This can expose the connection to attacks, be careful # 'INSECURE_SKIP_TLS_VERIFY': False, }, 'caching': { 'HOST': 'localhost', 'PORT': 6379, # Comment out `HOST` and `PORT` lines and uncomment the following if using Redis Sentinel # 'SENTINELS': [('mysentinel.redis.example.com', 6379)], # 'SENTINEL_SERVICE': 'netbox', 'PASSWORD': 'Your_Redis_Password', 'DATABASE': 1, 'SSL': False, # Set this to True to skip TLS certificate verification # This can expose the connection to attacks, be careful # 'INSECURE_SKIP_TLS_VERIFY': False, }
}
Thêm giá trị khóa bí mật vào biến.
Mã:
SECRET_KEY = 'dSSWi$Ar2cVvu1)V!B82sY1tJAQK9r)vzM8ReQRF7@C^+$=1+('
Theo mặc định, NetBox sử dụng hệ thống tệp cục bộ để lưu trữ các tệp đã tải lên. Bạn có thể lưu trữ tệp trên hệ thống tệp từ xa bằng cách cài đặt thư viện django-storages. Chạy lệnh sau để thêm gói django-storages vào gói requirements.txt của NetBox, sau đó sẽ được cài đặt ở bước sau. Chúng ta cũng cần cấu hình các tham số lưu trữ. Bỏ chú thích ở phần lưu trữ của tệp cấu hình và tiến hành như sau.
Mã:
STORAGE_BACKEND = 'storages.backends.s3boto3.S3Boto3Storage'
STORAGE_CONFIG = { 'AWS_ACCESS_KEY_ID': 'Key ID', 'AWS_SECRET_ACCESS_KEY': 'Secret', 'AWS_STORAGE_BUCKET_NAME': 'netbox', 'AWS_S3_REGION_NAME': 'eu-west-1',
}
Các loại lưu trữ khác cũng được hỗ trợ, bao gồm FTP, SFTP, Dropbox và các nhà cung cấp S3 khác. Để tìm hiểu cách cấu hình chúng, bạn có thể đọc trang trợ giúp django-storages.

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 6 - Cài đặt NetBox​

Chạy nâng cấp NetBox script.
Mã:
$ sudo /opt/netbox/upgrade.sh
Script nâng cấp thực hiện các tác vụ sau.
  • Tạo môi trường ảo Python
  • Cài đặt tất cả các gói Python cần thiết
  • Chạy di chuyển lược đồ cơ sở dữ liệu
  • Xây dựng tài liệu cục bộ (để sử dụng ngoại tuyến)
  • Tổng hợp các tệp tài nguyên tĩnh trên đĩa
Kích hoạt môi trường ảo được tạo bởi bản nâng cấp script.
Mã:
$ source /opt/netbox/venv/bin/activate
Bước tiếp theo là tạo siêu người dùng để truy cập NetBox. Nhưng trước tiên, hãy chuyển đến thư mục cần thiết.
Mã:
(venv) $ cd /opt/netbox/netbox
Tạo siêu người dùng.
Mã:
(venv) $ python3 manage.py createsuperuser
Bạn sẽ nhận được thông báo sau output.
Mã:
Username (leave blank to use 'navjot'):
Email address: [emailprotected]
Password:
Password (again):
Superuser created successfully.
NetBox bao gồm lệnh quản lý housekeeping xử lý các tác vụ dọn dẹp định kỳ, chẳng hạn như xóa các phiên cũ và các bản ghi thay đổi đã hết hạn. Bạn có thể chạy lệnh theo cách thủ công hoặc sử dụng cron để chạy lệnh theo các khoảng thời gian đều đặn. NetBox cung cấp một tập lệnh shell để chạy các tác vụ dọn dẹp. Chạy lệnh sau để tạo liên kết mềm cho tập lệnh trong thư mục Cron hàng ngày. Điều này sẽ đảm bảo lệnh sẽ chạy hàng ngày.
Mã:
(venv) $ sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
Bước cuối cùng là kiểm tra xem ứng dụng NetBox có hoạt động không. Nhưng trước tiên, chúng ta cần mở cổng 8000 để kiểm tra. Tuy nhiên, bạn có thể sử dụng bất kỳ cổng nào.
Mã:
(venv) $ sudo ufw allow 8000
Bắt đầu phiên bản phát triển của NetBox.
Mã:
(venv) $ python3 manage.py runserver 0.0.0.0:8000 --insecure
Nếu thành công, bạn sẽ nhận được thông báo sau đầu ra.
Mã:
Performing system checks...
System check identified no issues (0 silenced).
December 27, 2022 - 09:27:37
Django version 4.1.4, using settings 'netbox.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
Bạn có thể truy cập NetBox qua URL http://:8000/. Bạn sẽ nhận được màn hình sau.


netbox-homepage.png



Nhấp vào nút Đăng nhập để mở trang Đăng nhập và nhập thông tin đăng nhập siêu người dùng đã tạo trước đó.


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


Bạn sẽ được đưa trở lại bảng điều khiển NetBox.

Nhấn phím Ctrl + C để dừng máy chủ. Hủy kích hoạt môi trường ảo Python.
Mã:
(venv) $ deactivate

Bước 7 - Cấu hình Gunicorn và Tạo Tệp Dịch vụ​

NetBox chạy như một ứng dụng WSGI đằng sau máy chủ HTTP. NetBox tự động cài đặt máy chủ Gunicorn. Trong bước này, chúng ta sẽ cấu hình Gunicorn và tạo tệp dịch vụ cho NetBox để có thể chạy ở chế độ nền và trong suốt quá trình khởi động lại hệ thống.

NetBox được cung cấp kèm theo tệp cấu hình Gunicorn mặc định. Tạo một bản sao của nó.
Mã:
$ sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
Cấu hình mặc định có thể đáp ứng được mục đích của chúng ta. Tùy thuộc vào nhu cầu của bạn, bạn có thể chỉnh sửa tệp để thay đổi tên máy chủ và số cổng hoặc cải thiện hiệu suất bằng cách thay đổi luồng, công nhân và số lượng yêu cầu.

Bước tiếp theo là sao chép cả tệp dịch vụ NetBox và Gunicorn vào thư mục /etc/systemd/system.
Mã:
$ sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
Tải lại dịch vụ daemon.
Mã:
$ sudo systemctl daemon-reload
Khởi động và kích hoạt netboxnetbox-rq dịch vụ.
Mã:
$ sudo systemctl start netbox netbox-rq
$ sudo systemctl enable netbox netbox-rq
Kiểm tra trạng thái của WSGI dịch vụ.
Mã:
$ sudo systemctl status netbox
Bạn sẽ nhận được kết quả tương tự.
Mã:
? netbox.service - NetBox WSGI Service Loaded: loaded (/etc/systemd/system/netbox.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-12-27 09:28:23 UTC; 17s ago Docs: https://docs.netbox.dev/ Main PID: 4180 (gunicorn) Tasks: 6 (limit: 1030) Memory: 357.9M CPU: 7.747s CGroup: /system.slice/netbox.service ??4180 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi ??4181 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi ??4182 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi ??4183 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi ??4184 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi ??4185 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
Dec 27 09:28:23 netbox systemd[1]: Started NetBox WSGI Service.
Dec 27 09:28:24 netbox gunicorn[4180]: [2022-12-27 09:28:24 +0000] [4180] [INFO] Starting gunicorn 20.1.0
Dec 27 09:28:24 netbox gunicorn[4180]: [2022-12-27 09:28:24 +0000] [4180] [INFO] Listening at: http://127.0.0.1:8001 (4180)
Dec 27 09:28:24 netbox gunicorn[4180]: [2022-12-27 09:28:24 +0000] [4180] [INFO] Using worker: gthread
Dec 27 09:28:24 netbox gunicorn[4181]: [2022-12-27 09:28:24 +0000] [4181] [INFO] Booting worker with pid: 4181
Dec 27 09:28:24 netbox gunicorn[4182]: [2022-12-27 09:28:24 +0000] [4182] [INFO] Booting worker with pid: 4182
Dec 27 09:28:24 netbox gunicorn[4183]: [2022-12-27 09:28:24 +0000] [4183] [INFO] Booting worker with pid: 4183
Dec 27 09:28:24 netbox gunicorn[4184]: [2022-12-27 09:28:24 +0000] [4184] [INFO] Booting worker with pid: 4184
Dec 27 09:28:24 netbox gunicorn[4185]: [2022-12-27 09:28:24 +0000] [4185] [INFO] Booting worker with pid: 4185
Như bạn thấy, Gunicorn lắng nghe ở cổng 8001 theo mặc định. Thông tin này sẽ hữu ích khi cấu hình Nginx làm máy chủ proxy ngược.

Bước 8 - Cài đặt Nginx​

Ubuntu 22.04 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.

Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \	| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.22.1
Khởi động máy chủ Nginx.
Mã:
$ sudo systemctl start nginx

Bước 9 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Ubuntu hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng tôi sẽ sử dụng phiên bản Snapd.

Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật. Đảm bảo rằng phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core
$ sudo snap refresh core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot chạy bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Chạy lệnh sau để tạo SSL Chứng chỉ.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d netbox.example.com
Lệnh trên sẽ tải chứng chỉ xuống thư mục /etc/letsencrypt/live/netbox.example.com trên máy chủ của bạn.

Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không, hãy chạy thử quy trình.
Mã:
$ sudo certbot renew --dry-run
Nếu không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 10 - Cấu hình Nginx​

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tạo và mở tệp /etc/nginx/conf.d/netbox.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/netbox.conf
Dán mã sau vào nó.
Mã:
server { # Redirect any http requests to https listen 80; listen [::]:80; server_name netbox.example.com; return 301 https://$host$request_uri;
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name netbox.example.com; access_log /var/log/nginx/netbox.access.log; error_log /var/log/nginx/netbox.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/netbox.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/netbox.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/netbox.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 25m; # Proxy everything over to the netbox server location /static/ { alias /opt/netbox/netbox/static/; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_pass http://127.0.0.1:8001; }
}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.

Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại Nginx dịch vụ.
Mã:
$ sudo systemctl restart nginx
Bây giờ bạn có thể truy cập Bảng điều khiển NetBox qua URL https://netbox.example.com.

Bước 11 - Nâng cấp NetBox​

Nâng cấp NetBox khá dễ dàng. Các bước bao gồm kiểm tra nhánh chính của kho lưu trữ Git, kéo các cam kết mới nhất, sau đó kiểm tra phiên bản ổn định mới.

Chuyển sang thư mục NetBox.
Mã:
$ cd /opt/netbox
Kiểm tra nhánh chính.
Mã:
$ sudo git checkout master
Kéo các cam kết mới nhất từ kho lưu trữ.
Mã:
$ sudo git pull origin master
Kiểm tra phiên bản mới. Nếu 3.4.2 là phiên bản mới hơn, bạn có thể kiểm tra phiên bản đó.
Mã:
$ sudo git checkout v3.4.2
Chạy tập lệnh nâng cấp.
Mã:
$ sudo ./upgrade.sh
Đối với quy trình nâng cấp, tập lệnh thực hiện các chức năng sau.
  • Phá hủy và xây dựng lại môi trường ảo Python
  • Cài đặt tất cả các gói Python cần thiết (được liệt kê trong requirements.txt)
  • Cài đặt bất kỳ gói bổ sung nào từ local_requirements.txt
  • Áp dụng bất kỳ bản di chuyển cơ sở dữ liệu nào được bao gồm trong bản phát hành
  • Xây dựng tài liệu cục bộ (để sử dụng ngoại tuyến)
  • Thu thập tất cả các tệp tĩnh để được phục vụ bởi dịch vụ HTTP
  • Xóa các loại nội dung cũ khỏi database
  • Xóa tất cả các phiên người dùng đã hết hạn khỏi cơ sở dữ liệu
Khởi động lại dịch vụ Gunicorn và NetBox.
Mã:
$ sudo systemctl restart netbox netbox-rq

Kết luận​

Đây là phần kết thúc hướng dẫn của chúng tôi về việc cài đặt NetBox Network Documentation and Management Tool trên máy chủ Ubuntu 22.04 cùng với NGinx làm máy chủ proxy ngược. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên