Cài đặt Netbox trên Ubuntu 18

ToiVietBlog - Cài đặt Netbox trên Ubuntu 18. Bài viết này mình sẽ hướng dẫn các bạn từng bước để cài đặt thành công Netbox.

Netbox có thể cài đặt trên cả hệ điều hành Ubuntu 18 và CentOS 7. Trong bài viết này, mình hướng dẫn các bạn cài đặt trên Ubuntu 18. Nếu bạn muốn sử dụng CentOS 7 thì có thể đọc tài liệu của Netbox và làm theo từng bước.

Chuẩn bị máy chủ

Bây giờ, bạn cần chuẩn bị một máy chủ Ubuntu server 18.04 LTS để cài đặt Netbox.

Cấu hình tối thiểu mà mình nghĩ bạn nến thiết lập để sử dụng cho hệ thống như sau:

  • CPU: 2-4 vCPU.
  • RAM: 2 GB.
  • HDD: 20 GB

Mặc định là bạn đã setup máy chủ Ubuntu cơ bản rồi như: ssh vào máy chủ, update package, cài đặt timezone.

Cài đặt Netbox trên Ubuntu 18

Bây giờ ta sẽ tiến hành từng bước cài đặt Netbox. Các lệnh đều được thực hiện với quyền sudo hoặc root.

cai-dat-netbox-tren-ubuntu-18-01 Cài đặt Netbox trên Ubuntu 18
Các thành phần của Netbox.

Update hệ điều hành.

# apt-get update
# apt-get install -y postgresql libpq-dev

Tạo database

Netbox sử dụng PostgreSQL phiên bản 9.6 trở lên. Bạn sử dụng các lệnh dưới để tạo database cho Netbox.

[email protected]:/home/ubuntu# sudo -u postgres psql
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.

postgres=# CREATE DATABASE netbox;
CREATE DATABASE
postgres=# CREATE USER netbox WITH PASSWORD 'your_db_password';
CREATE ROLE
postgres=#  GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
GRANT
postgres=# \q

Lưu ý bạn nên thay đổi mật khẩu your_db_password với mật khẩu của riêng bạn.

Sau khi bạn tạo database xong, bạn gõ lệnh dưới để kiểm tra kết nối đến database đã đúng hay chưa.

[email protected]:/home/ubuntu# psql -U netbox -W -h localhost netbox
Password for user netbox: 
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

netbox=> \q

Nếu kết quả của bạn hiện ra đúng như trên có nghĩa là database đã được tạo thành công.

Cài đặt Redis

Redis được sử dụng làm caching cho Netbox. Việc cài đặt Redis trên Ubuntu 18 khá đơn giản, hầu như bạn không cần phải chỉnh sửa cấu hình gì nhiều.

# apt-get install -y redis-server

Cài đặt Netbox

Dưới đây là từng bước để bạn có thể cài Netbox.

Cài đặt gói phụ trợ

Bạn chạy lệnh dưới để cài đặt các gói phụ trợ sử dụng cho Netbox.

# apt-get install -y git python3.6 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev
 Tải mã nguồn Netbox

Tạo thư mục chứa mã nguồn trên máy chủ.

# mkdir -p /opt/netbox/ && cd /opt/netbox/

Thực hiện clone mã nguồn về máy chủ. Bạn lưu ý dấu chấm (.) ở cuối câu lệnh nhé.

# git clone -b master https://github.com/netbox-community/netbox.git .

Kết quả trông như thế này.

[email protected]:/opt/netbox# git clone -b master https://github.com/netbox-community/netbox.git .
Cloning into '.'...
remote: Enumerating objects: 787, done.
remote: Counting objects: 100% (787/787), done.
remote: Compressing objects: 100% (461/461), done.
remote: Total 47411 (delta 541), reused 488 (delta 325), pack-reused 46624
Receiving objects: 100% (47411/47411), 20.42 MiB | 4.86 MiB/s, done.
Resolving deltas: 100% (37576/37576), done.
Tạo user Netbox

Ta sẽ tạo một user hệ thống có tên là netbox. User này sẽ được sử dụng cho dịch vụ web của Netbox.

Bạn chạy các lệnh dưới đây để tạo group user.

# groupadd --system netbox

Sau đó, bạn chạy lệnh dưới để tìm Group ID. Bạn sẽ nhận được một con số, ví dụ 999.

# grep "netbox" /etc/group|cut -d: -f3

Tiếp theo, bạn thêm user netbox vào group trên.

