Removes hardcoded 10.40.40.202 references so a fresh clone + .env-only
edit can stand the stack up on a new compute node.
* docker-compose.yml: rib-poller PG_DSN now uses ${HOST_IP:-...}.
* obmp-rib-poller/poller.py: default PG_DSN host falls back to
${HOST_IP} env (compose passes it; manual runs honour $HOST_IP too).
* cml/gobgp_peering_config.py: GOBGP_IP read from $HOST_IP or the
HOST_IP= line in repo-root .env, with a small _env_default helper.
* cml/proxmox_bmp_config.py: COLLECTOR_HOST resolved the same way.
For gobgp/gobgpd.conf and gobgp-evpn/gobgpd.conf -- jauderho/gobgp is
distroless (no shell), so we can't sed-substitute at container start.
Pattern instead:
* gobgpd.conf is now gobgpd.conf.tmpl with __HOST_IP__ placeholders
(committed). The rendered gobgpd.conf is gitignored.
* setup.sh renders the .tmpl(s) to .conf using $HOST_IP from .env.
* compose `command` stays the simple `gobgpd -f /config/gobgpd.conf`.
After cloning on a new host: cp .env.example .env -> edit HOST_IP ->
./setup.sh -> docker compose up -d. Verified locally by force-recreating
gobgp; all 6 sessions (4 cores + 2 Bromirski) re-established in <60s.
Known portability gaps still to address (separate work):
* Hardcoded lab-router inventories in cml/*.py and
obmp-rib-poller/poller.py.
* The /etc/cron.d/openbmp */5 -> */15 edit inside obmp-psql-app is
not persistent (regenerated by config_cron on every container start).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
OpenBMP docker files
Docker files for OpenBMP.
(Prerequisite) Platform Docker Install
Ignore this step if you already have a current docker install
Note
You should use the latest docker version, documented in this section.
Follow the instructions on https://docs.docker.com/get-docker/
Optionally add a non-root user to run docker as
usermod -aG docker ubuntu
# Logout and log back so the group takes affect.
Optionally configure /etc/default/docker (e.g. for proxy config)
export http_proxy="http://proxy:80/"
export https_proxy="http://proxy:80/"
export no_proxy="127.0.0.1,openbmp.org,/var/run/docker.sock"
Make sure you can run 'docker run hello-world' successfully.
OpenBMP Docker Files
Each docker file contains a readme file, see below:
Using Docker Compose to run everything
Quick start (recommended): copy
.env.exampleto.env, fill it in, and run./setup.sh— it creates the data directories, syncs Grafana provisioning, and generates Authelia secrets. Then:docker compose up -d # BMP collector core docker compose --profile test --profile auth up -d # full stackSee DOCS.md section 4 for details and the manual alternative below.
Install Docker Compose
You will need docker-compose. You can install that via Docker Compose instructions. Docker compose will run everything, including handling restarts of containers.
(1) Mount/Make persistent directories
Create expected directories. You can choose to mount these as well or update the compose file to change them.
Note
If you are using OSX/Mac, then you will need to update your docker preferences to allow
/var/openbmp
Make sure to create the OBMP_DATA_ROOT directory first.
export OBMP_DATA_ROOT=/var/openbmp
sudo mkdir -p $OBMP_DATA_ROOT
Create sub directories
mkdir -p ${OBMP_DATA_ROOT}/config
mkdir -p ${OBMP_DATA_ROOT}/kafka-data
mkdir -p ${OBMP_DATA_ROOT}/zk-data
mkdir -p ${OBMP_DATA_ROOT}/zk-log
mkdir -p ${OBMP_DATA_ROOT}/postgres/data
mkdir -p ${OBMP_DATA_ROOT}/postgres/ts
mkdir -p ${OBMP_DATA_ROOT}/grafana
mkdir -p ${OBMP_DATA_ROOT}/grafana/dashboards
sudo chmod -R 7777 $OBMP_DATA_ROOT
In order to init the DB tables, you must create the file
${OBMP_DATA_ROOT}/config/init_db. This should only be done once or whenever you want to completely wipe out the DB and start over.
Change OBMP_DATA_ROOT=<path> to where you created the directories above. The default is /var/openbmp
OBMP_DATA_ROOT=/var/openbmp docker-compose -p obmp up -d