diff --git a/Production-NoReverseProxy/docker-compose.btc-clightning.yml b/Production-NoReverseProxy/docker-compose.btc-clightning.yml new file mode 100644 index 0000000..76ef210 --- /dev/null +++ b/Production-NoReverseProxy/docker-compose.btc-clightning.yml @@ -0,0 +1,86 @@ +version: "3" +services: + btcpayserver: + restart: always + image: nicolasdorier/btcpayserver:1.0.1.53 + expose: + - "49392" + environment: + BTCPAY_POSTGRES: User ID=postgres;Host=postgres;Port=5432;Database=btcpayserver${NBITCOIN_NETWORK:-regtest} + BTCPAY_NETWORK: ${NBITCOIN_NETWORK:-regtest} + BTCPAY_BIND: 0.0.0.0:49392 + BTCPAY_EXTERNALURL: https://${BTCPAY_HOST}/ + VIRTUAL_NETWORK: nginx-proxy + VIRTUAL_PORT: 49392 + VIRTUAL_HOST: ${BTCPAY_HOST} + LETSENCRYPT_HOST: ${BTCPAY_HOST} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com} + BTCPAY_CHAINS: "btc" + BTCPAY_BTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_BTCLIGHTNING: "/etc/clightning_bitcoin/lightning-rpc" + links: + - nbxplorer + - postgres + - clightning_bitcoin + volumes: + - "btcpay_datadir:/datadir" + - "nbxplorer_datadir:/root/.nbxplorer" + - "clightning_bitcoin_datadir:/etc/clightning_bitcoin" + ports: + - "80:49392" + nbxplorer: + restart: always + image: nicolasdorier/nbxplorer:1.0.1.23 + expose: + - "32838" + environment: + NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest} + NBXPLORER_BIND: 0.0.0.0:32838 + NBXPLORER_CHAINS: "btc" + NBXPLORER_BTCRPCURL: http://bitcoind:43782/ + NBXPLORER_BTCNODEENDPOINT: bitcoind:39388 + volumes: + - "nbxplorer_datadir:/datadir" + - "bitcoin_datadir:/root/.bitcoin" + links: + - bitcoind + postgres: + restart: always + image: postgres:9.6.5 + volumes: + - "postgres_datadir:/var/lib/postgresql/data" + bitcoind: + restart: always + container_name: btcpayserver_bitcoind + image: nicolasdorier/docker-bitcoin:0.16.0 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "bitcoin_datadir:/data" + clightning_bitcoin: + image: nicolasdorier/clightning + environment: + LIGHTNINGD_OPT: | + bitcoin-datadir=/etc/bitcoin + bitcoin-rpcconnect=bitcoind + ipaddr=${BTCPAY_HOST} + network=${NBITCOIN_NETWORK:-regtest} + chain=btc + volumes: + - "clightning_bitcoin_datadir:/root/.lightning" + - "bitcoin_datadir:/etc/bitcoin" + links: + - bitcoind +volumes: + postgres_datadir: + btcpay_datadir: + nbxplorer_datadir: + bitcoin_datadir: + clightning_bitcoin_datadir: diff --git a/Production-NoReverseProxy/docker-compose.btc-ltc-clightning.yml b/Production-NoReverseProxy/docker-compose.btc-ltc-clightning.yml new file mode 100644 index 0000000..f0a5763 --- /dev/null +++ b/Production-NoReverseProxy/docker-compose.btc-ltc-clightning.yml @@ -0,0 +1,125 @@ +version: "3" +services: + btcpayserver: + restart: always + image: nicolasdorier/btcpayserver:1.0.1.53 + expose: + - "49392" + environment: + BTCPAY_POSTGRES: User ID=postgres;Host=postgres;Port=5432;Database=btcpayserver${NBITCOIN_NETWORK:-regtest} + BTCPAY_NETWORK: ${NBITCOIN_NETWORK:-regtest} + BTCPAY_BIND: 0.0.0.0:49392 + BTCPAY_EXTERNALURL: https://${BTCPAY_HOST}/ + VIRTUAL_NETWORK: nginx-proxy + VIRTUAL_PORT: 49392 + VIRTUAL_HOST: ${BTCPAY_HOST} + LETSENCRYPT_HOST: ${BTCPAY_HOST} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com} + BTCPAY_LTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_CHAINS: "ltc,btc" + BTCPAY_LTCLIGHTNING: "/etc/clightning_litecoin/lightning-rpc" + BTCPAY_BTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_BTCLIGHTNING: "/etc/clightning_bitcoin/lightning-rpc" + links: + - nbxplorer + - postgres + - clightning_litecoin + - clightning_bitcoin + volumes: + - "btcpay_datadir:/datadir" + - "nbxplorer_datadir:/root/.nbxplorer" + - "clightning_litecoin_datadir:/etc/clightning_litecoin" + - "clightning_bitcoin_datadir:/etc/clightning_bitcoin" + ports: + - "80:49392" + nbxplorer: + restart: always + image: nicolasdorier/nbxplorer:1.0.1.23 + expose: + - "32838" + environment: + NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest} + NBXPLORER_BIND: 0.0.0.0:32838 + NBXPLORER_CHAINS: "ltc,btc" + NBXPLORER_LTCRPCURL: http://litecoind:43782/ + NBXPLORER_LTCNODEENDPOINT: litecoind:39388 + NBXPLORER_BTCRPCURL: http://bitcoind:43782/ + NBXPLORER_BTCNODEENDPOINT: bitcoind:39388 + volumes: + - "nbxplorer_datadir:/datadir" + - "litecoin_datadir:/root/.litecoin" + - "bitcoin_datadir:/root/.bitcoin" + links: + - litecoind + - bitcoind + postgres: + restart: always + image: postgres:9.6.5 + volumes: + - "postgres_datadir:/var/lib/postgresql/data" + litecoind: + restart: always + container_name: btcpayserver_litecoind + image: nicolasdorier/docker-litecoin:0.14.2 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "litecoin_datadir:/data" + clightning_litecoin: + image: nicolasdorier/clightning + environment: + LIGHTNINGD_OPT: | + bitcoin-datadir=/etc/litecoin + bitcoin-rpcconnect=litecoind + ipaddr=${BTCPAY_HOST} + network=${NBITCOIN_NETWORK:-regtest} + chain=ltc + volumes: + - "clightning_litecoin_datadir:/root/.lightning" + - "litecoin_datadir:/etc/litecoin" + links: + - litecoind + bitcoind: + restart: always + container_name: btcpayserver_bitcoind + image: nicolasdorier/docker-bitcoin:0.16.0 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "bitcoin_datadir:/data" + clightning_bitcoin: + image: nicolasdorier/clightning + environment: + LIGHTNINGD_OPT: | + bitcoin-datadir=/etc/bitcoin + bitcoin-rpcconnect=bitcoind + ipaddr=${BTCPAY_HOST} + network=${NBITCOIN_NETWORK:-regtest} + chain=btc + volumes: + - "clightning_bitcoin_datadir:/root/.lightning" + - "bitcoin_datadir:/etc/bitcoin" + links: + - bitcoind +volumes: + postgres_datadir: + btcpay_datadir: + nbxplorer_datadir: + litecoin_datadir: + clightning_litecoin_datadir: + bitcoin_datadir: + clightning_bitcoin_datadir: diff --git a/Production-NoReverseProxy/docker-compose.btc-ltc.yml b/Production-NoReverseProxy/docker-compose.btc-ltc.yml index 4dee718..3ce89ca 100644 --- a/Production-NoReverseProxy/docker-compose.btc-ltc.yml +++ b/Production-NoReverseProxy/docker-compose.btc-ltc.yml @@ -15,9 +15,9 @@ services: VIRTUAL_HOST: ${BTCPAY_HOST} LETSENCRYPT_HOST: ${BTCPAY_HOST} LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com} - BTCPAY_CHAINS: "btc,ltc" - BTCPAY_BTCEXPLORERURL: http://nbxplorer:32838/ BTCPAY_LTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_CHAINS: "ltc,btc" + BTCPAY_BTCEXPLORERURL: http://nbxplorer:32838/ links: - nbxplorer - postgres @@ -34,27 +34,27 @@ services: environment: NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest} NBXPLORER_BIND: 0.0.0.0:32838 - NBXPLORER_CHAINS: "btc,ltc" - NBXPLORER_BTCRPCURL: http://bitcoind:43782/ - NBXPLORER_BTCNODEENDPOINT: bitcoind:39388 + NBXPLORER_CHAINS: "ltc,btc" NBXPLORER_LTCRPCURL: http://litecoind:43782/ NBXPLORER_LTCNODEENDPOINT: litecoind:39388 + NBXPLORER_BTCRPCURL: http://bitcoind:43782/ + NBXPLORER_BTCNODEENDPOINT: bitcoind:39388 volumes: - "nbxplorer_datadir:/datadir" - - "bitcoin_datadir:/root/.bitcoin" - "litecoin_datadir:/root/.litecoin" + - "bitcoin_datadir:/root/.bitcoin" links: - - bitcoind - litecoind + - bitcoind postgres: restart: always image: postgres:9.6.5 volumes: - "postgres_datadir:/var/lib/postgresql/data" - bitcoind: + litecoind: restart: always - container_name: btcpayserver_bitcoind - image: nicolasdorier/docker-bitcoin:0.16.0 + container_name: btcpayserver_litecoind + image: nicolasdorier/docker-litecoin:0.14.2 environment: BITCOIN_EXTRA_ARGS: | rpcport=43782 @@ -65,11 +65,11 @@ services: - "43782" - "39388" volumes: - - "bitcoin_datadir:/data" - litecoind: + - "litecoin_datadir:/data" + bitcoind: restart: always - container_name: btcpayserver_litecoind - image: nicolasdorier/docker-litecoin:0.14.2 + container_name: btcpayserver_bitcoind + image: nicolasdorier/docker-bitcoin:0.16.0 environment: BITCOIN_EXTRA_ARGS: | rpcport=43782 @@ -80,10 +80,10 @@ services: - "43782" - "39388" volumes: - - "litecoin_datadir:/data" + - "bitcoin_datadir:/data" volumes: postgres_datadir: btcpay_datadir: nbxplorer_datadir: - bitcoin_datadir: litecoin_datadir: + bitcoin_datadir: diff --git a/Production-NoReverseProxy/docker-compose.ltc-clightning.yml b/Production-NoReverseProxy/docker-compose.ltc-clightning.yml new file mode 100644 index 0000000..550e9bf --- /dev/null +++ b/Production-NoReverseProxy/docker-compose.ltc-clightning.yml @@ -0,0 +1,86 @@ +version: "3" +services: + btcpayserver: + restart: always + image: nicolasdorier/btcpayserver:1.0.1.53 + expose: + - "49392" + environment: + BTCPAY_POSTGRES: User ID=postgres;Host=postgres;Port=5432;Database=btcpayserver${NBITCOIN_NETWORK:-regtest} + BTCPAY_NETWORK: ${NBITCOIN_NETWORK:-regtest} + BTCPAY_BIND: 0.0.0.0:49392 + BTCPAY_EXTERNALURL: https://${BTCPAY_HOST}/ + VIRTUAL_NETWORK: nginx-proxy + VIRTUAL_PORT: 49392 + VIRTUAL_HOST: ${BTCPAY_HOST} + LETSENCRYPT_HOST: ${BTCPAY_HOST} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com} + BTCPAY_LTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_CHAINS: "ltc" + BTCPAY_LTCLIGHTNING: "/etc/clightning_litecoin/lightning-rpc" + links: + - nbxplorer + - postgres + - clightning_litecoin + volumes: + - "btcpay_datadir:/datadir" + - "nbxplorer_datadir:/root/.nbxplorer" + - "clightning_litecoin_datadir:/etc/clightning_litecoin" + ports: + - "80:49392" + nbxplorer: + restart: always + image: nicolasdorier/nbxplorer:1.0.1.23 + expose: + - "32838" + environment: + NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest} + NBXPLORER_BIND: 0.0.0.0:32838 + NBXPLORER_CHAINS: "ltc" + NBXPLORER_LTCRPCURL: http://litecoind:43782/ + NBXPLORER_LTCNODEENDPOINT: litecoind:39388 + volumes: + - "nbxplorer_datadir:/datadir" + - "litecoin_datadir:/root/.litecoin" + links: + - litecoind + postgres: + restart: always + image: postgres:9.6.5 + volumes: + - "postgres_datadir:/var/lib/postgresql/data" + litecoind: + restart: always + container_name: btcpayserver_litecoind + image: nicolasdorier/docker-litecoin:0.14.2 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "litecoin_datadir:/data" + clightning_litecoin: + image: nicolasdorier/clightning + environment: + LIGHTNINGD_OPT: | + bitcoin-datadir=/etc/litecoin + bitcoin-rpcconnect=litecoind + ipaddr=${BTCPAY_HOST} + network=${NBITCOIN_NETWORK:-regtest} + chain=ltc + volumes: + - "clightning_litecoin_datadir:/root/.lightning" + - "litecoin_datadir:/etc/litecoin" + links: + - litecoind +volumes: + postgres_datadir: + btcpay_datadir: + nbxplorer_datadir: + litecoin_datadir: + clightning_litecoin_datadir: diff --git a/Production-NoReverseProxy/docker-compose.ltc.yml b/Production-NoReverseProxy/docker-compose.ltc.yml new file mode 100644 index 0000000..d91ca6f --- /dev/null +++ b/Production-NoReverseProxy/docker-compose.ltc.yml @@ -0,0 +1,68 @@ +version: "3" +services: + btcpayserver: + restart: always + image: nicolasdorier/btcpayserver:1.0.1.53 + expose: + - "49392" + environment: + BTCPAY_POSTGRES: User ID=postgres;Host=postgres;Port=5432;Database=btcpayserver${NBITCOIN_NETWORK:-regtest} + BTCPAY_NETWORK: ${NBITCOIN_NETWORK:-regtest} + BTCPAY_BIND: 0.0.0.0:49392 + BTCPAY_EXTERNALURL: https://${BTCPAY_HOST}/ + VIRTUAL_NETWORK: nginx-proxy + VIRTUAL_PORT: 49392 + VIRTUAL_HOST: ${BTCPAY_HOST} + LETSENCRYPT_HOST: ${BTCPAY_HOST} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com} + BTCPAY_LTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_CHAINS: "ltc" + links: + - nbxplorer + - postgres + volumes: + - "btcpay_datadir:/datadir" + - "nbxplorer_datadir:/root/.nbxplorer" + ports: + - "80:49392" + nbxplorer: + restart: always + image: nicolasdorier/nbxplorer:1.0.1.23 + expose: + - "32838" + environment: + NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest} + NBXPLORER_BIND: 0.0.0.0:32838 + NBXPLORER_CHAINS: "ltc" + NBXPLORER_LTCRPCURL: http://litecoind:43782/ + NBXPLORER_LTCNODEENDPOINT: litecoind:39388 + volumes: + - "nbxplorer_datadir:/datadir" + - "litecoin_datadir:/root/.litecoin" + links: + - litecoind + postgres: + restart: always + image: postgres:9.6.5 + volumes: + - "postgres_datadir:/var/lib/postgresql/data" + litecoind: + restart: always + container_name: btcpayserver_litecoind + image: nicolasdorier/docker-litecoin:0.14.2 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "litecoin_datadir:/data" +volumes: + postgres_datadir: + btcpay_datadir: + nbxplorer_datadir: + litecoin_datadir: diff --git a/Production/docker-compose.btc-clightning.yml b/Production/docker-compose.btc-clightning.yml new file mode 100644 index 0000000..72adbda --- /dev/null +++ b/Production/docker-compose.btc-clightning.yml @@ -0,0 +1,132 @@ +version: "3" +services: + nginx: + restart: always + image: nginx + container_name: nginx + ports: + - "80:80" + - "443:443" + volumes: + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:ro" + links: + - btcpayserver + nginx-gen: + restart: always + image: jwilder/docker-gen + container_name: nginx-gen + volumes: + - "/var/run/docker.sock:/tmp/docker.sock:ro" + - "./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro" + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:ro" + entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf + links: + - nginx + letsencrypt-nginx-proxy-companion: + restart: always + image: jrcs/letsencrypt-nginx-proxy-companion + container_name: letsencrypt-nginx-proxy-companion + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:rw" + environment: + NGINX_DOCKER_GEN_CONTAINER: "nginx-gen" + NGINX_PROXY_CONTAINER: "nginx" + ACME_CA_URI: ${ACME_CA_URI:-https://acme-staging.api.letsencrypt.org/directory} + links: + - nginx + btcpayserver: + restart: always + image: nicolasdorier/btcpayserver:1.0.1.53 + expose: + - "49392" + environment: + BTCPAY_POSTGRES: User ID=postgres;Host=postgres;Port=5432;Database=btcpayserver${NBITCOIN_NETWORK:-regtest} + BTCPAY_NETWORK: ${NBITCOIN_NETWORK:-regtest} + BTCPAY_BIND: 0.0.0.0:49392 + BTCPAY_EXTERNALURL: https://${BTCPAY_HOST}/ + VIRTUAL_NETWORK: nginx-proxy + VIRTUAL_PORT: 49392 + VIRTUAL_HOST: ${BTCPAY_HOST} + LETSENCRYPT_HOST: ${BTCPAY_HOST} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com} + BTCPAY_CHAINS: "btc" + BTCPAY_BTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_BTCLIGHTNING: "/etc/clightning_bitcoin/lightning-rpc" + links: + - nbxplorer + - postgres + - clightning_bitcoin + volumes: + - "btcpay_datadir:/datadir" + - "nbxplorer_datadir:/root/.nbxplorer" + - "clightning_bitcoin_datadir:/etc/clightning_bitcoin" + nbxplorer: + restart: always + image: nicolasdorier/nbxplorer:1.0.1.23 + expose: + - "32838" + environment: + NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest} + NBXPLORER_BIND: 0.0.0.0:32838 + NBXPLORER_CHAINS: "btc" + NBXPLORER_BTCRPCURL: http://bitcoind:43782/ + NBXPLORER_BTCNODEENDPOINT: bitcoind:39388 + volumes: + - "nbxplorer_datadir:/datadir" + - "bitcoin_datadir:/root/.bitcoin" + links: + - bitcoind + postgres: + restart: always + image: postgres:9.6.5 + volumes: + - "postgres_datadir:/var/lib/postgresql/data" + bitcoind: + restart: always + container_name: btcpayserver_bitcoind + image: nicolasdorier/docker-bitcoin:0.16.0 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "bitcoin_datadir:/data" + clightning_bitcoin: + image: nicolasdorier/clightning + environment: + LIGHTNINGD_OPT: | + bitcoin-datadir=/etc/bitcoin + bitcoin-rpcconnect=bitcoind + ipaddr=${BTCPAY_HOST} + network=${NBITCOIN_NETWORK:-regtest} + chain=btc + volumes: + - "clightning_bitcoin_datadir:/root/.lightning" + - "bitcoin_datadir:/etc/bitcoin" + links: + - bitcoind +volumes: + nginx_conf: + nginx_vhost: + nginx_html: + nginx_certs: + postgres_datadir: + btcpay_datadir: + nbxplorer_datadir: + bitcoin_datadir: + clightning_bitcoin_datadir: diff --git a/Production/docker-compose.btc-ltc-clightning.yml b/Production/docker-compose.btc-ltc-clightning.yml new file mode 100644 index 0000000..42938fb --- /dev/null +++ b/Production/docker-compose.btc-ltc-clightning.yml @@ -0,0 +1,171 @@ +version: "3" +services: + nginx: + restart: always + image: nginx + container_name: nginx + ports: + - "80:80" + - "443:443" + volumes: + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:ro" + links: + - btcpayserver + nginx-gen: + restart: always + image: jwilder/docker-gen + container_name: nginx-gen + volumes: + - "/var/run/docker.sock:/tmp/docker.sock:ro" + - "./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro" + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:ro" + entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf + links: + - nginx + letsencrypt-nginx-proxy-companion: + restart: always + image: jrcs/letsencrypt-nginx-proxy-companion + container_name: letsencrypt-nginx-proxy-companion + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:rw" + environment: + NGINX_DOCKER_GEN_CONTAINER: "nginx-gen" + NGINX_PROXY_CONTAINER: "nginx" + ACME_CA_URI: ${ACME_CA_URI:-https://acme-staging.api.letsencrypt.org/directory} + links: + - nginx + btcpayserver: + restart: always + image: nicolasdorier/btcpayserver:1.0.1.53 + expose: + - "49392" + environment: + BTCPAY_POSTGRES: User ID=postgres;Host=postgres;Port=5432;Database=btcpayserver${NBITCOIN_NETWORK:-regtest} + BTCPAY_NETWORK: ${NBITCOIN_NETWORK:-regtest} + BTCPAY_BIND: 0.0.0.0:49392 + BTCPAY_EXTERNALURL: https://${BTCPAY_HOST}/ + VIRTUAL_NETWORK: nginx-proxy + VIRTUAL_PORT: 49392 + VIRTUAL_HOST: ${BTCPAY_HOST} + LETSENCRYPT_HOST: ${BTCPAY_HOST} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com} + BTCPAY_LTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_CHAINS: "ltc,btc" + BTCPAY_LTCLIGHTNING: "/etc/clightning_litecoin/lightning-rpc" + BTCPAY_BTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_BTCLIGHTNING: "/etc/clightning_bitcoin/lightning-rpc" + links: + - nbxplorer + - postgres + - clightning_litecoin + - clightning_bitcoin + volumes: + - "btcpay_datadir:/datadir" + - "nbxplorer_datadir:/root/.nbxplorer" + - "clightning_litecoin_datadir:/etc/clightning_litecoin" + - "clightning_bitcoin_datadir:/etc/clightning_bitcoin" + nbxplorer: + restart: always + image: nicolasdorier/nbxplorer:1.0.1.23 + expose: + - "32838" + environment: + NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest} + NBXPLORER_BIND: 0.0.0.0:32838 + NBXPLORER_CHAINS: "ltc,btc" + NBXPLORER_LTCRPCURL: http://litecoind:43782/ + NBXPLORER_LTCNODEENDPOINT: litecoind:39388 + NBXPLORER_BTCRPCURL: http://bitcoind:43782/ + NBXPLORER_BTCNODEENDPOINT: bitcoind:39388 + volumes: + - "nbxplorer_datadir:/datadir" + - "litecoin_datadir:/root/.litecoin" + - "bitcoin_datadir:/root/.bitcoin" + links: + - litecoind + - bitcoind + postgres: + restart: always + image: postgres:9.6.5 + volumes: + - "postgres_datadir:/var/lib/postgresql/data" + litecoind: + restart: always + container_name: btcpayserver_litecoind + image: nicolasdorier/docker-litecoin:0.14.2 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "litecoin_datadir:/data" + clightning_litecoin: + image: nicolasdorier/clightning + environment: + LIGHTNINGD_OPT: | + bitcoin-datadir=/etc/litecoin + bitcoin-rpcconnect=litecoind + ipaddr=${BTCPAY_HOST} + network=${NBITCOIN_NETWORK:-regtest} + chain=ltc + volumes: + - "clightning_litecoin_datadir:/root/.lightning" + - "litecoin_datadir:/etc/litecoin" + links: + - litecoind + bitcoind: + restart: always + container_name: btcpayserver_bitcoind + image: nicolasdorier/docker-bitcoin:0.16.0 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "bitcoin_datadir:/data" + clightning_bitcoin: + image: nicolasdorier/clightning + environment: + LIGHTNINGD_OPT: | + bitcoin-datadir=/etc/bitcoin + bitcoin-rpcconnect=bitcoind + ipaddr=${BTCPAY_HOST} + network=${NBITCOIN_NETWORK:-regtest} + chain=btc + volumes: + - "clightning_bitcoin_datadir:/root/.lightning" + - "bitcoin_datadir:/etc/bitcoin" + links: + - bitcoind +volumes: + nginx_conf: + nginx_vhost: + nginx_html: + nginx_certs: + postgres_datadir: + btcpay_datadir: + nbxplorer_datadir: + litecoin_datadir: + clightning_litecoin_datadir: + bitcoin_datadir: + clightning_bitcoin_datadir: diff --git a/Production/docker-compose.btc-ltc.yml b/Production/docker-compose.btc-ltc.yml index d4803cc..b27bc7e 100644 --- a/Production/docker-compose.btc-ltc.yml +++ b/Production/docker-compose.btc-ltc.yml @@ -59,9 +59,9 @@ services: VIRTUAL_HOST: ${BTCPAY_HOST} LETSENCRYPT_HOST: ${BTCPAY_HOST} LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com} - BTCPAY_CHAINS: "btc,ltc" - BTCPAY_BTCEXPLORERURL: http://nbxplorer:32838/ BTCPAY_LTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_CHAINS: "ltc,btc" + BTCPAY_BTCEXPLORERURL: http://nbxplorer:32838/ links: - nbxplorer - postgres @@ -76,27 +76,27 @@ services: environment: NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest} NBXPLORER_BIND: 0.0.0.0:32838 - NBXPLORER_CHAINS: "btc,ltc" - NBXPLORER_BTCRPCURL: http://bitcoind:43782/ - NBXPLORER_BTCNODEENDPOINT: bitcoind:39388 + NBXPLORER_CHAINS: "ltc,btc" NBXPLORER_LTCRPCURL: http://litecoind:43782/ NBXPLORER_LTCNODEENDPOINT: litecoind:39388 + NBXPLORER_BTCRPCURL: http://bitcoind:43782/ + NBXPLORER_BTCNODEENDPOINT: bitcoind:39388 volumes: - "nbxplorer_datadir:/datadir" - - "bitcoin_datadir:/root/.bitcoin" - "litecoin_datadir:/root/.litecoin" + - "bitcoin_datadir:/root/.bitcoin" links: - - bitcoind - litecoind + - bitcoind postgres: restart: always image: postgres:9.6.5 volumes: - "postgres_datadir:/var/lib/postgresql/data" - bitcoind: + litecoind: restart: always - container_name: btcpayserver_bitcoind - image: nicolasdorier/docker-bitcoin:0.16.0 + container_name: btcpayserver_litecoind + image: nicolasdorier/docker-litecoin:0.14.2 environment: BITCOIN_EXTRA_ARGS: | rpcport=43782 @@ -107,11 +107,11 @@ services: - "43782" - "39388" volumes: - - "bitcoin_datadir:/data" - litecoind: + - "litecoin_datadir:/data" + bitcoind: restart: always - container_name: btcpayserver_litecoind - image: nicolasdorier/docker-litecoin:0.14.2 + container_name: btcpayserver_bitcoind + image: nicolasdorier/docker-bitcoin:0.16.0 environment: BITCOIN_EXTRA_ARGS: | rpcport=43782 @@ -122,7 +122,7 @@ services: - "43782" - "39388" volumes: - - "litecoin_datadir:/data" + - "bitcoin_datadir:/data" volumes: nginx_conf: nginx_vhost: @@ -131,5 +131,5 @@ volumes: postgres_datadir: btcpay_datadir: nbxplorer_datadir: - bitcoin_datadir: litecoin_datadir: + bitcoin_datadir: diff --git a/Production/docker-compose.ltc-clightning.yml b/Production/docker-compose.ltc-clightning.yml new file mode 100644 index 0000000..b870030 --- /dev/null +++ b/Production/docker-compose.ltc-clightning.yml @@ -0,0 +1,132 @@ +version: "3" +services: + nginx: + restart: always + image: nginx + container_name: nginx + ports: + - "80:80" + - "443:443" + volumes: + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:ro" + links: + - btcpayserver + nginx-gen: + restart: always + image: jwilder/docker-gen + container_name: nginx-gen + volumes: + - "/var/run/docker.sock:/tmp/docker.sock:ro" + - "./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro" + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:ro" + entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf + links: + - nginx + letsencrypt-nginx-proxy-companion: + restart: always + image: jrcs/letsencrypt-nginx-proxy-companion + container_name: letsencrypt-nginx-proxy-companion + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:rw" + environment: + NGINX_DOCKER_GEN_CONTAINER: "nginx-gen" + NGINX_PROXY_CONTAINER: "nginx" + ACME_CA_URI: ${ACME_CA_URI:-https://acme-staging.api.letsencrypt.org/directory} + links: + - nginx + btcpayserver: + restart: always + image: nicolasdorier/btcpayserver:1.0.1.53 + expose: + - "49392" + environment: + BTCPAY_POSTGRES: User ID=postgres;Host=postgres;Port=5432;Database=btcpayserver${NBITCOIN_NETWORK:-regtest} + BTCPAY_NETWORK: ${NBITCOIN_NETWORK:-regtest} + BTCPAY_BIND: 0.0.0.0:49392 + BTCPAY_EXTERNALURL: https://${BTCPAY_HOST}/ + VIRTUAL_NETWORK: nginx-proxy + VIRTUAL_PORT: 49392 + VIRTUAL_HOST: ${BTCPAY_HOST} + LETSENCRYPT_HOST: ${BTCPAY_HOST} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com} + BTCPAY_LTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_CHAINS: "ltc" + BTCPAY_LTCLIGHTNING: "/etc/clightning_litecoin/lightning-rpc" + links: + - nbxplorer + - postgres + - clightning_litecoin + volumes: + - "btcpay_datadir:/datadir" + - "nbxplorer_datadir:/root/.nbxplorer" + - "clightning_litecoin_datadir:/etc/clightning_litecoin" + nbxplorer: + restart: always + image: nicolasdorier/nbxplorer:1.0.1.23 + expose: + - "32838" + environment: + NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest} + NBXPLORER_BIND: 0.0.0.0:32838 + NBXPLORER_CHAINS: "ltc" + NBXPLORER_LTCRPCURL: http://litecoind:43782/ + NBXPLORER_LTCNODEENDPOINT: litecoind:39388 + volumes: + - "nbxplorer_datadir:/datadir" + - "litecoin_datadir:/root/.litecoin" + links: + - litecoind + postgres: + restart: always + image: postgres:9.6.5 + volumes: + - "postgres_datadir:/var/lib/postgresql/data" + litecoind: + restart: always + container_name: btcpayserver_litecoind + image: nicolasdorier/docker-litecoin:0.14.2 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "litecoin_datadir:/data" + clightning_litecoin: + image: nicolasdorier/clightning + environment: + LIGHTNINGD_OPT: | + bitcoin-datadir=/etc/litecoin + bitcoin-rpcconnect=litecoind + ipaddr=${BTCPAY_HOST} + network=${NBITCOIN_NETWORK:-regtest} + chain=ltc + volumes: + - "clightning_litecoin_datadir:/root/.lightning" + - "litecoin_datadir:/etc/litecoin" + links: + - litecoind +volumes: + nginx_conf: + nginx_vhost: + nginx_html: + nginx_certs: + postgres_datadir: + btcpay_datadir: + nbxplorer_datadir: + litecoin_datadir: + clightning_litecoin_datadir: diff --git a/Production/docker-compose.ltc.yml b/Production/docker-compose.ltc.yml new file mode 100644 index 0000000..46be859 --- /dev/null +++ b/Production/docker-compose.ltc.yml @@ -0,0 +1,114 @@ +version: "3" +services: + nginx: + restart: always + image: nginx + container_name: nginx + ports: + - "80:80" + - "443:443" + volumes: + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:ro" + links: + - btcpayserver + nginx-gen: + restart: always + image: jwilder/docker-gen + container_name: nginx-gen + volumes: + - "/var/run/docker.sock:/tmp/docker.sock:ro" + - "./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro" + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:ro" + entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf + links: + - nginx + letsencrypt-nginx-proxy-companion: + restart: always + image: jrcs/letsencrypt-nginx-proxy-companion + container_name: letsencrypt-nginx-proxy-companion + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - "nginx_conf:/etc/nginx/conf.d" + - "nginx_vhost:/etc/nginx/vhost.d" + - "nginx_html:/usr/share/nginx/html" + - "nginx_certs:/etc/nginx/certs:rw" + environment: + NGINX_DOCKER_GEN_CONTAINER: "nginx-gen" + NGINX_PROXY_CONTAINER: "nginx" + ACME_CA_URI: ${ACME_CA_URI:-https://acme-staging.api.letsencrypt.org/directory} + links: + - nginx + btcpayserver: + restart: always + image: nicolasdorier/btcpayserver:1.0.1.53 + expose: + - "49392" + environment: + BTCPAY_POSTGRES: User ID=postgres;Host=postgres;Port=5432;Database=btcpayserver${NBITCOIN_NETWORK:-regtest} + BTCPAY_NETWORK: ${NBITCOIN_NETWORK:-regtest} + BTCPAY_BIND: 0.0.0.0:49392 + BTCPAY_EXTERNALURL: https://${BTCPAY_HOST}/ + VIRTUAL_NETWORK: nginx-proxy + VIRTUAL_PORT: 49392 + VIRTUAL_HOST: ${BTCPAY_HOST} + LETSENCRYPT_HOST: ${BTCPAY_HOST} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-yourname@example.com} + BTCPAY_LTCEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_CHAINS: "ltc" + links: + - nbxplorer + - postgres + volumes: + - "btcpay_datadir:/datadir" + - "nbxplorer_datadir:/root/.nbxplorer" + nbxplorer: + restart: always + image: nicolasdorier/nbxplorer:1.0.1.23 + expose: + - "32838" + environment: + NBXPLORER_NETWORK: ${NBITCOIN_NETWORK:-regtest} + NBXPLORER_BIND: 0.0.0.0:32838 + NBXPLORER_CHAINS: "ltc" + NBXPLORER_LTCRPCURL: http://litecoind:43782/ + NBXPLORER_LTCNODEENDPOINT: litecoind:39388 + volumes: + - "nbxplorer_datadir:/datadir" + - "litecoin_datadir:/root/.litecoin" + links: + - litecoind + postgres: + restart: always + image: postgres:9.6.5 + volumes: + - "postgres_datadir:/var/lib/postgresql/data" + litecoind: + restart: always + container_name: btcpayserver_litecoind + image: nicolasdorier/docker-litecoin:0.14.2 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "litecoin_datadir:/data" +volumes: + nginx_conf: + nginx_vhost: + nginx_html: + nginx_certs: + postgres_datadir: + btcpay_datadir: + nbxplorer_datadir: + litecoin_datadir: diff --git a/docker-compose-generator/docker-fragments/bitcoin-clightning.yml b/docker-compose-generator/docker-fragments/bitcoin-clightning.yml new file mode 100644 index 0000000..9287e86 --- /dev/null +++ b/docker-compose-generator/docker-fragments/bitcoin-clightning.yml @@ -0,0 +1,26 @@ +version: "3" + +services: + clightning_bitcoin: + image: nicolasdorier/clightning + environment: + LIGHTNINGD_OPT: | + bitcoin-datadir=/etc/bitcoin + bitcoin-rpcconnect=bitcoind + ipaddr=${BTCPAY_HOST} + network=${NBITCOIN_NETWORK:-regtest} + chain=btc + volumes: + - "clightning_bitcoin_datadir:/root/.lightning" + - "bitcoin_datadir:/etc/bitcoin" + links: + - bitcoind + btcpayserver: + environment: + BTCPAY_BTCLIGHTNING: "/etc/clightning_bitcoin/lightning-rpc" + volumes: + - "clightning_bitcoin_datadir:/etc/clightning_bitcoin" + links: + - clightning_bitcoin +volumes: + clightning_bitcoin_datadir: \ No newline at end of file diff --git a/docker-compose-generator/docker-fragments/litecoin-clightning.yml b/docker-compose-generator/docker-fragments/litecoin-clightning.yml new file mode 100644 index 0000000..d147311 --- /dev/null +++ b/docker-compose-generator/docker-fragments/litecoin-clightning.yml @@ -0,0 +1,26 @@ +version: "3" + +services: + clightning_litecoin: + image: nicolasdorier/clightning + environment: + LIGHTNINGD_OPT: | + bitcoin-datadir=/etc/litecoin + bitcoin-rpcconnect=litecoind + ipaddr=${BTCPAY_HOST} + network=${NBITCOIN_NETWORK:-regtest} + chain=ltc + volumes: + - "clightning_litecoin_datadir:/root/.lightning" + - "litecoin_datadir:/etc/litecoin" + links: + - litecoind + btcpayserver: + environment: + BTCPAY_LTCLIGHTNING: "/etc/clightning_litecoin/lightning-rpc" + volumes: + - "clightning_litecoin_datadir:/etc/clightning_litecoin" + links: + - clightning_litecoin +volumes: + clightning_litecoin_datadir: \ No newline at end of file diff --git a/docker-compose-generator/src/Program.cs b/docker-compose-generator/src/Program.cs index b189006..0c1357a 100644 --- a/docker-compose-generator/src/Program.cs +++ b/docker-compose-generator/src/Program.cs @@ -1,37 +1,59 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using YamlDotNet.Serialization; namespace DockerGenerator { - class Program - { - static void Main(string[] args) - { + class Program + { + static void Main(string[] args) + { new Program().Run(); } private void Run() { - List defs = new List(); - defs.Add(new DockerComposeDefinition("btc", - new List { "nginx", "btcpayserver", "bitcoin" })); - defs.Add(new DockerComposeDefinition("btc-ltc", - new List { "nginx", "btcpayserver", "bitcoin", "litecoin" })); - var fragmentLocation = FindLocation("docker-fragments"); var productionLocation = FindLocation("Production"); - foreach(var def in defs) + var testLocation = FindLocation("Production-NoReverseProxy"); + + HashSet processed = new HashSet(); + foreach(var permutation in ItemCombinations(new[] { "btc", "ltc", "clightning" }.ToList())) { + if(permutation.Count == 1 && permutation.First() == "clightning") + continue; + permutation.Sort(); + if(permutation.Remove("clightning")) + permutation.Add("clightning"); // ensure clightning at the end + string id = string.Join('-', permutation); + if(!processed.Add(id)) + continue; + + var fragments = new List(); + fragments.Add("nginx"); + fragments.Add("btcpayserver"); + + if(permutation.Contains("ltc")) + { + fragments.Add("litecoin"); + if(permutation.Contains("clightning")) + fragments.Add("litecoin-clightning"); + } + if(permutation.Contains("btc")) + { + fragments.Add("bitcoin"); + if(permutation.Contains("clightning")) + fragments.Add("bitcoin-clightning"); + } + + var def = new DockerComposeDefinition(id, fragments); def.FragmentLocation = fragmentLocation; def.BuildOutputDirectory = productionLocation; def.Build(); - } - var testLocation = FindLocation("Production-NoReverseProxy"); - foreach(var def in defs) - { + def.Fragments.Remove("nginx"); def.Fragments.Add("btcpayserver-noreverseproxy"); def.BuildOutputDirectory = testLocation; @@ -39,6 +61,44 @@ namespace DockerGenerator } } + /// + /// Method to create lists containing possible combinations of an input list of items. This is + /// basically copied from code by user "jaolho" on this thread: + /// http://stackoverflow.com/questions/7802822/all-possible-combinations-of-a-list-of-values + /// + /// type of the items on the input list + /// list of items + /// minimum number of items wanted in the generated combinations, + /// if zero the empty combination is included, + /// default is one + /// maximum number of items wanted in the generated combinations, + /// default is no maximum limit + /// list of lists for possible combinations of the input items + public static List> ItemCombinations(List inputList, int minimumItems = 1, + int maximumItems = int.MaxValue) + { + int nonEmptyCombinations = (int)Math.Pow(2, inputList.Count) - 1; + List> listOfLists = new List>(nonEmptyCombinations + 1); + + if(minimumItems == 0) // Optimize default case + listOfLists.Add(new List()); + + for(int i = 1; i <= nonEmptyCombinations; i++) + { + List thisCombination = new List(inputList.Count); + for(int j = 0; j < inputList.Count; j++) + { + if((i >> j & 1) == 1) + thisCombination.Add(inputList[j]); + } + + if(thisCombination.Count >= minimumItems && thisCombination.Count <= maximumItems) + listOfLists.Add(thisCombination); + } + + return listOfLists; + } + private string FindLocation(string path) { while(true)