Here is a simple docker compose file for running your own instance of the JoinMarket orderbook.
services:
jam-standalone:
image: ghcr.io/joinmarket-webui/jam-standalone:v0.4.0-clientserver-v0.9.11
container_name: joinmarket-orderbook
volumes:
- /data/joinmarket-orderbook/:/joinmarket/
entrypoint: ""
command: >
bash -c "service tor start &&
pip install matplotlib &&
obwatch/ob-watcher.py -p 8080 -H 0.0.0.0 --datadir=/joinmarket"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/orderbook.json"]
interval: 30s
timeout: 10s
retries: 3
start_period: 180s
deploy:
resources:
limits:
cpus: 3
memory: 2G
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.joinmarket-orderbook.rule=Host(`joinmarket.sgn.space`)"
- "traefik.http.routers.joinmarket-orderbook.entrypoints=websecure"
- "traefik.http.services.joinmarket-orderbook.loadbalancer.server.port=8080"
- "traefik.http.middlewares.joinmarket-cors.headers.accesscontrolalloworiginlist=*"
- "traefik.http.middlewares.joinmarket-cors.headers.accesscontrolallowmethods=GET,POST,OPTIONS"
- "traefik.http.middlewares.joinmarket-cors.headers.accesscontrolallowheaders=Content-Type,Authorization"
- "traefik.http.middlewares.joinmarket-cors.headers.accesscontrolmaxage=100"
- "traefik.http.middlewares.joinmarket-cors.headers.addvaryheader=true"
- "traefik.http.routers.joinmarket-orderbook.middlewares=joinmarket-cors@docker"
networks:
- bitcoind
networks:
bitcoind:
name: bitcoind
external: true
With the configuration from https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/e8113d8c87db30a7594af7c58d5289a79c13d740/src/jmclient/configure.py#L98 adapted for the orderbook functionality https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/orderbook.md
Here is a running instance: https://joinmarket.sgn.space/