From d02e84edeedfbff9bd74a9d6b632d459a816b14e Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 13 Nov 2018 16:50:55 +0900 Subject: [PATCH 01/75] bump --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index b1eecb5..7723da7 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: nicolasdorier/btcpayserver:1.0.3.8 + image: nicolasdorier/btcpayserver:1.0.3.9 expose: - "49392" environment: From 709be0fc4be69cc747dde7e4edb4499a43b5adc0 Mon Sep 17 00:00:00 2001 From: Andrew Camilleri Date: Tue, 13 Nov 2018 13:32:59 +0100 Subject: [PATCH 02/75] btcpay version option --- README.md | 1 + btcpay-setup.sh | 4 ++++ docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 33dd319..55a4dde 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,7 @@ You can read [the article](https://medium.com/@BtcpayServer/hosting-btcpay-serve * `BTCPAY_HOST_SSHKEYFILE`: Optional, SSH private key that BTCPay can use to connect to this VM's SSH server. This key will be copied to BTCPay's data directory * `BTCPAY_SSHTRUSTEDFINGERPRINTS`: Optional, BTCPay will ensure that it is connecting to the expected SSH server by checking the host's public key against these fingerprints * `BTCPAYGEN_DOCKER_IMAGE`: Optional, Specify which generator image to use if you have customized the C# generator. Set to `btcpayserver/docker-compose-generator:local` to build the generator locally at runtime. +* `BTCPAY_VERSION`: Optional, Specify which btcpayserver image to use if you have a customized btcpayserver. # Tooling diff --git a/btcpay-setup.sh b/btcpay-setup.sh index 6973104..da09a4a 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -61,6 +61,7 @@ Environment variables: ACME_CA_URI: The API endpoint to ask for HTTPS certificate (default: https://acme-v01.api.letsencrypt.org/directory) BTCPAY_HOST_SSHKEYFILE: Optional, SSH private key that BTCPay can use to connect to this VM's SSH server. This key will be copied on BTCPay's data directory BTCPAYGEN_DOCKER_IMAGE: Allows you to specify a custom docker image for the generator (Default: btcpayserver/docker-compose-generator) + BTCPAY_VERSION: Allows you to specify the btcpayserver docker image to use over the default version. (Default: current stable version of btcpayserver) END } @@ -134,6 +135,7 @@ BTCPAYGEN_CRYPTO9:$BTCPAYGEN_CRYPTO9 BTCPAYGEN_REVERSEPROXY:$BTCPAYGEN_REVERSEPROXY BTCPAYGEN_LIGHTNING:$BTCPAYGEN_LIGHTNING BTCPAYGEN_ADDITIONAL_FRAGMENTS:$BTCPAYGEN_ADDITIONAL_FRAGMENTS +BTCPAY_VERSION:$BTCPAY_VERSION ACME_CA_URI:$ACME_CA_URI ---------------------- Additional exported variables: @@ -183,6 +185,7 @@ export BTCPAY_ENV_FILE=\"$BTCPAY_ENV_FILE\" export BTCPAY_HOST_SSHKEYFILE=\"$BTCPAY_HOST_SSHKEYFILE\" if cat \$BTCPAY_ENV_FILE &> /dev/null; then export BTCPAY_HOST=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_HOST=\(.*\)$/\1/p')\" +export BTCPAY_VERSION=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_VERSION=\(.*\)$/\1/p')\" export LETSENCRYPT_EMAIL=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^LETSENCRYPT_EMAIL=\(.*\)$/\1/p')\" export NBITCOIN_NETWORK=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^NBITCOIN_NETWORK=\(.*\)$/\1/p')\" export LIGHTNING_ALIAS=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^LIGHTNING_ALIAS=\(.*\)$/\1/p')\" @@ -199,6 +202,7 @@ echo -e "BTCPay Server environment variables successfully saved in /etc/profile. touch $BTCPAY_ENV_FILE echo " BTCPAY_HOST=$BTCPAY_HOST +BTCPAY_VERSION=$BTCPAY_VERSION ACME_CA_URI=$ACME_CA_URI NBITCOIN_NETWORK=$NBITCOIN_NETWORK LETSENCRYPT_EMAIL=$LETSENCRYPT_EMAIL diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index 7723da7..1d02ca0 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: nicolasdorier/btcpayserver:1.0.3.9 + image: ${BTCPAY_VERSION:-nicolasdorier/btcpayserver:nicolasdorier/btcpayserver:1.0.3.9} expose: - "49392" environment: From 817e1144735d84e2403dfaf2e4a8e487051c7729 Mon Sep 17 00:00:00 2001 From: Andrew Camilleri Date: Tue, 13 Nov 2018 13:52:11 +0100 Subject: [PATCH 03/75] allow networks to be merged --- docker-compose-generator/src/DockerComposeDefinition.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docker-compose-generator/src/DockerComposeDefinition.cs b/docker-compose-generator/src/DockerComposeDefinition.cs index 3e8ad95..01ca5ff 100644 --- a/docker-compose-generator/src/DockerComposeDefinition.cs +++ b/docker-compose-generator/src/DockerComposeDefinition.cs @@ -57,6 +57,7 @@ namespace DockerGenerator } var services = new List>(); var volumes = new List>(); + var networks = new List>(); foreach (var doc in Fragments.Select(f => ParseDocument(f))) { @@ -69,6 +70,10 @@ namespace DockerGenerator { volumes.AddRange(fragmentVolumesRoot.Children); } + if (doc.Children.ContainsKey("networks") && doc.Children["networks"] is YamlMappingNode fragmentNetworksRoot) + { + networks.AddRange(fragmentNetworksRoot.Children); + } } @@ -76,6 +81,7 @@ namespace DockerGenerator output.Add("version", new YamlScalarNode("3") { Style = YamlDotNet.Core.ScalarStyle.DoubleQuoted }); output.Add("services", new YamlMappingNode(Merge(services))); output.Add("volumes", new YamlMappingNode(volumes)); + output.Add("networks", new YamlMappingNode(networks)); var result = serializer.Serialize(output); var outputFile = GetFilePath(); File.WriteAllText(outputFile, result.Replace("''", "")); From 94c62d7d190fedec71733336dfe8e7b6ec245749 Mon Sep 17 00:00:00 2001 From: Andrew Camilleri Date: Tue, 13 Nov 2018 14:04:06 +0100 Subject: [PATCH 04/75] rename to image --- README.md | 2 +- btcpay-setup.sh | 8 ++++---- .../docker-fragments/btcpayserver.yml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 55a4dde..881f1df 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ You can read [the article](https://medium.com/@BtcpayServer/hosting-btcpay-serve * `BTCPAY_HOST_SSHKEYFILE`: Optional, SSH private key that BTCPay can use to connect to this VM's SSH server. This key will be copied to BTCPay's data directory * `BTCPAY_SSHTRUSTEDFINGERPRINTS`: Optional, BTCPay will ensure that it is connecting to the expected SSH server by checking the host's public key against these fingerprints * `BTCPAYGEN_DOCKER_IMAGE`: Optional, Specify which generator image to use if you have customized the C# generator. Set to `btcpayserver/docker-compose-generator:local` to build the generator locally at runtime. -* `BTCPAY_VERSION`: Optional, Specify which btcpayserver image to use if you have a customized btcpayserver. +* `BTCPAY_IMAGE`: Optional, Specify which btcpayserver image to use if you have a customized btcpayserver. # Tooling diff --git a/btcpay-setup.sh b/btcpay-setup.sh index da09a4a..6a9c995 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -61,7 +61,7 @@ Environment variables: ACME_CA_URI: The API endpoint to ask for HTTPS certificate (default: https://acme-v01.api.letsencrypt.org/directory) BTCPAY_HOST_SSHKEYFILE: Optional, SSH private key that BTCPay can use to connect to this VM's SSH server. This key will be copied on BTCPay's data directory BTCPAYGEN_DOCKER_IMAGE: Allows you to specify a custom docker image for the generator (Default: btcpayserver/docker-compose-generator) - BTCPAY_VERSION: Allows you to specify the btcpayserver docker image to use over the default version. (Default: current stable version of btcpayserver) + BTCPAY_IMAGE: Allows you to specify the btcpayserver docker image to use over the default version. (Default: current stable version of btcpayserver) END } @@ -135,7 +135,7 @@ BTCPAYGEN_CRYPTO9:$BTCPAYGEN_CRYPTO9 BTCPAYGEN_REVERSEPROXY:$BTCPAYGEN_REVERSEPROXY BTCPAYGEN_LIGHTNING:$BTCPAYGEN_LIGHTNING BTCPAYGEN_ADDITIONAL_FRAGMENTS:$BTCPAYGEN_ADDITIONAL_FRAGMENTS -BTCPAY_VERSION:$BTCPAY_VERSION +BTCPAY_IMAGE:$BTCPAY_IMAGE ACME_CA_URI:$ACME_CA_URI ---------------------- Additional exported variables: @@ -185,7 +185,7 @@ export BTCPAY_ENV_FILE=\"$BTCPAY_ENV_FILE\" export BTCPAY_HOST_SSHKEYFILE=\"$BTCPAY_HOST_SSHKEYFILE\" if cat \$BTCPAY_ENV_FILE &> /dev/null; then export BTCPAY_HOST=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_HOST=\(.*\)$/\1/p')\" -export BTCPAY_VERSION=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_VERSION=\(.*\)$/\1/p')\" +export BTCPAY_IMAGE=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_IMAGE=\(.*\)$/\1/p')\" export LETSENCRYPT_EMAIL=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^LETSENCRYPT_EMAIL=\(.*\)$/\1/p')\" export NBITCOIN_NETWORK=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^NBITCOIN_NETWORK=\(.*\)$/\1/p')\" export LIGHTNING_ALIAS=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^LIGHTNING_ALIAS=\(.*\)$/\1/p')\" @@ -202,7 +202,7 @@ echo -e "BTCPay Server environment variables successfully saved in /etc/profile. touch $BTCPAY_ENV_FILE echo " BTCPAY_HOST=$BTCPAY_HOST -BTCPAY_VERSION=$BTCPAY_VERSION +BTCPAY_IMAGE=$BTCPAY_IMAGE ACME_CA_URI=$ACME_CA_URI NBITCOIN_NETWORK=$NBITCOIN_NETWORK LETSENCRYPT_EMAIL=$LETSENCRYPT_EMAIL diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index 1d02ca0..7bcd7ad 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_VERSION:-nicolasdorier/btcpayserver:nicolasdorier/btcpayserver:1.0.3.9} + image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:nicolasdorier/btcpayserver:1.0.3.9} expose: - "49392" environment: From 7ab399ace5312f3bc3ccec346899efe39b972c4f Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 13 Nov 2018 23:20:15 +0900 Subject: [PATCH 05/75] fix --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index 7bcd7ad..fb7d73f 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:nicolasdorier/btcpayserver:1.0.3.9} + image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.9} expose: - "49392" environment: From a350f4fe3667ce755414a3784a5329b38fffe7d8 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 16 Nov 2018 18:02:28 +0900 Subject: [PATCH 06/75] fix doc for no reverse proxy --- Production-NoReverseProxy/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Production-NoReverseProxy/README.md b/Production-NoReverseProxy/README.md index 0593d45..a57bf2d 100644 --- a/Production-NoReverseProxy/README.md +++ b/Production-NoReverseProxy/README.md @@ -33,6 +33,7 @@ With Powershell: $env:BTCPAY_ROOTPATH="/test"; $env:BTCPAY_PROTOCOL="http"; $env:BTCPAY_HOST="btcpay.example.com"; +$env:BTCPAYGEN_REVERSEPROXY="none"; .\build.ps1 docker-compose -f "Generated/docker-compose.generated.yml" up --remove-orphans -d ``` @@ -43,6 +44,7 @@ With Linux: export BTCPAY_ROOTPATH="/test" export BTCPAY_PROTOCOL="http" export BTCPAY_HOST="btcpay.example.com" +export BTCPAYGEN_REVERSEPROXY="none" ./build.sh docker-compose -f "Generated/docker-compose.generated.yml" up --remove-orphans -d ``` From 6ef0cf95a848d31354acc3ddace1ed0ca1334dd2 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 16 Nov 2018 22:37:21 +0900 Subject: [PATCH 07/75] Validate BTCPAY_HOST --- btcpay-setup.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index 6a9c995..14cc2a2 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -115,6 +115,15 @@ if [[ -f "$BTCPAY_HOST_SSHKEYFILE" ]]; then done fi +if [[ "$BTCPAYGEN_REVERSEPROXY" == "nginx" ]]; then + DOMAIN_NAME="$(echo "$BTCPAY_HOST" | grep -P '(?=^.{4,253}$)(^(?:[a-zA-Z0-9](?:(?:[a-zA-Z0-9\-]){0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$)')" + if [[ ! "$DOMAIN_NAME" ]]; then + echo "BTCPAYGEN_REVERSEPROXY is set to nginx, so BTCPAY_HOST must point on a domain name, but the current value ('$BTCPAY_HOST') is not a valid domain name." + return + fi + BTCPAY_HOST="$DOMAIN_NAME" +fi + echo " -------SETUP----------- Parameters passed: From 0e532c4123e99f47f01ba1de088745c0dbb676e4 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 16 Nov 2018 22:40:00 +0900 Subject: [PATCH 08/75] better error message --- btcpay-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index 14cc2a2..d62a88d 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -118,7 +118,7 @@ fi if [[ "$BTCPAYGEN_REVERSEPROXY" == "nginx" ]]; then DOMAIN_NAME="$(echo "$BTCPAY_HOST" | grep -P '(?=^.{4,253}$)(^(?:[a-zA-Z0-9](?:(?:[a-zA-Z0-9\-]){0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$)')" if [[ ! "$DOMAIN_NAME" ]]; then - echo "BTCPAYGEN_REVERSEPROXY is set to nginx, so BTCPAY_HOST must point on a domain name, but the current value ('$BTCPAY_HOST') is not a valid domain name." + echo "BTCPAYGEN_REVERSEPROXY is set to nginx, so BTCPAY_HOST must be a domain name which point to this server (with port 80 and 443 open), but the current value of BTCPAY_HOST ('$BTCPAY_HOST') is not a valid domain name." return fi BTCPAY_HOST="$DOMAIN_NAME" From 764e64876cecdcd5e64e42db4f13efb8e0d6f8da Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 17 Nov 2018 00:09:51 +0900 Subject: [PATCH 09/75] bump docker-compose generator --- docker-compose-generator/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose-generator/Dockerfile b/docker-compose-generator/Dockerfile index 49e8be0..0614d7f 100644 --- a/docker-compose-generator/Dockerfile +++ b/docker-compose-generator/Dockerfile @@ -1,4 +1,4 @@ -FROM microsoft/dotnet:2.1.403-sdk-alpine3.7 AS builder +FROM microsoft/dotnet:2.1.500-sdk-alpine3.7 AS builder WORKDIR /source COPY src/docker-compose-generator.csproj docker-compose-generator.csproj # Cache some dependencies @@ -6,7 +6,7 @@ RUN dotnet restore COPY src/. . RUN dotnet publish --output /app/ --configuration Release -FROM microsoft/dotnet:2.1.5-runtime-alpine3.7 +FROM microsoft/dotnet:2.1.6-runtime-alpine3.7 WORKDIR /app RUN mkdir /datadir From 7a2cb9b6ddc626d8a02c298075613517fa84a195 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 17 Nov 2018 00:28:36 +0900 Subject: [PATCH 10/75] bump --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- docker-compose-generator/docker-fragments/nbxplorer.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index fb7d73f..21bea27 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.9} + image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.11} expose: - "49392" environment: diff --git a/docker-compose-generator/docker-fragments/nbxplorer.yml b/docker-compose-generator/docker-fragments/nbxplorer.yml index 3ab7dd8..ca5f5a1 100644 --- a/docker-compose-generator/docker-fragments/nbxplorer.yml +++ b/docker-compose-generator/docker-fragments/nbxplorer.yml @@ -4,7 +4,7 @@ services: nbxplorer: restart: unless-stopped - image: nicolasdorier/nbxplorer:1.1.0.12 + image: nicolasdorier/nbxplorer:1.1.0.18 expose: - "32838" environment: From d7a8380cca1204d9395cd2f5b4b99772e951e794 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 17 Nov 2018 01:23:24 +0900 Subject: [PATCH 11/75] bump --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index 21bea27..fd9d301 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.11} + image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.12} expose: - "49392" environment: From f9cc674197cf9b0a2ffd9ec41052164cc020eb8d Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 17 Nov 2018 01:43:38 +0900 Subject: [PATCH 12/75] bump --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index fd9d301..2d21904 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.12} + image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.13} expose: - "49392" environment: From 055b4b76c5f9595e71cec1d36cf2e2a135557121 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 17 Nov 2018 12:02:12 +0900 Subject: [PATCH 13/75] bump --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index 2d21904..3979ee4 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.13} + image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.15} expose: - "49392" environment: From 55f99575f8d9ba5377d857581f320be0ad0756e3 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 17 Nov 2018 12:52:06 +0900 Subject: [PATCH 14/75] bump --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index 3979ee4..59397a7 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.15} + image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.16} expose: - "49392" environment: From 912a0bea4648a698f50a73ab8d10bf4b20249cb6 Mon Sep 17 00:00:00 2001 From: rockstardev Date: Fri, 23 Nov 2018 07:43:34 -0600 Subject: [PATCH 15/75] Build docker-compose-generator multiarch Docker images --- .circleci/config.yml | 71 +++++++++++++++++++ .../{Dockerfile => Dockerfile.linuxamd64} | 6 +- .../Dockerfile.linuxarm32v7 | 22 ++++++ .../docker-compose-generator.sln | 18 +++-- 4 files changed, 111 insertions(+), 6 deletions(-) create mode 100644 .circleci/config.yml rename docker-compose-generator/{Dockerfile => Dockerfile.linuxamd64} (95%) create mode 100644 docker-compose-generator/Dockerfile.linuxarm32v7 diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..fb3ad99 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,71 @@ +version: 2 +jobs: + # Define in CircleCi Project Variables: $DOCKERHUB_REPO, $DOCKERHUB_USER, $DOCKERHUB_PASS + # Publish jobs require those variables + publish_docker_linuxamd64: + machine: + docker_layer_caching: true + steps: + - checkout + - run: + command: | + cd docker-compose-generator + sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS + sudo docker build --pull -t $DOCKERHUB_REPO:latest-amd64 -f Dockerfile.linuxamd64 . + sudo docker push $DOCKERHUB_REPO:latest-amd64 + + publish_docker_linuxarm: + machine: + docker_layer_caching: true + steps: + - checkout + - run: + command: | + sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset + # + cd docker-compose-generator + sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS + sudo docker build --pull -t $DOCKERHUB_REPO:latest-arm32v7 -f Dockerfile.linuxarm32v7 . + sudo docker push $DOCKERHUB_REPO:latest-arm32v7 + + publish_docker_multiarch: + machine: + enabled: true + image: circleci/classic:201808-01 + steps: + - run: + command: | + # Turn on Experimental features + sudo mkdir $HOME/.docker + sudo sh -c 'echo "{ \"experimental\": \"enabled\" }" >> $HOME/.docker/config.json' + # + sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS + # + sudo docker manifest create --amend $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-amd64 $DOCKERHUB_REPO:latest-arm32v7 + sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-amd64 --os linux --arch amd64 + sudo docker manifest annotate $DOCKERHUB_REPO:latest $DOCKERHUB_REPO:latest-arm32v7 --os linux --arch arm --variant v7 + sudo docker manifest push $DOCKERHUB_REPO:latest -p + +workflows: + version: 2 + build_and_test: + jobs: + - test + + publish: + jobs: + - publish_docker_linuxamd64: + filters: + branches: + only: feature/circleci + - publish_docker_linuxarm: + filters: + branches: + only: feature/circleci + - publish_docker_multiarch: + requires: + - publish_docker_linuxamd64 + - publish_docker_linuxarm + filters: + branches: + only: feature/circleci diff --git a/docker-compose-generator/Dockerfile b/docker-compose-generator/Dockerfile.linuxamd64 similarity index 95% rename from docker-compose-generator/Dockerfile rename to docker-compose-generator/Dockerfile.linuxamd64 index 0614d7f..04b379a 100644 --- a/docker-compose-generator/Dockerfile +++ b/docker-compose-generator/Dockerfile.linuxamd64 @@ -1,3 +1,4 @@ +# FROM microsoft/dotnet:2.1.500-sdk-alpine3.7 AS builder WORKDIR /source COPY src/docker-compose-generator.csproj docker-compose-generator.csproj @@ -6,10 +7,11 @@ RUN dotnet restore COPY src/. . RUN dotnet publish --output /app/ --configuration Release +# FROM microsoft/dotnet:2.1.6-runtime-alpine3.7 -WORKDIR /app +WORKDIR /datadir -RUN mkdir /datadir +WORKDIR /app ENV APP_DATADIR=/datadir VOLUME /datadir diff --git a/docker-compose-generator/Dockerfile.linuxarm32v7 b/docker-compose-generator/Dockerfile.linuxarm32v7 new file mode 100644 index 0000000..d2deb17 --- /dev/null +++ b/docker-compose-generator/Dockerfile.linuxarm32v7 @@ -0,0 +1,22 @@ +# This is a manifest image, will pull the image with the same arch as the builder machine +FROM microsoft/dotnet:2.1.500-sdk AS builder +WORKDIR /source +COPY src/docker-compose-generator.csproj docker-compose-generator.csproj +# Cache some dependencies +RUN dotnet restore +COPY src/. . +RUN dotnet publish --output /app/ --configuration Release + +# Force the builder machine to take make an arm runtime image. This is fine as long as the builder does not run any program +FROM microsoft/dotnet:2.1.6-aspnetcore-runtime-stretch-slim-arm32v7 +WORKDIR /datadir + +WORKDIR /app +ENV APP_DATADIR=/datadir +VOLUME /datadir + +ENV INSIDE_CONTAINER=1 + +COPY --from=builder "/app" . + +ENTRYPOINT ["dotnet", "docker-compose-generator.dll"] diff --git a/docker-compose-generator/docker-compose-generator.sln b/docker-compose-generator/docker-compose-generator.sln index 31202ff..2cd718a 100644 --- a/docker-compose-generator/docker-compose-generator.sln +++ b/docker-compose-generator/docker-compose-generator.sln @@ -3,7 +3,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.26124.0 MinimumVisualStudioVersion = 15.0.26124.0 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "docker-compose-generator", "src/docker-compose-generator.csproj", "{0900AF35-48E8-46E2-85B3-BA3847EE0844}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "docker-compose-generator", "src\docker-compose-generator.csproj", "{0900AF35-48E8-46E2-85B3-BA3847EE0844}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{8C1C711D-DEF1-474C-A9F6-AAE142412528}" + ProjectSection(SolutionItems) = preProject + ..\.circleci\config.yml = ..\.circleci\config.yml + Dockerfile.linuxamd64 = Dockerfile.linuxamd64 + Dockerfile.linuxarm32v7 = Dockerfile.linuxarm32v7 + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -14,9 +21,6 @@ Global Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {0900AF35-48E8-46E2-85B3-BA3847EE0844}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0900AF35-48E8-46E2-85B3-BA3847EE0844}.Debug|Any CPU.Build.0 = Debug|Any CPU @@ -31,4 +35,10 @@ Global {0900AF35-48E8-46E2-85B3-BA3847EE0844}.Release|x86.ActiveCfg = Release|Any CPU {0900AF35-48E8-46E2-85B3-BA3847EE0844}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {CADA76A8-7F2E-4132-900B-330F0D2D722B} + EndGlobalSection EndGlobal From 6ff5ee6d296f8ca13b92234175415529ea06a3bc Mon Sep 17 00:00:00 2001 From: rockstardev Date: Fri, 23 Nov 2018 07:44:44 -0600 Subject: [PATCH 16/75] Updating trigger to work on dcg-latest branch --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fb3ad99..e970618 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -57,15 +57,15 @@ workflows: - publish_docker_linuxamd64: filters: branches: - only: feature/circleci + only: dcg-latest - publish_docker_linuxarm: filters: branches: - only: feature/circleci + only: dcg-latest - publish_docker_multiarch: requires: - publish_docker_linuxamd64 - publish_docker_linuxarm filters: branches: - only: feature/circleci + only: dcg-latest From 164e583736475e4fc15620b43dec66dbd645b132 Mon Sep 17 00:00:00 2001 From: rockstardev Date: Fri, 23 Nov 2018 08:17:21 -0600 Subject: [PATCH 17/75] Adding dogecoin docker fragment --- .../docker-fragments/dogecoin.yml | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 docker-compose-generator/docker-fragments/dogecoin.yml diff --git a/docker-compose-generator/docker-fragments/dogecoin.yml b/docker-compose-generator/docker-fragments/dogecoin.yml new file mode 100644 index 0000000..11167e3 --- /dev/null +++ b/docker-compose-generator/docker-fragments/dogecoin.yml @@ -0,0 +1,40 @@ +version: "3" + +services: + dogecoind: + restart: unless-stopped + container_name: btcpayserver_dogecoind + image: btcpayserver/dogecoin:1.10.0 + environment: + BITCOIN_EXTRA_ARGS: | + rpcuser=ceiwHEbqWI83 + rpcpassword=DwubwWsoo3 + ${NBITCOIN_NETWORK:-regtest}=1 + server=1 + rpcport=22555 + port=22556 + whitelist=0.0.0.0/0 + ports: + - "22555:22555" + expose: + - "22555" # RPC + - "22556" # P2P + volumes: + - "dogecoin_datadir:/data" + nbxplorer: + environment: + NBXPLORER_CHAINS: "doge" + NBXPLORER_VIARPCURL: http://dogecoind:22555/ + NBXPLORER_VIANODEENDPOINT: dogecoind:22556 + NBXPLORER_DOGERPCUSER: ceiwHEbqWI83 + NBXPLORER_DOGERPCPASSWORD: DwubwWsoo3 + links: + - dogecoind + volumes: + - "dogecoin_datadir:/root/.dogecoin" + btcpayserver: + environment: + BTCPAY_CHAINS: "doge" + BTCPAY_DOGEEXPLORERURL: http://nbxplorer:32838/ +volumes: + dogecoin_datadir: From ebce6c4b2416deec3bca4b0500310acea68519a7 Mon Sep 17 00:00:00 2001 From: rockstardev Date: Fri, 23 Nov 2018 08:52:05 -0600 Subject: [PATCH 18/75] Updating image location, bugfixing DOGECOIN_EXTRA_ARGS, comment --- docker-compose-generator/docker-fragments/dogecoin.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docker-compose-generator/docker-fragments/dogecoin.yml b/docker-compose-generator/docker-fragments/dogecoin.yml index 11167e3..b5777bf 100644 --- a/docker-compose-generator/docker-fragments/dogecoin.yml +++ b/docker-compose-generator/docker-fragments/dogecoin.yml @@ -4,9 +4,9 @@ services: dogecoind: restart: unless-stopped container_name: btcpayserver_dogecoind - image: btcpayserver/dogecoin:1.10.0 + image: rockstardev/dogecoin:1.10.0 environment: - BITCOIN_EXTRA_ARGS: | + DOGECOIN_EXTRA_ARGS: | rpcuser=ceiwHEbqWI83 rpcpassword=DwubwWsoo3 ${NBITCOIN_NETWORK:-regtest}=1 @@ -14,6 +14,9 @@ services: rpcport=22555 port=22556 whitelist=0.0.0.0/0 + # Reducing memory usage of dogecoind. Don't try running this container without at least 2 GB of memory + # https://www.reddit.com/r/dogecoin/comments/5wynqe/reducing_memory_usage_of_dogecoind/ + dbcache=50 ports: - "22555:22555" expose: From 849593230ef3365c9a841be8aaf42487e4e6d8df Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 24 Nov 2018 13:14:49 +0900 Subject: [PATCH 19/75] no build_and_test --- .circleci/config.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e970618..89778d6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -48,10 +48,6 @@ jobs: workflows: version: 2 - build_and_test: - jobs: - - test - publish: jobs: - publish_docker_linuxamd64: From c51692a6b15b43aded653384e0dbf87cc2922a54 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 24 Nov 2018 21:32:15 +0900 Subject: [PATCH 20/75] simplify btcpay-setup.sh --- btcpay-setup.sh | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index d62a88d..471fa8e 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -192,15 +192,8 @@ export BTCPAY_DOCKER_COMPOSE=\"$BTCPAY_DOCKER_COMPOSE\" export BTCPAY_BASE_DIRECTORY=\"$BTCPAY_BASE_DIRECTORY\" export BTCPAY_ENV_FILE=\"$BTCPAY_ENV_FILE\" export BTCPAY_HOST_SSHKEYFILE=\"$BTCPAY_HOST_SSHKEYFILE\" -if cat \$BTCPAY_ENV_FILE &> /dev/null; then -export BTCPAY_HOST=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_HOST=\(.*\)$/\1/p')\" -export BTCPAY_IMAGE=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_IMAGE=\(.*\)$/\1/p')\" -export LETSENCRYPT_EMAIL=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^LETSENCRYPT_EMAIL=\(.*\)$/\1/p')\" -export NBITCOIN_NETWORK=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^NBITCOIN_NETWORK=\(.*\)$/\1/p')\" -export LIGHTNING_ALIAS=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^LIGHTNING_ALIAS=\(.*\)$/\1/p')\" -export ACME_CA_URI=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^ACME_CA_URI=\(.*\)$/\1/p')\" -export BTCPAY_SSHKEYFILE=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_SSHKEYFILE=\(.*\)$/\1/p')\" -export BTCPAY_SSHTRUSTEDFINGERPRINTS=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_SSHTRUSTEDFINGERPRINTS=\(.*\)$/\1/p')\" +if cat \"\$BTCPAY_ENV_FILE\" &> /dev/null; then + export \$(grep -v '^#' \"\$BTCPAY_ENV_FILE\" | xargs) fi " > /etc/profile.d/btcpay-env.sh chmod +x /etc/profile.d/btcpay-env.sh From 221b19216b3292f68edd0867ed2cf9cf69fc27d2 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 11:54:35 +0900 Subject: [PATCH 21/75] Rename docker files --- .circleci/config.yml | 10 +++++----- docker-compose-generator/docker-compose-generator.sln | 4 ++-- .../{Dockerfile.linuxamd64 => linuxamd64.Dockerfile} | 0 ...Dockerfile.linuxarm32v7 => linuxarm32v7.Dockerfile} | 0 4 files changed, 7 insertions(+), 7 deletions(-) rename docker-compose-generator/{Dockerfile.linuxamd64 => linuxamd64.Dockerfile} (100%) rename docker-compose-generator/{Dockerfile.linuxarm32v7 => linuxarm32v7.Dockerfile} (100%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 89778d6..0d8412e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,10 +11,10 @@ jobs: command: | cd docker-compose-generator sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS - sudo docker build --pull -t $DOCKERHUB_REPO:latest-amd64 -f Dockerfile.linuxamd64 . + sudo docker build --pull -t $DOCKERHUB_REPO:latest-amd64 -f linuxamd64.Dockerfile . sudo docker push $DOCKERHUB_REPO:latest-amd64 - publish_docker_linuxarm: + publish_docker_linuxarm32v7: machine: docker_layer_caching: true steps: @@ -25,7 +25,7 @@ jobs: # cd docker-compose-generator sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS - sudo docker build --pull -t $DOCKERHUB_REPO:latest-arm32v7 -f Dockerfile.linuxarm32v7 . + sudo docker build --pull -t $DOCKERHUB_REPO:latest-arm32v7 -f linuxarm32v7.Dockerfile . sudo docker push $DOCKERHUB_REPO:latest-arm32v7 publish_docker_multiarch: @@ -54,14 +54,14 @@ workflows: filters: branches: only: dcg-latest - - publish_docker_linuxarm: + - publish_docker_linuxarm32v7: filters: branches: only: dcg-latest - publish_docker_multiarch: requires: - publish_docker_linuxamd64 - - publish_docker_linuxarm + - publish_docker_linuxarm32v7 filters: branches: only: dcg-latest diff --git a/docker-compose-generator/docker-compose-generator.sln b/docker-compose-generator/docker-compose-generator.sln index 2cd718a..30e85e0 100644 --- a/docker-compose-generator/docker-compose-generator.sln +++ b/docker-compose-generator/docker-compose-generator.sln @@ -8,8 +8,8 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{8C1C711D-DEF1-474C-A9F6-AAE142412528}" ProjectSection(SolutionItems) = preProject ..\.circleci\config.yml = ..\.circleci\config.yml - Dockerfile.linuxamd64 = Dockerfile.linuxamd64 - Dockerfile.linuxarm32v7 = Dockerfile.linuxarm32v7 + linuxamd64.Dockerfile = linuxamd64.Dockerfile + linuxarm32v7.Dockerfile = linuxarm32v7.Dockerfile EndProjectSection EndProject Global diff --git a/docker-compose-generator/Dockerfile.linuxamd64 b/docker-compose-generator/linuxamd64.Dockerfile similarity index 100% rename from docker-compose-generator/Dockerfile.linuxamd64 rename to docker-compose-generator/linuxamd64.Dockerfile diff --git a/docker-compose-generator/Dockerfile.linuxarm32v7 b/docker-compose-generator/linuxarm32v7.Dockerfile similarity index 100% rename from docker-compose-generator/Dockerfile.linuxarm32v7 rename to docker-compose-generator/linuxarm32v7.Dockerfile From 9fbf4ca3cc14bd0c0ab509d8a2f622fa62e249a3 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 11:55:11 +0900 Subject: [PATCH 22/75] Change bitcoin core base image --- docker-compose-generator/docker-fragments/bitcoin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/bitcoin.yml b/docker-compose-generator/docker-fragments/bitcoin.yml index b41f881..84a10ea 100644 --- a/docker-compose-generator/docker-fragments/bitcoin.yml +++ b/docker-compose-generator/docker-fragments/bitcoin.yml @@ -4,7 +4,7 @@ services: bitcoind: restart: unless-stopped container_name: btcpayserver_bitcoind - image: nicolasdorier/docker-bitcoin:0.17.0 + image: btcpayserver/bitcoin:0.17.0 environment: BITCOIN_NETWORK: ${NBITCOIN_NETWORK:-regtest} BITCOIN_EXTRA_ARGS: | From 0d079432a26316d65fd5e46a280ac8920b8f69db Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 11:59:45 +0900 Subject: [PATCH 23/75] bump nbx --- docker-compose-generator/docker-fragments/nbxplorer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/nbxplorer.yml b/docker-compose-generator/docker-fragments/nbxplorer.yml index ca5f5a1..511d1af 100644 --- a/docker-compose-generator/docker-fragments/nbxplorer.yml +++ b/docker-compose-generator/docker-fragments/nbxplorer.yml @@ -4,7 +4,7 @@ services: nbxplorer: restart: unless-stopped - image: nicolasdorier/nbxplorer:1.1.0.18 + image: nicolasdorier/nbxplorer:2.0.0.1 expose: - "32838" environment: From f1c6b39c44651d06acedcb1e5842fa299fb1c439 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 12:01:03 +0900 Subject: [PATCH 24/75] fix nbx --- docker-compose-generator/docker-fragments/nbxplorer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/nbxplorer.yml b/docker-compose-generator/docker-fragments/nbxplorer.yml index 511d1af..b979eba 100644 --- a/docker-compose-generator/docker-fragments/nbxplorer.yml +++ b/docker-compose-generator/docker-fragments/nbxplorer.yml @@ -4,7 +4,7 @@ services: nbxplorer: restart: unless-stopped - image: nicolasdorier/nbxplorer:2.0.0.1 + image: dgarage/nbxplorer:2.0.0.1 expose: - "32838" environment: From 7a2a772b12e947b50de6cbafcbe9413de8c0a64a Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 12:01:19 +0900 Subject: [PATCH 25/75] Revert "fix nbx" This reverts commit f1c6b39c44651d06acedcb1e5842fa299fb1c439. --- docker-compose-generator/docker-fragments/nbxplorer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/nbxplorer.yml b/docker-compose-generator/docker-fragments/nbxplorer.yml index b979eba..511d1af 100644 --- a/docker-compose-generator/docker-fragments/nbxplorer.yml +++ b/docker-compose-generator/docker-fragments/nbxplorer.yml @@ -4,7 +4,7 @@ services: nbxplorer: restart: unless-stopped - image: dgarage/nbxplorer:2.0.0.1 + image: nicolasdorier/nbxplorer:2.0.0.1 expose: - "32838" environment: From 65db53b9f97d65f1ac6c0445767cc3d12dc8e821 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 12:17:48 +0900 Subject: [PATCH 26/75] add echo about a setup step taking time --- btcpay-setup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index 471fa8e..b873f21 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -285,6 +285,7 @@ ExecReload=/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd \"\$(dirname \$BTC WantedBy=multi-user.target" > /etc/systemd/system/btcpayserver.service echo -e "BTCPay Server systemd configured in /etc/systemd/system/btcpayserver.service\n" +echo "BTCPay Server starting... this can take 5 to 10 minutes..." systemctl daemon-reload systemctl enable btcpayserver systemctl start btcpayserver From b452e3482e16f71454286ba6c37ee741dce83830 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 12:23:35 +0900 Subject: [PATCH 27/75] update btcpay image --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index 59397a7..293effb 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_IMAGE:-nicolasdorier/btcpayserver:1.0.3.16} + image: ${BTCPAY_IMAGE:-btcpayserver/btcpayserver:1.0.3.17} expose: - "49392" environment: From aac9d0fb9e58bc359048e3ce3e860e68ac001835 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 16:25:24 +0900 Subject: [PATCH 28/75] update docker-gen --- docker-compose-generator/docker-fragments/nginx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/nginx.yml b/docker-compose-generator/docker-fragments/nginx.yml index d8e1081..e41ee03 100644 --- a/docker-compose-generator/docker-fragments/nginx.yml +++ b/docker-compose-generator/docker-fragments/nginx.yml @@ -18,7 +18,7 @@ services: nginx-gen: restart: unless-stopped - image: jwilder/docker-gen + image: btcpayserver/docker-gen:0.7.4 container_name: nginx-gen volumes: - "/var/run/docker.sock:/tmp/docker.sock:ro" From eec78bc46052411760cbc504b2d85b97ab347fa0 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 17:25:23 +0900 Subject: [PATCH 29/75] bump proxy companion --- docker-compose-generator/docker-fragments/nginx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/nginx.yml b/docker-compose-generator/docker-fragments/nginx.yml index e41ee03..86f8655 100644 --- a/docker-compose-generator/docker-fragments/nginx.yml +++ b/docker-compose-generator/docker-fragments/nginx.yml @@ -33,7 +33,7 @@ services: letsencrypt-nginx-proxy-companion: restart: unless-stopped - image: jrcs/letsencrypt-nginx-proxy-companion + image: btcpayserver/letsencrypt-nginx-proxy-companion:1.9.1 container_name: letsencrypt-nginx-proxy-companion volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" From 697112b843b4ef69a9777627d05471998b5e4676 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 17:54:56 +0900 Subject: [PATCH 30/75] bump companion --- docker-compose-generator/docker-fragments/nginx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/nginx.yml b/docker-compose-generator/docker-fragments/nginx.yml index 86f8655..9084d5a 100644 --- a/docker-compose-generator/docker-fragments/nginx.yml +++ b/docker-compose-generator/docker-fragments/nginx.yml @@ -33,7 +33,7 @@ services: letsencrypt-nginx-proxy-companion: restart: unless-stopped - image: btcpayserver/letsencrypt-nginx-proxy-companion:1.9.1 + image: btcpayserver/letsencrypt-nginx-proxy-companion:1.10.0 container_name: letsencrypt-nginx-proxy-companion volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" From 043648eac461370de14fb020e0d5ebbe10f62bfe Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 19:25:45 +0900 Subject: [PATCH 31/75] Use get-docket for setting up docker --- btcpay-setup.sh | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index b873f21..790823d 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -223,33 +223,31 @@ if ! [ -x "$(command -v docker)" ] || ! [ -x "$(command -v docker-compose)" ]; t ca-certificates \ software-properties-common \ 2>error - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - - if [ $(lsb_release -cs) == "bionic" ]; then - # Bionic not in the repo yet, see https://linuxconfig.org/how-to-install-docker-on-ubuntu-18-04-bionic-beaver - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu artful stable" - else - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" + if ! [ -x "$(command -v docker)" ]; then + echo "Trying to install docker..." + curl -fsSL https://get.docker.com -o get-docker.sh + chmod +x get-docker.sh + sh get-docker.sh + rm get-docker.sh + fi + if ! [ -x "$(command -v docker-compose)" ]; then + if [[ "$(uname -s)" == "x86_64" ]]; then + DOCKER_COMPOSE_DOWNLOAD="https://github.com/docker/compose/releases/download/1.17.1/docker-compose-$(uname -s)-$(uname -m)" + echo "Trying to install docker-compose by downloading on $DOCKER_COMPOSE_DOWNLOAD" + curl -L "$DOCKER_COMPOSE_DOWNLOAD" -o /usr/local/bin/docker-compose + chmod +x /usr/local/bin/docker-compose + fi fi - apt-get update 2>error fi if ! [ -x "$(command -v docker)" ]; then - if apt-get install -y docker-ce ; then - echo "Docker installed" - else - echo "Failed to install docker" - return - fi -else - echo -e "docker is already installed\n" + echo "Failed to install docker" + return fi -# Install docker-compose if ! [ -x "$(command -v docker-compose)" ]; then - curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose - chmod +x /usr/local/bin/docker-compose -else - echo -e "docker-compose is already installed\n" + echo "Failed to install docker-compose" + return fi # Generate the docker compose in BTCPAY_DOCKER_COMPOSE From 6547d61b7d9aab824c28053ac1c22603d391eb13 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 19:33:22 +0900 Subject: [PATCH 32/75] fix setup --- btcpay-setup.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index 790823d..fd7ffa0 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -230,15 +230,15 @@ if ! [ -x "$(command -v docker)" ] || ! [ -x "$(command -v docker-compose)" ]; t sh get-docker.sh rm get-docker.sh fi - if ! [ -x "$(command -v docker-compose)" ]; then - if [[ "$(uname -s)" == "x86_64" ]]; then - DOCKER_COMPOSE_DOWNLOAD="https://github.com/docker/compose/releases/download/1.17.1/docker-compose-$(uname -s)-$(uname -m)" - echo "Trying to install docker-compose by downloading on $DOCKER_COMPOSE_DOWNLOAD" - curl -L "$DOCKER_COMPOSE_DOWNLOAD" -o /usr/local/bin/docker-compose - chmod +x /usr/local/bin/docker-compose - fi +if ! [ -x "$(command -v docker-compose)" ]; then + if [[ "$(uname -m)" == "x86_64" ]]; then + DOCKER_COMPOSE_DOWNLOAD="https://github.com/docker/compose/releases/download/1.17.1/docker-compose-$(uname -s)-$(uname -m)" + echo "Trying to install docker-compose by downloading on $DOCKER_COMPOSE_DOWNLOAD" + curl -L "$DOCKER_COMPOSE_DOWNLOAD" -o /usr/local/bin/docker-compose + chmod +x /usr/local/bin/docker-compose fi fi +fi if ! [ -x "$(command -v docker)" ]; then echo "Failed to install docker" From 50c58f5ba626c83155d8315eaf224edfa40e7e98 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Mon, 26 Nov 2018 19:34:51 +0900 Subject: [PATCH 33/75] fix indent --- btcpay-setup.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index fd7ffa0..ae75e80 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -230,15 +230,15 @@ if ! [ -x "$(command -v docker)" ] || ! [ -x "$(command -v docker-compose)" ]; t sh get-docker.sh rm get-docker.sh fi -if ! [ -x "$(command -v docker-compose)" ]; then - if [[ "$(uname -m)" == "x86_64" ]]; then - DOCKER_COMPOSE_DOWNLOAD="https://github.com/docker/compose/releases/download/1.17.1/docker-compose-$(uname -s)-$(uname -m)" - echo "Trying to install docker-compose by downloading on $DOCKER_COMPOSE_DOWNLOAD" - curl -L "$DOCKER_COMPOSE_DOWNLOAD" -o /usr/local/bin/docker-compose - chmod +x /usr/local/bin/docker-compose + if ! [ -x "$(command -v docker-compose)" ]; then + if [[ "$(uname -m)" == "x86_64" ]]; then + DOCKER_COMPOSE_DOWNLOAD="https://github.com/docker/compose/releases/download/1.17.1/docker-compose-$(uname -s)-$(uname -m)" + echo "Trying to install docker-compose by downloading on $DOCKER_COMPOSE_DOWNLOAD" + curl -L "$DOCKER_COMPOSE_DOWNLOAD" -o /usr/local/bin/docker-compose + chmod +x /usr/local/bin/docker-compose + fi fi fi -fi if ! [ -x "$(command -v docker)" ]; then echo "Failed to install docker" From 6eb9a46d18e35cc82d93367e3a93cc2af6b1147d Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 27 Nov 2018 11:23:50 +0900 Subject: [PATCH 34/75] do not apt-get if curl is already installed --- btcpay-setup.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index ae75e80..0881af1 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -216,13 +216,15 @@ echo -e "BTCPay Server docker-compose parameters saved in $BTCPAY_ENV_FILE\n" . /etc/profile.d/btcpay-env.sh if ! [ -x "$(command -v docker)" ] || ! [ -x "$(command -v docker-compose)" ]; then - apt-get update 2>error - apt-get install -y \ - curl \ - apt-transport-https \ - ca-certificates \ - software-properties-common \ - 2>error + if ! [ -x "$(command -v curl)" ]; then + apt-get update 2>error + apt-get install -y \ + curl \ + apt-transport-https \ + ca-certificates \ + software-properties-common \ + 2>error + fi if ! [ -x "$(command -v docker)" ]; then echo "Trying to install docker..." curl -fsSL https://get.docker.com -o get-docker.sh From 8e1ad95ad10d3db59a22f3568bdd08ebd867ad11 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 27 Nov 2018 11:41:11 +0900 Subject: [PATCH 35/75] do not need to install curl, as get-docker.sh install it for us --- btcpay-setup.sh | 9 --------- 1 file changed, 9 deletions(-) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index 0881af1..641e77b 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -216,15 +216,6 @@ echo -e "BTCPay Server docker-compose parameters saved in $BTCPAY_ENV_FILE\n" . /etc/profile.d/btcpay-env.sh if ! [ -x "$(command -v docker)" ] || ! [ -x "$(command -v docker-compose)" ]; then - if ! [ -x "$(command -v curl)" ]; then - apt-get update 2>error - apt-get install -y \ - curl \ - apt-transport-https \ - ca-certificates \ - software-properties-common \ - 2>error - fi if ! [ -x "$(command -v docker)" ]; then echo "Trying to install docker..." curl -fsSL https://get.docker.com -o get-docker.sh From 97eefe38678289334c01557d99fb0ec43eaa95a4 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 27 Nov 2018 11:41:58 +0900 Subject: [PATCH 36/75] Revert "do not need to install curl, as get-docker.sh install it for us" This reverts commit 8e1ad95ad10d3db59a22f3568bdd08ebd867ad11. --- btcpay-setup.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index 641e77b..0881af1 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -216,6 +216,15 @@ echo -e "BTCPay Server docker-compose parameters saved in $BTCPAY_ENV_FILE\n" . /etc/profile.d/btcpay-env.sh if ! [ -x "$(command -v docker)" ] || ! [ -x "$(command -v docker-compose)" ]; then + if ! [ -x "$(command -v curl)" ]; then + apt-get update 2>error + apt-get install -y \ + curl \ + apt-transport-https \ + ca-certificates \ + software-properties-common \ + 2>error + fi if ! [ -x "$(command -v docker)" ]; then echo "Trying to install docker..." curl -fsSL https://get.docker.com -o get-docker.sh From 4273e97d373a8b9c3860314862b39dc545c3c39f Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 27 Nov 2018 13:08:00 +0900 Subject: [PATCH 37/75] Use the docker-compose-builder for armv32 docker-compose deployment --- btcpay-setup.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index 0881af1..026c846 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -235,9 +235,16 @@ if ! [ -x "$(command -v docker)" ] || ! [ -x "$(command -v docker-compose)" ]; t if ! [ -x "$(command -v docker-compose)" ]; then if [[ "$(uname -m)" == "x86_64" ]]; then DOCKER_COMPOSE_DOWNLOAD="https://github.com/docker/compose/releases/download/1.17.1/docker-compose-$(uname -s)-$(uname -m)" - echo "Trying to install docker-compose by downloading on $DOCKER_COMPOSE_DOWNLOAD" + echo "Trying to install docker-compose by downloading on $DOCKER_COMPOSE_DOWNLOAD ($(uname -m))" curl -L "$DOCKER_COMPOSE_DOWNLOAD" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose + else + echo "Trying to install docker-compose by using the docker-compose-builder ($(uname -m))" + ! [ -d "dist" ] && mkdir dist + docker run --rm -ti -v "$(pwd)/dist:/dist" btcpayserver/docker-compose-builder:1.22.0 + mv dist/docker-compose /usr/local/bin/docker-compose + chmod +x /usr/local/bin/docker-compose + rm -rf "dist" fi fi fi From 973066aaf2e289a7980698a68c9a0504742c0a9f Mon Sep 17 00:00:00 2001 From: Andrew Camilleri Date: Tue, 27 Nov 2018 11:46:51 +0100 Subject: [PATCH 38/75] add missing doge-cli scripts --- dogecoin-cli.ps1 | 1 + dogecoin-cli.sh | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 dogecoin-cli.ps1 create mode 100644 dogecoin-cli.sh diff --git a/dogecoin-cli.ps1 b/dogecoin-cli.ps1 new file mode 100644 index 0000000..7d49051 --- /dev/null +++ b/dogecoin-cli.ps1 @@ -0,0 +1 @@ +docker exec -ti btcpayserver_dogecoind dogecoin-cli -datadir="/data" $args diff --git a/dogecoin-cli.sh b/dogecoin-cli.sh new file mode 100644 index 0000000..733ea87 --- /dev/null +++ b/dogecoin-cli.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker exec -ti btcpayserver_dogecoind dogecoin-cli -datadir="/data" "$@" From 7ab91baaafbe1c5bd6483f90db0bfe637c48ba2b Mon Sep 17 00:00:00 2001 From: Andrew Camilleri Date: Tue, 27 Nov 2018 12:08:49 +0100 Subject: [PATCH 39/75] add crypto definition for dogecoin --- docker-compose-generator/src/CryptoDefinition.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docker-compose-generator/src/CryptoDefinition.cs b/docker-compose-generator/src/CryptoDefinition.cs index 27c638e..4798b56 100644 --- a/docker-compose-generator/src/CryptoDefinition.cs +++ b/docker-compose-generator/src/CryptoDefinition.cs @@ -65,6 +65,11 @@ namespace DockerGenerator { Crypto = "via", CryptoFragment = "viacoin" + }, + new CryptoDefinition() + { + Crypto = "doge", + CryptoFragment = "dogecoin" } }; } From c4fe4b1c9d9afe8730fc42805104b3225d173c9a Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 27 Nov 2018 21:32:03 +0900 Subject: [PATCH 40/75] add opt-save-memory --- README.md | 1 + .../docker-fragments/opt-save-memory.yml | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 docker-compose-generator/docker-fragments/opt-save-memory.yml diff --git a/README.md b/README.md index 881f1df..cf572f1 100644 --- a/README.md +++ b/README.md @@ -155,6 +155,7 @@ Available `BTCPAYGEN_ADDITIONAL_FRAGMENTS` currently are: * [opt-save-storage-xs](docker-compose-generator/docker-fragments/opt-save-storage-xs.yml) will keep around 3 months of blocks (prune BTC for 25 GB) * [opt-save-storage-xxs](docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml) will keep around 2 weeks of blocks (prune BTC for 5 GB) (lightning not supported) * [opt-lnd-autopilot](docker-compose-generator/docker-fragments/opt-lnd-autopilot.yml) will activate auto pilot on LND. (5 channels, 60% of allocation) +* [opt-save-memory](docker-compose-generator/docker-fragments/opt-save-memory.yml) will decrease the default dbcache at the expense of longer synchronization time (Useful if your machine is less than 2GB) You can also create your own [custom fragments](#how-can-i-customize-the-generated-docker-compose-file). diff --git a/docker-compose-generator/docker-fragments/opt-save-memory.yml b/docker-compose-generator/docker-fragments/opt-save-memory.yml new file mode 100644 index 0000000..6e9cfb4 --- /dev/null +++ b/docker-compose-generator/docker-fragments/opt-save-memory.yml @@ -0,0 +1,23 @@ +version: "3" +# If you don't use Lightning Network, you want this +# This save about 2 weeks worth of block + +services: + bitcoind: + environment: + BITCOIN_EXTRA_ARGS: dbcache=300 + bgoldd: + environment: + BITCOIN_EXTRA_ARGS: dbcache=300 + feathercoind: + environment: + BITCOIN_EXTRA_ARGS: dbcache=300 + groestlcoind: + environment: + BITCOIN_EXTRA_ARGS: dbcache=300 + litecoind: + environment: + BITCOIN_EXTRA_ARGS: dbcache=300 + viacoind: + environment: + BITCOIN_EXTRA_ARGS: dbcache=300 \ No newline at end of file From 6b7c66e45a4ffced8974de0b845e365853847f2c Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 27 Nov 2018 22:13:43 +0900 Subject: [PATCH 41/75] decrease opt-save-memory --- .../docker-fragments/opt-save-memory.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docker-compose-generator/docker-fragments/opt-save-memory.yml b/docker-compose-generator/docker-fragments/opt-save-memory.yml index 6e9cfb4..65266ab 100644 --- a/docker-compose-generator/docker-fragments/opt-save-memory.yml +++ b/docker-compose-generator/docker-fragments/opt-save-memory.yml @@ -5,19 +5,19 @@ version: "3" services: bitcoind: environment: - BITCOIN_EXTRA_ARGS: dbcache=300 + BITCOIN_EXTRA_ARGS: dbcache=200 bgoldd: environment: - BITCOIN_EXTRA_ARGS: dbcache=300 + BITCOIN_EXTRA_ARGS: dbcache=200 feathercoind: environment: - BITCOIN_EXTRA_ARGS: dbcache=300 + BITCOIN_EXTRA_ARGS: dbcache=200 groestlcoind: environment: - BITCOIN_EXTRA_ARGS: dbcache=300 + BITCOIN_EXTRA_ARGS: dbcache=200 litecoind: environment: - BITCOIN_EXTRA_ARGS: dbcache=300 + BITCOIN_EXTRA_ARGS: dbcache=200 viacoind: environment: - BITCOIN_EXTRA_ARGS: dbcache=300 \ No newline at end of file + BITCOIN_EXTRA_ARGS: dbcache=200 \ No newline at end of file From a125f7600587c0cd8e436ad684679875d463f84f Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 27 Nov 2018 22:14:17 +0900 Subject: [PATCH 42/75] Update comment --- docker-compose-generator/docker-fragments/opt-save-memory.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker-compose-generator/docker-fragments/opt-save-memory.yml b/docker-compose-generator/docker-fragments/opt-save-memory.yml index 65266ab..ea75c5a 100644 --- a/docker-compose-generator/docker-fragments/opt-save-memory.yml +++ b/docker-compose-generator/docker-fragments/opt-save-memory.yml @@ -1,6 +1,5 @@ version: "3" -# If you don't use Lightning Network, you want this -# This save about 2 weeks worth of block +# If your machine has less than 1GB of memory, use this services: bitcoind: From d8ac5e4daa128f37c40186ff845c3751a25b1b3c Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 27 Nov 2018 22:58:39 +0900 Subject: [PATCH 43/75] limit mempoolsize --- .../docker-fragments/opt-save-memory.yml | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/docker-compose-generator/docker-fragments/opt-save-memory.yml b/docker-compose-generator/docker-fragments/opt-save-memory.yml index ea75c5a..90a4479 100644 --- a/docker-compose-generator/docker-fragments/opt-save-memory.yml +++ b/docker-compose-generator/docker-fragments/opt-save-memory.yml @@ -4,19 +4,31 @@ version: "3" services: bitcoind: environment: - BITCOIN_EXTRA_ARGS: dbcache=200 + BITCOIN_EXTRA_ARGS: | + dbcache=150 + maxmempool=100 bgoldd: environment: - BITCOIN_EXTRA_ARGS: dbcache=200 + BITCOIN_EXTRA_ARGS: | + dbcache=150 + maxmempool=100 feathercoind: environment: - BITCOIN_EXTRA_ARGS: dbcache=200 + BITCOIN_EXTRA_ARGS: | + dbcache=150 + maxmempool=100 groestlcoind: environment: - BITCOIN_EXTRA_ARGS: dbcache=200 + BITCOIN_EXTRA_ARGS: | + dbcache=150 + maxmempool=100 litecoind: environment: - BITCOIN_EXTRA_ARGS: dbcache=200 + BITCOIN_EXTRA_ARGS: | + dbcache=150 + maxmempool=100 viacoind: environment: - BITCOIN_EXTRA_ARGS: dbcache=200 \ No newline at end of file + BITCOIN_EXTRA_ARGS: | + dbcache=150 + maxmempool=100 \ No newline at end of file From 0b8f5faf85d5d5e15e4f409ce5b371cc73afa013 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 27 Nov 2018 23:14:39 +0900 Subject: [PATCH 44/75] Add chmod on dogecoin scripts --- dogecoin-cli.ps1 | 0 dogecoin-cli.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 dogecoin-cli.ps1 mode change 100644 => 100755 dogecoin-cli.sh diff --git a/dogecoin-cli.ps1 b/dogecoin-cli.ps1 old mode 100644 new mode 100755 diff --git a/dogecoin-cli.sh b/dogecoin-cli.sh old mode 100644 new mode 100755 From 33de124a521299a5d9a76655f47f183cb345b7f7 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Wed, 28 Nov 2018 18:47:34 +0900 Subject: [PATCH 45/75] fix doge --- docker-compose-generator/docker-fragments/dogecoin.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose-generator/docker-fragments/dogecoin.yml b/docker-compose-generator/docker-fragments/dogecoin.yml index b5777bf..57642ec 100644 --- a/docker-compose-generator/docker-fragments/dogecoin.yml +++ b/docker-compose-generator/docker-fragments/dogecoin.yml @@ -27,8 +27,8 @@ services: nbxplorer: environment: NBXPLORER_CHAINS: "doge" - NBXPLORER_VIARPCURL: http://dogecoind:22555/ - NBXPLORER_VIANODEENDPOINT: dogecoind:22556 + NBXPLORER_DOGERPCURL: http://dogecoind:22555/ + NBXPLORER_DOGENODEENDPOINT: dogecoind:22556 NBXPLORER_DOGERPCUSER: ceiwHEbqWI83 NBXPLORER_DOGERPCPASSWORD: DwubwWsoo3 links: From 244ce99f830d217854c1f9268d3b7bbfba2d5313 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Thu, 29 Nov 2018 19:46:33 +0900 Subject: [PATCH 46/75] Add scripts to upload and download utxosets --- contrib/load-utxo-set.sh | 43 +++++++++++++++++++++ contrib/save-utxo-set.sh | 82 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 contrib/load-utxo-set.sh create mode 100644 contrib/save-utxo-set.sh diff --git a/contrib/load-utxo-set.sh b/contrib/load-utxo-set.sh new file mode 100644 index 0000000..cd15df5 --- /dev/null +++ b/contrib/load-utxo-set.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# This script shows the steps to download and update an archive of the current UTXO Set + +exit # This script is not meant to run automatically + + +## ARGS# +NETWORK="testnet" +DOWNLOAD_LINK="http://utxosets.blob.core.windows.net/public/utxo-snapshot-bitcoin-testnet-1445586.tar" +TAR_FILE_HASH="eabaaa717bb8eeaf603e383dd8642d9d34df8e767fccbd208b0c936b79c82742" +####### + +BITCOIN_DATA_DIR="/var/lib/docker/volumes/generated_bitcoin_datadir/_data" +[ ! -d "$BITCOIN_DATA_DIR" ] && mkdir -p "$BITCOIN_DATA_DIR" + +TAR_FILE="$BITCOIN_DATA_DIR/snapshot.tar" +echo "Downloading $DOWNLOAD_LINK to $TAR_FILE" +wget "$DOWNLOAD_LINK" -q --show-progress -O "$TAR_FILE" + +if ! echo "$TAR_FILE_HASH" "$TAR_FILE" | sha256sum -c -; then + echo "Invalid hash" + exit 1 +fi + +NETWORK_DIRECTORY=$NETWORK +if [[ $NETWORK == "mainnet" ]]; then + NETWORK_DIRECTORY="." +fi +if [[ $NETWORK == "testnet" ]]; then + NETWORK_DIRECTORY="testnet3" +fi + +NETWORK_DIRECTORY="$BITCOIN_DATA_DIR/$NETWORK_DIRECTORY" +[ -d "$NETWORK_DIRECTORY/blocks" ] && rm -rf "$NETWORK_DIRECTORY/blocks" +[ -d "$NETWORK_DIRECTORY/chainstate" ] && rm -rf "$NETWORK_DIRECTORY/chainstate" +[ ! -d "$NETWORK_DIRECTORY" ] && mkdir "$NETWORK_DIRECTORY" + +echo "Extracting..." +tar -xf "$TAR_FILE" -C "$BITCOIN_DATA_DIR" + +echo "Extracted" +rm "$TAR_FILE" \ No newline at end of file diff --git a/contrib/save-utxo-set.sh b/contrib/save-utxo-set.sh new file mode 100644 index 0000000..42baac9 --- /dev/null +++ b/contrib/save-utxo-set.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# This script shows the steps to create an archive of the current UTXO Set + +exit # This script is not meant to run automatically + + +## ARGS# +NETWORK="testnet" +export AZURE_STORAGE_CONTAINER="public" +export AZURE_STORAGE_CONNECTION_STRING="" +####### + +# IN THE HOST ############################################################# + +# Stop btcpay +btcpay-down.sh + +# Run only bitcoind and connect to it +cd "`dirname $BTCPAY_ENV_FILE`" +docker-compose -f $BTCPAY_DOCKER_COMPOSE run -e "NETWORK=$NETWORK" bitcoind bash + +# IN THE CONTAINER ############################################################# +ENVIRONMENT="" +BITCOIND="bitcoind -datadir=/data" +BITCOIN_CLI="bitcoin-cli -datadir=/data" + +$BITCOIND & +BITCOIND_PID=$! +CURRENT_HEIGHT="$($BITCOIN_CLI -rpcwait getblockcount)" +let "PRUNED_HEIGHT=$CURRENT_HEIGHT - 289" + +echo "Pruning to $PRUNED_HEIGHT" +$BITCOIN_CLI pruneblockchain "$PRUNED_HEIGHT" + +echo "Waiting bitcoind to stop..." +$BITCOIN_CLI stop +wait $BITCOIND_PID + +NETWORK_DIRECTORY=$NETWORK +if [[ $NETWORK == "mainnet" ]]; then + NETWORK_DIRECTORY="." +fi +if [[ $NETWORK == "testnet" ]]; then + NETWORK_DIRECTORY="testnet3" +fi + +cd /data +TAR_NAME="utxo-snapshot-bitcoin-$NETWORK-$PRUNED_HEIGHT.tar" +echo "Creating $TAR_NAME..." +tar -cf "$TAR_NAME" "$NETWORK_DIRECTORY/blocks/" +tar -rf "$TAR_NAME" "$NETWORK_DIRECTORY/chainstate/" + +# Exit from the container +exit + +# IN THE HOST ############################################################# + +# Restart btcpay +btcpay-up.sh + +TAR_FILE="$(echo /var/lib/docker/volumes/generated_bitcoin_datadir/_data/utxo-snapshot-*)" +TAR_FILE_HASH="$(sha256sum "$TAR_FILE" | cut -d " " -f 1)" +echo "SHA256: $TAR_FILE_HASH" +echo "Uploading to azure..." +# Install az from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest + +BLOB_NAME="$(basename -- $TAR_FILE)" +az storage container create --name "$AZURE_STORAGE_CONTAINER" --public-access "blob" +az storage blob upload -f "$TAR_FILE" \ + -c "$AZURE_STORAGE_CONTAINER" \ + -n "$BLOB_NAME" \ + --content-type "application/x-tar" + +az storage blob metadata update --container-name "$AZURE_STORAGE_CONTAINER" --name "$BLOB_NAME" --metadata "sha256=$TAR_FILE_HASH" + +# Print the sha256sum. Downloaders will need to verify this +STORAGE_URL="$(az storage blob url --container-name "$AZURE_STORAGE_CONTAINER" --name "$BLOB_NAME" --protocol "http")" +echo "You can now download the UTXO on $STORAGE_URL" +echo "Please, after download, verify the sha256 with:" +echo "echo "$TAR_FILE_HASH $BLOB_NAME" | sha256sum -c -" +rm "$TAR_FILE" \ No newline at end of file From 438b1046af1870ab0e27bfb1a226162a3b585e8e Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Thu, 29 Nov 2018 19:58:56 +0900 Subject: [PATCH 47/75] Allow dogecoin pruning --- .../docker-fragments/opt-save-storage-s.yml | 5 ++++- .../docker-fragments/opt-save-storage-xs.yml | 5 ++++- .../docker-fragments/opt-save-storage-xxs.yml | 5 ++++- .../docker-fragments/opt-save-storage.yml | 5 ++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/docker-compose-generator/docker-fragments/opt-save-storage-s.yml b/docker-compose-generator/docker-fragments/opt-save-storage-s.yml index e134222..9acf2c0 100644 --- a/docker-compose-generator/docker-fragments/opt-save-storage-s.yml +++ b/docker-compose-generator/docker-fragments/opt-save-storage-s.yml @@ -20,4 +20,7 @@ services: BITCOIN_EXTRA_ARGS: prune=50000 viacoind: environment: - BITCOIN_EXTRA_ARGS: prune=50000 \ No newline at end of file + BITCOIN_EXTRA_ARGS: prune=50000 + dogecoind: + environment: + DOGECOIN_EXTRA_ARGS: prune=50000 diff --git a/docker-compose-generator/docker-fragments/opt-save-storage-xs.yml b/docker-compose-generator/docker-fragments/opt-save-storage-xs.yml index 8e32c8f..7b95f20 100644 --- a/docker-compose-generator/docker-fragments/opt-save-storage-xs.yml +++ b/docker-compose-generator/docker-fragments/opt-save-storage-xs.yml @@ -20,4 +20,7 @@ services: BITCOIN_EXTRA_ARGS: prune=25000 viacoind: environment: - BITCOIN_EXTRA_ARGS: prune=25000 \ No newline at end of file + BITCOIN_EXTRA_ARGS: prune=25000 + dogecoind: + environment: + DOGECOIN_EXTRA_ARGS: prune=25000 diff --git a/docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml b/docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml index 6ad1d81..4e8ce5f 100644 --- a/docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml +++ b/docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml @@ -20,4 +20,7 @@ services: BITCOIN_EXTRA_ARGS: prune=5000 viacoind: environment: - BITCOIN_EXTRA_ARGS: prune=5000 \ No newline at end of file + BITCOIN_EXTRA_ARGS: prune=5000 + dogecoind: + environment: + DOGECOIN_EXTRA_ARGS: prune=5000 diff --git a/docker-compose-generator/docker-fragments/opt-save-storage.yml b/docker-compose-generator/docker-fragments/opt-save-storage.yml index 9e440cd..4a88674 100644 --- a/docker-compose-generator/docker-fragments/opt-save-storage.yml +++ b/docker-compose-generator/docker-fragments/opt-save-storage.yml @@ -20,4 +20,7 @@ services: BITCOIN_EXTRA_ARGS: prune=100000 viacoind: environment: - BITCOIN_EXTRA_ARGS: prune=100000 \ No newline at end of file + BITCOIN_EXTRA_ARGS: prune=100000 + dogecoind: + environment: + DOGECOIN_EXTRA_ARGS: prune=100000 \ No newline at end of file From 9f7d768fab292f2e56d14b1384c9c993c36b57fe Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 00:07:49 +0900 Subject: [PATCH 48/75] Improve save/load utxo --- contrib/load-utxo-set.sh | 60 +++++++++++++++++++++------- contrib/save-utxo-set-in-bitcoind.sh | 28 +++++++++++++ contrib/save-utxo-set.sh | 45 ++------------------- 3 files changed, 78 insertions(+), 55 deletions(-) create mode 100644 contrib/save-utxo-set-in-bitcoind.sh diff --git a/contrib/load-utxo-set.sh b/contrib/load-utxo-set.sh index cd15df5..8911311 100644 --- a/contrib/load-utxo-set.sh +++ b/contrib/load-utxo-set.sh @@ -2,26 +2,51 @@ # This script shows the steps to download and update an archive of the current UTXO Set -exit # This script is not meant to run automatically +if ! [ "$0" = "$BASH_SOURCE" ]; then + echo "This script must not be sourced" + exit 1 +fi +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root after running \"sudo su -\"" + exit 1 +fi -## ARGS# -NETWORK="testnet" -DOWNLOAD_LINK="http://utxosets.blob.core.windows.net/public/utxo-snapshot-bitcoin-testnet-1445586.tar" -TAR_FILE_HASH="eabaaa717bb8eeaf603e383dd8642d9d34df8e767fccbd208b0c936b79c82742" -####### +: "${UTXO_DOWNLOAD_LINK:=http://utxosets.blob.core.windows.net/public/utxo-snapshot-bitcoin-mainnet-551636.tar}" +NETWORK="" +[[ $DOWNLOAD_LINK == *-testnet-* ]] && NETWORK="testnet" +[[ $DOWNLOAD_LINK == *-mainnet-* ]] && NETWORK="mainnet" +[[ $DOWNLOAD_LINK == *-regtest-* ]] && NETWORK="regtest" BITCOIN_DATA_DIR="/var/lib/docker/volumes/generated_bitcoin_datadir/_data" [ ! -d "$BITCOIN_DATA_DIR" ] && mkdir -p "$BITCOIN_DATA_DIR" -TAR_FILE="$BITCOIN_DATA_DIR/snapshot.tar" -echo "Downloading $DOWNLOAD_LINK to $TAR_FILE" -wget "$DOWNLOAD_LINK" -q --show-progress -O "$TAR_FILE" +TAR_NAME="$(basename $DOWNLOAD_LINK)" +TAR_FILE="$BITCOIN_DATA_DIR/$TAR_NAME" -if ! echo "$TAR_FILE_HASH" "$TAR_FILE" | sha256sum -c -; then - echo "Invalid hash" +echo "Downloading $DOWNLOAD_LINK to $TAR_FILE" +cd "$BITCOIN_DATA_DIR" +if [ ! -f "$TAR_FILE" ]; then + wget "$DOWNLOAD_LINK" -q --show-progress +else + echo "$TAR_FILE already exists" +fi + +echo " +fab994299273080bf7124c8c45c4ada867974ca747900178496a69e450cf713f utxo-snapshot-bitcoin-mainnet-551636.tar +eabaaa717bb8eeaf603e383dd8642d9d34df8e767fccbd208b0c936b79c82742 utxo-snapshot-bitcoin-testnet-1445586.tar +" > "trusted-utxo-sets.asc" + +grep "$TAR_NAME" "trusted-utxo-sets.asc" | tee "sig.asc" +rm "trusted-utxo-sets.asc" +if ! sha256sum -c "sig.asc"; then + echo "$TAR_FILE is not trusted" + rm "sig.asc" + cd - exit 1 fi +rm "sig.asc" +cd - NETWORK_DIRECTORY=$NETWORK if [[ $NETWORK == "mainnet" ]]; then @@ -37,7 +62,14 @@ NETWORK_DIRECTORY="$BITCOIN_DATA_DIR/$NETWORK_DIRECTORY" [ ! -d "$NETWORK_DIRECTORY" ] && mkdir "$NETWORK_DIRECTORY" echo "Extracting..." -tar -xf "$TAR_FILE" -C "$BITCOIN_DATA_DIR" +if ! tar -xf "$TAR_FILE" -C "$BITCOIN_DATA_DIR"; then + echo "Failed extracting, did you turned bitcoin off? (btcpay-down.sh)" + exit 1 +fi +rm "$TAR_FILE" -echo "Extracted" -rm "$TAR_FILE" \ No newline at end of file +BTCPAY_DATA_DIR="/var/lib/docker/volumes/generated_btcpay_datadir/_data" +[ ! -d "$BTCPAY_DATA_DIR" ] && mkdir -p "$BTCPAY_DATA_DIR" +echo "$TAR_NAME" > "$BTCPAY_DATA_DIR/FastSynced" + +echo "Successfully downloaded and extracted, you can run btcpay again (btcpay-up.sh)" \ No newline at end of file diff --git a/contrib/save-utxo-set-in-bitcoind.sh b/contrib/save-utxo-set-in-bitcoind.sh new file mode 100644 index 0000000..7f4dde5 --- /dev/null +++ b/contrib/save-utxo-set-in-bitcoind.sh @@ -0,0 +1,28 @@ +BITCOIND="bitcoind -datadir=/data" +BITCOIN_CLI="bitcoin-cli -datadir=/data" + +$BITCOIND & +BITCOIND_PID=$! +CURRENT_HEIGHT="$($BITCOIN_CLI -rpcwait getblockcount)" +let "PRUNED_HEIGHT=$CURRENT_HEIGHT - 289" + +echo "Pruning to $PRUNED_HEIGHT" +$BITCOIN_CLI pruneblockchain "$PRUNED_HEIGHT" + +echo "Waiting bitcoind to stop..." +$BITCOIN_CLI stop +wait $BITCOIND_PID + +NETWORK_DIRECTORY=$NETWORK +if [[ $NETWORK == "mainnet" ]]; then + NETWORK_DIRECTORY="." +fi +if [[ $NETWORK == "testnet" ]]; then + NETWORK_DIRECTORY="testnet3" +fi + +cd /data +TAR_NAME="utxo-snapshot-bitcoin-$NETWORK-$PRUNED_HEIGHT.tar" +echo "Creating $TAR_NAME..." +tar -cf "$TAR_NAME" "$NETWORK_DIRECTORY/blocks/" +tar -rf "$TAR_NAME" "$NETWORK_DIRECTORY/chainstate/" diff --git a/contrib/save-utxo-set.sh b/contrib/save-utxo-set.sh index 42baac9..aeee683 100644 --- a/contrib/save-utxo-set.sh +++ b/contrib/save-utxo-set.sh @@ -2,11 +2,11 @@ # This script shows the steps to create an archive of the current UTXO Set -exit # This script is not meant to run automatically +exit 1 # This script is not meant to run automatically ## ARGS# -NETWORK="testnet" +NETWORK="mainnet" export AZURE_STORAGE_CONTAINER="public" export AZURE_STORAGE_CONNECTION_STRING="" ####### @@ -17,46 +17,9 @@ export AZURE_STORAGE_CONNECTION_STRING="" btcpay-down.sh # Run only bitcoind and connect to it +SCRIPT="$(cat save-utxo-set-in-bitcoind.sh)" cd "`dirname $BTCPAY_ENV_FILE`" -docker-compose -f $BTCPAY_DOCKER_COMPOSE run -e "NETWORK=$NETWORK" bitcoind bash - -# IN THE CONTAINER ############################################################# -ENVIRONMENT="" -BITCOIND="bitcoind -datadir=/data" -BITCOIN_CLI="bitcoin-cli -datadir=/data" - -$BITCOIND & -BITCOIND_PID=$! -CURRENT_HEIGHT="$($BITCOIN_CLI -rpcwait getblockcount)" -let "PRUNED_HEIGHT=$CURRENT_HEIGHT - 289" - -echo "Pruning to $PRUNED_HEIGHT" -$BITCOIN_CLI pruneblockchain "$PRUNED_HEIGHT" - -echo "Waiting bitcoind to stop..." -$BITCOIN_CLI stop -wait $BITCOIND_PID - -NETWORK_DIRECTORY=$NETWORK -if [[ $NETWORK == "mainnet" ]]; then - NETWORK_DIRECTORY="." -fi -if [[ $NETWORK == "testnet" ]]; then - NETWORK_DIRECTORY="testnet3" -fi - -cd /data -TAR_NAME="utxo-snapshot-bitcoin-$NETWORK-$PRUNED_HEIGHT.tar" -echo "Creating $TAR_NAME..." -tar -cf "$TAR_NAME" "$NETWORK_DIRECTORY/blocks/" -tar -rf "$TAR_NAME" "$NETWORK_DIRECTORY/chainstate/" - -# Exit from the container -exit - -# IN THE HOST ############################################################# - -# Restart btcpay +docker-compose -f $BTCPAY_DOCKER_COMPOSE run -e "NETWORK=$NETWORK" bitcoind bash -c "$SCRIPT" btcpay-up.sh TAR_FILE="$(echo /var/lib/docker/volumes/generated_bitcoin_datadir/_data/utxo-snapshot-*)" From c1f065ec2e485c065976799ededbb611116b976e Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 00:08:46 +0900 Subject: [PATCH 49/75] fix chmod --- contrib/load-utxo-set.sh | 0 contrib/save-utxo-set-in-bitcoind.sh | 0 contrib/save-utxo-set.sh | 0 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 contrib/load-utxo-set.sh mode change 100644 => 100755 contrib/save-utxo-set-in-bitcoind.sh mode change 100644 => 100755 contrib/save-utxo-set.sh diff --git a/contrib/load-utxo-set.sh b/contrib/load-utxo-set.sh old mode 100644 new mode 100755 diff --git a/contrib/save-utxo-set-in-bitcoind.sh b/contrib/save-utxo-set-in-bitcoind.sh old mode 100644 new mode 100755 diff --git a/contrib/save-utxo-set.sh b/contrib/save-utxo-set.sh old mode 100644 new mode 100755 From bcc8d8e965dbdab4a9f5a20e8588cc37277ed4fe Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 00:22:20 +0900 Subject: [PATCH 50/75] Do not upload to azure if not configure --- contrib/save-utxo-set-in-bitcoind.sh | 8 ++-- contrib/save-utxo-set.sh | 55 +++++++++++++++------------- 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/contrib/save-utxo-set-in-bitcoind.sh b/contrib/save-utxo-set-in-bitcoind.sh index 7f4dde5..6ebfd73 100755 --- a/contrib/save-utxo-set-in-bitcoind.sh +++ b/contrib/save-utxo-set-in-bitcoind.sh @@ -13,16 +13,16 @@ echo "Waiting bitcoind to stop..." $BITCOIN_CLI stop wait $BITCOIND_PID -NETWORK_DIRECTORY=$NETWORK -if [[ $NETWORK == "mainnet" ]]; then +NETWORK_DIRECTORY=$NBITCOIN_NETWORK +if [[ $NBITCOIN_NETWORK == "mainnet" ]]; then NETWORK_DIRECTORY="." fi -if [[ $NETWORK == "testnet" ]]; then +if [[ $NBITCOIN_NETWORK == "testnet" ]]; then NETWORK_DIRECTORY="testnet3" fi cd /data -TAR_NAME="utxo-snapshot-bitcoin-$NETWORK-$PRUNED_HEIGHT.tar" +TAR_NAME="utxo-snapshot-bitcoin-$NBITCOIN_NETWORK-$PRUNED_HEIGHT.tar" echo "Creating $TAR_NAME..." tar -cf "$TAR_NAME" "$NETWORK_DIRECTORY/blocks/" tar -rf "$TAR_NAME" "$NETWORK_DIRECTORY/chainstate/" diff --git a/contrib/save-utxo-set.sh b/contrib/save-utxo-set.sh index aeee683..b713c94 100755 --- a/contrib/save-utxo-set.sh +++ b/contrib/save-utxo-set.sh @@ -2,44 +2,49 @@ # This script shows the steps to create an archive of the current UTXO Set -exit 1 # This script is not meant to run automatically - - -## ARGS# -NETWORK="mainnet" -export AZURE_STORAGE_CONTAINER="public" -export AZURE_STORAGE_CONNECTION_STRING="" -####### +: "${AZURE_STORAGE_CONTAINER:=public}" # IN THE HOST ############################################################# # Stop btcpay btcpay-down.sh +for i in /var/lib/docker/volumes/generated_bitcoin_datadir/_data/utxo-snapshot-*; do + echo "Deleting $i" + rm $i +done + +rm /var/lib/docker/volumes/generated_bitcoin_datadir/_data/utxo-snapshot-* # Run only bitcoind and connect to it SCRIPT="$(cat save-utxo-set-in-bitcoind.sh)" cd "`dirname $BTCPAY_ENV_FILE`" -docker-compose -f $BTCPAY_DOCKER_COMPOSE run -e "NETWORK=$NETWORK" bitcoind bash -c "$SCRIPT" +docker-compose -f $BTCPAY_DOCKER_COMPOSE run -e "NBITCOIN_NETWORK=$NBITCOIN_NETWORK" bitcoind bash -c "$SCRIPT" btcpay-up.sh +echo "Calculating the hash of the tar file..." TAR_FILE="$(echo /var/lib/docker/volumes/generated_bitcoin_datadir/_data/utxo-snapshot-*)" TAR_FILE_HASH="$(sha256sum "$TAR_FILE" | cut -d " " -f 1)" -echo "SHA256: $TAR_FILE_HASH" -echo "Uploading to azure..." -# Install az from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest -BLOB_NAME="$(basename -- $TAR_FILE)" -az storage container create --name "$AZURE_STORAGE_CONTAINER" --public-access "blob" -az storage blob upload -f "$TAR_FILE" \ - -c "$AZURE_STORAGE_CONTAINER" \ - -n "$BLOB_NAME" \ - --content-type "application/x-tar" +if [[ "$AZURE_STORAGE_CONNECTION_STRING" ]]; then + echo "Uploading to azure..." + # Install az from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest -az storage blob metadata update --container-name "$AZURE_STORAGE_CONTAINER" --name "$BLOB_NAME" --metadata "sha256=$TAR_FILE_HASH" + BLOB_NAME="$(basename -- $TAR_FILE)" + az storage container create --name "$AZURE_STORAGE_CONTAINER" --public-access "blob" + az storage blob upload -f "$TAR_FILE" \ + -c "$AZURE_STORAGE_CONTAINER" \ + -n "$BLOB_NAME" \ + --content-type "application/x-tar" -# Print the sha256sum. Downloaders will need to verify this -STORAGE_URL="$(az storage blob url --container-name "$AZURE_STORAGE_CONTAINER" --name "$BLOB_NAME" --protocol "http")" -echo "You can now download the UTXO on $STORAGE_URL" -echo "Please, after download, verify the sha256 with:" -echo "echo "$TAR_FILE_HASH $BLOB_NAME" | sha256sum -c -" -rm "$TAR_FILE" \ No newline at end of file + az storage blob metadata update --container-name "$AZURE_STORAGE_CONTAINER" --name "$BLOB_NAME" --metadata "sha256=$TAR_FILE_HASH" + + # Print the sha256sum. Downloaders will need to verify this + STORAGE_URL="$(az storage blob url --container-name "$AZURE_STORAGE_CONTAINER" --name "$BLOB_NAME" --protocol "http")" + echo "You can now download the UTXO on $STORAGE_URL" + echo "Please, after download, verify the sha256 with:" + echo "echo "$TAR_FILE_HASH $BLOB_NAME" | sha256sum -c -" + rm "$TAR_FILE" +else + echo "SHA256: $TAR_FILE_HASH" + echo "File at: $TAR_FILE" +fi From 7eeb20f75c0961ae19388c403ea22e190bd0b1e5 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 00:40:11 +0900 Subject: [PATCH 51/75] Make the utxo-set scripts more friendly --- contrib/load-utxo-set.sh | 32 ++++++++++++++++++++-------- contrib/save-utxo-set-in-bitcoind.sh | 2 ++ contrib/save-utxo-set.sh | 11 +++++++--- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/contrib/load-utxo-set.sh b/contrib/load-utxo-set.sh index 8911311..23fd4d6 100755 --- a/contrib/load-utxo-set.sh +++ b/contrib/load-utxo-set.sh @@ -1,6 +1,11 @@ #!/bin/bash -# This script shows the steps to download and update an archive of the current UTXO Set +# This script shows the steps to download and deploy an archive of the current UTXO Set +# It will: +# 1. Download the UTXO Set from UTXO_DOWNLOAD_LINK, if UTXO_DOWNLOAD_LINK is empty, use NBITCOIN_NETWORK to find a default +# 2. Check the tarball against trusted hashes +# 3. Create the container's folders for blocks and chainstate, or empty them if they exists +# 4. Unzip the tarball if ! [ "$0" = "$BASH_SOURCE" ]; then echo "This script must not be sourced" @@ -12,11 +17,20 @@ if [[ $EUID -ne 0 ]]; then exit 1 fi -: "${UTXO_DOWNLOAD_LINK:=http://utxosets.blob.core.windows.net/public/utxo-snapshot-bitcoin-mainnet-551636.tar}" -NETWORK="" -[[ $DOWNLOAD_LINK == *-testnet-* ]] && NETWORK="testnet" -[[ $DOWNLOAD_LINK == *-mainnet-* ]] && NETWORK="mainnet" -[[ $DOWNLOAD_LINK == *-regtest-* ]] && NETWORK="regtest" +if [[ "$NBITCOIN_NETWORK" ]]; then + echo "NBITCOIN_NETWORK should be set to mainnet, testnet or regtest" + exit 1 +fi + +if ! [[ "$UTXO_DOWNLOAD_LINK" ]]; then + [[ $NBITCOIN_NETWORK == "mainnet" ]] && UTXO_DOWNLOAD_LINK="http://utxosets.blob.core.windows.net/public/utxo-snapshot-bitcoin-mainnet-551636.tar" + [[ $NBITCOIN_NETWORK == "testnet" ]] && UTXO_DOWNLOAD_LINK="http://utxosets.blob.core.windows.net/public/utxo-snapshot-bitcoin-testnet-1445586.tar" +fi + +if ! [[ "$UTXO_DOWNLOAD_LINK" ]]; then + echo "No default UTXO_DOWNLOAD_LINK for $NBITCOIN_NETWORK" + exit 1 +fi BITCOIN_DATA_DIR="/var/lib/docker/volumes/generated_bitcoin_datadir/_data" [ ! -d "$BITCOIN_DATA_DIR" ] && mkdir -p "$BITCOIN_DATA_DIR" @@ -48,11 +62,11 @@ fi rm "sig.asc" cd - -NETWORK_DIRECTORY=$NETWORK -if [[ $NETWORK == "mainnet" ]]; then +NETWORK_DIRECTORY=$NBITCOIN_NETWORK +if [[ $NBITCOIN_NETWORK == "mainnet" ]]; then NETWORK_DIRECTORY="." fi -if [[ $NETWORK == "testnet" ]]; then +if [[ $NBITCOIN_NETWORK == "testnet" ]]; then NETWORK_DIRECTORY="testnet3" fi diff --git a/contrib/save-utxo-set-in-bitcoind.sh b/contrib/save-utxo-set-in-bitcoind.sh index 6ebfd73..72a8dec 100755 --- a/contrib/save-utxo-set-in-bitcoind.sh +++ b/contrib/save-utxo-set-in-bitcoind.sh @@ -1,3 +1,4 @@ +# This file is internal and meant to be run by save-utxo-set.sh BITCOIND="bitcoind -datadir=/data" BITCOIN_CLI="bitcoin-cli -datadir=/data" @@ -26,3 +27,4 @@ TAR_NAME="utxo-snapshot-bitcoin-$NBITCOIN_NETWORK-$PRUNED_HEIGHT.tar" echo "Creating $TAR_NAME..." tar -cf "$TAR_NAME" "$NETWORK_DIRECTORY/blocks/" tar -rf "$TAR_NAME" "$NETWORK_DIRECTORY/chainstate/" +exit diff --git a/contrib/save-utxo-set.sh b/contrib/save-utxo-set.sh index b713c94..35286ac 100755 --- a/contrib/save-utxo-set.sh +++ b/contrib/save-utxo-set.sh @@ -1,12 +1,17 @@ #!/bin/bash # This script shows the steps to create an archive of the current UTXO Set +# It will: +# 1. Shutdown BTCPay Server +# 2. Start bitcoind +# 3. Prune it to up to 289 blocks from the tip +# 4. Stop bitcoind +# 5. Archive in a tarball the blocks and chainstate directories +# 6. Restart BTCPay +# 7. If AZURE_STORAGE_CONNECTION_STRING is set, then upload to azure storage and make the blob public, else print hash and tarball : "${AZURE_STORAGE_CONTAINER:=public}" -# IN THE HOST ############################################################# - -# Stop btcpay btcpay-down.sh for i in /var/lib/docker/volumes/generated_bitcoin_datadir/_data/utxo-snapshot-*; do From 58ffc2b4667b9b94f7d6b8d0e6200ccc838e0ac7 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 00:41:26 +0900 Subject: [PATCH 52/75] Fix script --- contrib/load-utxo-set.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/load-utxo-set.sh b/contrib/load-utxo-set.sh index 23fd4d6..83c6983 100755 --- a/contrib/load-utxo-set.sh +++ b/contrib/load-utxo-set.sh @@ -17,7 +17,7 @@ if [[ $EUID -ne 0 ]]; then exit 1 fi -if [[ "$NBITCOIN_NETWORK" ]]; then +if ! [[ "$NBITCOIN_NETWORK" ]]; then echo "NBITCOIN_NETWORK should be set to mainnet, testnet or regtest" exit 1 fi From 54226a0b9b00087926f6a03ac5421e050bda53e0 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 00:45:22 +0900 Subject: [PATCH 53/75] Fix script --- contrib/load-utxo-set.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/load-utxo-set.sh b/contrib/load-utxo-set.sh index 83c6983..7c14ab4 100755 --- a/contrib/load-utxo-set.sh +++ b/contrib/load-utxo-set.sh @@ -35,13 +35,13 @@ fi BITCOIN_DATA_DIR="/var/lib/docker/volumes/generated_bitcoin_datadir/_data" [ ! -d "$BITCOIN_DATA_DIR" ] && mkdir -p "$BITCOIN_DATA_DIR" -TAR_NAME="$(basename $DOWNLOAD_LINK)" +TAR_NAME="$(basename $UTXO_DOWNLOAD_LINK)" TAR_FILE="$BITCOIN_DATA_DIR/$TAR_NAME" -echo "Downloading $DOWNLOAD_LINK to $TAR_FILE" cd "$BITCOIN_DATA_DIR" if [ ! -f "$TAR_FILE" ]; then - wget "$DOWNLOAD_LINK" -q --show-progress + echo "Downloading $UTXO_DOWNLOAD_LINK to $TAR_FILE" + wget "$UTXO_DOWNLOAD_LINK" -q --show-progress else echo "$TAR_FILE already exists" fi From ac1cff78fdf33d917ea87218b5ed42c5188fdc02 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 11:45:43 +0900 Subject: [PATCH 54/75] bump --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index 293effb..0a5a0a0 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_IMAGE:-btcpayserver/btcpayserver:1.0.3.17} + image: ${BTCPAY_IMAGE:-btcpayserver/btcpayserver:1.0.3.19} expose: - "49392" environment: From 63f967a9497d7911686043eebb406cd1a4c2a747 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 12:50:55 +0900 Subject: [PATCH 55/75] Sign the UTXO sets hash --- contrib/load-utxo-set.sh | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/contrib/load-utxo-set.sh b/contrib/load-utxo-set.sh index 7c14ab4..1b5c8ad 100755 --- a/contrib/load-utxo-set.sh +++ b/contrib/load-utxo-set.sh @@ -38,6 +38,7 @@ BITCOIN_DATA_DIR="/var/lib/docker/volumes/generated_bitcoin_datadir/_data" TAR_NAME="$(basename $UTXO_DOWNLOAD_LINK)" TAR_FILE="$BITCOIN_DATA_DIR/$TAR_NAME" +cp "utxo-sets" "$BITCOIN_DATA_DIR/utxo-sets" cd "$BITCOIN_DATA_DIR" if [ ! -f "$TAR_FILE" ]; then echo "Downloading $UTXO_DOWNLOAD_LINK to $TAR_FILE" @@ -46,20 +47,15 @@ else echo "$TAR_FILE already exists" fi -echo " -fab994299273080bf7124c8c45c4ada867974ca747900178496a69e450cf713f utxo-snapshot-bitcoin-mainnet-551636.tar -eabaaa717bb8eeaf603e383dd8642d9d34df8e767fccbd208b0c936b79c82742 utxo-snapshot-bitcoin-testnet-1445586.tar -" > "trusted-utxo-sets.asc" - -grep "$TAR_NAME" "trusted-utxo-sets.asc" | tee "sig.asc" -rm "trusted-utxo-sets.asc" -if ! sha256sum -c "sig.asc"; then +grep "$TAR_NAME" "utxo-sets" | tee "utxo-set" +rm "utxo-sets" +if ! sha256sum -c "utxo-set"; then echo "$TAR_FILE is not trusted" - rm "sig.asc" + rm "utxo-set" cd - exit 1 fi -rm "sig.asc" +rm "utxo-set" cd - NETWORK_DIRECTORY=$NBITCOIN_NETWORK From c6f1f46800958efa1a5b51f402d6a3b388882f63 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 12:52:34 +0900 Subject: [PATCH 56/75] add signatures --- contrib/NicolasDorier.utxo-sets.asc | 21 +++++++++++++++++++++ contrib/utxo-sets | 2 ++ 2 files changed, 23 insertions(+) create mode 100644 contrib/NicolasDorier.utxo-sets.asc create mode 100644 contrib/utxo-sets diff --git a/contrib/NicolasDorier.utxo-sets.asc b/contrib/NicolasDorier.utxo-sets.asc new file mode 100644 index 0000000..e67907f --- /dev/null +++ b/contrib/NicolasDorier.utxo-sets.asc @@ -0,0 +1,21 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +fab994299273080bf7124c8c45c4ada867974ca747900178496a69e450cf713f utxo-snapshot-bitcoin-mainnet-551636.tar +eabaaa717bb8eeaf603e383dd8642d9d34df8e767fccbd208b0c936b79c82742 utxo-snapshot-bitcoin-testnet-1445586.tar +-----BEGIN PGP SIGNATURE----- + +wsFcBAEBCAAQBQJcALGMCRBmGHY+8JGG/gAA0YsQAJgfTLHy/z+5c7pumb7QGl5y +afs7KrDUpc5jM6c6jeaKaysWm/aQmWXYtTYMFeN2+vexVLvbMiYSVMl5ts2zRScl +tY+HQ2aYlUP754S98gjFrWNner5wpREhu+UILtzB79ph/Baw2iOm0NJIsr3SA8B6 +VJ/JRRiaG4PW6TNJumiYVRZ7RCx+DnWveq+ombPDrjp7sbABx2s8tyIxFf7IW2wb +bOHA2FNjRu2+gd6PNVlNYVX+i0tx+q8f7yuCOxxSux5DvfK5p+TE2XqWoc3TbtqZ +9SXKeoUVDvhWjY7nH8D0LehYobh0LzCIpdsm1wqDpR3DOMlNAY+5OHA0+4BAoY+K +hPOyWA5TWLrlC6yMuz6ttVFvjOHGd7HwLqlU3NU4aj9oxLIjaHHHOcxvf+v0GrvL +QTd7YfyFeEpMQjwK/ueYlswxRqMHMFVLg/F0sAcwJ4W3F9yakz8mS341IDSWPoUR +Kc1KArFH4SqW2oc3ChzFwU/Om7rv5rZelJRRTzW8lJZFPysiLtUoEe1PeiYiikCL +Am40XX62EF+MG+TKQkYkTGlSPjNEE+ko9cQcAzMWVz1BZCUjcJH+dI/7uNsMOtp3 +y1ytX+Asv2KiLGAKzQvKBIrJzYuwuStVxUIZguJpb20bo8CkLOUKORjwsiQ4ktna +gHoN2GLHvDzOq4cixubg +=65Dw +-----END PGP SIGNATURE----- diff --git a/contrib/utxo-sets b/contrib/utxo-sets new file mode 100644 index 0000000..fbce729 --- /dev/null +++ b/contrib/utxo-sets @@ -0,0 +1,2 @@ +fab994299273080bf7124c8c45c4ada867974ca747900178496a69e450cf713f utxo-snapshot-bitcoin-mainnet-551636.tar +eabaaa717bb8eeaf603e383dd8642d9d34df8e767fccbd208b0c936b79c82742 utxo-snapshot-bitcoin-testnet-1445586.tar \ No newline at end of file From b5e47f94cc138f5a8e1648ffb784bbf989f0aa5d Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 12:54:16 +0900 Subject: [PATCH 57/75] move files to FastSync --- contrib/{ => FastSync}/NicolasDorier.utxo-sets.asc | 0 contrib/{ => FastSync}/load-utxo-set.sh | 0 contrib/{ => FastSync}/save-utxo-set-in-bitcoind.sh | 0 contrib/{ => FastSync}/save-utxo-set.sh | 0 contrib/{ => FastSync}/utxo-sets | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename contrib/{ => FastSync}/NicolasDorier.utxo-sets.asc (100%) rename contrib/{ => FastSync}/load-utxo-set.sh (100%) rename contrib/{ => FastSync}/save-utxo-set-in-bitcoind.sh (100%) rename contrib/{ => FastSync}/save-utxo-set.sh (100%) rename contrib/{ => FastSync}/utxo-sets (100%) diff --git a/contrib/NicolasDorier.utxo-sets.asc b/contrib/FastSync/NicolasDorier.utxo-sets.asc similarity index 100% rename from contrib/NicolasDorier.utxo-sets.asc rename to contrib/FastSync/NicolasDorier.utxo-sets.asc diff --git a/contrib/load-utxo-set.sh b/contrib/FastSync/load-utxo-set.sh similarity index 100% rename from contrib/load-utxo-set.sh rename to contrib/FastSync/load-utxo-set.sh diff --git a/contrib/save-utxo-set-in-bitcoind.sh b/contrib/FastSync/save-utxo-set-in-bitcoind.sh similarity index 100% rename from contrib/save-utxo-set-in-bitcoind.sh rename to contrib/FastSync/save-utxo-set-in-bitcoind.sh diff --git a/contrib/save-utxo-set.sh b/contrib/FastSync/save-utxo-set.sh similarity index 100% rename from contrib/save-utxo-set.sh rename to contrib/FastSync/save-utxo-set.sh diff --git a/contrib/utxo-sets b/contrib/FastSync/utxo-sets similarity index 100% rename from contrib/utxo-sets rename to contrib/FastSync/utxo-sets From 8348d26166a48407f7a9be6abe51b417fbc9f05d Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 15:16:50 +0900 Subject: [PATCH 58/75] Document Fast Sync --- contrib/FastSync/README.md | 171 +++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 contrib/FastSync/README.md diff --git a/contrib/FastSync/README.md b/contrib/FastSync/README.md new file mode 100644 index 0000000..5049d8c --- /dev/null +++ b/contrib/FastSync/README.md @@ -0,0 +1,171 @@ +# Fast sync for Bitcoin + +## What problem does Fast Sync solve? + +When you start a new BTCPay Server, you need to synchronize your Bitcoin node from the genesis block. + +Validating from the genesis blocks takes in general 1 or 2 days on affordable servers. (around 10$ per months) + +However, on some low powered devices like raspberry PI, synchronization time will take around 2 weeks nowadays. (and it will linearly increase with time) + +Fast sync provides a solution to decrease dramatically the synchronization time to minutes or few hours. + +## How does Fast Sync solve it? + +In order for Bitcoin software to operate, you do not need all the history of blocks from the genesis. + +What you need is the state of Bitcoin up to a certain block (this state is called `UTXO Set`), and around 300 blocks before this point. + +Fast Sync downloads the UTXO Set at a specific block on an external server, and deploy it on your node. We call this file a `UTXO Set snapshot`. + +When your node start up again, it will only need to synchronize from the snapshot, to the latest blocks. + +## What are the downsides of Fast Sync? + +### Malicious UTXO Set + +Fast Sync can be potentially abused: +1. The attacker gives you an `UTXO Set snapshot` which does not follow Bitcoin consensus +2. The attacker makes a purchase to your store. +3. Nodes following the consensus would not recognize the payment as valid, but your node will. +4. The coins the attacker sent you are just worthless + +Other attacks can completely bring down your node. + +### Lightning Network routing issues + +As a merchant, you generally do not care about this issue. Merchants are mainly receiving payment, so they don't need to do any routing. + +However, if you plan to send payments from your lightning node, you may have issues: + +Because you do not have old blocks, then your lightning node won't see any channels which have been created prior to the snapshot. + +If this is a problem for you, just use an older snapshot. + +## How to verify that the UTXO Set snapshot follows the consensus? + +### If you trust the owner of this repository.... + +The snapshots recognized as valid by the `btcpayserver-docker` repository you cloned can be found on [utxo-sets](utxo-sets). + +The script [load-utxo-set.sh](load-utxo-set.sh) will download the utxo-set from the environment variable `UTXO_DOWNLOAD_LINK`. + +If `UTXO_DOWNLOAD_LINK` is empty, `NBITCOIN_NETWORK` (with value set to `mainnet` or `testnet`) will be used to take a default `UTXO_DOWNLOAD_LINK` that we hard coded inside [load-utxo-set.sh](load-utxo-set.sh). + +Once the files are downloaded, the hash will be checked against those in [utxo-sets](utxo-sets). + + +However: This only prove that `if the owner of this git repository is honest`, then the utxo-set are correct. + +NOTE: **Completing those steps does not mean that the UTXO set snapshot is legit**. It only mean that you trust the owner of this git repositoy to have verified that it is legit. + +### If you trust someone else... + +This repository contains the signatures of some developers, for example `NicolasDorier.utxo-sets.asc` contains the hashes that `NicolasDorier` verified himself. + +You need to verify with [KeyBase command line](https://keybase.io/docs/command_line) that the signature is legit: +```bash +keybase pgp verify -i NicolasDorier.utxo-sets.asc +``` +If you don't like command line, you can verify against [keybase verify page](https://keybase.io/verify) by just copying and pasting the content of [NicolasDorier.utxo-sets.asc](NicolasDorier.utxo-sets.asc). + + +You can verify that the handle `NicolasDorier` refers to the person who controls `NicolasDorier` twitter, github and reddit handle on [the keybase profile page](https://keybase.io/NicolasDorier). + +NOTE: **Completing those steps does not mean that the UTXO set snapshot is legit**. It only mean that you trust the owner of a Keybase account who has proved access to some social media accounts in the past. + +### Don't trust, verify! + +If you don't trust anybody, which should be the case as much as possible, then here are the steps to verify that the UTXO set is not malicious. + +1. You need another node that you own, `under your control`, that `you synchronized from the genesis block`. Let's call this node `Trusty`. +2. You need to create a new node which use `Fast Sync` with the UTXO snapshot you want to verify. Let's call this node, `Synchy`. +3. Wait that `Synchy` is fully synched. +4. Now on `Synchy` and `Trusty` run at the same time: + +```bash + bitcoin-cli gettxoutsetinfo +``` +If `Synchy` or `Trusty` are using BTCPay Server use: +```bash +bitcoin-cli.sh gettxoutsetinfo +``` + + +5. Verify that the output of `Synchy` and `Trusty` are **exactly** identical. + +If you have a trusted BTCPay Server node somewhere, you can ust `bitcoin-cli.sh gettxoutsetinfo` instead. + +NOTE: Completing those steps, under the assumption the software you are running is not malicious, **Prove that the UTXO set snapshot is legit**. + +## FAQ +### Can I add my signature to this repository? + +If you are a bitcoin developer or public figure, feel free to add your signature. For this you need: + +1. A [keybase account](http://keybase.io) linked to your social media accounts. +2. Follow the steps described in the [Don't trust, verify!](#donttrust) section each snapshots you want to sign. +3. Create a file with same format as [utxo-sets](utxo-sets) with the snapshots you validated. (Let's call this file `YOU.utxo-sets`) +4. Run the following command line + +``` +keybase pgp sign -i YOU.utxo-sets -c -t -o YOU.utxo-set.asc +rm YOU.utxo-set +git add YOU.utxo-set.asc +git commit -m "Add YOU utxo-set signature" -all +``` +And make a pull request to `btcpayserver-docker` repository. + +### Where can I download UTXO set snapshots + +You should not need to do this, because [load-utxo-set.sh](load-utxo-set.sh) do the hard work for you. + +But if you really want, just browse on [this listing](http://utxosets.blob.core.windows.net/public?restype=container&comp=list&include=metadata). + +Select the snapshot you want, and download it by querying `http://utxosets.blob.core.windows.net/public/{blobName}`. + +### How can I create my own snapshot? + +Assuming you have a node running on a docker deployment of BTCPay Server, you just need to run [save-utxo-set.sh](save-utxo-set.sh). + + This script shows the steps to create an archive of the current UTXO Set + It will: +1. Shutdown BTCPay Server +2. Start bitcoind +3. Prune it to up to 289 blocks from the tip +4. Stop bitcoind +5. Archive in a tarball the blocks and chainstate directories +6. Restart BTCPay +7. If `AZURE_STORAGE_CONNECTION_STRING` is set, then upload to azure storage and make the blob public, else print hash and tarball + +### How can I do this for my altcoin? + +Your altcoin does not need it, almost nobody use it compared to bitcoin. + +However, if you insist, follow what we did for Bitcoin, we can't hand hold you on this. + +### Do you plan to destroy Bitcoin? + +This feature may be controversial, because of the risk that almost nobody will follow the [Don't trust, verify!](#donttrust) step. + +What if somebody start spreading a corrupted snapshot on wild scale? + +I think this issue can be mitigated at the social layer. If several person start using social media for spreading their `bitcoin-cli getutxosetinfo` every 10 000 blocks, any corrupt snapshot would be soon detected. We plan to make expose the hash via `BTCPayServer` and make it easy for people to share. + +### Why you don't just: Run BTCPayServer as SPV + +All SPV solution brings a systemic risk to Bitcoin. If everybody relies on SPV to accept payment and miners want to change consensus rules, then you will have no leverage as individual, nor as a community to decide against. + +Even with `UTXO Set snapshots` you continue to validate consensus rules from the block of the snapshot. + +### Why you don't just: Run BTCPayServer an external node + +Why not just hosting BTCPayServer on the raspberry pi, but the bitcoin full node on another machine? + +For two reasons: + +First, `BTCPayServer` is trying to bring down the technical barriers to operate payments on your own. Running on an external node means that the user need the technical skills to set it up. + +`BTCPayServer` also relies on Bitcoin's RPC which is not meant to be exposed on internet. We can't see any simple enough solution which would allow normal people to run an external node somewhere else. + +The second reason is about reliability: You want your service to be self contained. If you host a node on another server, and for some reason this server goes down, then your `BTCPayServer` hosted on the raspberry PI will also cease to function. From 034e264d2e133acf40fc450ac2954c2b506e1de2 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 15:18:06 +0900 Subject: [PATCH 59/75] fix typo --- contrib/FastSync/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/FastSync/README.md b/contrib/FastSync/README.md index 5049d8c..497af05 100644 --- a/contrib/FastSync/README.md +++ b/contrib/FastSync/README.md @@ -152,13 +152,13 @@ What if somebody start spreading a corrupted snapshot on wild scale? I think this issue can be mitigated at the social layer. If several person start using social media for spreading their `bitcoin-cli getutxosetinfo` every 10 000 blocks, any corrupt snapshot would be soon detected. We plan to make expose the hash via `BTCPayServer` and make it easy for people to share. -### Why you don't just: Run BTCPayServer as SPV +### Why you don't just: Make BTCPayServer relies on SPV All SPV solution brings a systemic risk to Bitcoin. If everybody relies on SPV to accept payment and miners want to change consensus rules, then you will have no leverage as individual, nor as a community to decide against. Even with `UTXO Set snapshots` you continue to validate consensus rules from the block of the snapshot. -### Why you don't just: Run BTCPayServer an external node +### Why you don't just: Make BTCPayServer relies on an external trusted node Why not just hosting BTCPayServer on the raspberry pi, but the bitcoin full node on another machine? From 0d6c878be4d121b2c792d8dd474b7fe31eeb3e4e Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 15:18:21 +0900 Subject: [PATCH 60/75] fix typo --- contrib/FastSync/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/FastSync/README.md b/contrib/FastSync/README.md index 497af05..c6f738b 100644 --- a/contrib/FastSync/README.md +++ b/contrib/FastSync/README.md @@ -152,13 +152,13 @@ What if somebody start spreading a corrupted snapshot on wild scale? I think this issue can be mitigated at the social layer. If several person start using social media for spreading their `bitcoin-cli getutxosetinfo` every 10 000 blocks, any corrupt snapshot would be soon detected. We plan to make expose the hash via `BTCPayServer` and make it easy for people to share. -### Why you don't just: Make BTCPayServer relies on SPV +### Why you don't just: Make BTCPayServer rely on SPV All SPV solution brings a systemic risk to Bitcoin. If everybody relies on SPV to accept payment and miners want to change consensus rules, then you will have no leverage as individual, nor as a community to decide against. Even with `UTXO Set snapshots` you continue to validate consensus rules from the block of the snapshot. -### Why you don't just: Make BTCPayServer relies on an external trusted node +### Why you don't just: Make BTCPayServer rely on an external trusted node Why not just hosting BTCPayServer on the raspberry pi, but the bitcoin full node on another machine? From 87bdc3dfdc6fbacf8effbd23775304d7a698773f Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 15:25:11 +0900 Subject: [PATCH 61/75] Remove repeated --- contrib/FastSync/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/contrib/FastSync/README.md b/contrib/FastSync/README.md index c6f738b..2fc4005 100644 --- a/contrib/FastSync/README.md +++ b/contrib/FastSync/README.md @@ -94,8 +94,6 @@ bitcoin-cli.sh gettxoutsetinfo 5. Verify that the output of `Synchy` and `Trusty` are **exactly** identical. -If you have a trusted BTCPay Server node somewhere, you can ust `bitcoin-cli.sh gettxoutsetinfo` instead. - NOTE: Completing those steps, under the assumption the software you are running is not malicious, **Prove that the UTXO set snapshot is legit**. ## FAQ From 2023516a3826ac6417b7fc56d4ebc6850f573837 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 15:26:01 +0900 Subject: [PATCH 62/75] Fix typo --- contrib/FastSync/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/FastSync/README.md b/contrib/FastSync/README.md index 2fc4005..a5777b0 100644 --- a/contrib/FastSync/README.md +++ b/contrib/FastSync/README.md @@ -94,7 +94,7 @@ bitcoin-cli.sh gettxoutsetinfo 5. Verify that the output of `Synchy` and `Trusty` are **exactly** identical. -NOTE: Completing those steps, under the assumption the software you are running is not malicious, **Prove that the UTXO set snapshot is legit**. +NOTE: Completing those steps, under the assumption the software you are running is not malicious, **correctly prove that the UTXO set snapshot is legit**. ## FAQ ### Can I add my signature to this repository? From 0ecf274decd4485c1cb3f45921c68231d233c554 Mon Sep 17 00:00:00 2001 From: rockstardev Date: Fri, 30 Nov 2018 00:59:16 -0600 Subject: [PATCH 63/75] Signing UTXO sets, rockstardev --- contrib/FastSync/rockstardev.utxo-set.asc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 contrib/FastSync/rockstardev.utxo-set.asc diff --git a/contrib/FastSync/rockstardev.utxo-set.asc b/contrib/FastSync/rockstardev.utxo-set.asc new file mode 100644 index 0000000..d694666 --- /dev/null +++ b/contrib/FastSync/rockstardev.utxo-set.asc @@ -0,0 +1,21 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +fab994299273080bf7124c8c45c4ada867974ca747900178496a69e450cf713f utxo-snapshot-bitcoin-mainnet-551636.tar +eabaaa717bb8eeaf603e383dd8642d9d34df8e767fccbd208b0c936b79c82742 utxo-snapshot-bitcoin-testnet-1445586.tar +-----BEGIN PGP SIGNATURE----- + +wsFcBAEBCAAQBQJcAN7+CRB5wjOsK6943QAAvx8QADXzOsU/tfn0h2fDwNWCVI+D +VxoWCc+WshOu7vAH0qm/oUSjs99+FS0nP6eHSsBy+vO6h6cdI6CC8I062faAy/oH +8eyH1WIxjLs8cXySImR60M804u7906Jmf9ouUu0jqlNJVHE34utIXfrzhlf3cZoj +737Y9gRDLYZuiFK7h9H1hInD8h9CpkOachglbBKjErZ/E53q3EVxk6jjbOp1fvfk +2KekrZThiUHa0aRD1OfyDiCA611TsAplfF/2OpXeBB8yQKm2qgkz+xLXW68noQnC +0ErxAHycqgvgeYKGZr9JQNCBvrv9ArZY15TJiGkse2P/YmisEOpePzh16kQkJARU +W5ew3cCOwDnhUtV1oZAoVLu75XlIdRn404EKjHr7JbwlT9RI1EsFb+ESG9wtiTur +a743yczsNXePfD1yO/nm2n6O/CW4HeKMDbKakL0FT3hLaoo3Yc72YItJw93zVWdL +tO7aCRFtBXKUGG1rAbvXQIBr4JDEMq4H8/aE8dBJXneRn9wMlFVEpM5Yi9OMzf1M +QoelL0vkj79Hfx13jQCAY/z3gadZ12XNMlsWembPFUpSxGwGEDra41olsUkjedcm +0ZAHzRjIXcY18HSxEHjqiOnU2lFaBZffXr8GlUgMmUepEV/MbKkgL9JOo+6JsizF +tYLN91o5MaDkR4Tf2TCj +=aSFC +-----END PGP SIGNATURE----- From 37a63303d2ba58748b1c9f7baddd395e0944f7e1 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 16:31:15 +0900 Subject: [PATCH 64/75] fix typo --- contrib/FastSync/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/FastSync/README.md b/contrib/FastSync/README.md index a5777b0..56a1109 100644 --- a/contrib/FastSync/README.md +++ b/contrib/FastSync/README.md @@ -107,9 +107,9 @@ If you are a bitcoin developer or public figure, feel free to add your signature 4. Run the following command line ``` -keybase pgp sign -i YOU.utxo-sets -c -t -o YOU.utxo-set.asc -rm YOU.utxo-set -git add YOU.utxo-set.asc +keybase pgp sign -i YOU.utxo-sets -c -t -o YOU.utxo-sets.asc +rm YOU.utxo-sets +git add YOU.utxo-sets.asc git commit -m "Add YOU utxo-set signature" -all ``` And make a pull request to `btcpayserver-docker` repository. From 2718d301e41f935306a0c0d10ee9d682039352b8 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 16:32:16 +0900 Subject: [PATCH 65/75] rename rockstardev sets --- .../{rockstardev.utxo-set.asc => rockstardev.utxo-sets.asc} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename contrib/FastSync/{rockstardev.utxo-set.asc => rockstardev.utxo-sets.asc} (100%) diff --git a/contrib/FastSync/rockstardev.utxo-set.asc b/contrib/FastSync/rockstardev.utxo-sets.asc similarity index 100% rename from contrib/FastSync/rockstardev.utxo-set.asc rename to contrib/FastSync/rockstardev.utxo-sets.asc From 0d9a68a88884898fadacf008bb0182f83a50c255 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 16:42:01 +0900 Subject: [PATCH 66/75] move sigs in different directory --- contrib/FastSync/README.md | 13 +++++++------ .../FastSync/{ => sigs}/NicolasDorier.utxo-sets.asc | 0 .../FastSync/{ => sigs}/rockstardev.utxo-sets.asc | 0 3 files changed, 7 insertions(+), 6 deletions(-) rename contrib/FastSync/{ => sigs}/NicolasDorier.utxo-sets.asc (100%) rename contrib/FastSync/{ => sigs}/rockstardev.utxo-sets.asc (100%) diff --git a/contrib/FastSync/README.md b/contrib/FastSync/README.md index 56a1109..faca61e 100644 --- a/contrib/FastSync/README.md +++ b/contrib/FastSync/README.md @@ -61,13 +61,13 @@ NOTE: **Completing those steps does not mean that the UTXO set snapshot is legit ### If you trust someone else... -This repository contains the signatures of some developers, for example `NicolasDorier.utxo-sets.asc` contains the hashes that `NicolasDorier` verified himself. +This repository contains the signatures of some developers, for example [sigs/NicolasDorier.utxo-sets.asc](sigs/NicolasDorier.utxo-sets.asc) contains the hashes that `NicolasDorier` verified himself. You need to verify with [KeyBase command line](https://keybase.io/docs/command_line) that the signature is legit: ```bash -keybase pgp verify -i NicolasDorier.utxo-sets.asc +keybase pgp verify -i sigs/NicolasDorier.utxo-sets.asc ``` -If you don't like command line, you can verify against [keybase verify page](https://keybase.io/verify) by just copying and pasting the content of [NicolasDorier.utxo-sets.asc](NicolasDorier.utxo-sets.asc). +If you don't like command line, you can verify against [keybase verify page](https://keybase.io/verify) by just copying and pasting the content of [sigs/NicolasDorier.utxo-sets.asc](sigs/NicolasDorier.utxo-sets.asc). You can verify that the handle `NicolasDorier` refers to the person who controls `NicolasDorier` twitter, github and reddit handle on [the keybase profile page](https://keybase.io/NicolasDorier). @@ -106,10 +106,11 @@ If you are a bitcoin developer or public figure, feel free to add your signature 3. Create a file with same format as [utxo-sets](utxo-sets) with the snapshots you validated. (Let's call this file `YOU.utxo-sets`) 4. Run the following command line -``` -keybase pgp sign -i YOU.utxo-sets -c -t -o YOU.utxo-sets.asc +```bash +# Assuming your are inside the FastSync directory +keybase pgp sign -i YOU.utxo-sets -c -t -o sigs/YOU.utxo-sets.asc rm YOU.utxo-sets -git add YOU.utxo-sets.asc +git add sigs/YOU.utxo-sets.asc git commit -m "Add YOU utxo-set signature" -all ``` And make a pull request to `btcpayserver-docker` repository. diff --git a/contrib/FastSync/NicolasDorier.utxo-sets.asc b/contrib/FastSync/sigs/NicolasDorier.utxo-sets.asc similarity index 100% rename from contrib/FastSync/NicolasDorier.utxo-sets.asc rename to contrib/FastSync/sigs/NicolasDorier.utxo-sets.asc diff --git a/contrib/FastSync/rockstardev.utxo-sets.asc b/contrib/FastSync/sigs/rockstardev.utxo-sets.asc similarity index 100% rename from contrib/FastSync/rockstardev.utxo-sets.asc rename to contrib/FastSync/sigs/rockstardev.utxo-sets.asc From 080fbdaa9c6cd3c4b4f57415ccbbc9e3fc9b5749 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 17:19:41 +0900 Subject: [PATCH 67/75] bump docker-compose --- btcpay-setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index 026c846..60bfe15 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -234,14 +234,14 @@ if ! [ -x "$(command -v docker)" ] || ! [ -x "$(command -v docker-compose)" ]; t fi if ! [ -x "$(command -v docker-compose)" ]; then if [[ "$(uname -m)" == "x86_64" ]]; then - DOCKER_COMPOSE_DOWNLOAD="https://github.com/docker/compose/releases/download/1.17.1/docker-compose-$(uname -s)-$(uname -m)" + DOCKER_COMPOSE_DOWNLOAD="https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m`" echo "Trying to install docker-compose by downloading on $DOCKER_COMPOSE_DOWNLOAD ($(uname -m))" curl -L "$DOCKER_COMPOSE_DOWNLOAD" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose else echo "Trying to install docker-compose by using the docker-compose-builder ($(uname -m))" ! [ -d "dist" ] && mkdir dist - docker run --rm -ti -v "$(pwd)/dist:/dist" btcpayserver/docker-compose-builder:1.22.0 + docker run --rm -ti -v "$(pwd)/dist:/dist" btcpayserver/docker-compose-builder:1.23.2 mv dist/docker-compose /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose rm -rf "dist" From 8c9d9f091006e7cb638c5f3323cd6299cde11c02 Mon Sep 17 00:00:00 2001 From: wakiyamap Date: Fri, 30 Nov 2018 05:00:14 -0500 Subject: [PATCH 68/75] support monacoin --- btcpay-setup.sh | 2 +- .../docker-fragments/monacoin.yml | 34 +++++++++++++++++++ .../docker-fragments/opt-save-memory.yml | 7 +++- .../docker-fragments/opt-save-storage-s.yml | 3 ++ .../docker-fragments/opt-save-storage-xs.yml | 3 ++ .../docker-fragments/opt-save-storage-xxs.yml | 3 ++ .../docker-fragments/opt-save-storage.yml | 5 ++- .../src/CryptoDefinition.cs | 7 +++- monacoin-cli.ps1 | 1 + monacoin-cli.sh | 3 ++ 10 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 docker-compose-generator/docker-fragments/monacoin.yml create mode 100755 monacoin-cli.ps1 create mode 100755 monacoin-cli.sh diff --git a/btcpay-setup.sh b/btcpay-setup.sh index 60bfe15..ccd480e 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -52,7 +52,7 @@ Environment variables: LETSENCRYPT_EMAIL: A mail will be sent to this address if certificate expires and fail to renew automatically (eg. me@example.com) NBITCOIN_NETWORK: The type of network to use (eg. mainnet, testnet or regtest. Default: mainnet) LIGHTNING_ALIAS: An alias for your lightning network node if used - BTCPAYGEN_CRYPTO1: First supported crypto currency (eg. btc, ltc, btg, grs, ftc, via, none. Default: btc) + BTCPAYGEN_CRYPTO1: First supported crypto currency (eg. btc, ltc, btg, grs, ftc, via, mona, none. Default: btc) BTCPAYGEN_CRYPTO2: Second supported crypto currency (Default: empty) BTCPAYGEN_CRYPTON: N th supported crypto currency where N is maximum at maximum 9. (Default: none) BTCPAYGEN_REVERSEPROXY: Whether to use or not a reverse proxy. NGinx setup HTTPS for you. (eg. nginx, traefik, none. Default: nginx) diff --git a/docker-compose-generator/docker-fragments/monacoin.yml b/docker-compose-generator/docker-fragments/monacoin.yml new file mode 100644 index 0000000..6ca9d08 --- /dev/null +++ b/docker-compose-generator/docker-fragments/monacoin.yml @@ -0,0 +1,34 @@ +version: "3" + +services: + monacoind: + restart: unless-stopped + container_name: btcpayserver_monacoind + image: nicolasdorier/docker-monacoin:0.16.3 + environment: + BITCOIN_EXTRA_ARGS: | + rpcport=43782 + ${NBITCOIN_NETWORK:-regtest}=1 + port=39388 + whitelist=0.0.0.0/0 + expose: + - "43782" + - "39388" + volumes: + - "monacoin_datadir:/data" + nbxplorer: + environment: + NBXPLORER_CHAINS: "mona" + NBXPLORER_MONARPCURL: http://monacoind:43782/ + NBXPLORER_MONANODEENDPOINT: monacoind:39388 + links: + - monacoind + volumes: + - "monacoin_datadir:/root/.monacoin" + btcpayserver: + environment: + BTCPAY_MONAEXPLORERURL: http://nbxplorer:32838/ + BTCPAY_CHAINS: "mona" + +volumes: + monacoin_datadir: diff --git a/docker-compose-generator/docker-fragments/opt-save-memory.yml b/docker-compose-generator/docker-fragments/opt-save-memory.yml index 90a4479..797c58f 100644 --- a/docker-compose-generator/docker-fragments/opt-save-memory.yml +++ b/docker-compose-generator/docker-fragments/opt-save-memory.yml @@ -31,4 +31,9 @@ services: environment: BITCOIN_EXTRA_ARGS: | dbcache=150 - maxmempool=100 \ No newline at end of file + maxmempool=100 + monacoind: + environment: + BITCOIN_EXTRA_ARGS: | + dbcache=150 + maxmempool=100 diff --git a/docker-compose-generator/docker-fragments/opt-save-storage-s.yml b/docker-compose-generator/docker-fragments/opt-save-storage-s.yml index 9acf2c0..d4dd57e 100644 --- a/docker-compose-generator/docker-fragments/opt-save-storage-s.yml +++ b/docker-compose-generator/docker-fragments/opt-save-storage-s.yml @@ -24,3 +24,6 @@ services: dogecoind: environment: DOGECOIN_EXTRA_ARGS: prune=50000 + monacoind: + environment: + BITCOIN_EXTRA_ARGS: prune=50000 diff --git a/docker-compose-generator/docker-fragments/opt-save-storage-xs.yml b/docker-compose-generator/docker-fragments/opt-save-storage-xs.yml index 7b95f20..a413ccc 100644 --- a/docker-compose-generator/docker-fragments/opt-save-storage-xs.yml +++ b/docker-compose-generator/docker-fragments/opt-save-storage-xs.yml @@ -24,3 +24,6 @@ services: dogecoind: environment: DOGECOIN_EXTRA_ARGS: prune=25000 + monacoind: + environment: + BITCOIN_EXTRA_ARGS: prune=25000 diff --git a/docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml b/docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml index 4e8ce5f..30456bd 100644 --- a/docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml +++ b/docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml @@ -24,3 +24,6 @@ services: dogecoind: environment: DOGECOIN_EXTRA_ARGS: prune=5000 + monacoind: + environment: + BITCOIN_EXTRA_ARGS: prune=5000 diff --git a/docker-compose-generator/docker-fragments/opt-save-storage.yml b/docker-compose-generator/docker-fragments/opt-save-storage.yml index 4a88674..72dbe25 100644 --- a/docker-compose-generator/docker-fragments/opt-save-storage.yml +++ b/docker-compose-generator/docker-fragments/opt-save-storage.yml @@ -23,4 +23,7 @@ services: BITCOIN_EXTRA_ARGS: prune=100000 dogecoind: environment: - DOGECOIN_EXTRA_ARGS: prune=100000 \ No newline at end of file + DOGECOIN_EXTRA_ARGS: prune=100000 + monacoind: + environment: + BITCOIN_EXTRA_ARGS: prune=100000 diff --git a/docker-compose-generator/src/CryptoDefinition.cs b/docker-compose-generator/src/CryptoDefinition.cs index 4798b56..4825ec3 100644 --- a/docker-compose-generator/src/CryptoDefinition.cs +++ b/docker-compose-generator/src/CryptoDefinition.cs @@ -66,10 +66,15 @@ namespace DockerGenerator Crypto = "via", CryptoFragment = "viacoin" }, - new CryptoDefinition() + new CryptoDefinition() { Crypto = "doge", CryptoFragment = "dogecoin" + }, + new CryptoDefinition() + { + Crypto = "mona", + CryptoFragment = "monacoin" } }; } diff --git a/monacoin-cli.ps1 b/monacoin-cli.ps1 new file mode 100755 index 0000000..4985daf --- /dev/null +++ b/monacoin-cli.ps1 @@ -0,0 +1 @@ +docker exec -ti btcpayserver_monacoind monacoin-cli -datadir="/data" $args diff --git a/monacoin-cli.sh b/monacoin-cli.sh new file mode 100755 index 0000000..c289ead --- /dev/null +++ b/monacoin-cli.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker exec -ti btcpayserver_monacoind monacoin-cli -datadir="/data" "$@" From c4f80e6f2ee06bb3181a061371f5ec681a802db1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=84=87=E5=B1=B1P?= Date: Fri, 30 Nov 2018 20:14:38 +0900 Subject: [PATCH 69/75] fix typo --- docker-compose-generator/docker-fragments/monacoin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/monacoin.yml b/docker-compose-generator/docker-fragments/monacoin.yml index 6ca9d08..c9f788e 100644 --- a/docker-compose-generator/docker-fragments/monacoin.yml +++ b/docker-compose-generator/docker-fragments/monacoin.yml @@ -4,7 +4,7 @@ services: monacoind: restart: unless-stopped container_name: btcpayserver_monacoind - image: nicolasdorier/docker-monacoin:0.16.3 + image: wakiyamap/docker-monacoin:0.16.3 environment: BITCOIN_EXTRA_ARGS: | rpcport=43782 From 71ced0c11f5aaed0ff6ad34e082b2606e2b4161b Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 1 Dec 2018 11:49:33 +0900 Subject: [PATCH 70/75] Disable bitcoin wallet (interference with Fast Sync) --- docker-compose-generator/docker-fragments/bitcoin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/bitcoin.yml b/docker-compose-generator/docker-fragments/bitcoin.yml index 84a10ea..b56ccf5 100644 --- a/docker-compose-generator/docker-fragments/bitcoin.yml +++ b/docker-compose-generator/docker-fragments/bitcoin.yml @@ -8,9 +8,9 @@ services: environment: BITCOIN_NETWORK: ${NBITCOIN_NETWORK:-regtest} BITCOIN_EXTRA_ARGS: | - deprecatedrpc=signrawtransaction rpcport=43782 port=39388 + disablewallet=1 whitelist=0.0.0.0/0 expose: - "43782" From ad578deefb462c80354f489eeb7b1ef4710b1759 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 1 Dec 2018 13:26:26 +0900 Subject: [PATCH 71/75] bump --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index 0a5a0a0..9a17bfc 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_IMAGE:-btcpayserver/btcpayserver:1.0.3.19} + image: ${BTCPAY_IMAGE:-btcpayserver/btcpayserver:1.0.3.21} expose: - "49392" environment: From a52b65e459cda9e88fdd207e01d3853ed4df56d6 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sat, 1 Dec 2018 22:13:50 +0900 Subject: [PATCH 72/75] add doge to the list of supported coins --- btcpay-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/btcpay-setup.sh b/btcpay-setup.sh index ccd480e..54c7e83 100755 --- a/btcpay-setup.sh +++ b/btcpay-setup.sh @@ -52,7 +52,7 @@ Environment variables: LETSENCRYPT_EMAIL: A mail will be sent to this address if certificate expires and fail to renew automatically (eg. me@example.com) NBITCOIN_NETWORK: The type of network to use (eg. mainnet, testnet or regtest. Default: mainnet) LIGHTNING_ALIAS: An alias for your lightning network node if used - BTCPAYGEN_CRYPTO1: First supported crypto currency (eg. btc, ltc, btg, grs, ftc, via, mona, none. Default: btc) + BTCPAYGEN_CRYPTO1: First supported crypto currency (eg. btc, ltc, btg, grs, ftc, via, doge, mona, none. Default: btc) BTCPAYGEN_CRYPTO2: Second supported crypto currency (Default: empty) BTCPAYGEN_CRYPTON: N th supported crypto currency where N is maximum at maximum 9. (Default: none) BTCPAYGEN_REVERSEPROXY: Whether to use or not a reverse proxy. NGinx setup HTTPS for you. (eg. nginx, traefik, none. Default: nginx) From c9a0454034886778be8364515eb17abf8b041aec Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sun, 2 Dec 2018 13:32:01 +0900 Subject: [PATCH 73/75] Add script and instruction to build all the docker images by yourself --- contrib/DockerFileBuildHelper/DockerFile.cs | 28 ++ .../DockerFileBuildHelper.csproj | 10 + contrib/DockerFileBuildHelper/DockerInfo.cs | 22 ++ contrib/DockerFileBuildHelper/Extensions.cs | 19 ++ contrib/DockerFileBuildHelper/Image.cs | 55 ++++ contrib/DockerFileBuildHelper/Program.cs | 271 ++++++++++++++++++ contrib/DockerFileBuildHelper/README.md | 16 ++ contrib/DockerFileBuildHelper/run.sh | 3 + contrib/DockerFileBuildHelper/update-repo.ps1 | 1 + contrib/DockerFileBuildHelper/update-repo.sh | 3 + contrib/build-all-images.sh | 202 +++++++++++++ 11 files changed, 630 insertions(+) create mode 100644 contrib/DockerFileBuildHelper/DockerFile.cs create mode 100644 contrib/DockerFileBuildHelper/DockerFileBuildHelper.csproj create mode 100644 contrib/DockerFileBuildHelper/DockerInfo.cs create mode 100644 contrib/DockerFileBuildHelper/Extensions.cs create mode 100644 contrib/DockerFileBuildHelper/Image.cs create mode 100644 contrib/DockerFileBuildHelper/Program.cs create mode 100644 contrib/DockerFileBuildHelper/README.md create mode 100755 contrib/DockerFileBuildHelper/run.sh create mode 100755 contrib/DockerFileBuildHelper/update-repo.ps1 create mode 100755 contrib/DockerFileBuildHelper/update-repo.sh create mode 100755 contrib/build-all-images.sh diff --git a/contrib/DockerFileBuildHelper/DockerFile.cs b/contrib/DockerFileBuildHelper/DockerFile.cs new file mode 100644 index 0000000..b1d7d82 --- /dev/null +++ b/contrib/DockerFileBuildHelper/DockerFile.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DockerFileBuildHelper +{ + public class DockerFile + { + public string DockerFileName { get; private set; } + public string DockerFilePath { get; private set; } + + public static DockerFile Parse(string str) + { + var file = new DockerFile(); + var lastPart = str.LastIndexOf('/'); + file.DockerFileName = str.Substring(lastPart + 1); + if (lastPart == -1) + { + file.DockerFilePath = "."; + } + else + { + file.DockerFilePath = str.Substring(0, lastPart); + } + return file; + } + } +} diff --git a/contrib/DockerFileBuildHelper/DockerFileBuildHelper.csproj b/contrib/DockerFileBuildHelper/DockerFileBuildHelper.csproj new file mode 100644 index 0000000..5a77ed4 --- /dev/null +++ b/contrib/DockerFileBuildHelper/DockerFileBuildHelper.csproj @@ -0,0 +1,10 @@ + + + + Exe + netcoreapp2.1 + + + + + diff --git a/contrib/DockerFileBuildHelper/DockerInfo.cs b/contrib/DockerFileBuildHelper/DockerInfo.cs new file mode 100644 index 0000000..ace3445 --- /dev/null +++ b/contrib/DockerFileBuildHelper/DockerInfo.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DockerFileBuildHelper +{ + public class DockerInfo + { + public string DockerFilePath { get; set; } + public string DockerFilePathARM32v7 { get; set; } + public string DockerFilePathARM64v8 { get; set; } + public string DockerHubLink { get; set; } + public string GitLink { get; set; } + public string GitRef { get; set; } + public Image Image { get; internal set; } + + public string GetGithubLinkOf(string path) + { + return $"https://raw.githubusercontent.com/{GitLink.Substring("https://github.com/".Length)}/{GitRef}/{path}"; + } + } +} diff --git a/contrib/DockerFileBuildHelper/Extensions.cs b/contrib/DockerFileBuildHelper/Extensions.cs new file mode 100644 index 0000000..f645a48 --- /dev/null +++ b/contrib/DockerFileBuildHelper/Extensions.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; +using YamlDotNet.RepresentationModel; + +namespace DockerFileBuildHelper +{ + public static class Extensions + { + public static YamlNode TryGet(this YamlNode node, string key) + { + try + { + return node[key]; + } + catch (KeyNotFoundException) { return null; } + } + } +} diff --git a/contrib/DockerFileBuildHelper/Image.cs b/contrib/DockerFileBuildHelper/Image.cs new file mode 100644 index 0000000..7733b79 --- /dev/null +++ b/contrib/DockerFileBuildHelper/Image.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; + +namespace DockerFileBuildHelper +{ + public class Image + { + public string User { get; private set; } + public string Name { get; private set; } + public string Tag { get; private set; } + + public string DockerHubLink + { + get + { + return User == string.Empty ? + $"https://hub.docker.com/_/{Name}" : + $"https://hub.docker.com/r/{User}/{Name}"; + } + } + + public static Image Parse(string str) + { + //${BTCPAY_IMAGE: -btcpayserver / btcpayserver:1.0.3.21} + var variableMatch = Regex.Match(str, @"\$\{[^-]+-([^\}]+)\}"); + if(variableMatch.Success) + { + str = variableMatch.Groups[1].Value; + } + Image img = new Image(); + var match = Regex.Match(str, "([^/]*/)?([^:]+):?(.*)"); + if (!match.Success) + throw new FormatException(); + img.User = match.Groups[1].Length == 0 ? string.Empty : match.Groups[1].Value.Substring(0, match.Groups[1].Value.Length - 1); + img.Name = match.Groups[2].Value; + img.Tag = match.Groups[3].Value; + if (img.Tag == string.Empty) + img.Tag = "latest"; + return img; + } + + public override string ToString() + { + StringBuilder builder = new StringBuilder(); + if (!String.IsNullOrWhiteSpace(User)) + builder.Append($"{User}/"); + builder.Append($"{Name}"); + if (!String.IsNullOrWhiteSpace(Tag)) + builder.Append($":{Tag}"); + return builder.ToString(); + } + } +} diff --git a/contrib/DockerFileBuildHelper/Program.cs b/contrib/DockerFileBuildHelper/Program.cs new file mode 100644 index 0000000..bd8cde0 --- /dev/null +++ b/contrib/DockerFileBuildHelper/Program.cs @@ -0,0 +1,271 @@ +using System; +using YamlDotNet; +using YamlDotNet.Helpers; +using System.Linq; +using System.Collections.Generic; +using System.IO; +using YamlDotNet.RepresentationModel; +using YamlDotNet.Serialization; +using System.Net.Http; +using System.Threading.Tasks; +using System.Text; + +namespace DockerFileBuildHelper +{ + class Program + { + static int Main(string[] args) + { + string outputFile = null; + for (int i = 0; i < args.Length; i++) + { + if (args[i] == "-o") + outputFile = args[i + 1]; + } + return new Program().Run(outputFile) ? 0 : 1; + } + + private bool Run(string outputFile) + { + var fragmentDirectory = Path.GetFullPath(Path.Combine(FindRoot("contrib"), "..", "docker-compose-generator", "docker-fragments")); + List> downloading = new List>(); + List dockerInfos = new List(); + foreach(var image in new[] + { + Image.Parse("btcpayserver/docker-compose-generator"), + Image.Parse("btcpayserver/docker-compose-builder:1.23.2"), + }.Concat(GetImages(fragmentDirectory))) + { + Console.WriteLine($"Image: {image.ToString()}"); + var info = GetDockerInfo(image); + if (info == null) + { + Console.WriteLine($"Missing image info: {image}"); + return false; + } + dockerInfos.Add(info); + downloading.Add(CheckLink(info, info.DockerFilePath)); + downloading.Add(CheckLink(info, info.DockerFilePathARM32v7)); + downloading.Add(CheckLink(info, info.DockerFilePathARM64v8)); + } + + Task.WaitAll(downloading.ToArray()); + var canDownloadEverything = downloading.All(o => o.Result); + if (!canDownloadEverything) + return false; + StringBuilder builder = new StringBuilder(); + builder.AppendLine("#!/bin/bash"); + builder.AppendLine(); + builder.AppendLine("# This file is automatically generated by the DockerFileBuildHelper tool, run DockerFileBuildHelper/update-repo.sh to update it"); + builder.AppendLine("set -e"); + foreach (var info in dockerInfos) + { + builder.AppendLine($"# Build {info.Image.Name}"); + builder.AppendLine($"git clone {info.GitLink} {info.Image.Name}"); + var dockerFile = DockerFile.Parse($"{info.DockerFilePath ?? info.DockerFilePathARM32v7 ?? info.DockerFilePathARM64v8}"); + builder.AppendLine($"cd {info.Image.Name}"); + builder.AppendLine($"git checkout {info.GitRef}"); + builder.AppendLine($"cd {dockerFile.DockerFilePath}"); + builder.AppendLine($"docker build -f \"{dockerFile.DockerFileName}\" -t \"{info.Image}\" ."); + builder.AppendLine($"cd - && cd .."); + builder.AppendLine(); + builder.AppendLine(); + } + var script = builder.ToString().Replace("\r\n", "\n"); + if (string.IsNullOrEmpty(outputFile)) + outputFile = "build-all.sh"; + File.WriteAllText(outputFile, script); + Console.WriteLine($"Generated file \"{Path.GetFullPath(outputFile)}\""); + return true; + } + HttpClient client = new HttpClient(); + private async Task CheckLink(DockerInfo info, string path) + { + if (path == null) + return true; + var link = info.GetGithubLinkOf(path); + var resp = await client.GetAsync(link); + if(!resp.IsSuccessStatusCode) + { + Console.WriteLine($"\tBroken link detected for image {info.Image} ({link})"); + return false; + } + return true; + } + + private IEnumerable GetImages(string fragmentDirectory) + { + var deserializer = new DeserializerBuilder().Build(); + var serializer = new SerializerBuilder().Build(); + foreach (var file in Directory.EnumerateFiles(fragmentDirectory, "*.yml")) + { + var root = ParseDocument(file); + if (root.TryGet("services") == null) + continue; + foreach (var service in ((YamlMappingNode)root["services"]).Children) + { + var imageStr = service.Value.TryGet("image"); + if (imageStr == null) + continue; + var image = Image.Parse(imageStr.ToString()); + yield return image; + } + } + } + private DockerInfo GetDockerInfo(Image image) + { + DockerInfo dockerInfo = new DockerInfo(); + switch (image.Name) + { + case "btglnd": + dockerInfo.DockerFilePath = "BTCPayServer.Dockerfile"; + dockerInfo.GitLink = "https://github.com/vutov/lnd"; + dockerInfo.GitRef = "master"; + break; + case "docker-compose-builder": + dockerInfo.DockerFilePathARM32v7 = "linuxarm32v7.Dockerfile"; + dockerInfo.GitLink = "https://github.com/btcpayserver/docker-compose-builder"; + dockerInfo.GitRef = $"v{image.Tag}"; + break; + case "docker-compose-generator": + dockerInfo.DockerFilePath = "docker-compose-generator/linuxamd64.Dockerfile"; + dockerInfo.DockerFilePathARM32v7 = "docker-compose-generator/linuxarm32v7.Dockerfile"; + dockerInfo.GitLink = "https://github.com/btcpayserver/btcpayserver-docker"; + dockerInfo.GitRef = $"dcg-latest"; + break; + case "docker-bitcoingold": + dockerInfo.DockerFilePath = $"bitcoingold/{image.Tag}/Dockerfile"; + dockerInfo.GitLink = "https://github.com/Vutov/docker-bitcoin"; + dockerInfo.GitRef = "master"; + break; + case "clightning": + dockerInfo.DockerFilePath = $"Dockerfile"; + dockerInfo.GitLink = "https://github.com/NicolasDorier/lightning"; + dockerInfo.GitRef = $"basedon-{image.Tag}"; + break; + case "lnd": + dockerInfo.DockerFilePath = "BTCPayServer.Dockerfile"; + dockerInfo.GitLink = "https://github.com/btcpayserver/lnd"; + dockerInfo.GitRef = $"basedon-v{image.Tag}"; + break; + case "bitcoin": + dockerInfo.DockerFilePath = $"Bitcoin/{image.Tag}/linuxamd64.Dockerfile"; + dockerInfo.DockerFilePathARM32v7 = $"Bitcoin/{image.Tag}/linuxarm32v7.Dockerfile"; + dockerInfo.DockerFilePathARM64v8 = $"Bitcoin/{image.Tag}/linuxarm64v8.Dockerfile"; + dockerInfo.GitLink = "https://github.com/btcpayserver/dockerfile-deps"; + dockerInfo.GitRef = $"Bitcoin/{image.Tag}"; + break; + case "btcpayserver": + dockerInfo.DockerFilePath = "Dockerfile.linuxamd64"; + dockerInfo.DockerFilePathARM32v7 = "Dockerfile.linuxarm32v7"; + dockerInfo.GitLink = "https://github.com/btcpayserver/btcpayserver"; + dockerInfo.GitRef = $"v{image.Tag}"; + break; + case "nbxplorer": + dockerInfo.DockerFilePath = "Dockerfile.linuxamd64"; + dockerInfo.DockerFilePathARM32v7 = "Dockerfile.linuxarm32v7"; + dockerInfo.GitLink = "https://github.com/dgarage/nbxplorer"; + dockerInfo.GitRef = $"v{image.Tag}"; + break; + case "dogecoin": + dockerInfo.DockerFilePath = $"dogecoin/{image.Tag}/Dockerfile"; + dockerInfo.GitLink = "https://github.com/rockstardev/docker-bitcoin"; + dockerInfo.GitRef = "feature/dogecoin"; + break; + case "docker-feathercoin": + dockerInfo.DockerFilePath = $"feathercoin/{image.Tag}/Dockerfile"; + dockerInfo.GitLink = "https://github.com/ChekaZ/docker"; + dockerInfo.GitRef = "master"; + break; + case "docker-groestlcoin": + dockerInfo.DockerFilePath = $"groestlcoin/{image.Tag}/Dockerfile"; + dockerInfo.GitLink = "https://github.com/NicolasDorier/docker-bitcoin"; + dockerInfo.GitRef = "master"; + break; + case "docker-viacoin": + dockerInfo.DockerFilePath = $"viacoin/{image.Tag}/docker-viacoin"; + dockerInfo.GitLink = "https://github.com/viacoin/docker-viacoin"; + dockerInfo.GitRef = "master"; + break; + case "docker-litecoin": + dockerInfo.DockerFilePath = $"litecoin/{image.Tag}/Dockerfile"; + dockerInfo.GitLink = "https://github.com/NicolasDorier/docker-bitcoin"; + dockerInfo.GitRef = "master"; + break; + case "docker-monacoin": + dockerInfo.DockerFilePath = $"monacoin/{image.Tag}/Dockerfile"; + dockerInfo.GitLink = "https://github.com/wakiyamap/docker-bitcoin"; + dockerInfo.GitRef = "master"; + break; + case "nginx": + dockerInfo.DockerFilePath = $"stable/stretch/Dockerfile"; + dockerInfo.GitLink = "https://github.com/nginxinc/docker-nginx"; + dockerInfo.GitRef = $"master"; + break; + case "docker-gen": + dockerInfo.DockerFilePath = $"linuxamd64.Dockerfile"; + dockerInfo.DockerFilePathARM32v7 = $"linuxarm32v7.Dockerfile"; + dockerInfo.GitLink = "https://github.com/btcpayserver/docker-gen"; + dockerInfo.GitRef = $"v{image.Tag}"; + break; + case "letsencrypt-nginx-proxy-companion": + dockerInfo.DockerFilePath = $"linuxamd64.Dockerfile"; + dockerInfo.DockerFilePathARM32v7 = $"linuxarm32v7.Dockerfile"; + dockerInfo.GitLink = "https://github.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion"; + dockerInfo.GitRef = $"v{image.Tag}"; + break; + case "postgres": + dockerInfo.DockerFilePath = $"9.6/Dockerfile"; + dockerInfo.DockerFilePathARM32v7 = $"9.6/Dockerfile"; + dockerInfo.GitLink = "https://github.com/docker-library/postgres"; + dockerInfo.GitRef = $"b7cb3c6eacea93be2259381033be3cc435649369"; + break; + case "traefik": + dockerInfo.DockerFilePath = $"scratch/amd64/Dockerfile"; + dockerInfo.DockerFilePathARM32v7 = $"scratch/arm/Dockerfile"; + dockerInfo.GitLink = "https://github.com/containous/traefik-library-image"; + dockerInfo.GitRef = $"master"; + break; + default: + return null; + } + dockerInfo.DockerHubLink = image.DockerHubLink; + dockerInfo.Image = image; + return dockerInfo; + } + + private YamlMappingNode ParseDocument(string fragment) + { + var input = new StringReader(File.ReadAllText(fragment)); + YamlStream stream = new YamlStream(); + stream.Load(input); + return (YamlMappingNode)stream.Documents[0].RootNode; + } + + private static void DeleteDirectory(string outputDirectory) + { + try + { + Directory.Delete(outputDirectory, true); + } + catch + { + } + } + + private static string FindRoot(string rootDirectory) + { + string directory = Directory.GetCurrentDirectory(); + int i = 0; + while (true) + { + if (i > 10) + throw new DirectoryNotFoundException(rootDirectory); + if (directory.EndsWith(rootDirectory)) + return directory; + directory = Path.GetFullPath(Path.Combine(directory, "..")); + i++; + } + } + } +} diff --git a/contrib/DockerFileBuildHelper/README.md b/contrib/DockerFileBuildHelper/README.md new file mode 100644 index 0000000..f1b1d43 --- /dev/null +++ b/contrib/DockerFileBuildHelper/README.md @@ -0,0 +1,16 @@ +# DockerFile build helper + +By default, when you use docker deployment, you are fetching pre-built docker images hosted on dockerhub. +While this bring the advantage that deployment is fast and reliable, this also mean that you are ultimately trusting the owner of the docker images. +This repository generate a script that you can use to build all images from the sources by yourself. + +## How to use? + +Install [.NET Core SDK](https://dotnet.microsoft.com/download) and run: + +```bash +./run.sh +``` + +This will build a `build-all.sh` file. +Note that the diff --git a/contrib/DockerFileBuildHelper/run.sh b/contrib/DockerFileBuildHelper/run.sh new file mode 100755 index 0000000..c2bba29 --- /dev/null +++ b/contrib/DockerFileBuildHelper/run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +dotnet run --no-launch-profile -c Release -- $@ \ No newline at end of file diff --git a/contrib/DockerFileBuildHelper/update-repo.ps1 b/contrib/DockerFileBuildHelper/update-repo.ps1 new file mode 100755 index 0000000..d90ded0 --- /dev/null +++ b/contrib/DockerFileBuildHelper/update-repo.ps1 @@ -0,0 +1 @@ +dotnet run --no-launch-profile -c Release -- -o "../build-all-images.sh" \ No newline at end of file diff --git a/contrib/DockerFileBuildHelper/update-repo.sh b/contrib/DockerFileBuildHelper/update-repo.sh new file mode 100755 index 0000000..c50753c --- /dev/null +++ b/contrib/DockerFileBuildHelper/update-repo.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +dotnet run --no-launch-profile -c Release -- -o "../build-all-images.sh" \ No newline at end of file diff --git a/contrib/build-all-images.sh b/contrib/build-all-images.sh new file mode 100755 index 0000000..0877848 --- /dev/null +++ b/contrib/build-all-images.sh @@ -0,0 +1,202 @@ +#!/bin/bash + +# This file is automatically generated by the DockerFileBuildHelper tool, run DockerFileBuildHelper/update-repo.sh to update it +set -e +# Build docker-compose-generator +git clone https://github.com/btcpayserver/btcpayserver-docker docker-compose-generator +cd docker-compose-generator +git checkout dcg-latest +cd docker-compose-generator +docker build -f "linuxamd64.Dockerfile" -t "btcpayserver/docker-compose-generator:latest" . +cd - && cd .. + + +# Build docker-compose-builder +git clone https://github.com/btcpayserver/docker-compose-builder docker-compose-builder +cd docker-compose-builder +git checkout v1.23.2 +cd . +docker build -f "linuxarm32v7.Dockerfile" -t "btcpayserver/docker-compose-builder:1.23.2" . +cd - && cd .. + + +# Build btglnd +git clone https://github.com/vutov/lnd btglnd +cd btglnd +git checkout master +cd . +docker build -f "BTCPayServer.Dockerfile" -t "kamigawabul/btglnd:latest" . +cd - && cd .. + + +# Build docker-bitcoingold +git clone https://github.com/Vutov/docker-bitcoin docker-bitcoingold +cd docker-bitcoingold +git checkout master +cd bitcoingold/0.15.2 +docker build -f "Dockerfile" -t "kamigawabul/docker-bitcoingold:0.15.2" . +cd - && cd .. + + +# Build clightning +git clone https://github.com/NicolasDorier/lightning clightning +cd clightning +git checkout basedon-v0.6.2-3 +cd . +docker build -f "Dockerfile" -t "nicolasdorier/clightning:v0.6.2-3" . +cd - && cd .. + + +# Build lnd +git clone https://github.com/btcpayserver/lnd lnd +cd lnd +git checkout basedon-v0.5-beta-2 +cd . +docker build -f "BTCPayServer.Dockerfile" -t "btcpayserver/lnd:0.5-beta-2" . +cd - && cd .. + + +# Build bitcoin +git clone https://github.com/btcpayserver/dockerfile-deps bitcoin +cd bitcoin +git checkout Bitcoin/0.17.0 +cd Bitcoin/0.17.0 +docker build -f "linuxamd64.Dockerfile" -t "btcpayserver/bitcoin:0.17.0" . +cd - && cd .. + + +# Build btcpayserver +git clone https://github.com/btcpayserver/btcpayserver btcpayserver +cd btcpayserver +git checkout v1.0.3.21 +cd . +docker build -f "Dockerfile.linuxamd64" -t "btcpayserver/btcpayserver:1.0.3.21" . +cd - && cd .. + + +# Build dogecoin +git clone https://github.com/rockstardev/docker-bitcoin dogecoin +cd dogecoin +git checkout feature/dogecoin +cd dogecoin/1.10.0 +docker build -f "Dockerfile" -t "rockstardev/dogecoin:1.10.0" . +cd - && cd .. + + +# Build docker-feathercoin +git clone https://github.com/ChekaZ/docker docker-feathercoin +cd docker-feathercoin +git checkout master +cd feathercoin/0.16.3 +docker build -f "Dockerfile" -t "chekaz/docker-feathercoin:0.16.3" . +cd - && cd .. + + +# Build docker-groestlcoin +git clone https://github.com/NicolasDorier/docker-bitcoin docker-groestlcoin +cd docker-groestlcoin +git checkout master +cd groestlcoin/2.16.3 +docker build -f "Dockerfile" -t "nicolasdorier/docker-groestlcoin:2.16.3" . +cd - && cd .. + + +# Build clightning +git clone https://github.com/NicolasDorier/lightning clightning +cd clightning +git checkout basedon-v0.6.2-3 +cd . +docker build -f "Dockerfile" -t "nicolasdorier/clightning:v0.6.2-3" . +cd - && cd .. + + +# Build lnd +git clone https://github.com/btcpayserver/lnd lnd +cd lnd +git checkout basedon-v0.5-beta-2 +cd . +docker build -f "BTCPayServer.Dockerfile" -t "btcpayserver/lnd:0.5-beta-2" . +cd - && cd .. + + +# Build docker-litecoin +git clone https://github.com/NicolasDorier/docker-bitcoin docker-litecoin +cd docker-litecoin +git checkout master +cd litecoin/0.16.3 +docker build -f "Dockerfile" -t "nicolasdorier/docker-litecoin:0.16.3" . +cd - && cd .. + + +# Build docker-monacoin +git clone https://github.com/wakiyamap/docker-bitcoin docker-monacoin +cd docker-monacoin +git checkout master +cd monacoin/0.16.3 +docker build -f "Dockerfile" -t "wakiyamap/docker-monacoin:0.16.3" . +cd - && cd .. + + +# Build nbxplorer +git clone https://github.com/dgarage/nbxplorer nbxplorer +cd nbxplorer +git checkout v2.0.0.1 +cd . +docker build -f "Dockerfile.linuxamd64" -t "nicolasdorier/nbxplorer:2.0.0.1" . +cd - && cd .. + + +# Build nginx +git clone https://github.com/nginxinc/docker-nginx nginx +cd nginx +git checkout master +cd stable/stretch +docker build -f "Dockerfile" -t "nginx:stable" . +cd - && cd .. + + +# Build docker-gen +git clone https://github.com/btcpayserver/docker-gen docker-gen +cd docker-gen +git checkout v0.7.4 +cd . +docker build -f "linuxamd64.Dockerfile" -t "btcpayserver/docker-gen:0.7.4" . +cd - && cd .. + + +# Build letsencrypt-nginx-proxy-companion +git clone https://github.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion letsencrypt-nginx-proxy-companion +cd letsencrypt-nginx-proxy-companion +git checkout v1.10.0 +cd . +docker build -f "linuxamd64.Dockerfile" -t "btcpayserver/letsencrypt-nginx-proxy-companion:1.10.0" . +cd - && cd .. + + +# Build postgres +git clone https://github.com/docker-library/postgres postgres +cd postgres +git checkout b7cb3c6eacea93be2259381033be3cc435649369 +cd 9.6 +docker build -f "Dockerfile" -t "postgres:9.6.5" . +cd - && cd .. + + +# Build traefik +git clone https://github.com/containous/traefik-library-image traefik +cd traefik +git checkout master +cd scratch/amd64 +docker build -f "Dockerfile" -t "traefik:latest" . +cd - && cd .. + + +# Build docker-viacoin +git clone https://github.com/viacoin/docker-viacoin docker-viacoin +cd docker-viacoin +git checkout master +cd viacoin/0.15.2 +docker build -f "docker-viacoin" -t "romanornr/docker-viacoin:0.15.2" . +cd - && cd .. + + From c84ab3f4fcd2d011746c1dfbb79d99da2cd0c127 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sun, 2 Dec 2018 17:06:36 +0900 Subject: [PATCH 74/75] Make build-all-images work on arm --- contrib/DockerFileBuildHelper/DockerFile.cs | 16 +- contrib/DockerFileBuildHelper/Program.cs | 45 ++++- .../DockerFileBuildHelper/StringBuilderEx.cs | 45 +++++ contrib/build-all-images.sh | 186 +++++++++++++----- 4 files changed, 237 insertions(+), 55 deletions(-) create mode 100644 contrib/DockerFileBuildHelper/StringBuilderEx.cs diff --git a/contrib/DockerFileBuildHelper/DockerFile.cs b/contrib/DockerFileBuildHelper/DockerFile.cs index b1d7d82..ff55dbb 100644 --- a/contrib/DockerFileBuildHelper/DockerFile.cs +++ b/contrib/DockerFileBuildHelper/DockerFile.cs @@ -7,7 +7,17 @@ namespace DockerFileBuildHelper public class DockerFile { public string DockerFileName { get; private set; } - public string DockerFilePath { get; private set; } + public string DockerDirectoryPath { get; private set; } + public string DockerFullPath + { + get + { + if (DockerDirectoryPath == ".") + return $"{DockerFileName}"; + else + return $"{DockerDirectoryPath}/{DockerFileName}"; + } + } public static DockerFile Parse(string str) { @@ -16,11 +26,11 @@ namespace DockerFileBuildHelper file.DockerFileName = str.Substring(lastPart + 1); if (lastPart == -1) { - file.DockerFilePath = "."; + file.DockerDirectoryPath = "."; } else { - file.DockerFilePath = str.Substring(0, lastPart); + file.DockerDirectoryPath = str.Substring(0, lastPart); } return file; } diff --git a/contrib/DockerFileBuildHelper/Program.cs b/contrib/DockerFileBuildHelper/Program.cs index bd8cde0..2f1a583 100644 --- a/contrib/DockerFileBuildHelper/Program.cs +++ b/contrib/DockerFileBuildHelper/Program.cs @@ -53,21 +53,58 @@ namespace DockerFileBuildHelper var canDownloadEverything = downloading.All(o => o.Result); if (!canDownloadEverything) return false; - StringBuilder builder = new StringBuilder(); + var builder = new StringBuilderEx(); builder.AppendLine("#!/bin/bash"); builder.AppendLine(); builder.AppendLine("# This file is automatically generated by the DockerFileBuildHelper tool, run DockerFileBuildHelper/update-repo.sh to update it"); builder.AppendLine("set -e"); + builder.AppendLine("DOCKERFILE=\"\""); + builder.AppendLine(); + builder.AppendLine(); foreach (var info in dockerInfos) { builder.AppendLine($"# Build {info.Image.Name}"); + bool mightBeUnavailable = false; + if (info.DockerFilePath != null) + { + var dockerFile = DockerFile.Parse(info.DockerFilePath); + builder.AppendLine($"# {info.GetGithubLinkOf(dockerFile.DockerFullPath)}"); + builder.AppendLine($"DOCKERFILE=\"{dockerFile.DockerFullPath}\""); + } + else + { + builder.AppendLine($"DOCKERFILE=\"\""); + mightBeUnavailable = true; + } + if (info.DockerFilePathARM32v7 != null) + { + var dockerFile = DockerFile.Parse(info.DockerFilePathARM32v7); + builder.AppendLine($"# {info.GetGithubLinkOf(dockerFile.DockerFullPath)}"); + builder.AppendLine($"[[ \"$(uname -m)\" == \"armv7l\" ]] && DOCKERFILE=\"{dockerFile.DockerFullPath}\""); + } + if (info.DockerFilePathARM64v8 != null) + { + var dockerFile = DockerFile.Parse(info.DockerFilePathARM64v8); + builder.AppendLine($"# {info.GetGithubLinkOf(dockerFile.DockerFullPath)}"); + builder.AppendLine($"[[ \"$(uname -m)\" == \"aarch64\" ]] && DOCKERFILE=\"{dockerFile.DockerFullPath}\""); + } + if(mightBeUnavailable) + { + builder.AppendLine($"if [[ \"$DOCKERFILE\" ]]; then"); + builder.Indent++; + } + builder.AppendLine($"echo \"Building {info.Image.ToString()}\""); builder.AppendLine($"git clone {info.GitLink} {info.Image.Name}"); - var dockerFile = DockerFile.Parse($"{info.DockerFilePath ?? info.DockerFilePathARM32v7 ?? info.DockerFilePathARM64v8}"); builder.AppendLine($"cd {info.Image.Name}"); builder.AppendLine($"git checkout {info.GitRef}"); - builder.AppendLine($"cd {dockerFile.DockerFilePath}"); - builder.AppendLine($"docker build -f \"{dockerFile.DockerFileName}\" -t \"{info.Image}\" ."); + builder.AppendLine($"cd \"$(dirname $DOCKERFILE)\""); + builder.AppendLine($"docker build -f \"$DOCKERFILE\" -t \"{info.Image}\" ."); builder.AppendLine($"cd - && cd .."); + if (mightBeUnavailable) + { + builder.Indent--; + builder.AppendLine($"fi"); + } builder.AppendLine(); builder.AppendLine(); } diff --git a/contrib/DockerFileBuildHelper/StringBuilderEx.cs b/contrib/DockerFileBuildHelper/StringBuilderEx.cs new file mode 100644 index 0000000..6823e58 --- /dev/null +++ b/contrib/DockerFileBuildHelper/StringBuilderEx.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace DockerFileBuildHelper +{ + public class StringBuilderEx + { + StringBuilder _Builder = new StringBuilder(); + public StringBuilderEx() + { + + } + + public int Indent { get; set; } + + public void Append(string str) + { + _Builder.Append(GetIndents()); + _Builder.Append(str); + } + + private string GetIndents() + { + return new String(Enumerable.Range(0, Indent).Select(_ => '\t').ToArray()); + } + + public void AppendLine(string str) + { + _Builder.Append(GetIndents()); + _Builder.AppendLine(str); + } + + public override string ToString() + { + return _Builder.ToString(); + } + + internal void AppendLine() + { + _Builder.AppendLine(); + } + } +} diff --git a/contrib/build-all-images.sh b/contrib/build-all-images.sh index 0877848..f740aea 100755 --- a/contrib/build-all-images.sh +++ b/contrib/build-all-images.sh @@ -2,201 +2,291 @@ # This file is automatically generated by the DockerFileBuildHelper tool, run DockerFileBuildHelper/update-repo.sh to update it set -e +DOCKERFILE="" + + # Build docker-compose-generator +# https://raw.githubusercontent.com/btcpayserver/btcpayserver-docker/dcg-latest/docker-compose-generator/linuxamd64.Dockerfile +DOCKERFILE="docker-compose-generator/linuxamd64.Dockerfile" +# https://raw.githubusercontent.com/btcpayserver/btcpayserver-docker/dcg-latest/docker-compose-generator/linuxarm32v7.Dockerfile +[[ "$(uname -m)" == "armv7l" ]] && DOCKERFILE="docker-compose-generator/linuxarm32v7.Dockerfile" +echo "Building btcpayserver/docker-compose-generator:latest" git clone https://github.com/btcpayserver/btcpayserver-docker docker-compose-generator cd docker-compose-generator git checkout dcg-latest -cd docker-compose-generator -docker build -f "linuxamd64.Dockerfile" -t "btcpayserver/docker-compose-generator:latest" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "btcpayserver/docker-compose-generator:latest" . cd - && cd .. # Build docker-compose-builder -git clone https://github.com/btcpayserver/docker-compose-builder docker-compose-builder -cd docker-compose-builder -git checkout v1.23.2 -cd . -docker build -f "linuxarm32v7.Dockerfile" -t "btcpayserver/docker-compose-builder:1.23.2" . -cd - && cd .. +DOCKERFILE="" +# https://raw.githubusercontent.com/btcpayserver/docker-compose-builder/v1.23.2/linuxarm32v7.Dockerfile +[[ "$(uname -m)" == "armv7l" ]] && DOCKERFILE="linuxarm32v7.Dockerfile" +if [[ "$DOCKERFILE" ]]; then + echo "Building btcpayserver/docker-compose-builder:1.23.2" + git clone https://github.com/btcpayserver/docker-compose-builder docker-compose-builder + cd docker-compose-builder + git checkout v1.23.2 + cd "$(dirname $DOCKERFILE)" + docker build -f "$DOCKERFILE" -t "btcpayserver/docker-compose-builder:1.23.2" . + cd - && cd .. +fi # Build btglnd +# https://raw.githubusercontent.com/vutov/lnd/master/BTCPayServer.Dockerfile +DOCKERFILE="BTCPayServer.Dockerfile" +echo "Building kamigawabul/btglnd:latest" git clone https://github.com/vutov/lnd btglnd cd btglnd git checkout master -cd . -docker build -f "BTCPayServer.Dockerfile" -t "kamigawabul/btglnd:latest" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "kamigawabul/btglnd:latest" . cd - && cd .. # Build docker-bitcoingold +# https://raw.githubusercontent.com/Vutov/docker-bitcoin/master/bitcoingold/0.15.2/Dockerfile +DOCKERFILE="bitcoingold/0.15.2/Dockerfile" +echo "Building kamigawabul/docker-bitcoingold:0.15.2" git clone https://github.com/Vutov/docker-bitcoin docker-bitcoingold cd docker-bitcoingold git checkout master -cd bitcoingold/0.15.2 -docker build -f "Dockerfile" -t "kamigawabul/docker-bitcoingold:0.15.2" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "kamigawabul/docker-bitcoingold:0.15.2" . cd - && cd .. # Build clightning +# https://raw.githubusercontent.com/NicolasDorier/lightning/basedon-v0.6.2-3/Dockerfile +DOCKERFILE="Dockerfile" +echo "Building nicolasdorier/clightning:v0.6.2-3" git clone https://github.com/NicolasDorier/lightning clightning cd clightning git checkout basedon-v0.6.2-3 -cd . -docker build -f "Dockerfile" -t "nicolasdorier/clightning:v0.6.2-3" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "nicolasdorier/clightning:v0.6.2-3" . cd - && cd .. # Build lnd +# https://raw.githubusercontent.com/btcpayserver/lnd/basedon-v0.5-beta-2/BTCPayServer.Dockerfile +DOCKERFILE="BTCPayServer.Dockerfile" +echo "Building btcpayserver/lnd:0.5-beta-2" git clone https://github.com/btcpayserver/lnd lnd cd lnd git checkout basedon-v0.5-beta-2 -cd . -docker build -f "BTCPayServer.Dockerfile" -t "btcpayserver/lnd:0.5-beta-2" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "btcpayserver/lnd:0.5-beta-2" . cd - && cd .. # Build bitcoin +# https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Bitcoin/0.17.0/Bitcoin/0.17.0/linuxamd64.Dockerfile +DOCKERFILE="Bitcoin/0.17.0/linuxamd64.Dockerfile" +# https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Bitcoin/0.17.0/Bitcoin/0.17.0/linuxarm32v7.Dockerfile +[[ "$(uname -m)" == "armv7l" ]] && DOCKERFILE="Bitcoin/0.17.0/linuxarm32v7.Dockerfile" +# https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Bitcoin/0.17.0/Bitcoin/0.17.0/linuxarm64v8.Dockerfile +[[ "$(uname -m)" == "aarch64" ]] && DOCKERFILE="Bitcoin/0.17.0/linuxarm64v8.Dockerfile" +echo "Building btcpayserver/bitcoin:0.17.0" git clone https://github.com/btcpayserver/dockerfile-deps bitcoin cd bitcoin git checkout Bitcoin/0.17.0 -cd Bitcoin/0.17.0 -docker build -f "linuxamd64.Dockerfile" -t "btcpayserver/bitcoin:0.17.0" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "btcpayserver/bitcoin:0.17.0" . cd - && cd .. # Build btcpayserver +# https://raw.githubusercontent.com/btcpayserver/btcpayserver/v1.0.3.21/Dockerfile.linuxamd64 +DOCKERFILE="Dockerfile.linuxamd64" +# https://raw.githubusercontent.com/btcpayserver/btcpayserver/v1.0.3.21/Dockerfile.linuxarm32v7 +[[ "$(uname -m)" == "armv7l" ]] && DOCKERFILE="Dockerfile.linuxarm32v7" +echo "Building btcpayserver/btcpayserver:1.0.3.21" git clone https://github.com/btcpayserver/btcpayserver btcpayserver cd btcpayserver git checkout v1.0.3.21 -cd . -docker build -f "Dockerfile.linuxamd64" -t "btcpayserver/btcpayserver:1.0.3.21" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "btcpayserver/btcpayserver:1.0.3.21" . cd - && cd .. # Build dogecoin +# https://raw.githubusercontent.com/rockstardev/docker-bitcoin/feature/dogecoin/dogecoin/1.10.0/Dockerfile +DOCKERFILE="dogecoin/1.10.0/Dockerfile" +echo "Building rockstardev/dogecoin:1.10.0" git clone https://github.com/rockstardev/docker-bitcoin dogecoin cd dogecoin git checkout feature/dogecoin -cd dogecoin/1.10.0 -docker build -f "Dockerfile" -t "rockstardev/dogecoin:1.10.0" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "rockstardev/dogecoin:1.10.0" . cd - && cd .. # Build docker-feathercoin +# https://raw.githubusercontent.com/ChekaZ/docker/master/feathercoin/0.16.3/Dockerfile +DOCKERFILE="feathercoin/0.16.3/Dockerfile" +echo "Building chekaz/docker-feathercoin:0.16.3" git clone https://github.com/ChekaZ/docker docker-feathercoin cd docker-feathercoin git checkout master -cd feathercoin/0.16.3 -docker build -f "Dockerfile" -t "chekaz/docker-feathercoin:0.16.3" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "chekaz/docker-feathercoin:0.16.3" . cd - && cd .. # Build docker-groestlcoin +# https://raw.githubusercontent.com/NicolasDorier/docker-bitcoin/master/groestlcoin/2.16.3/Dockerfile +DOCKERFILE="groestlcoin/2.16.3/Dockerfile" +echo "Building nicolasdorier/docker-groestlcoin:2.16.3" git clone https://github.com/NicolasDorier/docker-bitcoin docker-groestlcoin cd docker-groestlcoin git checkout master -cd groestlcoin/2.16.3 -docker build -f "Dockerfile" -t "nicolasdorier/docker-groestlcoin:2.16.3" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "nicolasdorier/docker-groestlcoin:2.16.3" . cd - && cd .. # Build clightning +# https://raw.githubusercontent.com/NicolasDorier/lightning/basedon-v0.6.2-3/Dockerfile +DOCKERFILE="Dockerfile" +echo "Building nicolasdorier/clightning:v0.6.2-3" git clone https://github.com/NicolasDorier/lightning clightning cd clightning git checkout basedon-v0.6.2-3 -cd . -docker build -f "Dockerfile" -t "nicolasdorier/clightning:v0.6.2-3" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "nicolasdorier/clightning:v0.6.2-3" . cd - && cd .. # Build lnd +# https://raw.githubusercontent.com/btcpayserver/lnd/basedon-v0.5-beta-2/BTCPayServer.Dockerfile +DOCKERFILE="BTCPayServer.Dockerfile" +echo "Building btcpayserver/lnd:0.5-beta-2" git clone https://github.com/btcpayserver/lnd lnd cd lnd git checkout basedon-v0.5-beta-2 -cd . -docker build -f "BTCPayServer.Dockerfile" -t "btcpayserver/lnd:0.5-beta-2" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "btcpayserver/lnd:0.5-beta-2" . cd - && cd .. # Build docker-litecoin +# https://raw.githubusercontent.com/NicolasDorier/docker-bitcoin/master/litecoin/0.16.3/Dockerfile +DOCKERFILE="litecoin/0.16.3/Dockerfile" +echo "Building nicolasdorier/docker-litecoin:0.16.3" git clone https://github.com/NicolasDorier/docker-bitcoin docker-litecoin cd docker-litecoin git checkout master -cd litecoin/0.16.3 -docker build -f "Dockerfile" -t "nicolasdorier/docker-litecoin:0.16.3" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "nicolasdorier/docker-litecoin:0.16.3" . cd - && cd .. # Build docker-monacoin +# https://raw.githubusercontent.com/wakiyamap/docker-bitcoin/master/monacoin/0.16.3/Dockerfile +DOCKERFILE="monacoin/0.16.3/Dockerfile" +echo "Building wakiyamap/docker-monacoin:0.16.3" git clone https://github.com/wakiyamap/docker-bitcoin docker-monacoin cd docker-monacoin git checkout master -cd monacoin/0.16.3 -docker build -f "Dockerfile" -t "wakiyamap/docker-monacoin:0.16.3" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "wakiyamap/docker-monacoin:0.16.3" . cd - && cd .. # Build nbxplorer +# https://raw.githubusercontent.com/dgarage/nbxplorer/v2.0.0.1/Dockerfile.linuxamd64 +DOCKERFILE="Dockerfile.linuxamd64" +# https://raw.githubusercontent.com/dgarage/nbxplorer/v2.0.0.1/Dockerfile.linuxarm32v7 +[[ "$(uname -m)" == "armv7l" ]] && DOCKERFILE="Dockerfile.linuxarm32v7" +echo "Building nicolasdorier/nbxplorer:2.0.0.1" git clone https://github.com/dgarage/nbxplorer nbxplorer cd nbxplorer git checkout v2.0.0.1 -cd . -docker build -f "Dockerfile.linuxamd64" -t "nicolasdorier/nbxplorer:2.0.0.1" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "nicolasdorier/nbxplorer:2.0.0.1" . cd - && cd .. # Build nginx +# https://raw.githubusercontent.com/nginxinc/docker-nginx/master/stable/stretch/Dockerfile +DOCKERFILE="stable/stretch/Dockerfile" +echo "Building nginx:stable" git clone https://github.com/nginxinc/docker-nginx nginx cd nginx git checkout master -cd stable/stretch -docker build -f "Dockerfile" -t "nginx:stable" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "nginx:stable" . cd - && cd .. # Build docker-gen +# https://raw.githubusercontent.com/btcpayserver/docker-gen/v0.7.4/linuxamd64.Dockerfile +DOCKERFILE="linuxamd64.Dockerfile" +# https://raw.githubusercontent.com/btcpayserver/docker-gen/v0.7.4/linuxarm32v7.Dockerfile +[[ "$(uname -m)" == "armv7l" ]] && DOCKERFILE="linuxarm32v7.Dockerfile" +echo "Building btcpayserver/docker-gen:0.7.4" git clone https://github.com/btcpayserver/docker-gen docker-gen cd docker-gen git checkout v0.7.4 -cd . -docker build -f "linuxamd64.Dockerfile" -t "btcpayserver/docker-gen:0.7.4" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "btcpayserver/docker-gen:0.7.4" . cd - && cd .. # Build letsencrypt-nginx-proxy-companion +# https://raw.githubusercontent.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion/v1.10.0/linuxamd64.Dockerfile +DOCKERFILE="linuxamd64.Dockerfile" +# https://raw.githubusercontent.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion/v1.10.0/linuxarm32v7.Dockerfile +[[ "$(uname -m)" == "armv7l" ]] && DOCKERFILE="linuxarm32v7.Dockerfile" +echo "Building btcpayserver/letsencrypt-nginx-proxy-companion:1.10.0" git clone https://github.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion letsencrypt-nginx-proxy-companion cd letsencrypt-nginx-proxy-companion git checkout v1.10.0 -cd . -docker build -f "linuxamd64.Dockerfile" -t "btcpayserver/letsencrypt-nginx-proxy-companion:1.10.0" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "btcpayserver/letsencrypt-nginx-proxy-companion:1.10.0" . cd - && cd .. # Build postgres +# https://raw.githubusercontent.com/docker-library/postgres/b7cb3c6eacea93be2259381033be3cc435649369/9.6/Dockerfile +DOCKERFILE="9.6/Dockerfile" +# https://raw.githubusercontent.com/docker-library/postgres/b7cb3c6eacea93be2259381033be3cc435649369/9.6/Dockerfile +[[ "$(uname -m)" == "armv7l" ]] && DOCKERFILE="9.6/Dockerfile" +echo "Building postgres:9.6.5" git clone https://github.com/docker-library/postgres postgres cd postgres git checkout b7cb3c6eacea93be2259381033be3cc435649369 -cd 9.6 -docker build -f "Dockerfile" -t "postgres:9.6.5" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "postgres:9.6.5" . cd - && cd .. # Build traefik +# https://raw.githubusercontent.com/containous/traefik-library-image/master/scratch/amd64/Dockerfile +DOCKERFILE="scratch/amd64/Dockerfile" +# https://raw.githubusercontent.com/containous/traefik-library-image/master/scratch/arm/Dockerfile +[[ "$(uname -m)" == "armv7l" ]] && DOCKERFILE="scratch/arm/Dockerfile" +echo "Building traefik:latest" git clone https://github.com/containous/traefik-library-image traefik cd traefik git checkout master -cd scratch/amd64 -docker build -f "Dockerfile" -t "traefik:latest" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "traefik:latest" . cd - && cd .. # Build docker-viacoin +# https://raw.githubusercontent.com/viacoin/docker-viacoin/master/viacoin/0.15.2/docker-viacoin +DOCKERFILE="viacoin/0.15.2/docker-viacoin" +echo "Building romanornr/docker-viacoin:0.15.2" git clone https://github.com/viacoin/docker-viacoin docker-viacoin cd docker-viacoin git checkout master -cd viacoin/0.15.2 -docker build -f "docker-viacoin" -t "romanornr/docker-viacoin:0.15.2" . +cd "$(dirname $DOCKERFILE)" +docker build -f "$DOCKERFILE" -t "romanornr/docker-viacoin:0.15.2" . cd - && cd .. From eb8269156a4c62fc4b500a7fc8b9b27aa957dd17 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 4 Dec 2018 00:00:12 +0900 Subject: [PATCH 75/75] bump --- docker-compose-generator/docker-fragments/btcpayserver.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml index 9a17bfc..5bd62e9 100644 --- a/docker-compose-generator/docker-fragments/btcpayserver.yml +++ b/docker-compose-generator/docker-fragments/btcpayserver.yml @@ -4,7 +4,7 @@ services: btcpayserver: restart: unless-stopped - image: ${BTCPAY_IMAGE:-btcpayserver/btcpayserver:1.0.3.21} + image: ${BTCPAY_IMAGE:-btcpayserver/btcpayserver:1.0.3.22} expose: - "49392" environment: