Difference between revisions of "Install and Configure NetBox IPAM on Ubuntu"
(→3. Install and configure NetBox) |
(→6. Configure Nginx Web Server) |
||
(2 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 233: | 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 238: | 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 259: | Line 268: | ||
} | } | ||
</pre> | </pre> | ||
+ | |||
Delete the default Nginx configuration: | Delete the default Nginx configuration: | ||
Line 264: | 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 275: | 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
Contents
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
- Author: Manhal Mohamed , SdNOG Team