Browse Source

Expose Bitcoin Core RPC (#255)

dashboard-v0.3.11
Luke Childs 4 years ago
committed by GitHub
parent
commit
771affe0e5
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      docker-compose.yml
  2. 50
      scripts/configure
  3. 5
      scripts/update/01-run.sh
  4. 1
      templates/.env-sample
  5. 4
      templates/torrc-sample

8
docker-compose.yml

@ -67,7 +67,7 @@ services:
ipv4_address: 10.11.1.2 ipv4_address: 10.11.1.2
dashboard: dashboard:
container_name: dashboard container_name: dashboard
image: getumbrel/dashboard:v0.3.8 image: getumbrel/dashboard:v0.3.9
logging: *default-logging logging: *default-logging
restart: unless-stopped restart: unless-stopped
stop_grace_period: 1m30s stop_grace_period: 1m30s
@ -76,7 +76,7 @@ services:
ipv4_address: 10.11.0.3 ipv4_address: 10.11.0.3
manager: manager:
container_name: manager container_name: manager
image: getumbrel/manager:v0.2.5 image: getumbrel/manager:v0.2.6
logging: *default-logging logging: *default-logging
depends_on: [ tor ] depends_on: [ tor ]
restart: unless-stopped restart: unless-stopped
@ -107,6 +107,10 @@ services:
UMBREL_DASHBOARD_HIDDEN_SERVICE_FILE: "/var/lib/tor/web/hostname" UMBREL_DASHBOARD_HIDDEN_SERVICE_FILE: "/var/lib/tor/web/hostname"
BITCOIN_P2P_HIDDEN_SERVICE_FILE: "/var/lib/tor/bitcoin-p2p/hostname" BITCOIN_P2P_HIDDEN_SERVICE_FILE: "/var/lib/tor/bitcoin-p2p/hostname"
BITCOIN_P2P_PORT: $BITCOIN_P2P_PORT BITCOIN_P2P_PORT: $BITCOIN_P2P_PORT
BITCOIN_RPC_HIDDEN_SERVICE_FILE: "/var/lib/tor/bitcoin-rpc/hostname"
BITCOIN_RPC_PORT: $BITCOIN_RPC_PORT
BITCOIN_RPC_USER: $BITCOIN_RPC_USER
BITCOIN_RPC_PASSWORD: $BITCOIN_RPC_PASS
LND_REST_HIDDEN_SERVICE_FILE: "/var/lib/tor/lnd-rest/hostname" LND_REST_HIDDEN_SERVICE_FILE: "/var/lib/tor/lnd-rest/hostname"
LND_GRPC_HIDDEN_SERVICE_FILE: "/var/lib/tor/lnd-grpc/hostname" LND_GRPC_HIDDEN_SERVICE_FILE: "/var/lib/tor/lnd-grpc/hostname"
LND_CERT_FILE: "/lnd/tls.cert" LND_CERT_FILE: "/lnd/tls.cert"

50
scripts/configure

@ -94,22 +94,32 @@ ENV_FILE="./templates/.env"
############ Generate configuration variables ############ ############ Generate configuration variables ############
########################################################## ##########################################################
# Generate RPC credentials # Load existing credentials if we have some
echo "Generating auth credentials" [[ -f "./.env" ]] && source "./.env"
echo [[ ! -z ${PREV_ENV_FILE+x} ]] && [[ -f "${PREV_ENV_FILE}" ]] && source "${PREV_ENV_FILE}"
BITCOIN_RPC_USER="umbrelrpc"
BITCOIN_RPC_DETAILS=$("./scripts/rpcauth.py" "$BITCOIN_RPC_USER") # Bitcoin Core ports
BITCOIN_RPC_AUTH=$(echo "$BITCOIN_RPC_DETAILS" | head -2 | tail -1)
BITCOIN_RPC_PASS=$(echo "$BITCOIN_RPC_DETAILS" | tail -1)
BITCOIN_RPC_PORT=8332 BITCOIN_RPC_PORT=8332
BITCOIN_P2P_PORT=8333 BITCOIN_P2P_PORT=8333
# Generate RPC credentials
if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]] || [[ -z ${BITCOIN_RPC_AUTH+x} ]]; then
echo "Generating auth credentials"
echo
BITCOIN_RPC_USER="umbrel"
BITCOIN_RPC_DETAILS=$("./scripts/rpcauth.py" "$BITCOIN_RPC_USER")
BITCOIN_RPC_PASS=$(echo "$BITCOIN_RPC_DETAILS" | tail -1)
BITCOIN_RPC_AUTH=$(echo "$BITCOIN_RPC_DETAILS" | head -2 | tail -1 | sed -e "s/^rpcauth=//")
fi
# Pull Tor image and generate Tor password # Pull Tor image and generate Tor password
echo "Generating Tor password" if [[ -z ${TOR_PASSWORD+x} ]] || [[ -z ${TOR_HASHED_PASSWORD+x} ]]; then
echo echo "Generating Tor password"
docker pull --quiet getumbrel/tor:v0.4.1.9 echo
TOR_PASS=$("./scripts/rpcauth.py" "itdoesntmatter" | tail -1) docker pull --quiet getumbrel/tor:v0.4.1.9
TOR_HASHED_PASS=$(docker run --rm getumbrel/tor:v0.4.1.9 --quiet --hash-password "$TOR_PASS") TOR_PASSWORD=$("./scripts/rpcauth.py" "itdoesntmatter" | tail -1)
TOR_HASHED_PASSWORD=$(docker run --rm getumbrel/tor:v0.4.1.9 --quiet --hash-password "$TOR_PASSWORD")
fi
########################################################## ##########################################################
@ -150,13 +160,15 @@ fi
# Update RPC and P2P Ports # Update RPC and P2P Ports
sed -i "s/rpcport=<port>/rpcport=$BITCOIN_RPC_PORT/g;" "$BITCOIN_CONF_FILE" sed -i "s/rpcport=<port>/rpcport=$BITCOIN_RPC_PORT/g;" "$BITCOIN_CONF_FILE"
sed -i "s/port=<port>/port=$BITCOIN_P2P_PORT/g;" "$BITCOIN_CONF_FILE" sed -i "s/port=<port>/port=$BITCOIN_P2P_PORT/g;" "$BITCOIN_CONF_FILE"
sed -i "s/<bitcoin-rpc-port>/$BITCOIN_RPC_PORT/g;" "$TOR_CONF_FILE"
sed -i "s/<bitcoin-p2p-port>/$BITCOIN_P2P_PORT/g;" "$TOR_CONF_FILE" sed -i "s/<bitcoin-p2p-port>/$BITCOIN_P2P_PORT/g;" "$TOR_CONF_FILE"
sed -i "/daemon_rpc_addr/s/<port>/$BITCOIN_RPC_PORT/g;" "$ELECTRS_CONF_FILE" sed -i "/daemon_rpc_addr/s/<port>/$BITCOIN_RPC_PORT/g;" "$ELECTRS_CONF_FILE"
sed -i "s/BITCOIN_RPC_PORT=<port>/BITCOIN_RPC_PORT=$BITCOIN_RPC_PORT/g;" "$ENV_FILE" sed -i "s/BITCOIN_RPC_PORT=<port>/BITCOIN_RPC_PORT=$BITCOIN_RPC_PORT/g;" "$ENV_FILE"
sed -i "s/BITCOIN_P2P_PORT=<port>/BITCOIN_P2P_PORT=$BITCOIN_P2P_PORT/g;" "$ENV_FILE" sed -i "s/BITCOIN_P2P_PORT=<port>/BITCOIN_P2P_PORT=$BITCOIN_P2P_PORT/g;" "$ENV_FILE"
# Add rpcauth to bitcoin.conf # Add rpcauth
sed -i "s/rpcauth=<rpcauth>/$BITCOIN_RPC_AUTH/g;" "$BITCOIN_CONF_FILE" sed -i "s/rpcauth=<rpcauth>/rpcauth=$BITCOIN_RPC_AUTH/g;" "$BITCOIN_CONF_FILE"
sed -i "s/BITCOIN_RPC_AUTH=<rpcauth>/BITCOIN_RPC_AUTH='$BITCOIN_RPC_AUTH'/g;" "$ENV_FILE"
# Add RPC credentials to lnd.conf # Add RPC credentials to lnd.conf
sed -i "s/bitcoind.rpcuser=<username>/bitcoind.rpcuser=$BITCOIN_RPC_USER/g;" "$LND_CONF_FILE" sed -i "s/bitcoind.rpcuser=<username>/bitcoind.rpcuser=$BITCOIN_RPC_USER/g;" "$LND_CONF_FILE"
sed -i "s/bitcoind.rpcpass=<password>/bitcoind.rpcpass=$BITCOIN_RPC_PASS/g;" "$LND_CONF_FILE" sed -i "s/bitcoind.rpcpass=<password>/bitcoind.rpcpass=$BITCOIN_RPC_PASS/g;" "$LND_CONF_FILE"
@ -168,11 +180,11 @@ sed -i "s/BITCOIN_RPC_PASS=<password>/BITCOIN_RPC_PASS=$BITCOIN_RPC_PASS/g;" "$E
sed -i "s/BITCOIN_NETWORK=<network>/BITCOIN_NETWORK=$BITCOIN_NETWORK/g;" "$ENV_FILE" sed -i "s/BITCOIN_NETWORK=<network>/BITCOIN_NETWORK=$BITCOIN_NETWORK/g;" "$ENV_FILE"
# Add Tor password # Add Tor password
sed -i "s/HashedControlPassword <password>/HashedControlPassword $TOR_HASHED_PASS/g;" "$TOR_CONF_FILE" sed -i "s/HashedControlPassword <password>/HashedControlPassword $TOR_HASHED_PASSWORD/g;" "$TOR_CONF_FILE"
sed -i "s/torpassword=<password>/torpassword=$TOR_PASS/g;" "$BITCOIN_CONF_FILE" sed -i "s/torpassword=<password>/torpassword=$TOR_PASSWORD/g;" "$BITCOIN_CONF_FILE"
sed -i "s/tor.password=<password>/tor.password=$TOR_PASS/g;" "$LND_CONF_FILE" sed -i "s/tor.password=<password>/tor.password=$TOR_PASSWORD/g;" "$LND_CONF_FILE"
sed -i "s/TOR_PASSWORD=<password>/TOR_PASSWORD=$TOR_PASS/g;" "$ENV_FILE" sed -i "s/TOR_PASSWORD=<password>/TOR_PASSWORD=$TOR_PASSWORD/g;" "$ENV_FILE"
sed -i "s/TOR_HASHED_PASSWORD=<password>/TOR_HASHED_PASSWORD=$TOR_HASHED_PASS/g;" "$ENV_FILE" sed -i "s/TOR_HASHED_PASSWORD=<password>/TOR_HASHED_PASSWORD=$TOR_HASHED_PASSWORD/g;" "$ENV_FILE"
# Set Umbrel version in electrs banner # Set Umbrel version in electrs banner
sed -i "/server_banner/s/<version>/$UMBREL_VERSION/g;" "$ELECTRS_CONF_FILE" sed -i "/server_banner/s/<version>/$UMBREL_VERSION/g;" "$ELECTRS_CONF_FILE"

