Pre-requisite
Setting Up NetBox (Ubuntu 24.04/22.04)
This guide walks you through installing NetBox directly on an Ubuntu LXC or VM (“bare metal” style).
System Requirements
- RAM: 4GB recommended (2GB minimum for very small labs).
- Disk: 20GB recommended (10GB minimum).
- CPU: 2 vCPUs recommended.
1. System Preparation
Update the system and install the required system packages, including PostgreSQL, Redis, and Python build tools.
apt update && apt upgrade -y
apt install -y postgresql postgresql-common postgresql-client redis-server \
git python3-pip python3-venv python3-dev build-essential libxml2-dev \
libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev2. Database Setup (PostgreSQL)
-
Start PostgreSQL:
systemctl enable --now postgresql -
Create Database and User: Replace strong_password with a real password.
sudo -u postgres psqlInside the SQL shell:
CREATE DATABASE netbox WITH TEMPLATE template0 ENCODING 'UTF8'; CREATE USER netbox WITH PASSWORD 'strong_password'; ALTER DATABASE netbox OWNER TO netbox; \c netbox ALTER SCHEMA public OWNER TO netbox; GRANT ALL PRIVILEGES ON SCHEMA public TO netbox; \q
3. Install NetBox
-
Create the NetBox system user:
useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox -
Clone the NetBox repository:
git clone -b main https://github.com/netbox-community/netbox.git /opt/netbox/ chown -R netbox:netbox /opt/netbox/ -
Configure NetBox:
cd /opt/netbox/netbox/netbox/ cp configuration_example.py configuration.pyGenerate a secret key:
root@netbox:/opt/netbox/netbox/netbox# python3 -c 'import secrets; print(secrets.token_hex(50))' 866887ae9b6f118ce7e5a7b7f7a4b2fa7a1979dab810e8b092dd5dba4a3bc1f6b0e1028ac45850c1b55a617c3ff41c932c56Edit `configuration.py` (located in `/opt/netbox/netbox/netbox/`):
- Set `ALLOWED_HOSTS` to `[’**’]` for initial testing. ***(For production, replace `*` with your NetBox server’s IP addresses or domain names)****:
ALLOWED_HOSTS = ['*'] - Set `DATABASE` user to `netbox` and password to `strong_password`.
- Set `SECRET_KEY` to the string generated above.
- Set `ALLOWED_HOSTS` to `[’**’]` for initial testing. ***(For production, replace `*` with your NetBox server’s IP addresses or domain names)****:
-
Install Dependencies & Run Migrations:
/opt/netbox/upgrade.shThis script creates the Python environment, installs requirements, and builds the DB schema.
-
Create a Superuser:
source /opt/netbox/venv/bin/activate cd /opt/netbox/netbox python3 manage.py createsuperuser
4. Configure Gunicorn & Systemd
-
Copy the systemd service and config files:
cp /opt/netbox/contrib/*.service /etc/systemd/system/ cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py systemctl daemon-reload -
Start NetBox Services:
systemctl enable --now netbox netbox-rq
5. Web Server (Nginx)
To serve NetBox on port 80/443.
-
Install Nginx:
apt install -y nginx -
Configure Nginx: Copy the default config provided by NetBox:
cp /opt/netbox/contrib/nginx.conf /etc/nginx/sites-available/netbox rm /etc/nginx/sites-enabled/default ln -s /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/netbox -
Edit the Nginx Config: Edit `/etc/nginx/sites-available/netbox`. Change `server_name` to your IP or Domain.
-
Generate Self-Signed SSL Certificate: The default config enables HTTPS, so you need a certificate.
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/netbox.key \ -out /etc/ssl/certs/netbox.crt \ -subj "/C=US/ST=State/L=City/O=NetBox/CN=netbox.local" -
Restart Nginx:
systemctl restart nginx
Accessing NetBox
- Open `<http://
/>` - Log in with the superuser you created.
Reference List
- https://netbox.readthedocs.io/en/stable/installation/3-netbox/
- https://www.apalrd.net/posts/2025/iaac_netbox/
- https://www.youtube.com/watch?v=p3J3f2QWFGE
- https://www.howtoforge.com/how-to-install-netbox-irm-on-ubuntu-24-04-server/#google_vignette
- https://community-scripts.github.io/ProxmoxVE/scripts?id=netbox&category=Network+%26+Firewall