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.

This guide walks you through deploying RIPE Updater, connecting it to your NetBox instance, setting up your first templates, and verifying that the system correctly processes a prefix webhook — all before touching your production RIPE database.
RIPE Updater defaults to RIPE_DB=TEST, so every write goes to the RIPE TEST database until you explicitly change that variable. Run through this guide in TEST mode first to validate your templates safely.
1

Deploy RIPE Updater

Copy the example environment file and edit it with your credentials:
cp .env.example .env
vi .env
The key variables to set before the first run are:
VariableDescription
NETBOX_URLURL of your NetBox instance, e.g. https://netbox.example.com
NETBOX_TOKENNetBox API token with read access to prefixes, aggregates, regions, and sites
RIPE_MNT_PASSWORDPassword for your RIPE maintainer object
DEFAULT_COUNTRYISO 3166-1 alpha-2 fallback country code, e.g. DE
UPDATE_TOKENOptional shared secret that NetBox sends in the Authorisation header
RIPE_DBSet to TEST (default) for initial testing, RIPE for production
Start the container, mounting your local templates/ directory:
docker run \
  -p 8000:80 \
  -v "/home/user/ripe-updater/templates:/opt/ripeupdater/templates:ro" \
  --env-file .env \
  interdotlink/ripe-updater
Confirm the service is running by calling the health endpoint: curl http://localhost:8000/health — it returns Ok when ready.
2

Configure NetBox

RIPE Updater relies on three custom fields and one webhook in NetBox. Create them in Customization → Custom Fields and Integrations → Webhooks.Custom field: lir
  • Name: lir, Label: LIR
  • Assigned model: ipam → aggregates
  • Type: Selection — add one choice per LIR you manage
  • Required: yes
Custom field: ripe_report
  • Name: ripe_report, Label: RIPE Report
  • Assigned model: ipam → prefixes
  • Type: Boolean, Default: false
  • Required: no
Custom field: ripe_template
  • Name: ripe_template, Label: RIPE Template
  • Assigned model: ipam → prefixes
  • Type: Selection — add one choice per template you create in step 3
  • Required: no
Webhook
  • Name: ripe-updater, Enabled: yes
  • Events: Create, Update, Delete
  • HTTP Method: POST
  • Payload URL: http(s)://your-ripe-updater-host/update
  • Content Type: application/json
  • Assigned model: ipam | prefix
  • Additional header (if UPDATE_TOKEN is set): Authorisation: Token YOURTOKEN
Your NetBox sites must have a country as a parent region. RIPE Updater uses the region hierarchy to determine the country attribute on the RIPE object. If no country can be resolved, it falls back to DEFAULT_COUNTRY.
3

Create templates

Templates are JSON files stored in the directory mounted at /opt/ripeupdater/templates (configured by TEMPLATES_DIR). You need two files to get started.lir_org.json — maps each LIR name to a RIPE organisation object:
cp templates/lir_org.example.json templates/lir_org.json
Edit the file so each LIR choice you defined in NetBox maps to its organisation handle:
{
  "templates": {
    "lir_org": {
      "de.examplelir1": "ORG-EIPB1-TEST"
    }
  }
}
Base template — defines the INETNUM/INET6NUM attributes. Use the provided example as a starting point:
cp templates/base_mycompany.example.json templates/base_mycompany.json
Include an empty org entry so RIPE Updater fills the organisation from lir_org.json automatically:
{"org": ""}
templates.json — maps template names (matching your ripe_template custom field choices) to base templates:
cp templates/templates.example.json templates/templates.json
Add an entry for each template:
{
  "templates": {
    "CLOUD-POOL": {
      "attributes": [
        {"descr": "MyCompany Cloud Pool"}
      ],
      "inherit": "base_mycompany.json"
    }
  }
}
4

Test with a prefix

With everything in place, trigger a test run against the RIPE TEST database:
  1. In NetBox, find a prefix you want to test with.
  2. Set ripe_report to true and choose a ripe_template value.
  3. Save the prefix — NetBox fires the webhook to /update.
  4. Check the RIPE Updater logs for a 204 response confirming the object was written.
  5. Verify the object in the RIPE TEST database using your prefix.
To verify the service is healthy at any time:
curl http://localhost:8000/health
Once your TEST runs succeed, set RIPE_DB=RIPE in your .env file and restart the container to go live.
Setting a prefix with both ripe_report=true on a parent and its child prefixes will fail — RIPE DB only allows one level of prefixes below your aggregates. Disable ripe_report on either the parent or the children before enabling it on the other.

Next steps

Docker deployment

Run with docker-compose and configure a production reverse proxy

Environment variables

Full reference for every configuration option

NetBox setup

Detailed guide to custom fields, regions, and webhook configuration

Templates

Build complex RIPE objects with base templates and inheritance

Build docs developers (and LLMs) love