# adduser --system --gid 999 netbox

Phân quyền sỡ hữu cho user netbox.

# chown --recursive netbox /opt/netbox/netbox/media/
Thiết lập môi trường Python

Netbox sử dụng framework Django nên sẽ cần đến Python. Ta sẽ sử dụng virtual environment trong Python để tránh việc Netbox có thể bị xung đột với các chương trình hệ thống khác.

Tạo thư mục môi trường.

# python3 -m venv /opt/netbox/venv

Active môi trường python.

# source venv/bin/activate

Cài đặt gói wheel.

(venv) [email protected]:/opt/netbox# pip3 install wheel

Nếu bạn không cài đặt gói này, bạn có thể bắt gặp lỗi.

  ----------------------------------------
  Failed building wheel for funcy
  Running setup.py clean for funcy
  Running setup.py bdist_wheel for coreschema ... error
  Complete output from command /opt/netbox/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-mum5_2q3/coreschema/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmppkxjybygpip-wheel- --python-tag cp36:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help
  
  error: invalid command 'bdist_wheel'
  
  ----------------------------------------

Tiếp theo, ta cài đặt các thư viện cần thiết cho Netbox.

(venv) [email protected]:/opt/netbox# pip3 install -r requirements.txt
Thiết lập cấu hình cho Netbox

Bây giờ, ta cần thiết lập một số thông số cho Netbox.

Lưu ý rằng bạn vẫn đang trong chế độ virtual environment python nhé.

Tạo SECRET_KEY. Lệnh thực thi script ở dưới sẽ tạo ra một chuỗi 50 kí tự ngẫu nhiên. Bạn hãy lưu nó lại, ta sẽ sử dụng nó trong cấu hình của Netbox, nếu không có nó thì Netbox sẽ không hoạt động.

(venv) # cd /opt/netbox/netbox/
(venv) # ./generate_secret_key.py

Copy file cấu hình mẫu.

(venv) # cd /opt/netbox/netbox/netbox
(venv) # cp configuration.example.py configuration.py

Bây giờ, bạn hãy mở file /opt/netbox/netbox/netbox/configuration.py lên và sửa đổi thông tin trong các phần sau.

  • ALLOWED_HOSTS: phần này bạn điền IP của máy chủ hoặc domain mà bạn muốn sử dụng để truy cập Netbox.
  • DATABASE: bạn điền thông tin database mà ta đã tạo ở trước đó.
  • REDIS: bạn có thể để mặc định phần này.
  • SECRET_KEY: bạn điền secret key đã tạo ở trên vào phần này.

Nội dung phần chỉnh sửa sẽ trông như dưới đây.

# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['netbox.toivietblog.com']

# PostgreSQL database configuration. See the Django documentation for a complete list of available parameters:
#   https://docs.djangoproject.com/en/stable/ref/settings/#databases
DATABASE = {
    'NAME': 'netbox',         # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'your_db_password',           # PostgreSQL password
    'HOST': 'localhost',      # Database server
    'PORT': '',               # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,      # Max database connection age
}

# Redis database settings. Redis is used for caching and for queuing background tasks such as webhook events. A separate
# configuration exists for each. Full connection details are required in both sections, and it is strongly recommended
# to use two separate database IDs.
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': '',
        'DATABASE': 0,
        'DEFAULT_TIMEOUT': 300,
        'SSL': 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': '',
        'DATABASE': 1,
        'DEFAULT_TIMEOUT': 300,
        'SSL': False,
    }
}

# This key is used for secure generation of random numbers and strings. It must never be exposed outside of this file.
# For optimal security, SECRET_KEY should be at least 50 characters in length and contain a mix of letters, numbers, and
# symbols. NetBox will not run without this defined. For more information, see
# https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-SECRET_KEY
SECRET_KEY = 'R8n5f`(B%xwp&zPhkcHT<[email protected])fFc]`}HfMg?hp'
Chạy database migrations

Sau khi thiết lập cấu hình ở trên xong, bạn chạy lệnh dưới đây để thực hiện migration database. Kết quả của bước này hơi dài nên mình chỉ để dấu … ở phần dưới đây.

(venv) # cd /opt/netbox/netbox/
(venv) # python3 manage.py migrate
Operations to perform:
  Apply all migrations: dcim, sessions, admin, ipam, utilities, auth, circuits, contenttypes, extras, secrets, users
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  ...
Tạo tài khoản quản trị

