From d904ba3c2cb78bd9dff22f37db154961892ccc58 Mon Sep 17 00:00:00 2001 From: Mayank Date: Thu, 21 May 2020 14:43:03 +0530 Subject: [PATCH 1/7] removed lnd-unlock --- build/lnd-unlock/Dockerfile | 11 ------- build/lnd-unlock/unlock.sh | 57 ------------------------------------- db/jwt-private-key/.gitkeep | 0 db/jwt-public-key/.gitkeep | 0 docker-compose.yml | 9 ------ 5 files changed, 77 deletions(-) delete mode 100644 build/lnd-unlock/Dockerfile delete mode 100755 build/lnd-unlock/unlock.sh create mode 100644 db/jwt-private-key/.gitkeep create mode 100644 db/jwt-public-key/.gitkeep diff --git a/build/lnd-unlock/Dockerfile b/build/lnd-unlock/Dockerfile deleted file mode 100644 index 33936c2..0000000 --- a/build/lnd-unlock/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM alpine:3.10 - -RUN apk add --no-cache curl jq - -RUN mkdir /lnd/ - -COPY unlock.sh /bin/unlock - -RUN chmod +x /bin/unlock - -ENTRYPOINT ["unlock"] diff --git a/build/lnd-unlock/unlock.sh b/build/lnd-unlock/unlock.sh deleted file mode 100755 index 4ae00a2..0000000 --- a/build/lnd-unlock/unlock.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh - -HOST=localhost:8080 -TLS_CERT=/lnd/tls.cert -LNDPASSWORD_PATH=/secrets/lnd-password.txt -MACAROON_PATH=/lnd/data/chain/bitcoin/mainnet/admin.macaroon - -lncurl() { - MACAROON="$(xxd -p /lnd/data/chain/bitcoin/mainnet/admin.macaroon | tr -d '\n')" - url_path=$1 - data=$2 - - curl --fail --silent --show-error \ - --cacert "${TLS_CERT}" \ - --header "Grpc-Metadata-macaroon: ${MACAROON}" \ - --data "${data}" \ - "https://${HOST}/v1/${url_path}" -} - -while true; do - # First make sure that port is open - while ! nc -z localhost 8080; do - >&2 echo "Waiting for ${HOST} port to open…" - sleep 3 - done - >&2 echo "Port ${HOST} is open" - - # Wait a bit more in case the port was just opened - sleep 1 - if [[ -f $LNDPASSWORD_PATH ]]; then - if [[ -f $MACAROON_PATH ]]; then - >&2 echo "Password and macaroon file file exists" - PASS="$(cat /secrets/lnd-password.txt | tr -d '\n' | base64 | tr -d '\n')" - UNLOCK_PAYLOAD="$(jq -nc --arg wallet_password ${PASS} '{$wallet_password}')" - # Try getinfo then unlock - >&2 echo "Trying ${HOST}/getinfo…" - INFO=$(lncurl getinfo) - if [ "$?" = "0" ]; then - >&2 echo "Response: ${INFO}" - alias="$(echo "${INFO}" | jq '.alias')" - >&2 echo "Wallet for ${alias} unlocked!" - exit 0 - fi - >&2 echo "${HOST}/getinfo FAILED, out=${INFO}" - - >&2 echo "Trying ${HOST}/unlockwallet…" - RESULT=$(lncurl unlockwallet "${UNLOCK_PAYLOAD}") - >&2 echo "${HOST}/unlockwallet completed with: exit-code=$?, out=${RESULT}" - else - >&2 echo "macaroon file doesn't exist" - fi - else - >&2 echo "password file doesn't exist" - fi - - sleep 30 -done diff --git a/db/jwt-private-key/.gitkeep b/db/jwt-private-key/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/db/jwt-public-key/.gitkeep b/db/jwt-public-key/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml index 7f58666..cf92b07 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -55,12 +55,3 @@ services: RPC_PASSWORD: "" LND_NETWORK: "mainnet" LND_HOST: "127.0.0.1" - lnd-unlock: - build: ${HOME}/build/lnd-unlock/ - depends_on: [ lnd ] - logging: *default-logging - restart: always - volumes: - - "${HOME}/lnd:/lnd" - - "${HOME}/secrets:/secrets" - network_mode: host From b145651e3f8381bc26c5e1613949108e9dd4336a Mon Sep 17 00:00:00 2001 From: Mayank Date: Thu, 21 May 2020 14:43:28 +0530 Subject: [PATCH 2/7] updated docker compose --- docker-compose.yml | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index cf92b07..410d2a7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,7 +10,7 @@ x-utility: &default-utility network_mode: host services: - web: + nginx: image: nginx:1.17.8 logging: *default-logging volumes: @@ -37,21 +37,41 @@ services: - /var/lib/tor:/var/lib/tor - /run/tor:/run/tor/ restart: on-failure - depends_on: [ bitcoin, web ] network_mode: host stop_grace_period: 1m30s + dashboard: + image: getumbrel/dashboard:v0.2.0 + logging: *default-logging + restart: always + network_mode: host + manager: + image: getumbrel/manager:v0.1.0 + logging: *default-logging + restart: unless-stopped + network_mode: host + volumes: + - "${HOME}/db:/db" + environment: + PORT: "3006" + USER_PASSWORD_FILE: "/db/user.json" + JWT_PUBLIC_KEY_FILE: "/db/jwt-public-key/jwt.pem" + JWT_PRIVATE_KEY_FILE: "/db/jwt-private-key/jwt.key" + JWT_EXPIRATION: "3600" middleware: - image: getumbrel/middleware:v0.0.5 - depends_on: [ bitcoin, lnd ] + image: getumbrel/middleware:v0.1.0 logging: *default-logging - restart: on-failure + restart: unless-stopped network_mode: host + depends_on: [ manager ] volumes: - - "${HOME}/lnd:/lnd" + - "${HOME}/lnd:/lnd" + - "${HOME}/db/jwt-public-key:/jwt-public-key" environment: + PORT: "3005" BITCOIN_HOST: "0.0.0.0" RPC_PORT: "8332" RPC_USER: "" RPC_PASSWORD: "" LND_NETWORK: "mainnet" LND_HOST: "127.0.0.1" + JWT_PUBLIC_KEY_FILE: "/jwt-public-key/jwt.pem" \ No newline at end of file From d646edf5d3efd7bdbe4292410267ea464da9df28 Mon Sep 17 00:00:00 2001 From: Mayank Date: Thu, 21 May 2020 14:54:56 +0530 Subject: [PATCH 3/7] nginx --- nginx/conf.d/default.conf | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/nginx/conf.d/default.conf b/nginx/conf.d/default.conf index ec7cbd3..6f8beb9 100644 --- a/nginx/conf.d/default.conf +++ b/nginx/conf.d/default.conf @@ -1,17 +1,20 @@ server { - listen 80 default_server; - listen [::]:80 default_server; - server_name _; - root /etc/nginx/www; - index index.html; - - location / { - index index.html; - try_files $uri $uri/ /index.html; - } + listen 80 default_server; + listen [::]:80 default_server; + server_name _; - location /api/ { - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + location /api/ { + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; proxy_pass http://localhost:3005/; } -} + + location /manager-api/ { + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; + proxy_pass http://localhost:3006/; + } + + location / { + add_header Access-Control-Allow-Origin *; + proxy_pass http://localhost:3004/; + } +} \ No newline at end of file From 2165604f911b18a004194ccc6ac33ec26f812c3d Mon Sep 17 00:00:00 2001 From: Mayank Date: Thu, 21 May 2020 23:30:23 +0530 Subject: [PATCH 4/7] readme --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 1b9dd56..88826d2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Abstract -This is a basic framework for orchestration of the box services for running a full lightning and bitcoin node. +This is a basic framework for orchestration of the services required to run an Umbrel bitcoin and lightning node. ## How to use @@ -57,9 +57,6 @@ wget -qO- "https://raw.githubusercontent.com/getumbrel/umbrel-compose/master/con docker-compose up -d --build # verify the containers docker ps -a - -# Additional node: You should have a way of creating a wallet. Currently this container does not have a create wallet container. -# For the unlock script to work, put the unlock password in secrets/lnd-password.txt ``` From cac1bcea653ea5385f1df7f789afdf63280d9c47 Mon Sep 17 00:00:00 2001 From: Mayank Date: Fri, 22 May 2020 00:33:12 +0530 Subject: [PATCH 5/7] ready to test --- docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 410d2a7..12308c8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -40,12 +40,12 @@ services: network_mode: host stop_grace_period: 1m30s dashboard: - image: getumbrel/dashboard:v0.2.0 + image: getumbrel/dashboard:v0.2.0.3 logging: *default-logging restart: always network_mode: host manager: - image: getumbrel/manager:v0.1.0 + image: getumbrel/manager:v0.1.0.3 logging: *default-logging restart: unless-stopped network_mode: host @@ -58,7 +58,7 @@ services: JWT_PRIVATE_KEY_FILE: "/db/jwt-private-key/jwt.key" JWT_EXPIRATION: "3600" middleware: - image: getumbrel/middleware:v0.1.0 + image: getumbrel/middleware:v0.1.0.4 logging: *default-logging restart: unless-stopped network_mode: host From 71b1e9d0d4c88e3fa6295fd69c302c9e229f5b53 Mon Sep 17 00:00:00 2001 From: BT Date: Sun, 24 May 2020 23:04:35 +0700 Subject: [PATCH 6/7] Add wait-for-node-manager.sh to docker-compose.yml --- docker-compose.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 12308c8..1e4d929 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -58,7 +58,8 @@ services: JWT_PRIVATE_KEY_FILE: "/db/jwt-private-key/jwt.key" JWT_EXPIRATION: "3600" middleware: - image: getumbrel/middleware:v0.1.0.4 + image: getumbrel/middleware:v0.1.0.5 + command: ["./wait-for-node-manager.sh", "localhost", "npm", "start"] logging: *default-logging restart: unless-stopped network_mode: host @@ -74,4 +75,4 @@ services: RPC_PASSWORD: "" LND_NETWORK: "mainnet" LND_HOST: "127.0.0.1" - JWT_PUBLIC_KEY_FILE: "/jwt-public-key/jwt.pem" \ No newline at end of file + JWT_PUBLIC_KEY_FILE: "/jwt-public-key/jwt.pem" From a2da21245c402b8ec25c1bc4e995cb25433ecf37 Mon Sep 17 00:00:00 2001 From: Mayank Date: Thu, 28 May 2020 14:01:39 +0530 Subject: [PATCH 7/7] Bump to release versions of services --- docker-compose.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1e4d929..dd91401 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -40,12 +40,12 @@ services: network_mode: host stop_grace_period: 1m30s dashboard: - image: getumbrel/dashboard:v0.2.0.3 + image: getumbrel/dashboard:v0.2.0 logging: *default-logging restart: always network_mode: host manager: - image: getumbrel/manager:v0.1.0.3 + image: getumbrel/manager:v0.1.0 logging: *default-logging restart: unless-stopped network_mode: host @@ -58,7 +58,7 @@ services: JWT_PRIVATE_KEY_FILE: "/db/jwt-private-key/jwt.key" JWT_EXPIRATION: "3600" middleware: - image: getumbrel/middleware:v0.1.0.5 + image: getumbrel/middleware:v0.1.0 command: ["./wait-for-node-manager.sh", "localhost", "npm", "start"] logging: *default-logging restart: unless-stopped