diff --git a/.gitignore b/.gitignore
index 6faab1d..c85785c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -295,4 +295,5 @@ BTCPayServer/wwwroot/bundles/*
Production/.env
.env
.vscode/
+*docker-compose.generated.yml
diff --git a/Generated/.gitignore b/Generated/.gitignore
index ad30bfe..5c11526 100644
--- a/Generated/.gitignore
+++ b/Generated/.gitignore
@@ -1 +1,2 @@
-*.yml
\ No newline at end of file
+*.yml
+*.tmpl
\ No newline at end of file
diff --git a/Production-NoReverseProxy/docker-compose.btc-clightning.yml b/Production-NoReverseProxy/docker-compose.btc-clightning.yml
index 4ce650b..c656987 100644
--- a/Production-NoReverseProxy/docker-compose.btc-clightning.yml
+++ b/Production-NoReverseProxy/docker-compose.btc-clightning.yml
@@ -1,7 +1,7 @@
version: "3"
services:
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -31,7 +31,7 @@ services:
ports:
- "80:49392"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -47,12 +47,12 @@ services:
links:
- bitcoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
bitcoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_bitcoind
image: nicolasdorier/docker-bitcoin:0.16.0
environment:
@@ -69,7 +69,7 @@ services:
clightning_bitcoin:
image: nicolasdorier/clightning:0.0.0.16
container_name: btcpayserver_clightning_bitcoin
- restart: always
+ restart: unless-stopped
environment:
LIGHTNINGD_OPT: |
bitcoin-datadir=/etc/bitcoin
diff --git a/Production-NoReverseProxy/docker-compose.btc-ltc-clightning.yml b/Production-NoReverseProxy/docker-compose.btc-ltc-clightning.yml
index 1c9e32c..c63f3f6 100644
--- a/Production-NoReverseProxy/docker-compose.btc-ltc-clightning.yml
+++ b/Production-NoReverseProxy/docker-compose.btc-ltc-clightning.yml
@@ -1,7 +1,7 @@
version: "3"
services:
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -35,7 +35,7 @@ services:
ports:
- "80:49392"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -55,12 +55,12 @@ services:
- litecoind
- bitcoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
litecoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_litecoind
image: nicolasdorier/docker-litecoin:0.15.1
environment:
@@ -77,7 +77,7 @@ services:
clightning_litecoin:
image: nicolasdorier/clightning:0.0.0.16
container_name: btcpayserver_clightning_litecoin
- restart: always
+ restart: unless-stopped
environment:
LIGHTNINGD_OPT: |
bitcoin-datadir=/etc/litecoin
@@ -95,7 +95,7 @@ services:
links:
- litecoind
bitcoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_bitcoind
image: nicolasdorier/docker-bitcoin:0.16.0
environment:
@@ -112,7 +112,7 @@ services:
clightning_bitcoin:
image: nicolasdorier/clightning:0.0.0.16
container_name: btcpayserver_clightning_bitcoin
- restart: always
+ restart: unless-stopped
environment:
LIGHTNINGD_OPT: |
bitcoin-datadir=/etc/bitcoin
diff --git a/Production-NoReverseProxy/docker-compose.btc-ltc.yml b/Production-NoReverseProxy/docker-compose.btc-ltc.yml
index 649be05..800e8b9 100644
--- a/Production-NoReverseProxy/docker-compose.btc-ltc.yml
+++ b/Production-NoReverseProxy/docker-compose.btc-ltc.yml
@@ -1,7 +1,7 @@
version: "3"
services:
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -29,7 +29,7 @@ services:
ports:
- "80:49392"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -49,12 +49,12 @@ services:
- litecoind
- bitcoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
litecoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_litecoind
image: nicolasdorier/docker-litecoin:0.15.1
environment:
@@ -69,7 +69,7 @@ services:
volumes:
- "litecoin_datadir:/data"
bitcoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_bitcoind
image: nicolasdorier/docker-bitcoin:0.16.0
environment:
diff --git a/Production-NoReverseProxy/docker-compose.btc.yml b/Production-NoReverseProxy/docker-compose.btc.yml
index bc37c9a..fddb829 100644
--- a/Production-NoReverseProxy/docker-compose.btc.yml
+++ b/Production-NoReverseProxy/docker-compose.btc.yml
@@ -1,7 +1,7 @@
version: "3"
services:
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -28,7 +28,7 @@ services:
ports:
- "80:49392"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -44,12 +44,12 @@ services:
links:
- bitcoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
bitcoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_bitcoind
image: nicolasdorier/docker-bitcoin:0.16.0
environment:
diff --git a/Production-NoReverseProxy/docker-compose.ltc-clightning.yml b/Production-NoReverseProxy/docker-compose.ltc-clightning.yml
index b6e1bdd..c110064 100644
--- a/Production-NoReverseProxy/docker-compose.ltc-clightning.yml
+++ b/Production-NoReverseProxy/docker-compose.ltc-clightning.yml
@@ -1,7 +1,7 @@
version: "3"
services:
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -31,7 +31,7 @@ services:
ports:
- "80:49392"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -47,12 +47,12 @@ services:
links:
- litecoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
litecoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_litecoind
image: nicolasdorier/docker-litecoin:0.15.1
environment:
@@ -69,7 +69,7 @@ services:
clightning_litecoin:
image: nicolasdorier/clightning:0.0.0.16
container_name: btcpayserver_clightning_litecoin
- restart: always
+ restart: unless-stopped
environment:
LIGHTNINGD_OPT: |
bitcoin-datadir=/etc/litecoin
diff --git a/Production-NoReverseProxy/docker-compose.ltc.yml b/Production-NoReverseProxy/docker-compose.ltc.yml
index b79258d..f1ca2ce 100644
--- a/Production-NoReverseProxy/docker-compose.ltc.yml
+++ b/Production-NoReverseProxy/docker-compose.ltc.yml
@@ -1,7 +1,7 @@
version: "3"
services:
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -28,7 +28,7 @@ services:
ports:
- "80:49392"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -44,12 +44,12 @@ services:
links:
- litecoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
litecoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_litecoind
image: nicolasdorier/docker-litecoin:0.15.1
environment:
diff --git a/Production/docker-compose.btc-clightning.yml b/Production/docker-compose.btc-clightning.yml
index f8dbed3..a8d5261 100644
--- a/Production/docker-compose.btc-clightning.yml
+++ b/Production/docker-compose.btc-clightning.yml
@@ -1,7 +1,7 @@
version: "3"
services:
nginx:
- restart: always
+ restart: unless-stopped
image: nginx
container_name: nginx
ports:
@@ -15,7 +15,7 @@ services:
links:
- btcpayserver
nginx-gen:
- restart: always
+ restart: unless-stopped
image: jwilder/docker-gen
container_name: nginx-gen
volumes:
@@ -29,7 +29,7 @@ services:
links:
- nginx
letsencrypt-nginx-proxy-companion:
- restart: always
+ restart: unless-stopped
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt-nginx-proxy-companion
volumes:
@@ -45,7 +45,7 @@ services:
links:
- nginx-gen
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -73,7 +73,7 @@ services:
- "nbxplorer_datadir:/root/.nbxplorer"
- "clightning_bitcoin_datadir:/etc/clightning_bitcoin"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -89,12 +89,12 @@ services:
links:
- bitcoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
bitcoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_bitcoind
image: nicolasdorier/docker-bitcoin:0.16.0
environment:
@@ -111,7 +111,7 @@ services:
clightning_bitcoin:
image: nicolasdorier/clightning:0.0.0.16
container_name: btcpayserver_clightning_bitcoin
- restart: always
+ restart: unless-stopped
environment:
LIGHTNINGD_OPT: |
bitcoin-datadir=/etc/bitcoin
diff --git a/Production/docker-compose.btc-ltc-clightning.yml b/Production/docker-compose.btc-ltc-clightning.yml
index cf2662f..9800e4a 100644
--- a/Production/docker-compose.btc-ltc-clightning.yml
+++ b/Production/docker-compose.btc-ltc-clightning.yml
@@ -1,7 +1,7 @@
version: "3"
services:
nginx:
- restart: always
+ restart: unless-stopped
image: nginx
container_name: nginx
ports:
@@ -15,7 +15,7 @@ services:
links:
- btcpayserver
nginx-gen:
- restart: always
+ restart: unless-stopped
image: jwilder/docker-gen
container_name: nginx-gen
volumes:
@@ -29,7 +29,7 @@ services:
links:
- nginx
letsencrypt-nginx-proxy-companion:
- restart: always
+ restart: unless-stopped
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt-nginx-proxy-companion
volumes:
@@ -45,7 +45,7 @@ services:
links:
- nginx-gen
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -77,7 +77,7 @@ services:
- "clightning_litecoin_datadir:/etc/clightning_litecoin"
- "clightning_bitcoin_datadir:/etc/clightning_bitcoin"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -97,12 +97,12 @@ services:
- litecoind
- bitcoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
litecoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_litecoind
image: nicolasdorier/docker-litecoin:0.15.1
environment:
@@ -119,7 +119,7 @@ services:
clightning_litecoin:
image: nicolasdorier/clightning:0.0.0.16
container_name: btcpayserver_clightning_litecoin
- restart: always
+ restart: unless-stopped
environment:
LIGHTNINGD_OPT: |
bitcoin-datadir=/etc/litecoin
@@ -137,7 +137,7 @@ services:
links:
- litecoind
bitcoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_bitcoind
image: nicolasdorier/docker-bitcoin:0.16.0
environment:
@@ -154,7 +154,7 @@ services:
clightning_bitcoin:
image: nicolasdorier/clightning:0.0.0.16
container_name: btcpayserver_clightning_bitcoin
- restart: always
+ restart: unless-stopped
environment:
LIGHTNINGD_OPT: |
bitcoin-datadir=/etc/bitcoin
diff --git a/Production/docker-compose.btc-ltc.yml b/Production/docker-compose.btc-ltc.yml
index 489d46c..3b5086d 100644
--- a/Production/docker-compose.btc-ltc.yml
+++ b/Production/docker-compose.btc-ltc.yml
@@ -1,7 +1,7 @@
version: "3"
services:
nginx:
- restart: always
+ restart: unless-stopped
image: nginx
container_name: nginx
ports:
@@ -15,7 +15,7 @@ services:
links:
- btcpayserver
nginx-gen:
- restart: always
+ restart: unless-stopped
image: jwilder/docker-gen
container_name: nginx-gen
volumes:
@@ -29,7 +29,7 @@ services:
links:
- nginx
letsencrypt-nginx-proxy-companion:
- restart: always
+ restart: unless-stopped
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt-nginx-proxy-companion
volumes:
@@ -45,7 +45,7 @@ services:
links:
- nginx-gen
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -71,7 +71,7 @@ services:
- "btcpay_datadir:/datadir"
- "nbxplorer_datadir:/root/.nbxplorer"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -91,12 +91,12 @@ services:
- litecoind
- bitcoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
litecoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_litecoind
image: nicolasdorier/docker-litecoin:0.15.1
environment:
@@ -111,7 +111,7 @@ services:
volumes:
- "litecoin_datadir:/data"
bitcoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_bitcoind
image: nicolasdorier/docker-bitcoin:0.16.0
environment:
diff --git a/Production/docker-compose.btc.yml b/Production/docker-compose.btc.yml
index 840b4fa..a73f190 100644
--- a/Production/docker-compose.btc.yml
+++ b/Production/docker-compose.btc.yml
@@ -1,7 +1,7 @@
version: "3"
services:
nginx:
- restart: always
+ restart: unless-stopped
image: nginx
container_name: nginx
ports:
@@ -15,7 +15,7 @@ services:
links:
- btcpayserver
nginx-gen:
- restart: always
+ restart: unless-stopped
image: jwilder/docker-gen
container_name: nginx-gen
volumes:
@@ -29,7 +29,7 @@ services:
links:
- nginx
letsencrypt-nginx-proxy-companion:
- restart: always
+ restart: unless-stopped
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt-nginx-proxy-companion
volumes:
@@ -45,7 +45,7 @@ services:
links:
- nginx-gen
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -70,7 +70,7 @@ services:
- "btcpay_datadir:/datadir"
- "nbxplorer_datadir:/root/.nbxplorer"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -86,12 +86,12 @@ services:
links:
- bitcoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
bitcoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_bitcoind
image: nicolasdorier/docker-bitcoin:0.16.0
environment:
diff --git a/Production/docker-compose.ltc-clightning.yml b/Production/docker-compose.ltc-clightning.yml
index cb91b03..c78f6ff 100644
--- a/Production/docker-compose.ltc-clightning.yml
+++ b/Production/docker-compose.ltc-clightning.yml
@@ -1,7 +1,7 @@
version: "3"
services:
nginx:
- restart: always
+ restart: unless-stopped
image: nginx
container_name: nginx
ports:
@@ -15,7 +15,7 @@ services:
links:
- btcpayserver
nginx-gen:
- restart: always
+ restart: unless-stopped
image: jwilder/docker-gen
container_name: nginx-gen
volumes:
@@ -29,7 +29,7 @@ services:
links:
- nginx
letsencrypt-nginx-proxy-companion:
- restart: always
+ restart: unless-stopped
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt-nginx-proxy-companion
volumes:
@@ -45,7 +45,7 @@ services:
links:
- nginx-gen
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -73,7 +73,7 @@ services:
- "nbxplorer_datadir:/root/.nbxplorer"
- "clightning_litecoin_datadir:/etc/clightning_litecoin"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -89,12 +89,12 @@ services:
links:
- litecoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
litecoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_litecoind
image: nicolasdorier/docker-litecoin:0.15.1
environment:
@@ -111,7 +111,7 @@ services:
clightning_litecoin:
image: nicolasdorier/clightning:0.0.0.16
container_name: btcpayserver_clightning_litecoin
- restart: always
+ restart: unless-stopped
environment:
LIGHTNINGD_OPT: |
bitcoin-datadir=/etc/litecoin
diff --git a/Production/docker-compose.ltc.yml b/Production/docker-compose.ltc.yml
index 28f116c..0b98355 100644
--- a/Production/docker-compose.ltc.yml
+++ b/Production/docker-compose.ltc.yml
@@ -1,7 +1,7 @@
version: "3"
services:
nginx:
- restart: always
+ restart: unless-stopped
image: nginx
container_name: nginx
ports:
@@ -15,7 +15,7 @@ services:
links:
- btcpayserver
nginx-gen:
- restart: always
+ restart: unless-stopped
image: jwilder/docker-gen
container_name: nginx-gen
volumes:
@@ -29,7 +29,7 @@ services:
links:
- nginx
letsencrypt-nginx-proxy-companion:
- restart: always
+ restart: unless-stopped
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt-nginx-proxy-companion
volumes:
@@ -45,7 +45,7 @@ services:
links:
- nginx-gen
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -70,7 +70,7 @@ services:
- "btcpay_datadir:/datadir"
- "nbxplorer_datadir:/root/.nbxplorer"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -86,12 +86,12 @@ services:
links:
- litecoind
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
litecoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_litecoind
image: nicolasdorier/docker-litecoin:0.15.1
environment:
diff --git a/README.md b/README.md
index dd9320d..c0eb0fe 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,91 @@
-# How to use
+# Introduction
-This repository is hosting different docker-compose which can be used to facilitate deployment of BTCPay Server.
+This repository will help you to setup BTCPay and all its dependencies in a simple way:

-As you can see, it depends on several piece of infrastructure, mainly:
+As you can see, BTCPay depends on several piece of infrastructure, mainly:
* A lightweight block explorer (NBXplorer),
* A database (Postgres, or SQLite),
* A full node (Bitcoin Core)
-Setting up the dependencies might be time consuming, this repository is meant to give working example of `docker-compose` file which will setup everything for you.
+There is more dependencies, if you support more than just Bitcoin. (C-Lightning, LitecoinD etc...)
+Setting up the dependencies correctly in a production environment might be time consuming.
+
+This repository is meant to setup your environment easily.
+
+# How to use this?
+
+## For complete noobs
+
+If you have no knowledge of Linux administration or Docker, we advise you to host BTCPay on Microsoft Azure by opening an account then clicking here
+
+[](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fbtcpayserver%2Fbtcpayserver-azure%2Fmaster%2Fazuredeploy.json)
+
+Follow this video
+
+[](http://www.youtube.com/watch?v=Bxs95BdEMHY "BTCPay - One Click Setup")
+
+This installation is convenient but will cost you around 60 USD per month.
+After all your nodes are synched and you confirm things work fine, you can fine tune save additional money by following [this guide](https://github.com/btcpayserver/btcpayserver-doc/blob/master/PennyPinching.md), and drop to 30 or 40 USD per month.
+
+## For technical user
+
+If, for some reason, you don't want or can't use the Azure deployment explained above then you can install BTCPayServer on your own instance.
+
+First step is to make sure you have a domain name pointing to your host, and that port `443` and `80` and externally accessible.
+Let's assume it is `btcpay.example.com`.
+
+You also want to support litecoin, bitcoin and clightning and having HTTPS automatically configured by nginx.
+
+```bash
+# Log as root
+sudo su -
+
+# Create a folder for BTCPay
+mkdir BTCPayServer
+cd BTCPayServer
+
+# Clone this repository
+git clone https://github.com/btcpayserver/btcpayserver-docker
+cd btcpayserver-docker
+
+# Run btcpay-setup.sh with the right parameters
+export BTCPAY_HOST="btcpay.example.com"
+export NBITCOIN_NETWORK="mainnet"
+export BTCPAYGEN_CRYPTO1="btc"
+export BTCPAYGEN_CRYPTO2="ltc"
+export BTCPAYGEN_REVERSEPROXY="nginx"
+export BTCPAYGEN_LIGHTNING="clightning"
+. ./btcpay-setup.sh -i
+
+```
+
+`btcpay-setup.sh` will :
+
+* Install Docker
+* Install Docker-Compose
+* Make sure BTCPay starts at reboot via upstart or systemd
+* Setup environment variables to use BTCPay utilities
+* Add BTCPay utilities in /usr/bin
+* Start BTCPay
+
+# Tooling
+
+A wide range of tooling get available on your system when btcpay is installed:
+
+* `bitcoin-cli.sh` access your bitcoin node instance
+* `bitcoin-lightning-cli.sh` access your clighning node instance
+* `changedomain.sh` change the domain of your BTCPayServer
+* `btcpay-update.sh` update BTCPay to the latest version
+* `btcpay-setup.sh` change the settings of your server (run `. ./btcpay-setup.sh` to get more information about additional parameters, run `. ./btcpay-setup.sh -i` to setup again your btcpay server)
+
+# Under the hood
+
+## Prebuilt docker-compose
+
+For your custom need, you will find some working example of `docker-compose` file which will setup everything for you.
The [Production](Production) `docker-compose` files are used for production environment. It adds NGinx as a reverse proxy and [Let's Encrypt and DockerGen](https://github.com/gilyes/docker-nginx-letsencrypt-sample) to automatically configure HTTPS.
@@ -20,23 +95,140 @@ The production `docker-compose` is used under the hood to deploy an instance of
The [Production-NoReverseProxy](Production-NoReverseProxy) `docker-compose` files are used for environment which are already behind a reverse proxy. It exposes BTCPayServer directly on port 80.
-# About accessing services inside those docker compose
+## Generated docker-compose
-Several scripts are provided to access the internal of your docker-service:
+All `docker-compose` files in [Production](Production) and [Production-NoReverseProxy](Production-NoReverseProxy) are generated by running the [build-pregen.sh](build-pregen.sh) (or [build-pregen.ps1](build-pregen.ps1)) scripts from the fragments located in [docker-compose-generator/docker-fragments](docker-compose-generator/docker-fragments).
-* `litecoin-cli.sh`
-* `bitcoin-cli.sh`
-* `litecoin-lightning-cli.sh`
-* `bitcoin-lightning-cli.sh`
+The pre-generated `docker-compose` files cover `btc`, `ltc`, `clightning` for configuration with or without `nginx `reverse proxy.
-We also provide powershell `.ps1` scripts if you are on windows.
+If you want any other configuration, you need to run [build.sh](build.sh) (or [build.ps1](build.ps1)) with environment variables correctly set.
-You can use it easily:
+To configure your custom docker-compose, the following environment variables are supported:
+
+* `BTCPAYGEN_CRYPTO1` to `BTCPAYGEN_CRYPTO9`: Specify support for a crypto currency. (Valid value: `btc`, `ltc`)
+* `BTCPAYGEN_REVERSEPROXY`: Specify the reverse proxy to use (Valid value: `nginx`, `none`)
+* `BTCPAYGEN_LIGHTNING`: Specify the lightning network implementation (Valid value: `clightning`, `none`)
+* `BTCPAYGEN_SUBNAME`: The sub name of the generated docker-compose file, where the full name will be `Generated/docker-compose.SUBNAME.yml` (Default: `generated`)
+
+Then, running [build.sh](build.sh) (or [build.ps1](build.ps1)) will then generate a `docker-compose.generated.yml` in the [Generated](Generated) folder of this repository.
+
+For example, if you want `btc` and `ltc` support with `nginx` and `clightning` inside `Generated/docker-compose.custom.yml`:
+Note: The first run might take a while, but next run are instantaneous.
+
+On Windows:
```
-./bitcoin-cli.sh getblockcount
+Invoke-Command {
+ $BTCPAYGEN_CRYPTO1="btc"
+ $BTCPAYGEN_CRYPTO2="ltc"
+ $BTCPAYGEN_REVERSEPROXY="nginx"
+ $BTCPAYGEN_LIGHTNING="clightning"
+ $BTCPAYGEN_SUBNAME="custom"
+ . .\build.ps1
+}
```
+On Linux:
+
+```
+BTCPAYGEN_CRYPTO1="btc" \
+BTCPAYGEN_CRYPTO2="ltc" \
+BTCPAYGEN_REVERSEPROXY="nginx" \
+BTCPAYGEN_LIGHTNING="clightning" \
+BTCPAYGEN_SUBNAME="custom" \
+./build.sh
+```
+
+## What btcpay-setup do
+
+`btcpay-setup.sh` utility is a tool which:
+
+1. Make sure docker and docker-compose are installed on your system
+2. Generate a docker-compose via `./build.sh`
+3. Setup an [Environment File](https://docs.docker.com/compose/env-file/) to configure your docker-compose
+4. Setup environment variables so the tools described in [tooling](#tooling) can work.
+5. Add symbolic links of those tools in `/usr/bin`
+6. Start docker-compose
+7. Make sure it restart at reboot via upstart or systemd.
+
+
+Here is an overview of the files generated by `btcpay-setup.sh`.
+
+`/etc/profile.d/btcpay-env.sh` ensures that your environment variable are correctly setup when you log in, so you can use the tools.
+```bash
+export BTCPAYGEN_OLD_PREGEN="false"
+export BTCPAYGEN_CRYPTO1="btc"
+export BTCPAYGEN_CRYPTO2=""
+export BTCPAYGEN_CRYPTO3=""
+export BTCPAYGEN_CRYPTO4=""
+export BTCPAYGEN_CRYPTO5=""
+export BTCPAYGEN_CRYPTO6=""
+export BTCPAYGEN_CRYPTO7=""
+export BTCPAYGEN_CRYPTO8=""
+export BTCPAYGEN_CRYPTO9=""
+export BTCPAYGEN_LIGHTNING="clightning"
+export BTCPAYGEN_REVERSEPROXY="nginx"
+export BTCPAY_DOCKER_COMPOSE="/var/lib/waagent/custom-script/download/0/btcpayserver-docker/Production/docker-compose.generated.yml"
+export BTCPAY_BASE_DIRECTORY="/var/lib/waagent/custom-script/download/0"
+export BTCPAY_ENV_FILE="/var/lib/waagent/custom-script/download/0/.env"
+if cat $BTCPAY_ENV_FILE &> /dev/null; then
+export BTCPAY_HOST="$(cat $BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_HOST=\(.*\)$/\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')"
+fi
+```
+
+`/etc/systemd/system/btcpayserver.service` file ensure that you can control btcpay via `systemctl`, and that btcpay server start on reboot:
+
+```ini
+[Unit]
+Description=BTCPayServer service
+After=docker.service network-online.target
+Requires=docker.service network-online.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+
+ExecStart=/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd "$(dirname $BTCPAY_ENV_FILE)" && docker-compose -f "$BTCPAY_DOCKER_COMPOSE" up -d'
+ExecStop=/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd "$(dirname $BTCPAY_ENV_FILE)" && docker-compose -f "$BTCPAY_DOCKER_COMPOSE" stop'
+ExecReload=/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd "$(dirname $BTCPAY_ENV_FILE)" && docker-compose -f "$BTCPAY_DOCKER_COMPOSE" restart'
+
+[Install]
+WantedBy=multi-user.target
+```
+
+`.env` file (`$BTCPAY_ENV_FILE`) are the environment variable passed to the containers managed by your docker-compose:
+
+```ini
+BTCPAY_HOST=btcpay.example.com
+ACME_CA_URI=https://acme-v01.api.letsencrypt.org/directory
+NBITCOIN_NETWORK=mainnet
+LETSENCRYPT_EMAIL=me@example.com
+```
+
+# How to extend with your own crypto?
+
+1. Support for your crypto on [NBitcoin](https://github.com/MetacoSA/NBitcoin/tree/master/NBitcoin.Altcoins)/[NBxplorer](https://github.com/dgarage/NBXplorer)/[BTCPay Server](https://github.com/btcpayserver/btcpayserver). (Take example on other coins)
+2. Create your own docker image ([Example for BTC](https://hub.docker.com/r/nicolasdorier/docker-bitcoin/))
+3. Create a docker-compose fragment ([Example for BTC](docker-compose-generator/docker-fragments/bitcoin.yml))
+4. Add your Crypto Definition ([Example for BTC](docker-compose-generator/src/CryptoDefinition.cs))
+
+Now if you want to test, DOT NOT USE `build.sh`, because this utility is a pre-built docker image.
+Instead, install [.NET Core 2.1 SDK](https://www.microsoft.com/net/download/windows) then run:
+
+```bash
+BTCPAYGEN_CRYPTO1="xxx"
+BTCPAYGEN_SUBNAME="test"
+cd docker-compose-generator/src
+dotnet run
+```
+
+This will generate your docker-compose in the `Generated` folder, which you can then try by yourself.
+Note that BTCPayServer developers will not spend time testing your image, so make sure it works.
+
# For docker noobs
If you are a docker noob here is how you would create a HTTPS ready server.
@@ -67,60 +259,25 @@ docker-compose -f "$(pwd)/Production/docker-compose.btc-ltc.yml" up -d
Wait a little bit, then you can now browse `https://btcpay.example.com/`.
-# About generate-docker-compose
+# FAQ
-The files in `Production` and `Production-NoReverseProxy` are generated by a dotnet program located in `docker-compose-generator`.
-It is meant to generate a wide range a configuration from `docker-compose-generator/docker-fragments` without repeating myself.
+## How can I modify my environment?
-# No docker-compose suit my need, what should I do?
+As root, run `. btcpay-setup.sh`, this will show you the environment variable it is expecting.
+For example if you support `btc` and `ltc` already, and wants to add `btg`.
-All `docker-compose` files in [Production](Production) and [Production-NoReverseProxy](Production-NoReverseProxy) are generated by running the [build-pregen.sh](build-pregen.sh) (or [build-pregen.ps1](build-pregen.ps1)) scripts from the fragments located in [docker-compose-generator/docker-fragments](docker-compose-generator/docker-fragments).
-
-The pre-generated `docker-compose` files cover `btc`, `ltc`, `clightning` for configuration with or without `nginx `reverse proxy.
-
-If you want any other configuration, you need to run [build.sh](build.sh) (or [build.ps1](build.ps1)) with environment variables correctly set.
-
-To configure your custom docker-compose, the following environment variables are supported:
-
-* `BTCPAYGEN_CRYPTO1` to `BTCPAYGEN_CRYPTO9`: Specify support for a crypto currency. (Valid value: `btc`, `ltc`)
-* `BTCPAYGEN_REVERSEPROXY`: Specify the reverse proxy to use (Valid value: `nginx`, `none`)
-* `BTCPAYGEN_LIGHTNING`: Specify the lightning network implementation (Valid value: `clightning`, `none`)
-* `BTCPAYGEN_SUBNAME`: The sub name of the generated docker-compose file, where the full name will be `Generated/docker-compose.SUBNAME.yml` (Default: `generated`)
-
-Then, running [build.sh](build.sh) (or [build.ps1](build.ps1)) will then generate a `docker-compose.generated.yml` in the root folder of this repository.
-For example, if you want `btc` and `ltc` support with `nginx` and `clightning` inside `Generate/docker-compose.custom.yml`:
-
-Note: The first run might take a while, but next run are instantaneous.
-
-On Windows:
-
-```
-Invoke-Command {
- $BTCPAYGEN_CRYPTO1="btc"
- $BTCPAYGEN_CRYPTO2="ltc"
- $BTCPAYGEN_REVERSEPROXY="nginx"
- $BTCPAYGEN_LIGHTNING="clightning"
- $BTCPAYGEN_SUBNAME="custom"
- . .\build.ps1
-}
+```bash
+export BTCPAYGEN_CRYPTO3='btg'
+. btcpay-setup.sh -i
```
-On Linux:
+## I deployed before btcpay-setup.sh existed, can I migrate to this new system?
-```
-BTCPAYGEN_CRYPTO1="btc" \
-BTCPAYGEN_CRYPTO2="ltc" \
-BTCPAYGEN_REVERSEPROXY="nginx" \
-BTCPAYGEN_LIGHTNING="clightning" \
-BTCPAYGEN_SUBNAME="custom" \
-./build.sh
-```
+Yes, the following command will migrate you to this new system:
-# How to extend with my own crypto?
-
-1. Support for your crypto on [NBitcoin](https://github.com/MetacoSA/NBitcoin/tree/master/NBitcoin.Altcoins)/[NBxplorer](https://github.com/dgarage/NBXplorer)/[BTCPay Server](https://github.com/btcpayserver/btcpayserver). (Take example on other coins)
-2. Create your own docker image ([Example for BTC](https://hub.docker.com/r/nicolasdorier/docker-bitcoin/))
-3. Create a docker-compose fragment ([Example for BTC](docker-compose-generator/docker-fragments/bitcoin.yml))
-4. Add your Crypto Definition ([Example for BTC](docker-compose-generator/src/CryptoDefinition.cs))
-
-Congratulation!
\ No newline at end of file
+```bash
+sudo su -
+btcpay-update.sh
+cd $DOWNLOAD_ROOT/btcpayserver-docker
+. ./btcpay-setup.sh -i
+```
\ No newline at end of file
diff --git a/btcpay-restart.sh b/btcpay-restart.sh
new file mode 100755
index 0000000..76e227c
--- /dev/null
+++ b/btcpay-restart.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+. /etc/profile.d/btcpay-env.sh
+
+cd "`dirname $BTCPAY_ENV_FILE`"
+docker-compose -f $BTCPAY_DOCKER_COMPOSE down
+docker-compose -f $BTCPAY_DOCKER_COMPOSE up -d
diff --git a/btcpay-setup.sh b/btcpay-setup.sh
index 9670a0c..4776c31 100755
--- a/btcpay-setup.sh
+++ b/btcpay-setup.sh
@@ -10,14 +10,16 @@ if [[ $EUID -ne 0 ]]; then
return
fi
-if [[ ! -d "Production-NoReverseProxy" ]]; then
- echo "You must run this script from inside the btcpayserver-docker folder"
- return
-fi
-
-if ! git -C . rev-parse; then
- echo "You must run this script inside the git repository of btcpayserver-docker"
- return
+# Verify we are in right folder. If we are not, let's go in the parent folder of the current docker-compose.
+if ! git -C . rev-parse &> /dev/null || [ ! -d "Generated" ]; then
+ if [ ! -z $BTCPAY_DOCKER_COMPOSE ]; then
+ cd $(dirname $BTCPAY_DOCKER_COMPOSE)
+ cd ..
+ fi
+ if ! git -C . rev-parse || [ ! -d "Generated" ]; then
+ echo "You must run this script inside the git repository of btcpayserver-docker"
+ return
+ fi
fi
function display_help () {
@@ -65,16 +67,80 @@ if [ "$1" != "-i" ]; then
return
fi
+######### Migration: old pregen environment to new environment ############
+if [ ! -z $BTCPAY_DOCKER_COMPOSE ] && [ ! -z $DOWNLOAD_ROOT ] && [ -z $BTCPAYGEN_MIGRATED_PREGEN ]; then
+ echo "Old pregen docker deployment detected. Migrating..."
+ rm "$DOWNLOAD_ROOT/btcpay-restart.sh"
+ rm "$DOWNLOAD_ROOT/btcpay-update.sh"
+ rm "$DOWNLOAD_ROOT/changedomain.sh"
+ rm "$DOWNLOAD_ROOT/entrypoint.sh"
+ DOWNLOAD_ROOT=""
+ BTCPAYGEN_MIGRATED_PREGEN="true"
+ # Migration: old deployment store those in BTCPAY_ENV_FILE
+ BTCPAY_HOST=$(cat $BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_HOST=\(.*\)$/\1/p')
+ ACME_CA_URI=$(cat $BTCPAY_ENV_FILE | sed -n 's/^ACME_CA_URI=\(.*\)$/\1/p')
+ NBITCOIN_NETWORK=$(cat $BTCPAY_ENV_FILE | sed -n 's/^NBITCOIN_NETWORK=\(.*\)$/\1/p')
+ LETSENCRYPT_EMAIL=$(cat $BTCPAY_ENV_FILE | sed -n 's/^LETSENCRYPT_EMAIL=\(.*\)$/\1/p')
+ LIGHTNING_ALIAS=$(cat $BTCPAY_ENV_FILE | sed -n 's/^LIGHTNING_ALIAS=\(.*\)$/\1/p')
+
+ if [[ $(dirname $BTCPAY_DOCKER_COMPOSE) == *Production ]]; then
+ BTCPAYGEN_REVERSEPROXY='nginx'
+ fi
+ if [[ $(dirname $BTCPAY_DOCKER_COMPOSE) == *Production-NoReverseProxy ]]; then
+ BTCPAYGEN_REVERSEPROXY='none'
+ fi
+
+ if [[ $BTCPAY_DOCKER_COMPOSE == *docker-compose.btc.yml ]]; then
+ BTCPAYGEN_CRYPTO1='btc'
+ BTCPAYGEN_LIGHTNING='none'
+ fi
+ if [[ $BTCPAY_DOCKER_COMPOSE == *docker-compose.btc-clightning.yml ]]; then
+ BTCPAYGEN_CRYPTO1='btc'
+ BTCPAYGEN_LIGHTNING='clightning'
+ fi
+ if [[ $BTCPAY_DOCKER_COMPOSE == *docker-compose.ltc.yml ]]; then
+ BTCPAYGEN_CRYPTO1='ltc'
+ BTCPAYGEN_LIGHTNING='none'
+ fi
+ if [[ $BTCPAY_DOCKER_COMPOSE == *docker-compose.ltc-clightning.yml ]]; then
+ BTCPAYGEN_CRYPTO1='ltc'
+ BTCPAYGEN_LIGHTNING='clightning'
+ fi
+ if [[ $BTCPAY_DOCKER_COMPOSE == *docker-compose.btc-ltc.yml ]]; then
+ BTCPAYGEN_CRYPTO1='btc'
+ BTCPAYGEN_CRYPTO2='ltc'
+ BTCPAYGEN_LIGHTNING='none'
+ fi
+ if [[ $BTCPAY_DOCKER_COMPOSE == *docker-compose.btc-ltc-clightning.yml ]]; then
+ BTCPAYGEN_CRYPTO1='btc'
+ BTCPAYGEN_CRYPTO2='ltc'
+ BTCPAYGEN_LIGHTNING='clightning'
+ fi
+fi
+#########################################################
+
: "${LETSENCRYPT_EMAIL:=me@example.com}"
+: "${BTCPAYGEN_MIGRATED_PREGEN:=false}"
: "${NBITCOIN_NETWORK:=mainnet}"
: "${BTCPAYGEN_CRYPTO1:=btc}"
: "${BTCPAYGEN_REVERSEPROXY:=nginx}"
: "${BTCPAYGEN_LIGHTNING:=none}"
: "${ACME_CA_URI:=https://acme-v01.api.letsencrypt.org/directory}"
+OLD_BTCPAY_DOCKER_COMPOSE=$BTCPAY_DOCKER_COMPOSE
ORIGINAL_DIRECTORY=$(pwd)
BTCPAY_BASE_DIRECTORY="$(dirname $(pwd))"
-BTCPAY_DOCKER_COMPOSE="$(pwd)/Generated/docker-compose.generated.yml"
+
+if [ "$BTCPAYGEN_MIGRATED_PREGEN" == "true" ]; then
+ if [[ $(dirname $BTCPAY_DOCKER_COMPOSE) == *Production ]]; then
+ BTCPAY_DOCKER_COMPOSE="$(pwd)/Production/docker-compose.generated.yml"
+ elif [[ $(dirname $BTCPAY_DOCKER_COMPOSE) == *Production-NoReverseProxy ]]; then
+ BTCPAY_DOCKER_COMPOSE="$(pwd)/Production-NoReverseProxy/docker-compose.generated.yml"
+ fi
+else # new deployments must be in Generated
+ BTCPAY_DOCKER_COMPOSE="$(pwd)/Generated/docker-compose.generated.yml"
+fi
+
BTCPAY_ENV_FILE="$BTCPAY_BASE_DIRECTORY/.env"
echo "
@@ -101,6 +167,7 @@ Additional exported variables:
BTCPAY_DOCKER_COMPOSE=$BTCPAY_DOCKER_COMPOSE
BTCPAY_BASE_DIRECTORY=$BTCPAY_BASE_DIRECTORY
BTCPAY_ENV_FILE=$BTCPAY_ENV_FILE
+BTCPAYGEN_MIGRATED_PREGEN=$BTCPAYGEN_MIGRATED_PREGEN
----------------------
"
@@ -118,17 +185,10 @@ if [ "$NBITCOIN_NETWORK" != "mainnet" ] && [ "$NBITCOIN_NETWORK" != "testnet" ]
echo "NBITCOIN_NETWORK should be equal to mainnet, testnet or regtest"
fi
-export BTCPAY_DOCKER_COMPOSE
-export BTCPAY_BASE_DIRECTORY
-export BTCPAY_ENV_FILE
-
# Put the variables in /etc/profile.d when a user log interactively
touch "/etc/profile.d/btcpay-env.sh"
echo "
-export BTCPAY_HOST=\"$BTCPAY_HOST\"
-export LETSENCRYPT_EMAIL=\"$LETSENCRYPT_EMAIL\"
-export NBITCOIN_NETWORK=\"$NBITCOIN_NETWORK\"
-export LIGHTNING_ALIAS=\"$LIGHTNING_ALIAS\"
+export BTCPAYGEN_OLD_PREGEN=\"$BTCPAYGEN_MIGRATED_PREGEN\"
export BTCPAYGEN_CRYPTO1=\"$BTCPAYGEN_CRYPTO1\"
export BTCPAYGEN_CRYPTO2=\"$BTCPAYGEN_CRYPTO2\"
export BTCPAYGEN_CRYPTO3=\"$BTCPAYGEN_CRYPTO3\"
@@ -139,14 +199,32 @@ export BTCPAYGEN_CRYPTO7=\"$BTCPAYGEN_CRYPTO7\"
export BTCPAYGEN_CRYPTO8=\"$BTCPAYGEN_CRYPTO8\"
export BTCPAYGEN_CRYPTO9=\"$BTCPAYGEN_CRYPTO9\"
export BTCPAYGEN_LIGHTNING=\"$BTCPAYGEN_LIGHTNING\"
-export ACME_CA_URI=\"$ACME_CA_URI\"
+export BTCPAYGEN_REVERSEPROXY=\"$BTCPAYGEN_REVERSEPROXY\"
export BTCPAY_DOCKER_COMPOSE=\"$BTCPAY_DOCKER_COMPOSE\"
export BTCPAY_BASE_DIRECTORY=\"$BTCPAY_BASE_DIRECTORY\"
-export BTCPAY_ENV_FILE=\"$BTCPAY_ENV_FILE\"" > /etc/profile.d/btcpay-env.sh
+export BTCPAY_ENV_FILE=\"$BTCPAY_ENV_FILE\"
+if cat \$BTCPAY_ENV_FILE &> /dev/null; then
+export BTCPAY_HOST=\"\$(cat \$BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_HOST=\(.*\)$/\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')\"
+fi
+" > /etc/profile.d/btcpay-env.sh
chmod +x /etc/profile.d/btcpay-env.sh
+
+. /etc/profile.d/btcpay-env.sh
+
echo -e "BTCPay Server environment variables successfully saved in /etc/profile.d/btcpay-env.sh\n"
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
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
@@ -155,12 +233,6 @@ if ! [ -x "$(command -v docker)" ] || ! [ -x "$(command -v docker-compose)" ]; t
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
fi
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
@@ -195,8 +267,12 @@ echo -e "BTCPay Server docker-compose parameters saved in $BTCPAY_ENV_FILE\n"
# Generate the docker compose in BTCPAY_DOCKER_COMPOSE
. ./build.sh
+if [ "$BTCPAYGEN_MIGRATED_PREGEN" == "true" ]; then
+ cp Generated/docker-compose.generated.yml $BTCPAY_DOCKER_COMPOSE
+fi
+
# Schedule for reboot
-if [ -d "/etc/systemd/system" ]; then # Use systemd
+if [ -x "$(command -v systemctl)" ]; then # Use systemd
if [ -e "/etc/init/start_containers.conf" ]; then
echo -e "Uninstalling upstart script /etc/init/start_containers.conf"
rm "/etc/init/start_containers.conf"
@@ -241,25 +317,32 @@ stop on runlevel [!2345]
script
. /etc/profile.d/btcpay-env.sh
- cd \"`dirname \$BTCPAY_ENV_FILE`\"
+ cd \"\$(dirname \$BTCPAY_ENV_FILE)\"
docker-compose -f \"\$BTCPAY_DOCKER_COMPOSE\" up -d
end script" > /etc/init/start_containers.conf
echo -e "BTCPay Server upstart configured in /etc/init/start_containers.conf\n"
initctl reload-configuration
- cd "$(dirname $BTCPAY_ENV_FILE)"
- docker-compose -f "$BTCPAY_DOCKER_COMPOSE" up -d
echo "BTCPay Server started"
fi
+cd "$(dirname $BTCPAY_ENV_FILE)"
+
+if [ $OLD_BTCPAY_DOCKER_COMPOSE != $BTCPAY_DOCKER_COMPOSE ]; then
+ echo "Closing old docker-compose at $OLD_BTCPAY_DOCKER_COMPOSE..."
+ docker-compose -f "$OLD_BTCPAY_DOCKER_COMPOSE" down
+fi
+
+docker-compose -f "$BTCPAY_DOCKER_COMPOSE" up -d --remove-orphans
cd $ORIGINAL_DIRECTORY
for scriptname in *.sh; do
+ if [ "$scriptname" == "build.sh" -o "$scriptname" == "build-pregen.sh" ] ; then
+ continue;
+ fi
echo "Adding symlink of $scriptname to /usr/bin"
chmod +x $scriptname
- if [ -e /usr/bin/$scriptname ]; then
- rm /usr/bin/$scriptname
- fi
- ln -s $scriptname /usr/bin
+ rm /usr/bin/$scriptname &> /dev/null
+ ln -s "$(pwd)/$scriptname" /usr/bin
done
diff --git a/btcpay-update.sh b/btcpay-update.sh
new file mode 100755
index 0000000..2791695
--- /dev/null
+++ b/btcpay-update.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+set -e
+
+. /etc/profile.d/btcpay-env.sh
+
+cd "$BTCPAY_BASE_DIRECTORY/btcpayserver-docker"
+git pull --force
+
+if [[ $BTCPAY_DOCKER_COMPOSE == *docker-compose.generated.yml ]]; then
+ # Generate the docker compose in BTCPAY_DOCKER_COMPOSE
+ . ./build.sh
+ if [ "$BTCPAYGEN_MIGRATED_PREGEN" == "true" ]; then
+ cp Generated/docker-compose.generated.yml $BTCPAY_DOCKER_COMPOSE
+ fi
+fi
+
+for scriptname in *.sh; do
+ if [ "$scriptname" == "build.sh" -o "$scriptname" == "build-pregen.sh" ] ; then
+ continue;
+ fi
+ echo "Adding symlink of $scriptname to /usr/bin"
+ chmod +x $scriptname
+ rm /usr/bin/$scriptname &> /dev/null
+ ln -s "$(pwd)/$scriptname" /usr/bin
+done
+
+cd "`dirname $BTCPAY_ENV_FILE`"
+docker-compose -f $BTCPAY_DOCKER_COMPOSE up -d --remove-orphans
diff --git a/build-pregen.ps1 b/build-pregen.ps1
index 0fb05d7..0bd66e5 100755
--- a/build-pregen.ps1
+++ b/build-pregen.ps1
@@ -1,4 +1,4 @@
# This script will run docker-compose-generator in a container to generate the yml files
-docker build -t btcpayserver/docker-compose-generator "$(Get-Location)\docker-compose-generator"
+docker pull btcpayserver/docker-compose-generator
docker run -v "$(Get-Location)\Production:/app/Production" -v "$(Get-Location)\Production-NoReverseProxy:/app/Production-NoReverseProxy" --rm btcpayserver/docker-compose-generator pregen
\ No newline at end of file
diff --git a/build-pregen.sh b/build-pregen.sh
index 434fc80..e61eb95 100755
--- a/build-pregen.sh
+++ b/build-pregen.sh
@@ -1,5 +1,5 @@
#!/bin/bash
# This script will run docker-compose-generator in a container to generate the yml files
-docker build -t btcpayserver/docker-compose-generator "$(pwd)/docker-compose-generator"
+docker pull btcpayserver/docker-compose-generator
docker run -v "$(pwd)/Production:/app/Production" -v "$(pwd)/Production-NoReverseProxy:/app/Production-NoReverseProxy" --rm btcpayserver/docker-compose-generator pregen
\ No newline at end of file
diff --git a/build.ps1 b/build.ps1
index 73683e9..09fad1a 100755
--- a/build.ps1
+++ b/build.ps1
@@ -1,7 +1,8 @@
# This script will run docker-compose-generator in a container to generate the yml files
-docker build -t btcpayserver/docker-compose-generator "$(Get-Location)\docker-compose-generator"
+docker pull btcpayserver/docker-compose-generator
docker run -v "$(Get-Location)\Generated:/app/Generated" `
+ -v "$(Get-Location)\docker-compose-generator\docker-fragments:/app/docker-fragments" `
-e "BTCPAYGEN_CRYPTO1=$BTCPAYGEN_CRYPTO1" `
-e "BTCPAYGEN_CRYPTO2=$BTCPAYGEN_CRYPTO2" `
-e "BTCPAYGEN_CRYPTO3=$BTCPAYGEN_CRYPTO3" `
@@ -14,4 +15,8 @@ docker run -v "$(Get-Location)\Generated:/app/Generated" `
-e "BTCPAYGEN_REVERSEPROXY=$BTCPAYGEN_REVERSEPROXY" `
-e "BTCPAYGEN_LIGHTNING=$BTCPAYGEN_LIGHTNING" `
-e "BTCPAYGEN_SUBNAME=$BTCPAYGEN_SUBNAME" `
- --rm btcpayserver/docker-compose-generator
\ No newline at end of file
+ --rm btcpayserver/docker-compose-generator
+
+If ($BTCPAYGEN_REVERSEPROXY -eq "nginx") {
+ Copy-Item ".\Production\nginx.tmpl" -Destination ".\Generated"
+}
diff --git a/build.sh b/build.sh
index 6ab0708..439533b 100755
--- a/build.sh
+++ b/build.sh
@@ -1,8 +1,9 @@
#!/bin/bash
# This script will run docker-compose-generator in a container to generate the yml files
-docker build -t btcpayserver/docker-compose-generator "$(pwd)/docker-compose-generator"
+docker pull btcpayserver/docker-compose-generator
docker run -v "$(pwd)/Generated:/app/Generated" \
+ -v "$(pwd)/docker-compose-generator/docker-fragments:/app/docker-fragments" \
-e "BTCPAYGEN_CRYPTO1=$BTCPAYGEN_CRYPTO1" \
-e "BTCPAYGEN_CRYPTO2=$BTCPAYGEN_CRYPTO2" \
-e "BTCPAYGEN_CRYPTO3=$BTCPAYGEN_CRYPTO3" \
@@ -15,4 +16,8 @@ docker run -v "$(pwd)/Generated:/app/Generated" \
-e "BTCPAYGEN_REVERSEPROXY=$BTCPAYGEN_REVERSEPROXY" \
-e "BTCPAYGEN_LIGHTNING=$BTCPAYGEN_LIGHTNING" \
-e "BTCPAYGEN_SUBNAME=$BTCPAYGEN_SUBNAME" \
- --rm btcpayserver/docker-compose-generator
\ No newline at end of file
+ --rm btcpayserver/docker-compose-generator
+
+if [ "$BTCPAYGEN_REVERSEPROXY" == "nginx" ]; then
+ cp Production/nginx.tmpl Generated/nginx.tmpl
+fi
diff --git a/changedomain.sh b/changedomain.sh
new file mode 100755
index 0000000..3f523d8
--- /dev/null
+++ b/changedomain.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+. /etc/profile.d/btcpay-env.sh
+
+export NEW_HOST="$1"
+export OLD_HOST=`cat $BTCPAY_ENV_FILE | sed -n 's/^BTCPAY_HOST=\(.*\)$/\1/p'`
+echo "Changing domain from \"$OLD_HOST\" to \"$NEW_HOST\""
+
+export BTCPAY_HOST="$NEW_HOST"
+export ACME_CA_URI="https://acme-v01.api.letsencrypt.org/directory"
+
+# Modify environment file
+sed -i '/^BTCPAY_HOST/d' $BTCPAY_ENV_FILE
+sed -i '/^ACME_CA_URI/d' $BTCPAY_ENV_FILE
+echo "BTCPAY_HOST=$BTCPAY_HOST" >> $BTCPAY_ENV_FILE
+echo "ACME_CA_URI=$ACME_CA_URI" >> $BTCPAY_ENV_FILE
+
+cd "`dirname $BTCPAY_ENV_FILE`"
+docker-compose -f "$BTCPAY_DOCKER_COMPOSE" up -d
\ No newline at end of file
diff --git a/docker-compose-generator/.dockerignore b/docker-compose-generator/.dockerignore
index 5a76cae..35d8b76 100644
--- a/docker-compose-generator/.dockerignore
+++ b/docker-compose-generator/.dockerignore
@@ -122,3 +122,4 @@ output
.vs
**/launchSettings.json
+docker-fragments/
\ No newline at end of file
diff --git a/docker-compose-generator/Dockerfile b/docker-compose-generator/Dockerfile
index c7f4c3d..a5da653 100644
--- a/docker-compose-generator/Dockerfile
+++ b/docker-compose-generator/Dockerfile
@@ -16,6 +16,5 @@ VOLUME /datadir
ENV INSIDE_CONTAINER=1
COPY --from=builder "/app" .
-COPY docker-fragments docker-fragments
ENTRYPOINT ["dotnet", "docker-compose-generator.dll"]
diff --git a/docker-compose-generator/docker-fragments/bgold.yml b/docker-compose-generator/docker-fragments/bgold.yml
index 6e13e4e..6c08ee5 100644
--- a/docker-compose-generator/docker-fragments/bgold.yml
+++ b/docker-compose-generator/docker-fragments/bgold.yml
@@ -2,7 +2,7 @@ version: "3"
services:
bgoldd:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_bgoldd
image: kamigawabul/docker-bitcoingold:0.15.0.2
environment:
diff --git a/docker-compose-generator/docker-fragments/bitcoin-clightning.yml b/docker-compose-generator/docker-fragments/bitcoin-clightning.yml
index edc4190..01500e4 100644
--- a/docker-compose-generator/docker-fragments/bitcoin-clightning.yml
+++ b/docker-compose-generator/docker-fragments/bitcoin-clightning.yml
@@ -4,7 +4,7 @@ services:
clightning_bitcoin:
image: nicolasdorier/clightning:0.0.0.16
container_name: btcpayserver_clightning_bitcoin
- restart: always
+ restart: unless-stopped
environment:
LIGHTNINGD_OPT: |
bitcoin-datadir=/etc/bitcoin
diff --git a/docker-compose-generator/docker-fragments/bitcoin.yml b/docker-compose-generator/docker-fragments/bitcoin.yml
index 3de26b8..8432d91 100644
--- a/docker-compose-generator/docker-fragments/bitcoin.yml
+++ b/docker-compose-generator/docker-fragments/bitcoin.yml
@@ -2,7 +2,7 @@ version: "3"
services:
bitcoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_bitcoind
image: nicolasdorier/docker-bitcoin:0.16.0
environment:
diff --git a/docker-compose-generator/docker-fragments/btcpayserver.yml b/docker-compose-generator/docker-fragments/btcpayserver.yml
index 25cd3c8..b82bbeb 100644
--- a/docker-compose-generator/docker-fragments/btcpayserver.yml
+++ b/docker-compose-generator/docker-fragments/btcpayserver.yml
@@ -3,7 +3,7 @@ version: "3"
services:
btcpayserver:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/btcpayserver:1.0.2.21
expose:
- "49392"
@@ -33,7 +33,7 @@ services:
- "nbxplorer_datadir:/root/.nbxplorer"
nbxplorer:
- restart: always
+ restart: unless-stopped
image: nicolasdorier/nbxplorer:1.0.2.7
expose:
- "32838"
@@ -44,7 +44,7 @@ services:
- "nbxplorer_datadir:/datadir"
postgres:
- restart: always
+ restart: unless-stopped
image: postgres:9.6.5
volumes:
- "postgres_datadir:/var/lib/postgresql/data"
diff --git a/docker-compose-generator/docker-fragments/litecoin-clightning.yml b/docker-compose-generator/docker-fragments/litecoin-clightning.yml
index 240e6aa..969863a 100644
--- a/docker-compose-generator/docker-fragments/litecoin-clightning.yml
+++ b/docker-compose-generator/docker-fragments/litecoin-clightning.yml
@@ -4,7 +4,7 @@ services:
clightning_litecoin:
image: nicolasdorier/clightning:0.0.0.16
container_name: btcpayserver_clightning_litecoin
- restart: always
+ restart: unless-stopped
environment:
LIGHTNINGD_OPT: |
bitcoin-datadir=/etc/litecoin
diff --git a/docker-compose-generator/docker-fragments/litecoin.yml b/docker-compose-generator/docker-fragments/litecoin.yml
index 061e0d3..c8b73fe 100644
--- a/docker-compose-generator/docker-fragments/litecoin.yml
+++ b/docker-compose-generator/docker-fragments/litecoin.yml
@@ -2,7 +2,7 @@ version: "3"
services:
litecoind:
- restart: always
+ restart: unless-stopped
container_name: btcpayserver_litecoind
image: nicolasdorier/docker-litecoin:0.15.1
environment:
diff --git a/docker-compose-generator/docker-fragments/nginx.yml b/docker-compose-generator/docker-fragments/nginx.yml
index 2cd9155..170ec8e 100644
--- a/docker-compose-generator/docker-fragments/nginx.yml
+++ b/docker-compose-generator/docker-fragments/nginx.yml
@@ -2,7 +2,7 @@ version: "3"
services:
nginx:
- restart: always
+ restart: unless-stopped
image: nginx
container_name: nginx
ports:
@@ -17,7 +17,7 @@ services:
- btcpayserver
nginx-gen:
- restart: always
+ restart: unless-stopped
image: jwilder/docker-gen
container_name: nginx-gen
volumes:
@@ -32,7 +32,7 @@ services:
- nginx
letsencrypt-nginx-proxy-companion:
- restart: always
+ restart: unless-stopped
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt-nginx-proxy-companion
volumes:
diff --git a/docker-compose-generator/src/docker-compose-generator.csproj b/docker-compose-generator/src/docker-compose-generator.csproj
index 8d4d196..ba248d8 100644
--- a/docker-compose-generator/src/docker-compose-generator.csproj
+++ b/docker-compose-generator/src/docker-compose-generator.csproj
@@ -2,14 +2,11 @@
Exe
- netcoreapp2.0
+ netcoreapp2.1
DockerGenerator
-
-
-