Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/jalmargyyk/ripe-updater/llms.txt

Use this file to discover all available pages before exploring further.

You can run RIPE Updater directly on a Linux host without Docker by installing its Python dependencies into a virtualenv and launching the application with gunicorn. This approach suits environments where container runtimes are unavailable or undesirable, such as bare-metal servers or existing virtualised infrastructure managed without containers.
This approach requires you to manage updates, dependency upgrades, and process supervision manually. Docker is recommended for production deployments.

Dependencies

RIPE Updater requires Python 3.8 or later. The following packages are installed from requirements.txt:
PackageVersionPurpose
flask2.1.1Web framework and request handling
gunicorn20.1.0WSGI HTTP server
requests2.27.1HTTP client for RIPE DB and NetBox API calls
pynetbox6.6.2NetBox API client
iso31662.0.2Country code lookup for prefix region mapping
boto31.21.44S3 client for optional backup storage

Installation

1

Install Python 3.8 or later

Confirm your Python version meets the minimum requirement:
python3 --version
On Debian/Ubuntu, install Python 3 if it is not already present:
sudo apt-get update && sudo apt-get install -y python3 python3-pip python3-venv
On RHEL/Rocky/AlmaLinux:
sudo dnf install -y python3 python3-pip
2

Install Python dependencies

From the repository root, install all required packages:
pip install -r requirements.txt
Using a virtualenv is strongly recommended to isolate RIPE Updater’s dependencies from system packages:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
3

Configure the application

Configuration can be provided in two ways — choose whichever fits your workflow.Option A — environment variables (recommended)Export each variable before starting the server, or load them from a .env file with a tool such as direnv:
export NETBOX_URL=https://netbox.local
export NETBOX_TOKEN=123456abcdef
export RIPE_MNT_PASSWORD=your-mnt-password
export DEFAULT_COUNTRY=DE
export RIPE_DB=TEST
See the environment variables reference for the full list of supported variables.Option B — configuration fileEdit ripeupdater/configuration.py directly and set each value in the file. Environment variables take precedence over values in the configuration file when both are present.
4

Start the application

Launch RIPE Updater with gunicorn:
python -m gunicorn -b :80 -w 2 ripeupdater.main:app
The service listens on port 80 with 2 worker processes. Adjust -b to change the bind address or port, and -w to change the worker count based on your available CPU cores.
Binding to port 80 requires elevated privileges on most Linux systems. Either run the process as root (not recommended), use CAP_NET_BIND_SERVICE, or bind to a higher port (e.g., :8080) and place a reverse proxy in front.

Running as a systemd service

For production use, manage RIPE Updater with systemd so it starts automatically on boot and restarts after failures. Create a unit file at /etc/systemd/system/ripe-updater.service:
[Unit]
Description=RIPE Updater
After=network.target

[Service]
Type=simple
User=ripeupdater
WorkingDirectory=/opt/ripeupdater
EnvironmentFile=/opt/ripeupdater/.env
ExecStart=/opt/ripeupdater/.venv/bin/python -m gunicorn -b :8080 -w 2 ripeupdater.main:app
Restart=on-failure

[Install]
WantedBy=multi-user.target
Enable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable --now ripe-updater
sudo systemctl status ripe-updater

Build docs developers (and LLMs) love