diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c799781 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules + +.env +.env* \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 7c8c607..5b87b25 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,459 +1,458 @@ -version: '2' +version: "2" services: + redis: + image: redis + restart: always + command: [redis-server, --appendonly, "yes"] + volumes: + - redis:/data - 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 - 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 - 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 - letsencrypt: - image: jrcs/letsencrypt-nginx-proxy-companion - container_name: letsencrypt - restart: always - environment: - NGINX_DOCKER_GEN_CONTAINER: dockergen - volumes_from: - - nginx - - dockergen + # ---------------------- ETH Mainnet ----------------------- # - # ---------------------- ETH Mainnet ----------------------- # + eth-server: + build: . + image: tornadocash/relayer:mainnet-v4 + profiles: ["eth"] + 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-server: - build: . - image: tornadorelayer:mainnet - profiles: [ 'eth' ] - 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: + image: tornadocash/relayer:mainnet-v4 + profiles: ["eth"] + restart: always + command: treeWatcher + env_file: .env.eth + environment: + NET_ID: 1 + REDIS_URL: redis://redis/0 + depends_on: [redis, eth-server] - eth-treeWatcher: - image: tornadorelayer:mainnet - profiles: [ 'eth' ] - restart: always - command: treeWatcher - env_file: .env.eth - environment: - NET_ID: 1 - REDIS_URL: redis://redis/0 - depends_on: [ redis, eth-server ] + eth-priceWatcher: + image: tornadocash/relayer:mainnet-v4 + profiles: ["eth"] + restart: always + command: priceWatcher + env_file: .env.eth + environment: + NET_ID: 1 + REDIS_URL: redis://redis/0 + depends_on: [redis, eth-server] - eth-priceWatcher: - image: tornadorelayer:mainnet - profiles: [ 'eth' ] - restart: always - command: priceWatcher - env_file: .env.eth - environment: - NET_ID: 1 - REDIS_URL: redis://redis/0 - depends_on: [ redis, eth-server ] + eth-healthWatcher: + image: tornadocash/relayer:mainnet-v4 + profiles: ["eth"] + restart: always + command: healthWatcher + env_file: .env.eth + environment: + NET_ID: 1 + REDIS_URL: redis://redis/0 + depends_on: [redis, eth-server] - eth-healthWatcher: - image: tornadorelayer:mainnet - profiles: [ 'eth' ] - restart: always - command: healthWatcher - env_file: .env.eth - environment: - NET_ID: 1 - REDIS_URL: redis://redis/0 - depends_on: [ redis, eth-server ] + eth-worker1: + image: tornadocash/relayer:mainnet-v4 + profiles: ["eth"] + restart: always + command: worker + env_file: .env.eth + environment: + NET_ID: 1 + REDIS_URL: redis://redis/0 + depends_on: [redis, eth-server] - eth-worker1: - image: tornadorelayer:mainnet - profiles: [ 'eth' ] - restart: always - command: worker - env_file: .env.eth - environment: - NET_ID: 1 - REDIS_URL: redis://redis/0 - depends_on: [ redis, eth-server ] + # # This is additional worker for ethereum mainnet + # # So you can process transactions from multiple addresses, but before it you need to set up those addresses as workers + # eth-worker2: + # image: tornadorelayer:mainnet + # profiles: [ 'eth' ] + # restart: always + # command: worker + # env_file: .env2.eth + # environment: + # REDIS_URL: redis://redis/0 - # # This is additional worker for ethereum mainnet - # # So you can process transactions from multiple addresses, but before it you need to set up those addresses as workers - # eth-worker2: - # image: tornadorelayer:mainnet - # profiles: [ 'eth' ] - # restart: always - # command: worker - # env_file: .env2.eth - # environment: - # 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----- - # # 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 - # # 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 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 - # # 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 + # -------------------------------------------------- # - # -------------------------------------------------- # + # ---------------------- BSC (Binance Smart Chain) ----------------------- # - # ---------------------- BSC (Binance Smart Chain) ----------------------- # + bsc-server: + image: tornadocash/relayer:sidechain-beta + profiles: ["bsc"] + restart: always + command: server + env_file: .env.bsc + environment: + NET_ID: 56 + REDIS_URL: redis://redis/1 + nginx_proxy_read_timeout: 600 + depends_on: [redis] - bsc-server: - image: tornadorelayer:sidechain - profiles: [ 'bsc' ] - restart: always - command: server - env_file: .env.bsc - environment: - NET_ID: 56 - REDIS_URL: redis://redis/1 - nginx_proxy_read_timeout: 600 - depends_on: [ redis ] + bsc-healthWatcher: + image: tornadocash/relayer:sidechain-beta + profiles: ["bsc"] + restart: always + command: healthWatcher + env_file: .env.bsc + environment: + NET_ID: 56 + REDIS_URL: redis://redis/1 + depends_on: [redis, bsc-server] - bsc-healthWatcher: - image: tornadorelayer:sidechain - profiles: [ 'bsc' ] - restart: always - command: healthWatcher - env_file: .env.bsc - environment: - NET_ID: 56 - REDIS_URL: redis://redis/1 - depends_on: [ redis, bsc-server ] + bsc-worker1: + image: tornadocash/relayer:sidechain-beta + profiles: ["bsc"] + restart: always + command: worker + env_file: .env.bsc + environment: + NET_ID: 56 + REDIS_URL: redis://redis/1 + depends_on: [redis, bsc-server] - bsc-worker1: - image: tornadorelayer:sidechain - profiles: [ 'bsc' ] - restart: always - command: worker - env_file: .env.bsc - environment: - NET_ID: 56 - REDIS_URL: redis://redis/1 - depends_on: [ redis, bsc-server ] + # -------------------------------------------------- # - # -------------------------------------------------- # + # ---------------------- Polygon (MATIC) --------------------- # - # ---------------------- Polygon (MATIC) --------------------- # + polygon-server: + image: tornadocash/relayer:sidechain-beta + profiles: ["polygon"] + restart: always + command: server + env_file: .env.polygon + environment: + NET_ID: 137 + REDIS_URL: redis://redis/2 + nginx_proxy_read_timeout: 600 + depends_on: [redis] - polygon-server: - image: tornadorelayer:sidechain - profiles: [ 'polygon' ] - restart: always - command: server - env_file: .env.polygon - environment: - NET_ID: 137 - REDIS_URL: redis://redis/2 - nginx_proxy_read_timeout: 600 - depends_on: [ redis ] + polygon-healthWatcher: + image: tornadocash/relayer:sidechain-beta + profiles: ["polygon"] + restart: always + command: healthWatcher + env_file: .env.polygon + environment: + NET_ID: 137 + REDIS_URL: redis://redis/2 + depends_on: [redis, polygon-server] - polygon-healthWatcher: - image: tornadorelayer:sidechain - profiles: [ 'polygon' ] - restart: always - command: healthWatcher - env_file: .env.polygon - environment: - NET_ID: 137 - REDIS_URL: redis://redis/2 - depends_on: [ redis, polygon-server ] + polygon-worker1: + image: tornadocash/relayer:sidechain-beta + profiles: ["polygon"] + restart: always + command: worker + env_file: .env.polygon + environment: + NET_ID: 137 + REDIS_URL: redis://redis/2 + depends_on: [redis, polygon-server] - polygon-worker1: - image: tornadorelayer:sidechain - profiles: [ 'polygon' ] - restart: always - command: worker - env_file: .env.polygon - environment: - NET_ID: 137 - REDIS_URL: redis://redis/2 - depends_on: [ redis, polygon-server ] + # -------------------------------------------------- # - # -------------------------------------------------- # + # ---------------------- Gnosis (XDAI) ---------------------- # - # ---------------------- Gnosis (XDAI) ---------------------- # + gnosis-server: + image: tornadocash/relayer:sidechain-beta + profiles: ["gnosis"] + restart: always + command: server + env_file: .env.gnosis + environment: + NET_ID: 100 + REDIS_URL: redis://redis/3 + nginx_proxy_read_timeout: 600 + depends_on: [redis] - gnosis-server: - image: tornadorelayer:sidechain - profiles: [ 'gnosis' ] - restart: always - command: server - env_file: .env.gnosis - environment: - NET_ID: 100 - REDIS_URL: redis://redis/3 - nginx_proxy_read_timeout: 600 - depends_on: [ redis ] + gnosis-healthWatcher: + image: tornadocash/relayer:sidechain-beta + profiles: ["gnosis"] + restart: always + command: healthWatcher + env_file: .env.gnosis + environment: + NET_ID: 100 + REDIS_URL: redis://redis/3 + depends_on: [redis, gnosis-server] - gnosis-healthWatcher: - image: tornadorelayer:sidechain - profiles: [ 'gnosis' ] - restart: always - command: healthWatcher - env_file: .env.gnosis - environment: - NET_ID: 100 - REDIS_URL: redis://redis/3 - depends_on: [ redis, gnosis-server ] + gnosis-worker1: + image: tornadocash/relayer:sidechain-beta + profiles: ["gnosis"] + restart: always + command: worker + env_file: .env.gnosis + environment: + NET_ID: 100 + REDIS_URL: redis://redis/3 + depends_on: [redis, gnosis-server] - gnosis-worker1: - image: tornadorelayer:sidechain - profiles: [ 'gnosis' ] - restart: always - command: worker - env_file: .env.gnosis - environment: - NET_ID: 100 - REDIS_URL: redis://redis/3 - depends_on: [ redis, gnosis-server ] + # -------------------------------------------------- # - # -------------------------------------------------- # + # ---------------------- AVAX ---------------------- # - # ---------------------- AVAX ---------------------- # + avax-server: + image: tornadocash/relayer:sidechain-beta + profiles: ["avax"] + 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-server: - image: tornadorelayer:sidechain - profiles: [ 'avax' ] - 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-healthWatcher: + image: tornadocash/relayer:sidechain-beta + profiles: ["avax"] + restart: always + command: healthWatcher + env_file: .env.avax + environment: + NET_ID: 43114 + REDIS_URL: redis://redis/4 + depends_on: [redis, avax-server] - avax-healthWatcher: - image: tornadorelayer:sidechain - profiles: [ 'avax' ] - restart: always - command: healthWatcher - env_file: .env.avax - environment: - NET_ID: 43114 - REDIS_URL: redis://redis/4 - depends_on: [ redis, avax-server ] + avax-worker1: + image: tornadocash/relayer:sidechain-beta + profiles: ["avax"] + restart: always + command: worker + env_file: .env.avax + environment: + NET_ID: 43114 + REDIS_URL: redis://redis/4 + depends_on: [redis, avax-server] - avax-worker1: - image: tornadorelayer:sidechain - profiles: [ 'avax' ] - restart: always - command: worker - env_file: .env.avax - environment: - NET_ID: 43114 - REDIS_URL: redis://redis/4 - depends_on: [ redis, avax-server ] + # -------------------------------------------------- # - # -------------------------------------------------- # + # ---------------------- OP ------------------------ # - # ---------------------- OP ------------------------ # + op-server: + image: tornadocash/relayer:sidechain-beta + profiles: ["op"] + 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-server: - image: tornadorelayer:sidechain - profiles: [ 'op' ] - 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-healthWatcher: + image: tornadocash/relayer:sidechain-beta + profiles: ["op"] + restart: always + command: healthWatcher + env_file: .env.op + environment: + NET_ID: 10 + REDIS_URL: redis://redis/5 + depends_on: [redis, op-server] - op-healthWatcher: - image: tornadorelayer:sidechain - profiles: [ 'op' ] - restart: always - command: healthWatcher - env_file: .env.op - environment: - NET_ID: 10 - REDIS_URL: redis://redis/5 - depends_on: [ redis, op-server ] + op-worker1: + image: tornadocash/relayer:sidechain-beta + profiles: ["op"] + restart: always + command: worker + env_file: .env.op + environment: + NET_ID: 10 + REDIS_URL: redis://redis/5 + depends_on: [redis, op-server] - op-worker1: - image: tornadorelayer:sidechain - profiles: [ 'op' ] - restart: always - command: worker - env_file: .env.op - environment: - NET_ID: 10 - REDIS_URL: redis://redis/5 - depends_on: [ redis, op-server ] + # -------------------------------------------------- # - # -------------------------------------------------- # + # ---------------------- Arbitrum ----------------------- # - # ---------------------- Arbitrum ----------------------- # + arb-server: + image: tornadocash/relayer:sidechain-beta + profiles: ["arb"] + 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-server: - image: tornadorelayer:sidechain - profiles: [ 'arb' ] - 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-healthWatcher: + image: tornadocash/relayer:sidechain-beta + profiles: ["arb"] + restart: always + command: healthWatcher + env_file: .env.arb + environment: + NET_ID: 42161 + REDIS_URL: redis://redis/6 + depends_on: [redis, arb-server] - arb-healthWatcher: - image: tornadorelayer:sidechain - profiles: [ 'arb' ] - restart: always - command: healthWatcher - env_file: .env.arb - environment: - NET_ID: 42161 - REDIS_URL: redis://redis/6 - depends_on: [ redis, arb-server ] + arb-worker1: + image: tornadocash/relayer:sidechain-beta + profiles: ["arb"] + restart: always + command: worker + env_file: .env.arb + environment: + NET_ID: 42161 + REDIS_URL: redis://redis/6 + depends_on: [redis, arb-server] - arb-worker1: - image: tornadorelayer:sidechain - profiles: [ 'arb' ] - restart: always - command: worker - env_file: .env.arb - environment: - NET_ID: 42161 - REDIS_URL: redis://redis/6 - depends_on: [ redis, arb-server ] + # -------------------------------------------------- # - # -------------------------------------------------- # + # ---------------------- Goerli (Ethereum Testnet) ---------------------- # - # ---------------------- Goerli (Ethereum Testnet) ---------------------- # + goerli-server: + image: tornadorelayer:mainnet + profiles: ["geth"] + restart: always + command: server + env_file: .env.goerli + environment: + NET_ID: 5 + REDIS_URL: redis://redis/7 + nginx_proxy_read_timeout: 600 + depends_on: [redis] - goerli-server: - image: tornadorelayer:mainnet - profiles: [ 'geth' ] - restart: always - command: server - env_file: .env.goerli - environment: - NET_ID: 5 - REDIS_URL: redis://redis/7 - nginx_proxy_read_timeout: 600 - depends_on: [ redis ] + goerli-treeWatcher: + image: tornadorelayer:mainnet + profiles: ["goerli"] + restart: always + command: treeWatcher + env_file: .env.goerli + environment: + NET_ID: 5 + REDIS_URL: redis://redis/7 + depends_on: [redis, goerli-server] - goerli-treeWatcher: - image: tornadorelayer:mainnet - profiles: [ 'goerli' ] - restart: always - command: treeWatcher - env_file: .env.goerli - environment: - NET_ID: 5 - REDIS_URL: redis://redis/7 - depends_on: [ redis, goerli-server ] + goerli-priceWatcher: + image: tornadorelayer:mainnet + profiles: ["goerli"] + restart: always + command: priceWatcher + env_file: .env.goerli + environment: + NET_ID: 5 + REDIS_URL: redis://redis/7 + depends_on: [redis, goerli-server] - goerli-priceWatcher: - image: tornadorelayer:mainnet - profiles: [ 'goerli' ] - restart: always - command: priceWatcher - env_file: .env.goerli - environment: - NET_ID: 5 - REDIS_URL: redis://redis/7 - depends_on: [ redis, goerli-server ] + goerli-healthWatcher: + image: tornadorelayer:mainnet + profiles: ["goerli"] + restart: always + command: healthWatcher + env_file: .env.goerli + environment: + NET_ID: 5 + REDIS_URL: redis://redis/7 + depends_on: [redis, goerli-server] - goerli-healthWatcher: - image: tornadorelayer:mainnet - profiles: [ 'goerli' ] - restart: always - command: healthWatcher - env_file: .env.goerli - environment: - NET_ID: 5 - REDIS_URL: redis://redis/7 - depends_on: [ redis, goerli-server ] - - goerli-worker1: - image: tornadorelayer:mainnet - profiles: [ 'goerli' ] - restart: always - command: worker - env_file: .env.goerli - environment: - NET_ID: 5 - REDIS_URL: redis://redis/7 - depends_on: [ redis, goerli-server ] - # -------------------------------------------------- # + goerli-worker1: + image: tornadorelayer:mainnet + profiles: ["goerli"] + restart: always + command: worker + env_file: .env.goerli + environment: + NET_ID: 5 + REDIS_URL: redis://redis/7 + depends_on: [redis, goerli-server] + # -------------------------------------------------- # volumes: - conf: - vhost: - html: - certs: - redis: + conf: + vhost: + html: + certs: + redis: diff --git a/install.sh b/install.sh index 969e569..0904891 100644 --- a/install.sh +++ b/install.sh @@ -47,6 +47,14 @@ function install_requred_packages(){ echo -e "\nAll required packages installed successfully"; } +function install_node(){ + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash; + . ~/.nvm/nvm.sh; + . ~/.profile; + . ~/.bashrc; + nvm install 14.21.3; +} + function install_repositories(){ git clone $relayer_soft_git_repo -b main-v4 $relayer_folder git clone $relayer_soft_git_repo -b mainnet-v4 $relayer_mainnet_soft_source_folder; @@ -73,18 +81,18 @@ function configure_firewall(){ function configure_nginx_reverse_proxy(){ systemctl stop apache2; - cp $relayer_mainnet_soft_source_folder/tornado.conf /etc/nginx/sites-available/default; + cp $relayer_folder/tornado.conf /etc/nginx/sites-available/default; echo "stream { map_hash_bucket_size 128; map_hash_max_size 128; include /etc/nginx/conf.d/streams/*.conf; }" >> /etc/nginx/nginx.conf; mkdir /etc/nginx/conf.d/streams; - cp $relayer_mainnet_soft_source_folder/tornado-stream.conf /etc/nginx/conf.d/streams/tornado-stream.conf; + cp $relayer_folder/tornado-stream.conf /etc/nginx/conf.d/streams/tornado-stream.conf; systemctl restart nginx; systemctl stop nginx; } function build_relayer_docker_containers(){ - docker build -t tornadorelayer:mainnet $relayer_mainnet_soft_source_folder; - docker build -t tornadorelayer:sidechain $relayer_sidechains_soft_source_folder; + cd $relayer_mainnet_soft_source_folder && npm run build; + cd $relayer_sidechains_soft_source_folder && npm run build; } function prepare_environments(){ @@ -95,6 +103,7 @@ function prepare_environments(){ function main(){ install_requred_packages; + install_node; install_repositories; configure_firewall; configure_nginx_reverse_proxy;