version: '2' services: redis: image: redis restart: always command: [redis-server, --appendonly, 'yes'] volumes: - redis:/data nginx: image: nginx:alpine container_name: nginx restart: always ports: - 80:80 - 443:443 volumes: - conf:/etc/nginx/conf.d - vhost:/etc/nginx/vhost.d - html:/usr/share/nginx/html - certs:/etc/nginx/certs logging: driver: none dockergen: image: poma/docker-gen container_name: dockergen restart: always command: -notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf volumes_from: - nginx volumes: - /var/run/docker.sock:/var/run/docker.sock:ro letsencrypt: image: jrcs/letsencrypt-nginx-proxy-companion container_name: letsencrypt restart: always environment: NGINX_DOCKER_GEN_CONTAINER: dockergen volumes_from: - nginx - dockergen # ---------------------- ETH ----------------------- # eth-server: profiles: [ 'eth' ] image: tornadocash/relayer:mining restart: always command: server # env_file: .env.eth environment: NET_ID: 1 REDIS_URL: redis://redis/0 nginx_proxy_read_timeout: 600 depends_on: [redis] eth-treeWatcher: profiles: [ 'eth' ] image: tornadocash/relayer:mining restart: always command: treeWatcher # env_file: .env.eth environment: NET_ID: 1 REDIS_URL: redis://redis/0 depends_on: [redis] eth-priceWatcher: profiles: [ 'eth' ] image: tornadocash/relayer:mining restart: always command: priceWatcher # env_file: .env.eth environment: NET_ID: 1 REDIS_URL: redis://redis/0 nginx_proxy_read_timeout: 600 depends_on: [redis] eth-treeWatcher: profiles: [ 'eth' ] image: tornadocash/relayer:mining restart: always command: treeWatcher # env_file: .env.eth environment: NET_ID: 1 REDIS_URL: redis://redis/0 depends_on: [redis] eth-healthWatcher: profiles: [ 'eth' ] image: tornadocash/relayer:mining restart: always command: healthWatcher # env_file: .env.eth environment: NET_ID: 1 REDIS_URL: redis://redis/0 depends_on: [redis] eth-worker1: profiles: [ 'eth' ] image: tornadocash/relayer:mining restart: always command: worker # env_file: .env.eth environment: NET_ID: 1 REDIS_URL: redis://redis/0 depends_on: [redis] # worker2: # image: tornadocash/relayer:mining # restart: always # command: worker # env_file: .env # environment: # PRIVATE_KEY: qwe # REDIS_URL: redis://redis/0 # # this container will proxy *.onion domain to the server container # # if you want to run *only* as .onion service, you don't need `nginx`, `letsencrypt`, `dockergen` containers # tor: # image: strm/tor # restart: always # depends_on: [server] # environment: # LISTEN_PORT: 80 # REDIRECT: server:8000 # # Generate a new key with # # docker run --rm --entrypoint shallot strm/tor-hiddenservice-nginx ^foo # PRIVATE_KEY: | # -----BEGIN RSA PRIVATE KEY----- # ... # -----END RSA PRIVATE KEY----- # # auto update docker containers when new image is pushed to docker hub (be careful with that) # watchtower: # image: v2tec/watchtower # restart: always # volumes: # - /var/run/docker.sock:/var/run/docker.sock # # this container will send Telegram notifications when other containers are stopped/restarted # # it's best to run this container on some other instance, otherwise it can't notify if the whole instance goes down # notifier: # image: poma/docker-telegram-notifier # restart: always # volumes: # - /var/run/docker.sock:/var/run/docker.sock:ro # environment: # # How to create bot: https://core.telegram.org/bots#3-how-do-i-create-a-bot # # How to get chat id: https://stackoverflow.com/questions/32423837/telegram-bot-how-to-get-a-group-chat-id/32572159#32572159 # TELEGRAM_NOTIFIER_BOT_TOKEN: ... # TELEGRAM_NOTIFIER_CHAT_ID: ... # # this container will send Telegram notifications if specified address doesn't have enough funds # monitor_mainnet: # image: peppersec/monitor_eth # restart: always # environment: # TELEGRAM_NOTIFIER_BOT_TOKEN: ... # TELEGRAM_NOTIFIER_CHAT_ID: ... # ADDRESS: '0x0000000000000000000000000000000000000000' # THRESHOLD: 0.5 # ETH # RPC_URL: https://mainnet.infura.io # BLOCK_EXPLORER: etherscan.io # -------------------------------------------------- # # ---------------------- BNB ----------------------- # bnb-server: profiles: [ 'bnb' ] image: tornadocash/relayer:mining restart: always command: server # env_file: .env.bnb environment: NET_ID: 56 REDIS_URL: redis://redis/1 nginx_proxy_read_timeout: 600 depends_on: [redis] bnb-treeWatcher: profiles: [ 'bnb' ] image: tornadocash/relayer:mining restart: always command: treeWatcher # env_file: .env.bnb environment: NET_ID: 56 REDIS_URL: redis://redis/1 depends_on: [redis] bnb-priceWatcher: profiles: [ 'bnb' ] image: tornadocash/relayer:mining restart: always command: priceWatcher # env_file: .env.bnb environment: NET_ID: 56 REDIS_URL: redis://redis/1 depends_on: [redis] bnb-healthWatcher: profiles: [ 'bnb' ] image: tornadocash/relayer:mining restart: always command: healthWatcher # env_file: .env.bnb environment: NET_ID: 56 REDIS_URL: redis://redis/1 depends_on: [redis] bnb-worker1: profiles: [ 'bnb' ] image: tornadocash/relayer:mining restart: always command: worker # env_file: .env.bnb environment: NET_ID: 56 REDIS_URL: redis://redis/1 depends_on: [redis] # -------------------------------------------------- # # ---------------------- MATIC --------------------- # matic-server: profiles: [ 'matic' ] image: tornadocash/relayer:mining restart: always command: server # env_file: .env.matic environment: NET_ID: 137 REDIS_URL: redis://redis/2 nginx_proxy_read_timeout: 600 depends_on: [redis] matic-treeWatcher: profiles: [ 'matic' ] image: tornadocash/relayer:mining restart: always command: treeWatcher # env_file: .env.matic environment: NET_ID: 137 REDIS_URL: redis://redis/2 depends_on: [redis] matic-priceWatcher: profiles: [ 'matic' ] image: tornadocash/relayer:mining restart: always command: priceWatcher # env_file: .env.matic environment: NET_ID: 137 REDIS_URL: redis://redis/2 depends_on: [redis] matic-healthWatcher: profiles: [ 'matic' ] image: tornadocash/relayer:mining restart: always command: healthWatcher # env_file: .env.matic environment: NET_ID: 137 REDIS_URL: redis://redis/2 depends_on: [redis] matic-worker1: profiles: [ 'matic' ] image: tornadocash/relayer:mining restart: always command: worker # env_file: .env.matic environment: NET_ID: 137 REDIS_URL: redis://redis/2 depends_on: [redis] # -------------------------------------------------- # # ---------------------- XDAI ---------------------- # xdai-server: profiles: [ 'xdai' ] image: tornadocash/relayer:mining restart: always command: server # env_file: .env.xdai environment: NET_ID: 100 REDIS_URL: redis://redis/3 nginx_proxy_read_timeout: 600 depends_on: [redis] xdai-treeWatcher: profiles: [ 'xdai' ] image: tornadocash/relayer:mining restart: always command: treeWatcher # env_file: .env.xdai environment: NET_ID: 100 REDIS_URL: redis://redis/3 depends_on: [redis] xdai-priceWatcher: profiles: [ 'xdai' ] image: tornadocash/relayer:mining restart: always command: priceWatcher # env_file: .env.xdai environment: NET_ID: 100 REDIS_URL: redis://redis/3 depends_on: [redis] xdai-healthWatcher: profiles: [ 'xdai' ] image: tornadocash/relayer:mining restart: always command: healthWatcher # env_file: .env.xdai environment: NET_ID: 100 REDIS_URL: redis://redis/3 depends_on: [redis] xdai-worker1: profiles: [ 'xdai' ] image: tornadocash/relayer:mining restart: always command: worker # env_file: .env.xdai environment: NET_ID: 100 REDIS_URL: redis://redis/3 depends_on: [redis] # -------------------------------------------------- # # ---------------------- AVAX ---------------------- # avax-server: profiles: [ 'avax' ] image: tornadocash/relayer:mining restart: always command: server # env_file: .env.avax environment: NET_ID: 43114 REDIS_URL: redis://redis/4 nginx_proxy_read_timeout: 600 depends_on: [redis] avax-treeWatcher: profiles: [ 'avax' ] image: tornadocash/relayer:mining restart: always command: treeWatcher # env_file: .env.avax environment: NET_ID: 43114 REDIS_URL: redis://redis/4 depends_on: [redis] avax-priceWatcher: profiles: [ 'avax' ] image: tornadocash/relayer:mining restart: always command: priceWatcher # env_file: .env.avax environment: NET_ID: 43114 REDIS_URL: redis://redis/4 depends_on: [redis] avax-healthWatcher: profiles: [ 'avax' ] image: tornadocash/relayer:mining restart: always command: healthWatcher # env_file: .env.avax environment: NET_ID: 43114 REDIS_URL: redis://redis/4 depends_on: [redis] avax-worker1: profiles: [ 'avax' ] image: tornadocash/relayer:mining restart: always command: worker # env_file: .env.avax environment: NET_ID: 43114 REDIS_URL: redis://redis/4 depends_on: [redis] # -------------------------------------------------- # # ---------------------- OP ------------------------ # op-server: profiles: [ 'op' ] image: tornadocash/relayer:mining restart: always command: server # env_file: .env.op environment: NET_ID: 10 REDIS_URL: redis://redis/5 nginx_proxy_read_timeout: 600 depends_on: [redis] op-treeWatcher: profiles: [ 'op' ] image: tornadocash/relayer:mining restart: always command: treeWatcher # env_file: .env.op environment: NET_ID: 10 REDIS_URL: redis://redis/5 depends_on: [redis] op-priceWatcher: profiles: [ 'op' ] image: tornadocash/relayer:mining restart: always command: priceWatcher # env_file: .env.op environment: NET_ID: 10 REDIS_URL: redis://redis/5 depends_on: [redis] op-healthWatcher: profiles: [ 'op' ] image: tornadocash/relayer:mining restart: always command: healthWatcher # env_file: .env.op environment: NET_ID: 10 REDIS_URL: redis://redis/5 depends_on: [redis] op-worker1: profiles: [ 'op' ] image: tornadocash/relayer:mining restart: always command: worker # env_file: .env.op environment: NET_ID: 10 REDIS_URL: redis://redis/5 depends_on: [redis] # -------------------------------------------------- # # ---------------------- ARB ----------------------- # arb-server: profiles: [ 'arb' ] image: tornadocash/relayer:mining restart: always command: server # env_file: .env.arb environment: NET_ID: 42161 REDIS_URL: redis://redis/6 nginx_proxy_read_timeout: 600 depends_on: [redis] arb-treeWatcher: profiles: [ 'arb' ] image: tornadocash/relayer:mining restart: always command: treeWatcher # env_file: .env.arb environment: NET_ID: 42161 REDIS_URL: redis://redis/6 depends_on: [redis] arb-priceWatcher: profiles: [ 'arb' ] image: tornadocash/relayer:mining restart: always command: priceWatcher # env_file: .env.arb environment: NET_ID: 42161 REDIS_URL: redis://redis/6 depends_on: [redis] arb-healthWatcher: profiles: [ 'arb' ] image: tornadocash/relayer:mining restart: always command: healthWatcher # env_file: .env.arb environment: NET_ID: 42161 REDIS_URL: redis://redis/6 depends_on: [redis] arb-worker1: profiles: [ 'arb' ] image: tornadocash/relayer:mining restart: always command: worker # env_file: .env.arb environment: NET_ID: 42161 REDIS_URL: redis://redis/6 depends_on: [redis] # -------------------------------------------------- # # ---------------------- GETH ---------------------- # geth-server: profiles: [ 'geth' ] image: tornadocash/relayer:mining restart: always command: server # env_file: .env.geth environment: NET_ID: 5 REDIS_URL: redis://redis/7 nginx_proxy_read_timeout: 600 depends_on: [redis] geth-treeWatcher: profiles: [ 'geth' ] image: tornadocash/relayer:mining restart: always command: treeWatcher # env_file: .env.geth environment: NET_ID: 5 REDIS_URL: redis://redis/7 depends_on: [redis] geth-priceWatcher: profiles: [ 'geth' ] image: tornadocash/relayer:mining restart: always command: priceWatcher # env_file: .env.geth environment: NET_ID: 5 REDIS_URL: redis://redis/7 depends_on: [redis] geth-healthWatcher: profiles: [ 'geth' ] image: tornadocash/relayer:mining restart: always command: healthWatcher # env_file: .env.geth environment: NET_ID: 5 REDIS_URL: redis://redis/7 depends_on: [redis] geth-worker1: profiles: [ 'geth' ] image: tornadocash/relayer:mining restart: always command: worker # env_file: .env.geth environment: NET_ID: 5 REDIS_URL: redis://redis/7 depends_on: [redis] # -------------------------------------------------- # volumes: conf: vhost: html: certs: redis: