mirror of
https://github.com/aljazceru/cyphernode.git
synced 2026-01-31 18:24:26 +01:00
readiness monitor for tor, lightning, bitcoin...
This commit is contained in:
@@ -87,6 +87,8 @@ module.exports = class App {
|
||||
proxy_version: process.env.PROXY_VERSION,
|
||||
proxycron_version: process.env.PROXYCRON_VERSION,
|
||||
pycoin_version: process.env.PYCOIN_VERSION,
|
||||
traefik_version: process.env.TRAEFIK_VERSION,
|
||||
mosquitto_version: process.env.MOSQUITTO_VERSION,
|
||||
otsclient_version: process.env.OTSCLIENT_VERSION,
|
||||
bitcoin_version: process.env.BITCOIN_VERSION,
|
||||
lightning_version: process.env.LIGHTNING_VERSION,
|
||||
@@ -146,10 +148,10 @@ module.exports = class App {
|
||||
'cyphernode/proxycron': this.sessionData.proxycron_version,
|
||||
'cyphernode/pycoin': this.sessionData.pycoin_version,
|
||||
'cyphernode/otsclient': this.sessionData.otsclient_version,
|
||||
'traefik': this.sessionData.traefik_version,
|
||||
'cyphernode/clightning': this.sessionData.lightning_version,
|
||||
'cyphernode/notifier': this.sessionData.notifier_version,
|
||||
'traefik': 'v1.7.9-alpine',
|
||||
'eclipse-mosquitto': '1.6'
|
||||
'eclipse-mosquitto': this.sessionData.mosquitto_version
|
||||
}
|
||||
} );
|
||||
|
||||
@@ -498,7 +500,7 @@ module.exports = class App {
|
||||
label: 'traefik',
|
||||
host: 'traefik',
|
||||
networks: ['cyphernodeappsnet'],
|
||||
docker: 'cyphernode/traefik:'+this.config.docker_versions['cyphernode/traefik'],
|
||||
docker: 'traefik:'+this.config.docker_versions['traefik'],
|
||||
extra: {
|
||||
tor_hostname: this.sessionData.tor_traefik_hostname,
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@ export PROXY_VERSION=v0.2.4
|
||||
export OTSCLIENT_VERSION=v0.2.4
|
||||
export NOTIFIER_VERSION=v0.2.4
|
||||
export EDITOR=/usr/bin/nano
|
||||
export TRAEFIK_VERSION="v1.7.9-alpine"
|
||||
export MOSQUITTO_VERSION="1.6"
|
||||
|
||||
user=$(id -u):$(id -g)
|
||||
|
||||
@@ -26,6 +28,8 @@ if [ "${MODE}" = 'docker' ]; then
|
||||
-e SETUP_DIR=$SETUP_DIR \
|
||||
-e DEFAULT_CERT_HOSTNAME=$(hostname) \
|
||||
-e GATEKEEPER_VERSION=$GATEKEEPER_VERSION \
|
||||
-e TRAEFIK_VERSION=$TRAEFIK_VERSION \
|
||||
-e MOSQUITTO_VERSION=$MOSQUITTO_VERSION \
|
||||
-e TOR_VERSION=$TOR_VERSION \
|
||||
-e PROXY_VERSION=$PROXY_VERSION \
|
||||
-e NOTIFIER_VERSION=$NOTIFIER_VERSION \
|
||||
|
||||
@@ -10,13 +10,19 @@ services:
|
||||
tor:
|
||||
image: cyphernode/tor:<%= tor_version %>
|
||||
# Sleeping 7 seconds to let lightning and traefik start
|
||||
command: $USER sh -c 'sleep 7 ; export HOME=/tor ; tor -f /tor/torrc'
|
||||
command: $USER sh -c 'rm -f /container_monitor/tor_ready ; sleep 10 ; export HOME=/tor ; tor -f /tor/torrc'
|
||||
volumes:
|
||||
- "<%= tor_datapath %>:/tor"
|
||||
restart: always
|
||||
- container_monitor:/container_monitor
|
||||
healthcheck:
|
||||
test: chown $USER /container_monitor && su-exec $USER sh -c 'tor-resolve torproject.org && touch /container_monitor/tor_ready && chown $USER /container_monitor/tor_ready || rm -f /container_monitor/tor_ready'
|
||||
interval: 20s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
networks:
|
||||
- cyphernodenet
|
||||
- cyphernodeappsnet
|
||||
restart: always
|
||||
# deploy:
|
||||
# placement:
|
||||
# constraints: [node.hostname==dev]
|
||||
@@ -37,7 +43,12 @@ services:
|
||||
volumes:
|
||||
- "<%= lightning_datapath %>:/.lightning"
|
||||
- "<%= bitcoin_datapath %>/bitcoin-client.conf:/.bitcoin/bitcoin.conf:ro"
|
||||
- bitcoin_monitor:/bitcoin_monitor:ro
|
||||
- container_monitor:/container_monitor
|
||||
healthcheck:
|
||||
test: chown $USER /container_monitor && su-exec $USER sh -c 'lightning-cli getinfo && touch /container_monitor/lightning_ready && chown $USER /container_monitor/lightning_ready || rm -f /container_monitor/lightning_ready'
|
||||
interval: 20s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
networks:
|
||||
- cyphernodenet
|
||||
restart: always
|
||||
@@ -45,7 +56,7 @@ services:
|
||||
depends_on:
|
||||
- tor
|
||||
<% } %>
|
||||
# deploy:
|
||||
# deploy: --lightning-dir=/.lightning
|
||||
# placement:
|
||||
# constraints: [node.hostname==dev]
|
||||
<% } %>
|
||||
@@ -57,7 +68,7 @@ services:
|
||||
|
||||
bitcoin:
|
||||
image: cyphernode/bitcoin:<%= bitcoin_version %>
|
||||
command: $USER bitcoind
|
||||
command: $USER sh -c 'rm -f /container_monitor/bitcoin_ready ; while [ ! -f "/container_monitor/tor_ready" ]; do echo "tor not ready" ; sleep 10 ; done ; echo "tor ready" ; bitcoind'
|
||||
<% if( bitcoin_expose ) { %>
|
||||
ports:
|
||||
- "<%= (net === 'regtest') ? '18443:18443' : ((net === 'testnet') ? '18332:18332' : '8332:8332') %>"
|
||||
@@ -65,11 +76,11 @@ services:
|
||||
<% } %>
|
||||
volumes:
|
||||
- "<%= bitcoin_datapath %>:/.bitcoin"
|
||||
- bitcoin_monitor:/bitcoin_monitor
|
||||
- container_monitor:/container_monitor
|
||||
healthcheck:
|
||||
test: bitcoin-cli echo && touch /bitcoin_monitor/up || rm -f /bitcoin_monitor/up
|
||||
test: chown $USER /container_monitor && su-exec $USER sh -c 'bitcoin-cli echo && touch /container_monitor/bitcoin_ready || rm -f /container_monitor/bitcoin_ready'
|
||||
interval: 20s
|
||||
timeout: 5s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
networks:
|
||||
- cyphernodenet
|
||||
@@ -158,7 +169,7 @@ services:
|
||||
##########################
|
||||
|
||||
broker:
|
||||
image: eclipse-mosquitto:1.6
|
||||
image: eclipse-mosquitto:<%= mosquitto_version %>
|
||||
networks:
|
||||
- cyphernodenet
|
||||
- cyphernodeappsnet
|
||||
@@ -279,7 +290,7 @@ services:
|
||||
##########################
|
||||
|
||||
traefik:
|
||||
image: traefik:v1.7.9-alpine
|
||||
image: traefik:<%= traefik_version %>
|
||||
ports:
|
||||
- <%= traefik_http_port %>:<%= traefik_http_port %>
|
||||
- <%= traefik_https_port %>:<%= traefik_https_port %>
|
||||
@@ -298,7 +309,7 @@ services:
|
||||
# constraints: [node.hostname==dev]
|
||||
|
||||
volumes:
|
||||
bitcoin_monitor:
|
||||
container_monitor:
|
||||
|
||||
networks:
|
||||
cyphernodenet:
|
||||
|
||||
@@ -57,8 +57,8 @@ current_path="$(cd "$(dirname "$0")" >/dev/null && pwd)"
|
||||
docker run --rm -it -v $current_path/testfeatures.sh:/testfeatures.sh \
|
||||
-v <%= gatekeeper_datapath %>:/gatekeeper \
|
||||
-v $current_path:/dist \
|
||||
-v cyphernode_bitcoin_monitor:/bitcoin_monitor:ro \
|
||||
--network cyphernodenet eclipse-mosquitto:1.6.2 /testfeatures.sh
|
||||
-v cyphernode_container_monitor:/container_monitor:ro \
|
||||
--network cyphernodenet eclipse-mosquitto:<%= mosquitto_version %> /testfeatures.sh
|
||||
|
||||
if [ -f $current_path/exitStatus.sh ]; then
|
||||
. $current_path/exitStatus.sh
|
||||
|
||||
@@ -387,6 +387,9 @@ result="${result}$(feature_status ${returncode} 'OTSclient error!')}"
|
||||
# TOR #
|
||||
#############################
|
||||
|
||||
echo -e "\r\n\e[1;36mWaiting for Tor to be ready... " > /dev/console
|
||||
timeout_feature '[ -f "/container_monitor/tor_ready" ]'
|
||||
|
||||
result="${result},{\"coreFeature\":false, \"name\":\"tor\",\"working\":"
|
||||
status=$(echo "{${containers}}" | jq ".containers[] | select(.name == \"tor\") | .active")
|
||||
if [[ "${workingproxy}" = "true" && "${status}" = "true" ]]; then
|
||||
@@ -404,7 +407,7 @@ result="${result}$(feature_status ${returncode} 'Tor error!')}"
|
||||
#############################
|
||||
|
||||
echo -e "\r\n\e[1;36mWaiting for Bitcoin Core to be ready... " > /dev/console
|
||||
timeout_feature '[ -f "/bitcoin_monitor/up" ]'
|
||||
timeout_feature '[ -f "/container_monitor/bitcoin_ready" ]'
|
||||
|
||||
result="${result},{\"coreFeature\":true, \"name\":\"bitcoin\",\"working\":"
|
||||
status=$(echo "{${containers}}" | jq ".containers[] | select(.name == \"bitcoin\") | .active")
|
||||
@@ -422,6 +425,9 @@ result="${result}$(feature_status ${returncode} 'Bitcoin error!')}"
|
||||
# LIGHTNING #
|
||||
#############################
|
||||
|
||||
echo -e "\r\n\e[1;36mWaiting for C-Lightning to be ready... " > /dev/console
|
||||
timeout_feature '[ -f "/container_monitor/lightning_ready" ]'
|
||||
|
||||
result="${result},{\"coreFeature\":false, \"name\":\"lightning\",\"working\":"
|
||||
status=$(echo "{${containers}}" | jq ".containers[] | select(.name == \"lightning\") | .active")
|
||||
if [[ "${workingproxy}" = "true" && "${status}" = "true" ]]; then
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
while [ ! -f "/bitcoin_monitor/up" ]; do echo "bitcoin not ready" ; sleep 10 ; done
|
||||
rm -f /container_monitor/lightning_ready
|
||||
|
||||
while [ ! -f "/container_monitor/bitcoin_ready" ]; do echo "bitcoin not ready" ; sleep 10 ; done
|
||||
|
||||
echo "bitcoin ready"
|
||||
|
||||
<% if ( torifyables.indexOf('tor_ln') !== -1 ) { %>
|
||||
#while [ ! -f "/container_monitor/tor_ready" ]; do echo "tor not ready" ; sleep 10 ; done
|
||||
while [ -z "${TORIP}" ]; do echo "tor not ready" ; TORIP=$(getent hosts tor | awk '{ print $1 }') ; sleep 10 ; done
|
||||
|
||||
echo "Tor ready at IP ${TORIP}"
|
||||
#TORIP=$(getent hosts tor | awk '{ print $1 }')
|
||||
echo "tor ready at IP ${TORIP}"
|
||||
|
||||
lightningd --proxy=$TORIP:9050
|
||||
<% } else { %>
|
||||
|
||||
4
dist/setup.sh
vendored
4
dist/setup.sh
vendored
@@ -185,6 +185,8 @@ configure() {
|
||||
-e SETUP_DIR=$SETUP_DIR \
|
||||
-e DEFAULT_CERT_HOSTNAME=$(hostname) \
|
||||
-e GATEKEEPER_VERSION=$GATEKEEPER_VERSION \
|
||||
-e TRAEFIK_VERSION=$TRAEFIK_VERSION \
|
||||
-e MOSQUITTO_VERSION=$MOSQUITTO_VERSION \
|
||||
-e TOR_VERSION=$TOR_VERSION \
|
||||
-e PROXY_VERSION=$PROXY_VERSION \
|
||||
-e NOTIFIER_VERSION=$NOTIFIER_VERSION \
|
||||
@@ -787,6 +789,8 @@ PYCOIN_VERSION="v0.2.4"
|
||||
CYPHERAPPS_VERSION="dev"
|
||||
BITCOIN_VERSION="v0.19.0.1"
|
||||
LIGHTNING_VERSION="v0.8.0"
|
||||
TRAEFIK_VERSION="v1.7.9-alpine"
|
||||
MOSQUITTO_VERSION="1.6"
|
||||
|
||||
SETUP_DIR=$(dirname $(realpath $0))
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ Current components in Cyphernode:
|
||||
- Bitcoin: Bitcoin Core node. Cyphernode uses a watching wallet for watchers (no funds) and a spending wallet for spending. Mandatory component, but optionally part of Cyphernode installation, as we can use an already running Bitcoin Core node.
|
||||
- Lightning: optional. C-Lightning node. The LN node will use the Bitcoin node for its tasks.
|
||||
- OTSclient: optional. Used to stamp hashes on the Bitcoin blockchain.
|
||||
- Tor: optional. Used to serve traefik as a HiddenService as well as Internet Gateway.
|
||||
- Tor: optional. Used to serve traefik, bitcoin and/or lightning as a HiddenService as well as Internet Gateway.
|
||||
|
||||
Future components:
|
||||
|
||||
|
||||
@@ -13,9 +13,9 @@ services:
|
||||
|
||||
volumes:
|
||||
- "~/btcdata:/.bitcoin"
|
||||
- bitcoin_monitor:/bitcoin_monitor
|
||||
- container_monitor:/container_monitor
|
||||
healthcheck:
|
||||
test: bitcoin-cli echo && touch /bitcoin_monitor/up || rm -f /bitcoin_monitor/up
|
||||
test: bitcoin-cli echo && touch /container_monitor/bitcoin_ready || rm -f /container_monitor/bitcoin_ready
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 1
|
||||
@@ -226,7 +226,7 @@ services:
|
||||
|
||||
lightning:
|
||||
image: cyphernode/clightning:v0.8.0
|
||||
command: $USER sh -c 'while [ ! -f "/bitcoin_monitor/up" ]; do echo "bitcoin not ready" ; sleep 10 ; done ; echo "bitcoin ready!" ; lightningd'
|
||||
command: $USER sh -c 'while [ ! -f "/container_monitor/bitcoin_ready" ]; do echo "bitcoin not ready" ; sleep 10 ; done ; echo "bitcoin ready!" ; lightningd'
|
||||
|
||||
ports:
|
||||
- "9735:9735"
|
||||
@@ -234,7 +234,7 @@ services:
|
||||
volumes:
|
||||
- "~/cn-dev/dist/cyphernode/lightning:/.lightning"
|
||||
- "~/btcdata/bitcoin-client.conf:/.bitcoin/bitcoin.conf"
|
||||
- bitcoin_monitor:/bitcoin_monitor:ro
|
||||
- container_monitor:/container_monitor:ro
|
||||
networks:
|
||||
- cyphernodenet
|
||||
restart: always
|
||||
@@ -246,7 +246,7 @@ services:
|
||||
|
||||
|
||||
volumes:
|
||||
bitcoin_monitor:
|
||||
container_monitor:
|
||||
|
||||
networks:
|
||||
cyphernodenet:
|
||||
|
||||
Reference in New Issue
Block a user