mirror of
https://github.com/joinmarket-webui/jam.git
synced 2026-08-13 12:33:26 +02:00
381 lines
12 KiB
YAML
381 lines
12 KiB
YAML
services:
|
|
joinmarket:
|
|
container_name: jm_regtest_joinmarket
|
|
extends:
|
|
file: docker-compose-common.yml
|
|
service: joinmarket_ng_native
|
|
environment:
|
|
READY_FILE: /root/.regtest-initializer/btc_fully_synched
|
|
BITCOIN__RPC_USER: joinmarket
|
|
BITCOIN__RPC_PASSWORD: joinmarket
|
|
ports:
|
|
- '28183:28183' # jmwalletd api (exposed for "init setup" routine)
|
|
volumes:
|
|
- 'joinmarket_datadir:/root/.joinmarket-ng'
|
|
- 'initializer_datadir:/root/.regtest-initializer'
|
|
- 'tor_datadir:/var/lib/tor:ro'
|
|
depends_on:
|
|
bitcoind:
|
|
condition: service_healthy
|
|
bitcoind_regtest_initializer:
|
|
condition: service_started
|
|
joinmarket_ng_orderbook_watcher:
|
|
condition: service_healthy
|
|
tor:
|
|
condition: service_healthy
|
|
|
|
joinmarket2:
|
|
container_name: jm_regtest_joinmarket2
|
|
extends:
|
|
file: docker-compose-common.yml
|
|
service: joinmarket_jam_standalone_ng
|
|
environment:
|
|
BITCOIN__RPC_USER: joinmarket2
|
|
BITCOIN__RPC_PASSWORD: joinmarket2
|
|
TAKER__MINIMUM_MAKERS: 2 # necessary to do coinjoins with this regtest setup
|
|
TAKER__MAKER_TIMEOUT_SEC: 30 # easier testing of maker timeouts on regtest
|
|
ports:
|
|
- '29080:80'
|
|
- '29183:28183' # jmwalletd api (exposed for "init setup" routine)
|
|
volumes:
|
|
- 'joinmarket2_datadir:/root/.joinmarket-ng'
|
|
depends_on:
|
|
bitcoind:
|
|
condition: service_healthy
|
|
bitcoind_regtest_initializer:
|
|
condition: service_started
|
|
|
|
joinmarket3:
|
|
container_name: jm_regtest_joinmarket3
|
|
extends:
|
|
file: docker-compose-common.yml
|
|
service: joinmarket_native
|
|
environment:
|
|
READY_FILE: /root/.regtest-initializer/btc_fully_synched
|
|
jm_rpc_wallet_file: jm_tertiary
|
|
jm_rpc_user: joinmarket3
|
|
jm_rpc_password: joinmarket3
|
|
CREATE_WALLET_PARAMS_DESCRIPTORS: 'false'
|
|
ports:
|
|
- '30601:62601' # obwatch
|
|
- '30183:28183' # jmwalletd api (exposed for "init setup" routine)
|
|
- '30283:28283' # jmwalletd websocket
|
|
volumes:
|
|
- 'joinmarket3_datadir:/root/.joinmarket'
|
|
- 'initializer_datadir:/root/.regtest-initializer'
|
|
depends_on:
|
|
bitcoind:
|
|
condition: service_healthy
|
|
bitcoind_regtest_initializer:
|
|
condition: service_started
|
|
irc:
|
|
condition: service_started
|
|
tor:
|
|
condition: service_healthy
|
|
|
|
joinmarket4:
|
|
container_name: jm_regtest_joinmarket4
|
|
extends:
|
|
file: docker-compose-common.yml
|
|
service: joinmarket_jam_standalone
|
|
environment:
|
|
APP_USER: joinmarket
|
|
APP_PASSWORD: joinmarket
|
|
jm_rpc_wallet_file: jm_quaternary
|
|
jm_rpc_cookie_file: /root/.bitcoin_data/regtest/.cookie
|
|
ports:
|
|
- '31080:80'
|
|
- '31183:28183' # jmwalletd api (exposed for "init setup" routine)
|
|
volumes:
|
|
- 'joinmarket4_datadir:/root/.joinmarket'
|
|
- 'bitcoin_datadir:/root/.bitcoin_data' # mount bitcoind dir to access .cookie file
|
|
- 'tor_datadir:/var/lib/tor:ro'
|
|
depends_on:
|
|
bitcoind:
|
|
condition: service_healthy
|
|
bitcoind_regtest_initializer:
|
|
condition: service_started
|
|
irc:
|
|
condition: service_started
|
|
tor:
|
|
condition: service_healthy
|
|
|
|
joinmarket5:
|
|
container_name: jm_regtest_joinmarket5
|
|
extends:
|
|
file: docker-compose-common.yml
|
|
service: joinmarket_ng_peer
|
|
ports:
|
|
- '32183:28183' # jmwalletd api (exposed for "init setup" routine)
|
|
volumes:
|
|
- 'joinmarket5_datadir:/root/.joinmarket-ng'
|
|
- 'tor_datadir:/var/lib/tor:ro'
|
|
depends_on:
|
|
bitcoind:
|
|
condition: service_healthy
|
|
bitcoind_regtest_initializer:
|
|
condition: service_started
|
|
joinmarket_ng_orderbook_watcher:
|
|
condition: service_healthy
|
|
tor:
|
|
condition: service_healthy
|
|
|
|
joinmarket_clientserver_directory_node:
|
|
container_name: jm_regtest_joinmarket_clientserver_directory_node
|
|
build:
|
|
context: ./dockerfile-deps/joinmarket/directory_node
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
environment:
|
|
jm_hidden_service_dir: \/root\/.joinmarket\/hidden_service_dir
|
|
jm_directory_nodes: ${JM_REF_DIRECTORY_NODES:?You must set the reference directory node address in generated env file}
|
|
jm_blockchain_source: regtest
|
|
jm_network: testnet
|
|
volumes:
|
|
- 'joinmarket_clientserver_directory_node_datadir:/root/.joinmarket'
|
|
- './out/hidden_service_dir:/root/.joinmarket/hidden_service_dir:z'
|
|
healthcheck:
|
|
test: ['CMD', 'supervisorctl', 'status']
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 20
|
|
start_period: 60s
|
|
start_interval: 3s
|
|
depends_on:
|
|
tor:
|
|
condition: service_healthy
|
|
|
|
joinmarket_ng_orderbook_watcher:
|
|
container_name: jm_regtest_joinmarket_ng_orderbook_watcher
|
|
image: ghcr.io/joinmarket-ng/joinmarket-ng/orderbook-watcher:main
|
|
restart: unless-stopped
|
|
environment:
|
|
NETWORK_CONFIG__NETWORK: testnet
|
|
NETWORK_CONFIG__BITCOIN_NETWORK: regtest
|
|
DIRECTORY_NODES: ${JM_ALL_DIRECTORY_NODES:?You must set the directory node addresses in generated env file}
|
|
TOR__SOCKS_HOST: tor
|
|
TOR__SOCKS_PORT: 9050
|
|
LOGGING__LEVEL: DEBUG
|
|
ORDERBOOK_WATCHER__HTTP_HOST: 0.0.0.0
|
|
ORDERBOOK_WATCHER__HTTP_PORT: 8000
|
|
expose:
|
|
- 8000
|
|
ports:
|
|
- '31800:8000'
|
|
healthcheck:
|
|
test: ['CMD', 'python', '-c', "import socket; s = socket.create_connection(('127.0.0.1', 8000), 5); s.close()"]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 20
|
|
start_period: 60s
|
|
start_interval: 3s
|
|
depends_on:
|
|
joinmarket_ng_directory_node:
|
|
condition: service_healthy
|
|
tor:
|
|
condition: service_healthy
|
|
|
|
joinmarket_ng_directory_node:
|
|
container_name: jm_regtest_joinmarket_ng_directory_node
|
|
image: ghcr.io/joinmarket-ng/joinmarket-ng/directory-server:main
|
|
restart: unless-stopped
|
|
environment:
|
|
NETWORK_CONFIG__NETWORK: testnet
|
|
DIRECTORY_SERVER__HOST: 0.0.0.0
|
|
DIRECTORY_SERVER__PORT: 5223
|
|
LOGGING__LEVEL: DEBUG
|
|
command: ['python', '-m', 'directory_server.main']
|
|
healthcheck:
|
|
test: ['CMD', 'python', '-c', "import socket; s = socket.socket(); s.connect(('127.0.0.1', 5223)); s.close()"]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 20
|
|
start_period: 60s
|
|
start_interval: 3s
|
|
networks:
|
|
default:
|
|
ipv4_address: 172.30.0.21
|
|
|
|
tor:
|
|
depends_on:
|
|
tor_init:
|
|
condition: service_completed_successfully
|
|
container_name: jm_regtest_tor
|
|
image: ghcr.io/m0wer/docker-tor:latest
|
|
restart: unless-stopped
|
|
volumes:
|
|
- './tor/conf:/etc/tor:ro'
|
|
- 'tor_datadir:/var/lib/tor'
|
|
healthcheck:
|
|
test:
|
|
[
|
|
'CMD-SHELL',
|
|
'test -f /var/lib/tor/ng-directory/hostname && test $(wc -c < /var/lib/tor/control_auth_cookie 2>/dev/null || echo 0) -eq 32',
|
|
]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 60
|
|
start_period: 120s
|
|
|
|
tor_init:
|
|
container_name: jm_regtest_tor_init
|
|
image: busybox:latest
|
|
restart: 'no'
|
|
command:
|
|
[
|
|
'sh',
|
|
'-c',
|
|
'mkdir -p /var/lib/tor/ng-directory && cp -f /source/ng/* /var/lib/tor/ng-directory/ && chown -R 1000:1000 /var/lib/tor && chmod 700 /var/lib/tor/ng-directory && chmod 600 /var/lib/tor/ng-directory/*',
|
|
]
|
|
volumes:
|
|
- 'tor_datadir:/var/lib/tor'
|
|
- './out/ng_directory_hidden_service:/source/ng:ro,z'
|
|
|
|
irc:
|
|
container_name: jm_regtest_irc
|
|
restart: unless-stopped
|
|
image: ghcr.io/ergochat/ergo:v2.15.0@sha256:135cd42c6300d957e0045ee53fbe886e43e1c04bb621391ed7b8940c174d68f3
|
|
expose:
|
|
- 6667
|
|
volumes:
|
|
- 'irc_datadir:/ircd'
|
|
|
|
bitcoind:
|
|
container_name: jm_regtest_bitcoind
|
|
restart: unless-stopped
|
|
image: polarlightning/bitcoind:29.0@sha256:4521294ac25fdbf1492a8cc5ea987463a5f244b82546d29bbe8451db39f36f3a
|
|
command:
|
|
# rpcauth (user=regtest; password=regtest)
|
|
# rpcauth (user=joinmarket; password=joinmarket)
|
|
# rpcauth (user=joinmarket2; password=joinmarket2)
|
|
# rpcauth (user=joinmarket3; password=joinmarket3)
|
|
-rpcauth=regtest:20b58677979ad9d3cf4b78b1d6e85e44$$2ec3e1e1c00c7c58d7aff1d4bf96e4a984ea1af5d676d862fd0faa857a1d4d7c
|
|
-rpcauth=joinmarket:260b4c5b1fbd09d75a4aabf90226282f$$76e170af088d43a588992cdd5e7bae2242b03c33aa672cccfd1fb75f9281299e
|
|
-rpcauth=joinmarket2:521bf9f4468529d49c0a41f9c9f8fdbf$$63ae94a73d2aa45e7ee756945d9b1e469f9873ce026b815d676a748f777e0b8d
|
|
-rpcauth=joinmarket3:85d4beaa74540c3b08f4fef50d74a59e$$3033c779ea4bfd02a1f3403bc4d012f3e6d19b355f74c5e8de1d3439979d5e4b
|
|
-datadir=/home/bitcoin/data
|
|
-walletdir=/home/bitcoin/walletdata
|
|
-regtest=1
|
|
-server=1
|
|
-port=39388
|
|
-rpcport=43782
|
|
-rpcbind=0.0.0.0
|
|
-rpcallowip=0.0.0.0/0
|
|
-whitelist=0.0.0.0/0
|
|
-maxmempool=500
|
|
-debug=rpc
|
|
-logips=0
|
|
-networkactive=1
|
|
-dnsseed=0
|
|
-uacomment=jmdevbitcoindregtest
|
|
-printpriority=1
|
|
-logtimemicros=1
|
|
-zmqpubrawblock=tcp://0.0.0.0:28332
|
|
-zmqpubrawtx=tcp://0.0.0.0:28333
|
|
-zmqpubhashblock=tcp://0.0.0.0:28334
|
|
-dns=0
|
|
-listenonion=0
|
|
-deprecatedrpc=create_bdb
|
|
expose:
|
|
- 39388 # P2P
|
|
- 43782 # RPC
|
|
- 28332 # ZMQ
|
|
- 28333 # ZMQ
|
|
- 28334 # ZMQ
|
|
ports:
|
|
- '17782:43782'
|
|
volumes:
|
|
- 'bitcoin_datadir:/home/bitcoin/data'
|
|
- 'bitcoin_wallet_datadir:/home/bitcoin/walletdata'
|
|
healthcheck:
|
|
test:
|
|
[
|
|
'CMD',
|
|
'/entrypoint.sh',
|
|
'bitcoin-cli',
|
|
'-chain=regtest',
|
|
'-rpcport=43782',
|
|
'-datadir=/home/bitcoin/data',
|
|
'-getinfo',
|
|
]
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 20
|
|
start_period: 60s
|
|
start_interval: 3s
|
|
|
|
bitcoind_regtest_initializer:
|
|
container_name: jm_regtest_bitcoind_initializer
|
|
build:
|
|
context: ./dockerfile-deps/bitcoin/regtest-initializer
|
|
dockerfile: Dockerfile
|
|
restart: on-failure
|
|
environment:
|
|
READY_FILE: /root/.regtest-initializer/btc_fully_synched
|
|
RPC_HOST: bitcoind
|
|
RPC_PORT: 43782
|
|
RPC_USER: regtest
|
|
RPC_PASSWORD: regtest
|
|
volumes:
|
|
- 'initializer_datadir:/root/.regtest-initializer'
|
|
depends_on:
|
|
bitcoind:
|
|
condition: service_healthy
|
|
|
|
nginx:
|
|
container_name: jm_regtest_nginx_test_basepath
|
|
image: nginx:1.27.4-alpine3.21@sha256:4ff102c5d78d254a6f0da062b3cf39eaf07f01eec0927fd21e219d0af8bc0591
|
|
volumes:
|
|
- ./dockerfile-deps/nginx:/etc/nginx/templates
|
|
ports:
|
|
- '8000:80'
|
|
extra_hosts:
|
|
- 'host.docker.internal:host-gateway'
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'wget --output-document /dev/null http://127.0.0.1:80/health || exit 1']
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 20
|
|
start_period: 60s
|
|
start_interval: 3s
|
|
|
|
explorer:
|
|
container_name: jm_regtest_explorer
|
|
restart: unless-stopped
|
|
image: getumbrel/btc-rpc-explorer:v3.4.0@sha256:e85a1fe80919d308b1f80de2dc7174e7b61ec79384d695304fbf259b67b53594
|
|
environment:
|
|
BTCEXP_HOST: 0.0.0.0
|
|
BTCEXP_PORT: 3002
|
|
BTCEXP_BITCOIND_HOST: bitcoind
|
|
BTCEXP_BITCOIND_PORT: 43782
|
|
BTCEXP_BITCOIND_USER: regtest
|
|
BTCEXP_BITCOIND_PASS: regtest
|
|
BTCEXP_BASIC_AUTH_PASSWORD: joinmarket
|
|
BTCEXP_PRIVACY_MODE: 'true'
|
|
BTCEXP_NO_RATES: 'true'
|
|
BTCEXP_RPC_ALLOWALL: 'true'
|
|
ports:
|
|
- '3002:3002'
|
|
depends_on:
|
|
bitcoind:
|
|
condition: service_healthy
|
|
|
|
volumes:
|
|
bitcoin_datadir:
|
|
bitcoin_wallet_datadir:
|
|
initializer_datadir:
|
|
joinmarket_datadir:
|
|
joinmarket2_datadir:
|
|
joinmarket3_datadir:
|
|
joinmarket4_datadir:
|
|
joinmarket5_datadir:
|
|
joinmarket_clientserver_directory_node_datadir:
|
|
tor_datadir:
|
|
irc_datadir:
|
|
|
|
networks:
|
|
default:
|
|
name: regtest_default
|
|
ipam:
|
|
config:
|
|
- subnet: 172.30.0.0/24
|