nicolas.dorier
3064cb51d1
|
7 years ago | |
---|---|---|
Generated | 7 years ago | |
Production | 7 years ago | |
Production-NoReverseProxy | 7 years ago | |
docker-compose-generator | 7 years ago | |
.gitattributes | 7 years ago | |
.gitignore | 7 years ago | |
LICENSE | 7 years ago | |
README.md | 7 years ago | |
bgold-cli.ps1 | 7 years ago | |
bgold-cli.sh | 7 years ago | |
bitcoin-cli.ps1 | 7 years ago | |
bitcoin-cli.sh | 7 years ago | |
bitcoin-lightning-cli.ps1 | 7 years ago | |
bitcoin-lightning-cli.sh | 7 years ago | |
btcpay-setup.sh | 7 years ago | |
build-pregen.ps1 | 7 years ago | |
build-pregen.sh | 7 years ago | |
build.ps1 | 7 years ago | |
build.sh | 7 years ago | |
litecoin-cli.ps1 | 7 years ago | |
litecoin-cli.sh | 7 years ago | |
litecoin-lightning-cli.ps1 | 7 years ago | |
litecoin-lightning-cli.sh | 7 years ago | |
publish-stable.ps1 | 7 years ago |
README.md
How to use
This repository is hosting different docker-compose which can be used to facilitate deployment of BTCPay Server.
As you can see, it 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.
The Production docker-compose
files are used for production environment. It adds NGinx as a reverse proxy and Let's Encrypt and DockerGen to automatically configure HTTPS.
The production docker-compose
is used under the hood to deploy an instance of BTCPay on Microsoft Azure in one click:
The 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
Several scripts are provided to access the internal of your docker-service:
litecoin-cli.sh
bitcoin-cli.sh
litecoin-lightning-cli.sh
bitcoin-lightning-cli.sh
We also provide powershell .ps1
scripts if you are on windows.
You can use it easily:
./bitcoin-cli.sh getblockcount
For docker noobs
If you are a docker noob here is how you would create a HTTPS ready server.
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
.
Clone the repository:
git clone https://github.com/btcpayserver/btcpayserver-docker
cd btcpayserver-docker
Create an .env
file with the parameters documented in Production:
NBITCOIN_NETWORK=mainnet
BTCPAY_HOST=btcpay.example.com
LETSENCRYPT_EMAIL=me@example.com
ACME_CA_URI=https://acme-v01.api.letsencrypt.org/directory
Save, then run it:
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
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.
No docker-compose suit my need, what should I do?
All docker-compose
files in Production and Production-NoReverseProxy are generated by running the build-pregen.sh (or build-pregen.ps1) scripts from the fragments located in 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 (or build.ps1) with environment variables correctly set.
To configure your custom docker-compose, the following environment variables are supported:
BTCPAYGEN_CRYPTO1
toBTCPAYGEN_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 beGenerated/docker-compose.SUBNAME.yml
(Default:generated
)
Then, running build.sh (or 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
}
On Linux:
BTCPAYGEN_CRYPTO1="btc" \
BTCPAYGEN_CRYPTO2="ltc" \
BTCPAYGEN_REVERSEPROXY="nginx" \
BTCPAYGEN_LIGHTNING="clightning" \
BTCPAYGEN_SUBNAME="custom" \
./build.sh
How to extend with my own crypto?
- Support for your crypto on NBitcoin/NBxplorer/BTCPay Server. (Take example on other coins)
- Create your own docker image (Example for BTC)
- Create a docker-compose fragment (Example for BTC)
- Add your Crypto Definition (Example for BTC)
Congratulation!