5
scripts/update/01-run.sh

@ -69,9 +69,10 @@ cat <<EOF > "$UMBREL_ROOT"/statuses/update-status.json
{"state": "installing", "progress": 40, "description": "Configuring new release", "updateTo": "$RELEASE"} {"state": "installing", "progress": 40, "description": "Configuring new release", "updateTo": "$RELEASE"}
EOF EOF
PREV_ENV_FILE="$UMBREL_ROOT/.env"
BITCOIN_NETWORK="mainnet" BITCOIN_NETWORK="mainnet"
[[ -f "$UMBREL_ROOT/.env" ]] && source "$UMBREL_ROOT/.env" [[ -f "${PREV_ENV_FILE}" ]] && source "${PREV_ENV_FILE}"
NETWORK=$BITCOIN_NETWORK ./scripts/configure PREV_ENV_FILE="${PREV_ENV_FILE}" NETWORK=$BITCOIN_NETWORK ./scripts/configure
# Stop existing containers # Stop existing containers
echo "Stopping existing containers" echo "Stopping existing containers"

1
templates/.env-sample

@ -3,5 +3,6 @@ BITCOIN_P2P_PORT=<port>
BITCOIN_RPC_PORT=<port> BITCOIN_RPC_PORT=<port>
BITCOIN_RPC_USER=<username> BITCOIN_RPC_USER=<username>
BITCOIN_RPC_PASS=<password> BITCOIN_RPC_PASS=<password>
BITCOIN_RPC_AUTH=<rpcauth>
TOR_PASSWORD=<password> TOR_PASSWORD=<password>
TOR_HASHED_PASSWORD=<password> TOR_HASHED_PASSWORD=<password>

4
templates/torrc-sample

@ -10,6 +10,10 @@ HiddenServicePort 80 10.11.0.2:80
HiddenServiceDir /var/lib/tor/bitcoin-p2p HiddenServiceDir /var/lib/tor/bitcoin-p2p
HiddenServicePort <bitcoin-p2p-port> 10.11.1.1:<bitcoin-p2p-port> HiddenServicePort <bitcoin-p2p-port> 10.11.1.1:<bitcoin-p2p-port>
# Bitcoin Core RPC Hidden Service
HiddenServiceDir /var/lib/tor/bitcoin-rpc
HiddenServicePort <bitcoin-rpc-port> 10.11.1.1:<bitcoin-rpc-port>
# Electrum Hidden Service # Electrum Hidden Service
HiddenServiceDir /var/lib/tor/electrum HiddenServiceDir /var/lib/tor/electrum
HiddenServicePort 50001 10.11.4.0:50001 HiddenServicePort 50001 10.11.4.0:50001

Loading…
Cancel
Save