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.

Docker is the recommended way to deploy RIPE Updater. The official image interdotlink/ripe-updater bundles Python, gunicorn, and all dependencies so you can be up and running with a single command. Two approaches are available: a plain docker run for quick testing, and docker-compose for a more structured setup you can commit to version control.
The official image is published as interdotlink/ripe-updater on Docker Hub.

docker run

1

Copy and configure .env

Copy the example environment file and edit it with your real values:
cp .env.example .env
vi .env
The example file provides the following defaults as a starting point:
.env.example
S3_BACKUP=no
S3_ENDPOINT_URL=https://s3.example.com
S3_BUCKET=example-bucket
S3_ACCESS_KEY=123456abcdef
S3_SECRET_ACCESS_KEY=123456abcdef
SMALLEST_PREFIX_V4=31
SMALLEST_PREFIX_V6=127
MAIL_REPORT=no
SMTP=smtp.example.com:587
SENDER_MAIL=ripe-updater@example.com
RECIPIENT_MAIL=noc@example.com
NETBOX_URL=https://netbox.local
NETBOX_TOKEN=123456abcdef
DEFAULT_COUNTRY=DE
RIPE_MNT_PASSWORD=emptypassword
RIPE_DB=TEST
UPDATE_TOKEN=Token 123456abcdef
DEBUG=no
TEMPLATE_DIR=./templates
At a minimum, set NETBOX_URL, NETBOX_TOKEN, RIPE_MNT_PASSWORD, and DEFAULT_COUNTRY before starting the container.
2

Run the container

Start RIPE Updater with your .env file and mount your local templates directory into the container:
docker run \
  -p 8000:80 \
  -v "/home/user/ripe-updater/templates:/opt/ripeupdater/templates:ro" \
  --env-file .env \
  interdotlink/ripe-updater
The templates volume mount is required. Without it the container has no RIPE object templates to render and will fail to process webhooks.
3

Verify the service is healthy

Confirm the container is accepting requests:
curl http://localhost:8000/health
A 200 OK response indicates RIPE Updater is running and ready to receive NetBox webhooks.

docker-compose

1

Copy the override example

The repository ships a docker-compose.override.example.yml that exposes the port and mounts the templates directory. Copy it to activate it:
cp docker-compose.override.example.yml docker-compose.override.yml
docker-compose automatically merges docker-compose.yml with docker-compose.override.yml at startup, so no further edits to docker-compose.yml are needed.
2

Start the service

docker-compose up -d
The service starts in detached mode. Use docker-compose logs -f to tail the output.
3

Verify the service is healthy

curl http://localhost:8000/health
A 200 OK response confirms the container is running correctly.

Image structure

The Dockerfile below shows how the image is built — Python 3.10 on Alpine, a dedicated non-root ripeupdater user, dependencies installed from requirements.txt, and gunicorn as the default entrypoint command:
Dockerfile
FROM python:3.10-alpine

RUN apk add --no-cache gcc
RUN addgroup -S ripeupdater && adduser -S ripeupdater -G ripeupdater

USER ripeupdater

WORKDIR /opt/ripeupdater/

COPY requirements.txt ./
RUN pip install -Ur requirements.txt

COPY ripeupdater ./ripeupdater/

COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]
CMD python -m gunicorn -b :80 -w 2 ripeupdater.main:app
The image runs gunicorn with 2 workers by default. For higher-traffic environments, override the CMD to increase the worker count.

Build docs developers (and LLMs) love