Difference between revisions of "Install and Configure NetBox IPAM on Ubuntu"

From SdNOG wiki
Jump to navigation Jump to search
(6. Configure Nginx Web Server)
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
= Prerequisites =
 
= Prerequisites =
 +
Ensure the following packages and dependencies are installed:
  
 +
* Python 3.8 or higher
 +
* PostgreSQL 12 or higher
 +
* Redis
 +
* Netbox 3.0 or higher
 +
* Nginx
 +
* Gunicorn
  
Create a non-root user with sudo access.
+
Create a non-root user with sudo access ''' netboxuser '''
 
== 1. Install and configure PostgreSQL ==
 
== 1. Install and configure PostgreSQL ==
  
Line 130: Line 137:
 
sudo cp configuration_example.py configuration.py
 
sudo cp configuration_example.py configuration.py
 
</code>
 
</code>
 +
 
Create a symbolic link for the Python binary:
 
Create a symbolic link for the Python binary:
  
Line 190: Line 198:
 
sudo reboot
 
sudo reboot
 
</code>
 
</code>
 +
 
== 4. Configure Gunicorn ==
 
== 4. Configure Gunicorn ==
  
Line 231: Line 240:
 
sudo cp /opt/netbox/contrib/nginx.conf /etc/nginx/sites-available/netbox
 
sudo cp /opt/netbox/contrib/nginx.conf /etc/nginx/sites-available/netbox
 
</code>
 
</code>
 +
 
Edit the configuration file:
 
Edit the configuration file:
  
Line 236: Line 246:
 
sudo nano /etc/nginx/sites-available/netbox
 
sudo nano /etc/nginx/sites-available/netbox
 
</code>
 
</code>
 +
 
Replace the server name with your server's IP address:
 
Replace the server name with your server's IP address:
  
Line 257: Line 268:
 
}
 
}
 
</pre>
 
</pre>
 +
 
Delete the default Nginx configuration:
 
Delete the default Nginx configuration:
  
Line 262: Line 274:
 
sudo rm /etc/nginx/sites-enabled/default
 
sudo rm /etc/nginx/sites-enabled/default
 
</code>
 
</code>
 +
 
Create a symbolic link for the NetBox configuration:
 
Create a symbolic link for the NetBox configuration:
  
Line 273: Line 286:
 
sudo systemctl restart nginx
 
sudo systemctl restart nginx
 
</code>
 
</code>
 +
 +
access your url via the browser
 +
 +
== Author ==
 +
* '''Author''': [[User:Manhal.Mohamed|Manhal Mohamed]]'' , SdNOG Team

Latest revision as of 11:19, 16 August 2024

Prerequisites

Ensure the following packages and dependencies are installed:

  • Python 3.8 or higher
  • PostgreSQL 12 or higher
  • Redis
  • Netbox 3.0 or higher
  • Nginx
  • Gunicorn

Create a non-root user with sudo access netboxuser

1. Install and configure PostgreSQL

Install PostgreSQL:

sudo apt install postgresql libpq-dev -y

Start the database server:

sudo systemctl start postgresql

Enable the database server to start automatically on reboot:

sudo systemctl enable postgresql

Change the default PostgreSQL password:

sudo passwd postgres

Switch to the postgres user:

su - postgres

Log in to PostgreSQL:

psql

Create the NetBox database:

CREATE DATABASE netbox;

Create the netbox user with a strong password (replace my_strong_password with a secure one):

CREATE USER netbox WITH ENCRYPTED PASSWORD 'my_strong_password';

Grant privileges to the netbox user on the netbox database:

GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;

Exit PostgreSQL:

\q

Return to your non-root sudo user account:

exit

2. Install Redis®

Redis® is an in-memory key-value store used by NetBox for caching and queuing.

Install Redis®:

sudo apt install -y redis-server

3. Install and configure NetBox

Install all required packages:

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

Update pip to the latest version:

sudo pip3 install --upgrade pip

Create the installation directory and change to it:

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

Clone NetBox from the official Git repository:

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

Create a system user named netbox:

sudo adduser --system --group netbox

Grant the netbox user ownership of the media directory:

sudo chown --recursive netbox /opt/netbox/netbox/media/

Navigate to the configuration directory:

cd /opt/netbox/netbox/netbox/

Copy the example configuration file:

sudo cp configuration_example.py configuration.py

Create a symbolic link for the Python binary:

sudo ln -s /usr/bin/python3 /usr/bin/python

Generate a random SECRET_KEY for the configuration:

sudo /opt/netbox/netbox/generate_secret_key.py

Copy the generated secret key and use it in the configuration file.

Edit the configuration file:

sudo nano /opt/netbox/netbox/netbox/configuration.py

Update the file with the following settings:

ALLOWED_HOSTS = ['*']

DATABASE = {
    'NAME': 'netbox',
    'USER': 'netbox',
    'PASSWORD': 'my_strong_password',
    'HOST': 'localhost',
    'PORT': '',
}

SECRET_KEY = '<generated_secret_key>'

Run the upgrade script:

sudo /opt/netbox/upgrade.sh Enter the Python virtual environment:

source /opt/netbox/venv/bin/activate Navigate to the NetBox directory:

cd /opt/netbox/netbox Create a superuser account:

python3 manage.py createsuperuser Reboot the system:

sudo reboot

4. Configure Gunicorn

Copy the Gunicorn configuration file:

sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py

5. Configure Systemd

Copy the systemd service files:

sudo cp /opt/netbox/contrib/*.service /etc/systemd/system/ Reload the systemd daemon:

sudo systemctl daemon-reload Start the NetBox services:

sudo systemctl start netbox netbox-rq Enable the services to start at boot:

sudo systemctl enable netbox netbox-rq

6. Configure Nginx Web Server

Install the Nginx web server:

sudo apt install -y nginx Copy the Nginx configuration file:

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

Edit the configuration file:

sudo nano /etc/nginx/sites-available/netbox

Replace the server name with your server's IP address:

server {
    listen 80;
    server_name 192.0.2.10;  # Update this with your server's IP

    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;
    }
}

Delete the default Nginx configuration:

sudo rm /etc/nginx/sites-enabled/default

Create a symbolic link for the NetBox configuration:

sudo ln -s /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/netbox

Restart the Nginx service:

sudo systemctl restart nginx

access your url via the browser

Author