Repo for spinning up your own Bitcoin and Lightning Standalone Docker Containers (bitcoind, lnd, neutrino)
N.B Testnet is enabled by default
See Dockerfile
| Key | Default Values | Info | Required | Editable |
|---|---|---|---|---|
| PLATFORM | x86_64-linux-gnu |
The containers OS platform (included in the bitcoin archive files) | no | no |
| BITCOIN_VERSION | 22.0 |
Bitcoin version to use Support Versions | no | yes |
| USER_ID | 1000 |
The run container as bitcoin UID. Make this the same as the local directory UID permissions | no | yes |
| PGP_KEY_SERVER | hkps://keyserver.ubuntu.com |
OpenPGP keyserver | no | yes |
| RELEASE_PGP_SIGNATURE | release keys | The releases PGP key IDs (see) | no | yes |
| Key | Default Values | Info |
|---|---|---|
| DEBUG | 0 |
Enable/Disable Debug logging mode |
| LISTEN | 1 |
Enable/Disable bitcoin to listen |
| SERVER | 1 |
Enable/Disable Bitcoin server |
| TESTNET | 1 |
Enable/Disable testnet |
| SELF_MANAGED | true |
When true the bitcoin.conf is self managed, if false file is controlled by Docker |
| RPC_ALLOWED | 127.0.0.1 |
RPC Whitelist IPs addresses |
| RPC_USER | bitcoin |
The Bitcoin RPC user |
| RPC_PASSWORD | password |
The Bitcoin RPC password (IMPORTANT: ensure you update this) |
| RPC_PORT | 18332 |
Bitcoin RPC Port |
| RPC_BIND | 127.0.0.1 |
RPC BIND address |
| TX_INDEX | 0 |
Maintain a full transaction index |
| BLOCK_FILTER_INDEX | 0 |
Store and retrieve block filters, hashes, and headers |
| ZEROMQ_BLOCK_URL | tcp://127.0.0.1:28000 |
The ZeroMQ block messaging interface URL |
| ZEROMQ_TX_URL | tcp://127.0.0.1:29000 |
The ZeroMQ transactions messaging interface URL |
| PROXY | none |
Proxy Server addr:port |
Build latest version
docker build -t bitcoind .Build older versions <=0.21.2 (old release key)
docker build \
--build-arg BITCOIN_VERSION=0.16.3 \
--build-arg RELEASE_PGP_SIGNATURE=01EA5486DE18A882D4C2684590C8019E36C2E964 \
-t bitcoind .Build with different UID
docker build --build-arg USER_ID=1001 -t bitcoind .Create a persistent volume
docker volume create --name bitcoind-dataSee volume details
docker volume inspect bitcoind-dataRun bitcoind with persistent volume
docker run -it --name bitcoind \
-v bitcoind-data:/home/bitcoin \
-p 127.0.0.1:18332:18332 \
-p 127.0.0.1:28000:28000 \
-p 127.0.0.1:29000:29000 \
bitcoindSee Dockerfile
| Key | Default Values | Info | Required | Editable |
|---|---|---|---|---|
| PLATFORM | linux-amd64 |
The containers OS platform | no | no |
| LND_VERSION | v0.13.3-beta |
Lightning version to use | no | yes |
| USER_ID | 1000 |
The run container as bitcoin UID. Make this the same as the local directory UID permissions | no | yes |
| RELEASE_PGP_KEY | roasbeef.asc | The PGP key ID (info found on releases page) | no | yes |
| RELEASE_SIG_KEY_FILE | manifest-roasbeef-${LND_VERSION}.sig |
The signed key used with release (info found on releases page) | no | yes |
| Key | Default Values | Info |
|---|---|---|
| BITCOIN_RPC_HOST | 127.0.0.1 | Bitcoin RPC host |
| BITCOIN_RPC_USER | bitcoin | The Bitcoin RPC user |
| BITCOIN_RPC_PASSWORD | password | The Bitcoin RPC password |
| DEBUG | info | Logging level |
| NETWORK | testnet | Which network to use (testnet,simnet,mainnet) |
| CHAIN | bitcoin | Which blockchain to use (bitcoin,litecoin) |
| BACKEND | bitcoind | Which backend to use (bitcoind,btcd,litecoind,ltcd,neutrino ) |
| LIGHTNING_DATA | /data/.lnd | The Lightning .lnd directory location |
| BITCOIN_ZEROMQ_BLOCK_URL | tcp://127.0.0.1:28000 |
The ZeroMQ block messaging interface URL |
| BITCOIN_ZEROMQ_TX_URL | tcp://127.0.0.1:29000 |
The ZeroMQ transactions messaging interface URL |
| SOCKS5_PROXY | none |
The SOCKS5 Proxy used with TOR addr:port |
Build latest version
docker build -t lnd .Build with differnet Lightning version
docker build --build-arg LND_VERSION=v0.12.1-beta -t lnd .Build with different UID
docker build --build-arg USER_ID=1001 -t lnd .Create a persistent volume
docker volume create --name lnd-dataSee volume details
docker volume inspect lnd-dataRun lnd with bitcoind container
docker run --name lnd \
--network container:bitcoind \
-v lnd-data:/data \
lndRun lnd with neutrino backend
docker run --name lnd \
-e BACKEND=neutrino \
-v lnd-data:/data \
lndBuild you own certificates:
cd ~/.lnd
openssl ecparam -genkey -name prime256v1 -out tls.key
openssl req -new -sha256 -key tls.key -out csr.csr -subj '/CN=localhost/O=lnd'
openssl req -x509 -sha256 -days 36500 -key tls.key -in csr.csr -out tls.cert
rm csr.csr