Giờ ta sẽ tạo tài khoản quản trị, hệ thống cần phải xác thực mới có thể sử dụng. Dĩ nhiên là bạn không muốn ai cũng có thể thấy được thông tin hệ thống của bạn.

(venv) [email protected]:/opt/netbox/netbox# python3 manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.
Thu thập static files
(venv) [email protected]:/opt/netbox/netbox# python3 manage.py collectstatic --no-input

976 static files copied to '/opt/netbox/netbox/static' .

Tới bước này bạn gần như cài đặt xong Netbox.

Thiết lập HTTP Daemon

Netbox sử dụng gunicorn để chạy phần front-end. Nó có thể kết hợp sử dụng với cả Nginx và Apache.

Trong bài viết này, mình sẽ hướng dẫn sử dụng Nginx – bởi vì nó nhanh hơn Apache và mình sử dụng Nginx khá nhiều.

Tạo chứng chỉ SSL

Ở phần này, ta sẽ tạo một chứng chỉ SSL local, bạn có thể sử dụng chứng chỉ SSL thương mại hoặc Let’s Encrypt cũng được.

# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/netbox.key -out /etc/ssl/certs/netbox.crt
Cài đặt HTTP Daemon

Thực chất ở đây chính là cài đặt một web server trên máy chủ netbox của bạn.

# apt-get install -y nginx

Copy file cấu hình mẫu của netbox vào thư mục domain của nginx.

# cp /opt/netbox/contrib/nginx.conf /etc/nginx/sites-available/netbox

Bạn mở file /etc/nginx/sites-available/netbox và sửa thông tin domain là cho trùng với mục ALLOWED_HOSTS đã thiết lập ở trên. Ví dụ ở đây là: netbox.toivietblog.com.

Tiếp theo, bạn xóa file cấu hình virtualhost mặc định của nginx.

# cd /etc/nginx/sites-enabled/
# rm default
# ln -s /etc/nginx/sites-available/netbox

Sau đó bạn khởi động lại nginx.

# service nginx restart
Thiết lập Gunicorn

Phần này khá đơn giản. Bạn chỉ việc copy file cấu hình mẫu vào thư mục source chạy ứng dụng netbox là xong.

# cd /opt/netbox
# cp contrib/gunicorn.py /opt/netbox/gunicorn.py
Thiết lập systemd

Ubuntu 18 và CentOS 7 trở về sau sử dụng systemd để quản lý các chương trình.

Ta sẽ tạo file cấu hình dịch vụ netbox trong systemd.

Copy các file cấu hình mẫu vào thư mục systemd.

# cp contrib/*.service /etc/systemd/system/

Tiếp theo, reload daemon và khởi động netbox.

# systemctl daemon-reload
# systemctl start netbox netbox-rq
# systemctl enable netbox netbox-rq

Bây giờ bạn có thể kiểm tra dịch vụ netbox bằng lệnh sau:

# systemctl status netbox

Truy cập Netbox

Bây giờ bạn có thể mở trình duyệt lên và truy cập vào netbox (trong bài viết là https://netbox.toivietblog.com). Mặc định bạn sẽ nhìn thấy cửa sổ như này.

cai-dat-netbox-tren-ubuntu-18-02 Cài đặt Netbox trên Ubuntu 18
Giao diện chính của Netbox.

Bạn có thể đăng nhập với thông tin user quản trị mà chúng ta đã tạo trong quá trình cài đặt.

Kết luận

Bài viết này đã hướng dẫn các bạn từng bước một để có thể cài đặt thành công Netbox trên Ubuntu 18. Mình hy vọng bài viết hữu ích với các bạn. Trong các bài viết tiếp theo, chúng ta sẽ tìm hiểu thêm về các thiết lập và sử dụng Netbox.

0 0 votes
Article Rating
Nhấn vào đây để đánh giá bài này!
[Tổng: 0 - Trung bình: 0]

If you appreciate what we share in this blog, you can support us by:
  1. Stay connected to: Facebook | Twitter | Google Plus | YouTube
  2. Subscribe email to recieve new posts from us: Sign up now.
  3. Start your own blog with SSD VPS - Free Let's Encrypt SSL ($2.5/month).
  4. Become a Supporter - Make a contribution via PayPal.
  5. Support us by purchasing Ribbon Lite Child theme being using on this website.

We are thankful for your support.

«« »»
Theo dõi
Thông báo về
guest
0 Comments
Inline Feedbacks
View all comments