Skip to main content

Documentation Index

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

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

Netbox RIPE Updater ships as a Docker Compose stack containing two services: the ripe-updater Flask application and a local Minio instance for S3-compatible backup storage. All configuration is driven by two env files, and the entire stack starts with a single command — no Kubernetes or external object storage required to get going.

Services

The stack defines two services that communicate over a private bridge network called ripe-updater.

ripe-updater

The ripe-updater service builds from the ./ripe-updater directory and runs the Flask application that receives NetBox webhooks and pushes changes to RIPE. Key fields:
FieldValueNotes
build.context./ripe-updaterBuilt locally from source
env_file.env.updaterAll updater config lives here
ports${UPDATER_HTTP_PORT}:80Host address set via .env
volumes${RIPE_TEMPLATE_DIR}:/opt/ripeupdater/templates:roTemplates mounted read-only
depends_onminioMinio must start first
restartalwaysRestarts automatically on failure

minio

The minio service runs a local S3-compatible object store that holds RIPE object backups. Key fields:
FieldValueNotes
imagecoollabsio/minio:latestCommunity Minio image
ports9000:9000, 9001:9001API and console — see note below
volumesminio-data:/dataNamed volume, persists across restarts
MINIO_DEFAULT_BUCKETSripe-backupsBucket created automatically on first start
The minio service ports (9000 and 9001) are listed in docker-compose.yml, but Minio is not bound to the host by default. UPDATER_HTTP_PORT in .env defaults to 127.0.0.1:9000, which binds only to localhost. Minio’s ports have no equivalent loopback binding in the default configuration, so the console and API are only reachable from within the Docker network.

Full docker-compose.yml

docker-compose.yml
---
services:
  ripe-updater:
    restart: always
    build:
        context: ./ripe-updater
        dockerfile: Dockerfile
    env_file:
      - .env.updater
    ports:
      - "${UPDATER_HTTP_PORT}:80"
    networks:
      - ripe-updater
    volumes:
        - "${RIPE_TEMPLATE_DIR}:/opt/ripeupdater/templates:ro"
    depends_on:
      - minio

  minio:
    restart: always
    image: coollabsio/minio:latest
    container_name: minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: ${MINIO_ROOT_USER}
      MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
      MINIO_DEFAULT_BUCKETS: ripe-backups
    volumes:
      - "minio-data:/data"
    command: server /data --console-address ":9001"
    networks:
      - ripe-updater

networks:
    ripe-updater:
        driver: bridge

volumes:
    minio-data:
        driver: local

Port bindings

VariableDefaultServicePurpose
UPDATER_HTTP_PORT127.0.0.1:9000ripe-updaterBinds the updater HTTP port on the host
(fixed)9000minioMinio S3 API (Docker network only by default)
(fixed)9001minioMinio web console (Docker network only by default)
Set UPDATER_HTTP_PORT in .env to control where the updater is accessible. The default 127.0.0.1:9000 restricts access to the local machine, which is the recommended starting point before adding a reverse proxy.

Volume mounts

MountContainer pathModePurpose
${RIPE_TEMPLATE_DIR}/opt/ripeupdater/templatesro (read-only)RIPE object templates
minio-data (named volume)/dataread-writeMinio backup storage
Set RIPE_TEMPLATE_DIR in .env to point to your template directory. The default is ./ripe-templates/example; switch it to your custom templates directory before going to production.

Starting the stack

docker compose up -d
The -d flag runs the containers in the background. Omit it to stream logs directly to the terminal during initial setup.

Checking health

The updater exposes a /health endpoint that returns Ok when the service is running:
curl http://localhost:9000/health
Expected response:
Ok
If UPDATER_HTTP_PORT is set to a non-default value, replace 9000 with the port you configured.
Rebuild the containers after any changes to the Dockerfile or Python source code — a plain restart will not pick up those changes:
docker compose build
docker compose up -d

Updating

Pull new versions and rotate RIPE API keys

Reverse proxy

Expose the updater securely behind Nginx or Caddy

Build docs developers (and LLMs) love