From fc82a6112f583f0e95b1877bf1528f9b15493b60 Mon Sep 17 00:00:00 2001 From: Luke Childs Date: Tue, 25 Oct 2022 17:08:44 +0700 Subject: [PATCH] Add internal Tor daemon to required apps (#218) Co-authored-by: Steven Briscoe --- bitcoin/docker-compose.yml | 12 +++++++++++- bitcoin/hooks/pre-start | 26 ++++++++++++++++++++++++++ bitcoin/torrc.template | 6 +----- bitcoin/umbrel-app.yml | 2 +- core-lightning/docker-compose.yml | 12 +++++++++++- core-lightning/hooks/pre-start | 26 ++++++++++++++++++++++++++ core-lightning/torrc.template | 6 +----- core-lightning/umbrel-app.yml | 2 +- electrs/docker-compose.yml | 12 +++++++++++- electrs/hooks/pre-start | 26 ++++++++++++++++++++++++++ electrs/torrc.template | 6 +----- electrs/umbrel-app.yml | 2 +- elements/docker-compose.yml | 10 +++++++++- elements/hooks/pre-start | 26 ++++++++++++++++++++++++++ elements/torrc.template | 6 +----- elements/umbrel-app.yml | 2 +- gitea/exports.sh | 3 ++- gitea/torrc.template | 4 ---- gitea/umbrel-app.yml | 2 +- jam/docker-compose.yml | 2 +- jam/umbrel-app.yml | 2 +- kollider/exports.sh | 3 ++- kollider/torrc.template | 4 ---- kollider/umbrel-app.yml | 2 +- lightning/docker-compose.yml | 10 ++++++++++ lightning/hooks/pre-start | 26 ++++++++++++++++++++++++++ lightning/torrc.template | 6 +----- lightning/umbrel-app.yml | 2 +- samourai-server/docker-compose.yml | 10 ++++++++++ samourai-server/hooks/pre-start | 27 +++++++++++++++++++++++++++ samourai-server/torrc.template | 10 +++------- samourai-server/umbrel-app.yml | 2 +- sphinx-relay/exports.sh | 3 ++- sphinx-relay/torrc.template | 6 ------ sphinx-relay/umbrel-app.yml | 2 +- squeaknode/docker-compose.yml | 14 ++++++++++++-- squeaknode/hooks/pre-start | 26 ++++++++++++++++++++++++++ squeaknode/torrc.template | 8 ++------ squeaknode/umbrel-app.yml | 2 +- suredbits-wallet/docker-compose.yml | 10 ++++++++++ suredbits-wallet/hooks/pre-start | 26 ++++++++++++++++++++++++++ suredbits-wallet/torrc.template | 8 ++------ suredbits-wallet/umbrel-app.yml | 2 +- synapse/exports.sh | 3 ++- synapse/torrc.template | 4 ---- synapse/umbrel-app.yml | 2 +- 46 files changed, 327 insertions(+), 86 deletions(-) create mode 100755 bitcoin/hooks/pre-start create mode 100755 core-lightning/hooks/pre-start create mode 100755 electrs/hooks/pre-start create mode 100755 elements/hooks/pre-start delete mode 100644 gitea/torrc.template delete mode 100644 kollider/torrc.template create mode 100755 lightning/hooks/pre-start create mode 100755 samourai-server/hooks/pre-start delete mode 100644 sphinx-relay/torrc.template create mode 100755 squeaknode/hooks/pre-start create mode 100755 suredbits-wallet/hooks/pre-start delete mode 100644 synapse/torrc.template diff --git a/bitcoin/docker-compose.yml b/bitcoin/docker-compose.yml index cc98b5b..82bb64d 100644 --- a/bitcoin/docker-compose.yml +++ b/bitcoin/docker-compose.yml @@ -39,4 +39,14 @@ services: - "${APP_BITCOIN_RPC_PORT}:${APP_BITCOIN_RPC_PORT}" networks: default: - ipv4_address: $APP_BITCOIN_NODE_IP \ No newline at end of file + ipv4_address: $APP_BITCOIN_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" \ No newline at end of file diff --git a/bitcoin/hooks/pre-start b/bitcoin/hooks/pre-start new file mode 100755 index 0000000..5f4da55 --- /dev/null +++ b/bitcoin/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Delay booting Bitcoin until the RPC and P2P Tor Hidden Services are ready + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach bitcoind +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/bitcoin/torrc.template b/bitcoin/torrc.template index 3fbccc4..aedd619 100644 --- a/bitcoin/torrc.template +++ b/bitcoin/torrc.template @@ -4,8 +4,4 @@ HiddenServicePort $APP_BITCOIN_P2P_PORT $APP_BITCOIN_NODE_IP:$APP_BITCOIN_TOR_PO # Bitcoin Core RPC Hidden Service HiddenServiceDir /data/app-$APP_ID-rpc -HiddenServicePort $APP_BITCOIN_RPC_PORT $APP_BITCOIN_NODE_IP:$APP_BITCOIN_RPC_PORT - -# Bitcoin Core Frontend Hidden Service -HiddenServiceDir /data/app-$APP_ID -HiddenServicePort 80 $APP_PROXY_HOSTNAME:$APP_PROXY_PORT \ No newline at end of file +HiddenServicePort $APP_BITCOIN_RPC_PORT $APP_BITCOIN_NODE_IP:$APP_BITCOIN_RPC_PORT \ No newline at end of file diff --git a/bitcoin/umbrel-app.yml b/bitcoin/umbrel-app.yml index 258bd4d..7deada5 100644 --- a/bitcoin/umbrel-app.yml +++ b/bitcoin/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: bitcoin category: Finance name: Bitcoin Node diff --git a/core-lightning/docker-compose.yml b/core-lightning/docker-compose.yml index bc73003..46e0df7 100644 --- a/core-lightning/docker-compose.yml +++ b/core-lightning/docker-compose.yml @@ -62,4 +62,14 @@ services: - "${APP_DATA_DIR}/data/lightningd:/data/.lightning" networks: default: - ipv4_address: ${APP_CORE_LIGHTNING_DAEMON_IP} \ No newline at end of file + ipv4_address: ${APP_CORE_LIGHTNING_DAEMON_IP} + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" \ No newline at end of file diff --git a/core-lightning/hooks/pre-start b/core-lightning/hooks/pre-start new file mode 100755 index 0000000..f71f3b1 --- /dev/null +++ b/core-lightning/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Delay booting Core Lightning until the REST Tor Hidden Service is ready + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rest/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach c-lightning-rest +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/core-lightning/torrc.template b/core-lightning/torrc.template index a480108..ed5e0db 100644 --- a/core-lightning/torrc.template +++ b/core-lightning/torrc.template @@ -1,7 +1,3 @@ # Core Lightning REST Hidden Service HiddenServiceDir /data/app-$APP_ID-rest -HiddenServicePort $APP_CORE_LIGHTNING_REST_PORT $APP_CORE_LIGHTNING_REST_IP:$APP_CORE_LIGHTNING_REST_PORT - -# Core Lightning Frontend Hidden Service -HiddenServiceDir /data/app-$APP_ID -HiddenServicePort 80 $APP_PROXY_HOSTNAME:$APP_PROXY_PORT \ No newline at end of file +HiddenServicePort $APP_CORE_LIGHTNING_REST_PORT $APP_CORE_LIGHTNING_REST_IP:$APP_CORE_LIGHTNING_REST_PORT \ No newline at end of file diff --git a/core-lightning/umbrel-app.yml b/core-lightning/umbrel-app.yml index 6d28a70..a49dd0c 100644 --- a/core-lightning/umbrel-app.yml +++ b/core-lightning/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: core-lightning category: Finance name: Core Lightning diff --git a/electrs/docker-compose.yml b/electrs/docker-compose.yml index ebe5b49..dfcda40 100644 --- a/electrs/docker-compose.yml +++ b/electrs/docker-compose.yml @@ -41,4 +41,14 @@ services: - "${APP_ELECTRS_NODE_PORT}:${APP_ELECTRS_NODE_PORT}" networks: default: - ipv4_address: $APP_ELECTRS_NODE_IP \ No newline at end of file + ipv4_address: $APP_ELECTRS_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" \ No newline at end of file diff --git a/electrs/hooks/pre-start b/electrs/hooks/pre-start new file mode 100755 index 0000000..3c35c58 --- /dev/null +++ b/electrs/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Delay booting Electrs until the RPC Tor Hidden Service is ready + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-rpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach electrs +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/electrs/torrc.template b/electrs/torrc.template index 5caef98..3c43b4d 100644 --- a/electrs/torrc.template +++ b/electrs/torrc.template @@ -1,7 +1,3 @@ # Electrs RPC Hidden Service HiddenServiceDir /data/app-$APP_ID-rpc -HiddenServicePort $APP_ELECTRS_NODE_PORT $APP_ELECTRS_NODE_IP:$APP_ELECTRS_NODE_PORT - -# Electrs Frontend Hidden Service -HiddenServiceDir /data/app-$APP_ID -HiddenServicePort 80 $APP_PROXY_HOSTNAME:$APP_PROXY_PORT \ No newline at end of file +HiddenServicePort $APP_ELECTRS_NODE_PORT $APP_ELECTRS_NODE_IP:$APP_ELECTRS_NODE_PORT \ No newline at end of file diff --git a/electrs/umbrel-app.yml b/electrs/umbrel-app.yml index f252b57..206ea1c 100644 --- a/electrs/umbrel-app.yml +++ b/electrs/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: electrs category: Finance name: Electrs diff --git a/elements/docker-compose.yml b/elements/docker-compose.yml index 9dcdadb..7327a56 100644 --- a/elements/docker-compose.yml +++ b/elements/docker-compose.yml @@ -59,5 +59,13 @@ services: networks: default: ipv4_address: $APP_ELEMENTS_IP - + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" \ No newline at end of file diff --git a/elements/hooks/pre-start b/elements/hooks/pre-start new file mode 100755 index 0000000..e7bd5d2 --- /dev/null +++ b/elements/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Delay booting Elements until the RPC and P2P Tor Hidden Services are ready + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-p2p/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach node +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/elements/torrc.template b/elements/torrc.template index 349f58b..a479358 100644 --- a/elements/torrc.template +++ b/elements/torrc.template @@ -4,8 +4,4 @@ HiddenServicePort $APP_ELEMENTS_NODE_RPC_PORT $APP_ELEMENTS_NODE_IP:$APP_ELEMENT # elements p2p Hidden Service HiddenServiceDir /data/app-$APP_ID-p2p -HiddenServicePort $APP_ELEMENTS_NODE_P2P_PORT $APP_ELEMENTS_NODE_IP:$APP_ELEMENTS_NODE_P2P_PORT - -# elements Hidden Service -HiddenServiceDir /data/app-$APP_ID -HiddenServicePort 80 $APP_PROXY_HOSTNAME:$APP_PROXY_PORT \ No newline at end of file +HiddenServicePort $APP_ELEMENTS_NODE_P2P_PORT $APP_ELEMENTS_NODE_IP:$APP_ELEMENTS_NODE_P2P_PORT \ No newline at end of file diff --git a/elements/umbrel-app.yml b/elements/umbrel-app.yml index f532d9f..30720d6 100644 --- a/elements/umbrel-app.yml +++ b/elements/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: elements category: Wallet Servers name: Elements Core diff --git a/gitea/exports.sh b/gitea/exports.sh index 6791970..3f61d4c 100644 --- a/gitea/exports.sh +++ b/gitea/exports.sh @@ -1,4 +1,5 @@ export APP_GITEA_PORT="8085" export APP_GITEA_SSH_PORT="2222" export APP_GITEA_IP="10.21.21.39" -export APP_GITEA_DB_IP="10.21.21.40" \ No newline at end of file +export APP_GITEA_DB_IP="10.21.21.40" +export APP_GITEA_TOR_HS_EXTRA_PORTS="22:${APP_GITEA_IP}:${APP_GITEA_SSH_PORT}" \ No newline at end of file diff --git a/gitea/torrc.template b/gitea/torrc.template deleted file mode 100644 index 18112b6..0000000 --- a/gitea/torrc.template +++ /dev/null @@ -1,4 +0,0 @@ -# gitea Hidden Service -HiddenServiceDir /data/app-gitea -HiddenServicePort 80 $APP_GITEA_IP:$APP_GITEA_PORT -HiddenServicePort 22 $APP_GITEA_IP:$APP_GITEA_SSH_PORT \ No newline at end of file diff --git a/gitea/umbrel-app.yml b/gitea/umbrel-app.yml index dfc792e..09b093f 100644 --- a/gitea/umbrel-app.yml +++ b/gitea/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: gitea category: Development name: Gitea diff --git a/jam/docker-compose.yml b/jam/docker-compose.yml index f4d236b..fe33eae 100644 --- a/jam/docker-compose.yml +++ b/jam/docker-compose.yml @@ -27,4 +27,4 @@ services: jm_rpc_wallet_file: jam_default networks: default: - ipv4_address: $APP_JAM_IP + ipv4_address: $APP_JAM_IP \ No newline at end of file diff --git a/jam/umbrel-app.yml b/jam/umbrel-app.yml index a9b0cd8..72da037 100644 --- a/jam/umbrel-app.yml +++ b/jam/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: jam category: Finance name: Jam diff --git a/kollider/exports.sh b/kollider/exports.sh index 360c6c5..74d35c7 100644 --- a/kollider/exports.sh +++ b/kollider/exports.sh @@ -2,4 +2,5 @@ export APP_KOLLIDER_IP="10.21.21.70" export APP_KOLLIDER_PORT="4243" export APP_KOLLIDER_WS_IP="10.21.21.71" export APP_KOLLIDER_WS_PORT="4244" -export APP_KOLLIDER_HH_IP="10.21.21.72" \ No newline at end of file +export APP_KOLLIDER_HH_IP="10.21.21.72" +export APP_KOLLIDER_TOR_HS_EXTRA_PORTS="4244:${APP_KOLLIDER_WS_IP}:8080" \ No newline at end of file diff --git a/kollider/torrc.template b/kollider/torrc.template deleted file mode 100644 index 3e8d2bc..0000000 --- a/kollider/torrc.template +++ /dev/null @@ -1,4 +0,0 @@ -# kollider Hidden Service -HiddenServiceDir /data/app-kollider -HiddenServicePort 80 $APP_KOLLIDER_IP:3000 -HiddenServicePort 4244 $APP_KOLLIDER_WS_IP:8080 \ No newline at end of file diff --git a/kollider/umbrel-app.yml b/kollider/umbrel-app.yml index 8337a41..f642ef2 100644 --- a/kollider/umbrel-app.yml +++ b/kollider/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: kollider category: Finance name: Kollider diff --git a/lightning/docker-compose.yml b/lightning/docker-compose.yml index 72601ab..e8c8b70 100644 --- a/lightning/docker-compose.yml +++ b/lightning/docker-compose.yml @@ -54,3 +54,13 @@ services: networks: default: ipv4_address: $APP_LIGHTNING_NODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" \ No newline at end of file diff --git a/lightning/hooks/pre-start b/lightning/hooks/pre-start new file mode 100755 index 0000000..a964542 --- /dev/null +++ b/lightning/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Delay booting Lightning until the GRPC and REST Tor Hidden Services are ready + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-grpc/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach lnd +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/lightning/torrc.template b/lightning/torrc.template index 66931f4..0515972 100644 --- a/lightning/torrc.template +++ b/lightning/torrc.template @@ -4,8 +4,4 @@ HiddenServicePort $APP_LIGHTNING_NODE_REST_PORT $APP_LIGHTNING_NODE_IP:$APP_LIGH # LND gRPC Hidden Service HiddenServiceDir /data/app-$APP_ID-grpc -HiddenServicePort $APP_LIGHTNING_NODE_GRPC_PORT $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT - -# LND Frontend Hidden Service -HiddenServiceDir /data/app-$APP_ID -HiddenServicePort 80 $APP_PROXY_HOSTNAME:$APP_PROXY_PORT \ No newline at end of file +HiddenServicePort $APP_LIGHTNING_NODE_GRPC_PORT $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT \ No newline at end of file diff --git a/lightning/umbrel-app.yml b/lightning/umbrel-app.yml index 95a2a25..f1f8148 100644 --- a/lightning/umbrel-app.yml +++ b/lightning/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: lightning category: Finance name: Lightning Node diff --git a/samourai-server/docker-compose.yml b/samourai-server/docker-compose.yml index 0675c8a..42dc96e 100644 --- a/samourai-server/docker-compose.yml +++ b/samourai-server/docker-compose.yml @@ -144,3 +144,13 @@ services: networks: default: ipv4_address: $APP_SAMOURAI_SERVER_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" diff --git a/samourai-server/hooks/pre-start b/samourai-server/hooks/pre-start new file mode 100755 index 0000000..9ff5ad8 --- /dev/null +++ b/samourai-server/hooks/pre-start @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +# Delay booting Samourai Server until the Dojo and Whirlpool Tor Hidden Services are ready + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-whirlpool/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach nginx +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach whirlpool +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/samourai-server/torrc.template b/samourai-server/torrc.template index 349e4ac..ec10bff 100644 --- a/samourai-server/torrc.template +++ b/samourai-server/torrc.template @@ -1,11 +1,7 @@ # samourai-server dojo Hidden Service -HiddenServiceDir /data/app-samourai-server-dojo +HiddenServiceDir /data/app-$APP_ID-dojo HiddenServicePort 80 $APP_SAMOURAI_SERVER_IP:80 # samourai-server whirlpool Hidden Service -HiddenServiceDir /data/app-samourai-server-whirlpool -HiddenServicePort 80 $APP_SAMOURAI_SERVER_WHIRLPOOL_IP:$APP_SAMOURAI_SERVER_WHIRLPOOL_PORT - -# samourai-server connect Hidden Service -HiddenServiceDir /data/app-samourai-server -HiddenServicePort 80 $APP_SAMOURAI_SERVER_IP:8081 \ No newline at end of file +HiddenServiceDir /data/app-$APP_ID-whirlpool +HiddenServicePort 80 $APP_SAMOURAI_SERVER_WHIRLPOOL_IP:$APP_SAMOURAI_SERVER_WHIRLPOOL_PORT \ No newline at end of file diff --git a/samourai-server/umbrel-app.yml b/samourai-server/umbrel-app.yml index e7a2d7c..3a6f7e5 100644 --- a/samourai-server/umbrel-app.yml +++ b/samourai-server/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: samourai-server category: Wallet Servers name: Samourai Server diff --git a/sphinx-relay/exports.sh b/sphinx-relay/exports.sh index fa78b8f..3842838 100644 --- a/sphinx-relay/exports.sh +++ b/sphinx-relay/exports.sh @@ -1,2 +1,3 @@ export APP_SPHINX_RELAY_IP="10.21.21.14" -export APP_SPHINX_RELAY_PORT="3300" \ No newline at end of file +export APP_SPHINX_RELAY_PORT="3300" +export APP_SPHINX_TOR_HS_EXTRA_PORTS="${APP_SPHINX_RELAY_PORT}:${APP_SPHINX_RELAY_IP}:${APP_SPHINX_RELAY_PORT}" \ No newline at end of file diff --git a/sphinx-relay/torrc.template b/sphinx-relay/torrc.template deleted file mode 100644 index 55bd3a4..0000000 --- a/sphinx-relay/torrc.template +++ /dev/null @@ -1,6 +0,0 @@ -# sphinx-relay Hidden Service -# We expose 80 for the connection string UI and $APP_SPHINX_RELAY_PORT for the -# actual server connection -HiddenServiceDir /data/app-sphinx-relay -HiddenServicePort 80 $APP_SPHINX_RELAY_IP:$APP_SPHINX_RELAY_PORT -HiddenServicePort $APP_SPHINX_RELAY_PORT $APP_SPHINX_RELAY_IP:$APP_SPHINX_RELAY_PORT \ No newline at end of file diff --git a/sphinx-relay/umbrel-app.yml b/sphinx-relay/umbrel-app.yml index 1278c38..68c0af1 100644 --- a/sphinx-relay/umbrel-app.yml +++ b/sphinx-relay/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: sphinx-relay category: Social name: Sphinx Relay diff --git a/squeaknode/docker-compose.yml b/squeaknode/docker-compose.yml index 5858f8a..3a57116 100644 --- a/squeaknode/docker-compose.yml +++ b/squeaknode/docker-compose.yml @@ -31,8 +31,8 @@ services: SQUEAKNODE_LIGHTNING_LND_MACAROON_PATH: "/lnd/data/chain/bitcoin/$APP_BITCOIN_NETWORK/admin.macaroon" # Tor environment variables - SQUEAKNODE_TOR_PROXY_IP: $TOR_PROXY_IP - SQUEAKNODE_TOR_PROXY_PORT: $TOR_PROXY_PORT + SQUEAKNODE_TOR_PROXY_IP: "${TOR_PROXY_IP}" + SQUEAKNODE_TOR_PROXY_PORT: "${TOR_PROXY_PORT}" # App specific environment variables SQUEAKNODE_WEBADMIN_ENABLED: "true" @@ -49,3 +49,13 @@ services: networks: default: ipv4_address: $APP_SQUEAKNODE_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" \ No newline at end of file diff --git a/squeaknode/hooks/pre-start b/squeaknode/hooks/pre-start new file mode 100755 index 0000000..7eade15 --- /dev/null +++ b/squeaknode/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Delay booting Squeaknode until the P2P Tor Hidden Service is ready + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-p2p/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach web +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/squeaknode/torrc.template b/squeaknode/torrc.template index 0c14ca4..7a8766a 100644 --- a/squeaknode/torrc.template +++ b/squeaknode/torrc.template @@ -1,8 +1,4 @@ # squeaknode p2p Hidden Service -HiddenServiceDir /data/app-squeaknode-p2p +HiddenServiceDir /data/app-$APP_ID-p2p HiddenServicePort $APP_SQUEAKNODE_P2P_PORT $APP_SQUEAKNODE_IP:$APP_SQUEAKNODE_P2P_PORT -HiddenServicePort $APP_SQUEAKNODE_P2P_TESTNET_PORT $APP_SQUEAKNODE_IP:$APP_SQUEAKNODE_P2P_TESTNET_PORT - -# squeaknode Hidden Service -HiddenServiceDir /data/app-squeaknode -HiddenServicePort 80 $APP_SQUEAKNODE_IP:$APP_SQUEAKNODE_PORT \ No newline at end of file +HiddenServicePort $APP_SQUEAKNODE_P2P_TESTNET_PORT $APP_SQUEAKNODE_IP:$APP_SQUEAKNODE_P2P_TESTNET_PORT \ No newline at end of file diff --git a/squeaknode/umbrel-app.yml b/squeaknode/umbrel-app.yml index 36ac7ec..6e0ec7a 100644 --- a/squeaknode/umbrel-app.yml +++ b/squeaknode/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: squeaknode category: Social name: Squeaknode diff --git a/suredbits-wallet/docker-compose.yml b/suredbits-wallet/docker-compose.yml index e0b6fe9..8059f62 100644 --- a/suredbits-wallet/docker-compose.yml +++ b/suredbits-wallet/docker-compose.yml @@ -58,3 +58,13 @@ services: networks: default: ipv4_address: $APP_SUREDBITS_WALLET_SERVER_IP + + tor: + image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a + user: "1000:1000" + restart: on-failure + volumes: + - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro + - ${TOR_DATA_DIR}:/data + environment: + HOME: "/tmp" \ No newline at end of file diff --git a/suredbits-wallet/hooks/pre-start b/suredbits-wallet/hooks/pre-start new file mode 100755 index 0000000..931733a --- /dev/null +++ b/suredbits-wallet/hooks/pre-start @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Delay booting Suredbits Wallet until the P2P Tor Hidden Service is ready + +HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-p2p/hostname" + +if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + exit +fi + +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach walletserver +"${UMBREL_ROOT}/scripts/app" compose "${APP_ID}" up --detach tor + +echo "App: ${APP_ID} - Generating Tor Hidden Service..." + +for attempt in $(seq 1 100); do + if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file created successfully!" + break + fi + sleep 0.1 +done + +if [[ ! -f "${HIDDEN_SERVICE_FILE}" ]]; then + echo "App: ${APP_ID} - Hidden service file wasn't created" +fi \ No newline at end of file diff --git a/suredbits-wallet/torrc.template b/suredbits-wallet/torrc.template index b1dbb9d..64000a0 100644 --- a/suredbits-wallet/torrc.template +++ b/suredbits-wallet/torrc.template @@ -1,7 +1,3 @@ # suredbits-wallet p2p Hidden Service -HiddenServiceDir /data/app-suredbits-wallet-p2p -HiddenServicePort $APP_SUREDBITS_WALLET_P2P_PORT $APP_SUREDBITS_WALLET_SERVER_IP:$APP_SUREDBITS_WALLET_P2P_PORT - -# suredbits-wallet Hidden Service -HiddenServiceDir /data/app-suredbits-wallet -HiddenServicePort 80 $APP_SUREDBITS_WALLET_IP:3002 \ No newline at end of file +HiddenServiceDir /data/app-$APP_ID-p2p +HiddenServicePort $APP_SUREDBITS_WALLET_P2P_PORT $APP_SUREDBITS_WALLET_SERVER_IP:$APP_SUREDBITS_WALLET_P2P_PORT \ No newline at end of file diff --git a/suredbits-wallet/umbrel-app.yml b/suredbits-wallet/umbrel-app.yml index fbc3ce3..6a474ff 100644 --- a/suredbits-wallet/umbrel-app.yml +++ b/suredbits-wallet/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: suredbits-wallet category: Finance name: Suredbits Wallet diff --git a/synapse/exports.sh b/synapse/exports.sh index f060591..4c5653b 100644 --- a/synapse/exports.sh +++ b/synapse/exports.sh @@ -1,2 +1,3 @@ export APP_SYNAPSE_IP="10.21.21.44" -export APP_SYNAPSE_PORT="8008" \ No newline at end of file +export APP_SYNAPSE_PORT="8008" +export APP_SYNAPSE_TOR_HS_EXTRA_PORTS="${APP_SYNAPSE_PORT}:${APP_SYNAPSE_IP}:${APP_SYNAPSE_PORT}" \ No newline at end of file diff --git a/synapse/torrc.template b/synapse/torrc.template deleted file mode 100644 index 80d6c1c..0000000 --- a/synapse/torrc.template +++ /dev/null @@ -1,4 +0,0 @@ -# synapse Hidden Service -HiddenServiceDir /data/app-synapse -HiddenServicePort 80 $APP_SYNAPSE_IP:$APP_SYNAPSE_PORT -HiddenServicePort $APP_SYNAPSE_PORT $APP_SYNAPSE_IP:$APP_SYNAPSE_PORT \ No newline at end of file diff --git a/synapse/umbrel-app.yml b/synapse/umbrel-app.yml index d13d007..dcea422 100644 --- a/synapse/umbrel-app.yml +++ b/synapse/umbrel-app.yml @@ -1,4 +1,4 @@ -manifestVersion: 1 +manifestVersion: 1.1 id: synapse category: Social name: Synapse