obmp-docker/README.md
Sam da975d7375 docs: audit fixes -- retire stale claims, add navigation, correct init_db story
From a two-agent audit (docs accuracy + greenfield deploy path):

- init_db docs were describing upstream behavior: this repo's psql-app
  auto-creates the schema on first run and drops config/do_not_init_db to
  skip later (psql-app/scripts/run:74). README/DOCS/backup-restore now
  describe the marker semantics; the restore flow creates the marker
  BEFORE first start instead of 'not creating init_db'
- DOCS.md contained heavy retired-lab drift: banner declares it a legacy
  walkthrough with illustrative values; fixed its self-contradictions --
  external port 1790, folder OBMP-Reference, datasource 'PostgreSQL',
  OpenConfig gNMI paths (matching telegraf.conf), EXABGP_PEERS,
  TRAFFIC_GEN_PORT
- deploy.sh --help now shows the current scope names (old ones remain
  accepted aliases)
- navigation: new docs/README.md index with operator and network-engineer
  tracks (links the previously orphaned backup-restore, security-hardening,
  ROADMAP, DB_SCHEMA); README gains a Start-here router
- intra-docs prose paths no longer carry the docs/ prefix (they resolve
  from within docs/); RR-CLIENTS -> RR-CLIENT matches the blueprint;
  ROADMAP A6 marked done
- scripts/deploy-lib.sh added: shared log/ask/confirm/get_env/set_env
  helpers for the deploy tooling consolidation (wiring lands next)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 17:05:47 -07:00

126 lines
4.7 KiB
Markdown

# OpenBMP docker files
Docker files for OpenBMP.
> **Start here:**
> - **Deploying the stack?** Jump to [Greenfield deploy](#greenfield-deploy-recommended-deploysh)
> below, then see the [docs index](docs/README.md) for deployment types,
> portability findings, sizing, and backup.
> - **Configuring routers to feed it?** Go straight to
> [docs/router-integration.md](docs/router-integration.md) and the
> copy-paste fragments in [router-blueprints/](router-blueprints/).
## (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:
* [Collector](collector/README.md)
* [PostgreSQL](postgres/README.md)
* [PSQL Consumer](psql-app/README.md)
## Greenfield deploy (recommended): deploy.sh
Deploying onto a new host? Use `deploy.sh` — it reconciles the host-specific
`.env` values (HOST_IP, router-facing IP/port, auth mode) *before* running
setup.sh, guards against the known portability traps
([docs/PORTABILITY-FINDINGS.md](docs/PORTABILITY-FINDINGS.md)), and brings the
stack up in stages:
```
git clone <repo-url> && cd obmp-docker
git checkout <branch> # pin the deploy: note the branch AND commit
git log -1 --oneline # record what you deployed
./deploy.sh # interactive; or --wsl/--prod --scope ... --yes
```
A greenfield deploy is only reproducible if the checkout is pinned — "clone
and run" silently depends on whatever branch was checked out. Record the
branch + commit with the deployment.
Deployment types (`--scope full-stack|remote|central-store`) are described in
[docs/DEPLOYMENT-TYPES.md](docs/DEPLOYMENT-TYPES.md). Router-side BMP config:
[docs/router-bmp-config.md](docs/router-bmp-config.md); multi-path integration
(BGP-LS, gNMI, NETCONF, RR overlay): [docs/router-integration.md](docs/router-integration.md),
with copy-paste IOS-XR fragments under [router-blueprints/iosxr/](router-blueprints/iosxr/).
## Using Docker Compose to run everything
> **Quick start:** copy `.env.example` to `.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 stack
> ```
> See [docs/DOCS.md](docs/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](https://docs.docker.com/compose/install/)
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
```
> **WARNING:** on a host with an *existing* Postgres data tree, a recursive
> chmod makes `psql_server.key` group/world-accessible and Postgres will
> refuse to start. Skip `postgres/` (setup.sh does this for you — see
> [docs/PORTABILITY-FINDINGS.md](docs/PORTABILITY-FINDINGS.md) finding 10).
> DB tables are created **automatically** by psql-app on its first run (it
> drops a `config/do_not_init_db` marker afterward so restarts skip the
> migration). No `init_db` trigger file is needed — that was upstream
> behavior this repo's psql-app replaces.
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
```