Рефакторизация структуры кода для улучшения читаемости и удобства сопровождения.
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
manifestVersion: 1.1
|
||||
id: lightning
|
||||
category: bitcoin
|
||||
name: Lightning Node
|
||||
version: "0.20.0-beta"
|
||||
tagline: Запустите свой личный сетевой узел Lightning
|
||||
description: >-
|
||||
Запустите свой личный сетевой узел Lightning и присоединяйтесь к будущему Bitcoin сегодня.
|
||||
|
||||
|
||||
Сеть Lightning позволяет проводить сверхдешевые и почти мгновенные транзакции Bitcoin. Запустив узел Lightning, вы можете не только самостоятельно хранить свой Bitcoin на Lightning, но и зарабатывать саты, маршрутизируя платежи в сети.
|
||||
|
||||
|
||||
Подключите Zeus Wallet, Zap или любой другой кошелек, поддерживающий lndconnect, для удаленного управления вашим узлом и доступа к нему из любой точки мира.
|
||||
|
||||
|
||||
С помощью функции расширенных настроек вы можете взять под свой контроль свой узел и настроить его в соответствии со своими потребностями. Персонализируйте его, задав имя, включите более крупные каналы, ограничьте размеры каналов, установите плату за маршрутизацию, оптимизируйте стратегию маршрутизации, добавьте службы сторожевой башни, настройте ее производительность и многое другое.
|
||||
|
||||
|
||||
При поддержке ЛНД.
|
||||
|
||||
|
||||
Официальное приложение от DFWebOS.
|
||||
releaseNotes: >-
|
||||
Это обновление включает последнюю версию LND (v0.20.0-бета).
|
||||
|
||||
|
||||
Полные примечания к выпуску LND можно найти по адресу https://github.com/lightningnetwork/lnd/releases/tag/v0.20.0-beta.
|
||||
developer: DFWebOS
|
||||
website: https://dfwebos.com
|
||||
dependencies:
|
||||
- bitcoin
|
||||
repo: https://github.com/getumbrel/umbrel-lightning
|
||||
support: https://community.getumbrel.com/c/bitcoin-and-lightning
|
||||
port: 2101
|
||||
gallery:
|
||||
- 1.jpg
|
||||
- 2.jpg
|
||||
- 3.jpg
|
||||
- 4.jpg
|
||||
- 5.jpg
|
||||
path: ""
|
||||
defaultPassword: ""
|
||||
widgets:
|
||||
- id: "bitcoin-wallet"
|
||||
type: "text-with-buttons"
|
||||
refresh: "5s"
|
||||
endpoint: "app:3006/v1/lnd/widgets/bitcoin-wallet"
|
||||
link: ""
|
||||
example:
|
||||
type: "text-with-buttons"
|
||||
link: ""
|
||||
title: "Bitcoin Wallet"
|
||||
text: "1,845,894"
|
||||
subtext: "sats"
|
||||
buttons:
|
||||
- text: "Withdraw"
|
||||
icon: "arrow-up-right"
|
||||
link: "?action=send-bitcoin"
|
||||
- text: "Deposit"
|
||||
icon: "arrow-down-right"
|
||||
link: "?action=receive-bitcoin"
|
||||
- id: "lightning-wallet"
|
||||
type: "text-with-buttons"
|
||||
refresh: "2s"
|
||||
endpoint: "app:3006/v1/lnd/widgets/lightning-wallet"
|
||||
link: ""
|
||||
example:
|
||||
type: "text-with-buttons"
|
||||
link: ""
|
||||
title: "Lightning Wallet"
|
||||
text: "762,248"
|
||||
subtext: "sats"
|
||||
buttons:
|
||||
- text: "Send"
|
||||
icon: "arrow-up-right"
|
||||
link: "?action=send-lightning"
|
||||
- text: "Receive"
|
||||
icon: "arrow-down-right"
|
||||
link: "?action=receive-lightning"
|
||||
- id: "lightning-stats"
|
||||
type: "four-stats"
|
||||
refresh: "5s"
|
||||
endpoint: "app:3006/v1/lnd/widgets/lightning-stats"
|
||||
link: ""
|
||||
example:
|
||||
type: "four-stats"
|
||||
link: ""
|
||||
items:
|
||||
- title: "Connections"
|
||||
text: "5"
|
||||
subtext: "peers"
|
||||
- title: "Active channels"
|
||||
text: "3"
|
||||
subtext: "channels"
|
||||
- title: "Max send"
|
||||
text: "90K"
|
||||
subtext: "sats"
|
||||
- title: "Max receive"
|
||||
text: "45K"
|
||||
subtext: "sats"
|
||||
submitter: DFWebOS
|
||||
submission: https://github.com/getumbrel/dfwebos-apps/commit/576ecd2bef8d625abceed0f67ec9c487da9b2b1b
|
||||
backupIgnore:
|
||||
- data/graph/mainnet/channel.db
|
||||
@@ -0,0 +1,69 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
app_proxy:
|
||||
environment:
|
||||
APP_HOST: $APP_LIGHTNING_IP
|
||||
APP_PORT: 3006
|
||||
|
||||
app:
|
||||
image: getumbrel/umbrel-lightning:v1.2.1@sha256:41d5e7388a15443103ec0eae583a426dcf04bd371a1371fdeea8ccae99c01972
|
||||
restart: on-failure
|
||||
volumes:
|
||||
- "${APP_LIGHTNING_NODE_DATA_DIR}:/data/.lnd"
|
||||
- "${APP_DATA_DIR}/data/lightning:/data"
|
||||
environment:
|
||||
PORT: "3006"
|
||||
TOR_PROXY_IP: "${TOR_PROXY_IP}"
|
||||
TOR_PROXY_PORT: "${TOR_PROXY_PORT}"
|
||||
BITCOIN_HOST: "${APP_BITCOIN_NODE_IP}"
|
||||
RPC_PORT: "${APP_BITCOIN_RPC_PORT}"
|
||||
RPC_USER: "${APP_BITCOIN_RPC_USER}"
|
||||
RPC_PASSWORD: "${APP_BITCOIN_RPC_PASS}"
|
||||
LND_NETWORK: "${APP_BITCOIN_NETWORK}"
|
||||
LND_HOST: "${APP_LIGHTNING_NODE_IP}"
|
||||
LND_REST_HIDDEN_SERVICE: "${APP_LIGHTNING_REST_HIDDEN_SERVICE}"
|
||||
LND_GRPC_HIDDEN_SERVICE: "${APP_LIGHTNING_GRPC_HIDDEN_SERVICE}"
|
||||
TLS_FILE: "/data/.lnd/tls.cert"
|
||||
MACAROON_DIR: "/data/.lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/"
|
||||
CHANNEL_BACKUP_FILE: "/data/.lnd/data/chain/bitcoin/${APP_BITCOIN_NETWORK}/channel.backup"
|
||||
BACKUP_STATUS_FILE: "/statuses/backup-status.json"
|
||||
JSON_STORE_FILE: "/data/state.json"
|
||||
JSON_SETTINGS_FILE: "/data/settings.json"
|
||||
DFWEBOS_LND_CONF_FILEPATH: "/data/.lnd/dfwebos-lnd.conf"
|
||||
LND_CONF_FILEPATH: "/data/.lnd/lnd.conf"
|
||||
LND_INITIALIZE_WITH_TOR_ONLY: "${LND_INITIALIZE_WITH_TOR_ONLY:-unset}"
|
||||
DEVICE_DOMAIN_NAME: "${DEVICE_DOMAIN_NAME}"
|
||||
EXPLORER_PORT: "${APP_MEMPOOL_PORT}"
|
||||
EXPLORER_HIDDEN_SERVICE: "${APP_MEMPOOL_HIDDEN_SERVICE}"
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: $APP_LIGHTNING_IP
|
||||
|
||||
lnd:
|
||||
hostname: "${DEVICE_DOMAIN_NAME}" # Needed so LND can generate a valid cert
|
||||
image: lightninglabs/lnd:v0.20.0-beta@sha256:4b33e89ce7d2db02bbf3c10649e567c36d175075921c97afc3bdfa36f2e7518a
|
||||
command: "${APP_LIGHTNING_COMMAND}"
|
||||
user: 1000:1000
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "$APP_LIGHTNING_NODE_PORT:$APP_LIGHTNING_NODE_PORT"
|
||||
- "$APP_LIGHTNING_NODE_REST_PORT:$APP_LIGHTNING_NODE_REST_PORT"
|
||||
- "$APP_LIGHTNING_NODE_GRPC_PORT:$APP_LIGHTNING_NODE_GRPC_PORT"
|
||||
volumes:
|
||||
- "${APP_LIGHTNING_NODE_DATA_DIR}:/data/.lnd"
|
||||
environment:
|
||||
HOME: /data
|
||||
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"
|
||||
@@ -0,0 +1,90 @@
|
||||
export APP_LIGHTNING_IP="10.21.22.3"
|
||||
export APP_LIGHTNING_NODE_IP="10.21.21.9"
|
||||
|
||||
export APP_LIGHTNING_NODE_PORT="9735"
|
||||
export APP_LIGHTNING_NODE_GRPC_PORT="10009"
|
||||
export APP_LIGHTNING_NODE_REST_PORT="8080"
|
||||
export APP_LIGHTNING_NODE_DATA_DIR="${EXPORTS_APP_DIR}/data/lnd"
|
||||
|
||||
BIN_ARGS=()
|
||||
BIN_ARGS+=( "--configfile=/data/.lnd/umbrel-lnd.conf" )
|
||||
# [Параметры приложения]
|
||||
BIN_ARGS+=( "--listen=0.0.0.0:${APP_LIGHTNING_NODE_PORT}" )
|
||||
BIN_ARGS+=( "--rpclisten=0.0.0.0:${APP_LIGHTNING_NODE_GRPC_PORT}" )
|
||||
BIN_ARGS+=( "--restlisten=0.0.0.0:${APP_LIGHTNING_NODE_REST_PORT}" )
|
||||
|
||||
# [Биткойн]
|
||||
BIN_ARGS+=( "--bitcoin.active" )
|
||||
if [[ "${APP_BITCOIN_NETWORK}" == "mainnet" ]]; then
|
||||
BIN_ARGS+=( "--bitcoin.mainnet" )
|
||||
elif [[ "${APP_BITCOIN_NETWORK}" == "testnet" ]]; then
|
||||
BIN_ARGS+=( "--bitcoin.testnet" )
|
||||
elif [[ "${APP_BITCOIN_NETWORK}" == "testnet4" ]]; then
|
||||
BIN_ARGS+=( "--bitcoin.testnet4" )
|
||||
elif [[ "${APP_BITCOIN_NETWORK}" == "signet" ]]; then
|
||||
BIN_ARGS+=( "--bitcoin.signet" )
|
||||
elif [[ "${APP_BITCOIN_NETWORK}" == "regtest" ]]; then
|
||||
BIN_ARGS+=( "--bitcoin.regtest" )
|
||||
else
|
||||
echo "Warning (${EXPORTS_APP_ID}): Bitcoin Network '${APP_BITCOIN_NETWORK}' is not supported"
|
||||
fi
|
||||
BIN_ARGS+=( "--bitcoin.node=bitcoind" )
|
||||
|
||||
# [Биткоинд]
|
||||
BIN_ARGS+=( "--bitcoind.rpchost=${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT}" )
|
||||
BIN_ARGS+=( "--bitcoind.rpcuser=${APP_BITCOIN_RPC_USER}" )
|
||||
BIN_ARGS+=( "--bitcoind.rpcpass=${APP_BITCOIN_RPC_PASS}" )
|
||||
BIN_ARGS+=( "--bitcoind.zmqpubrawblock=tcp://${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_ZMQ_RAWBLOCK_PORT}" )
|
||||
BIN_ARGS+=( "--bitcoind.zmqpubrawtx=tcp://${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_ZMQ_RAWTX_PORT}" )
|
||||
|
||||
# [тор]
|
||||
BIN_ARGS+=( "--tor.active" )
|
||||
BIN_ARGS+=( "--tor.v3" )
|
||||
BIN_ARGS+=( "--tor.control=${TOR_PROXY_IP}:29051" )
|
||||
BIN_ARGS+=( "--tor.socks=${TOR_PROXY_IP}:${TOR_PROXY_PORT}" )
|
||||
BIN_ARGS+=( "--tor.targetipaddress=${APP_LIGHTNING_NODE_IP}" )
|
||||
BIN_ARGS+=( "--tor.password=${TOR_PASSWORD}" )
|
||||
|
||||
export APP_LIGHTNING_COMMAND=$(IFS=" "; echo "${BIN_ARGS[@]}")
|
||||
|
||||
# эхо "${APP_LIGHTNING_COMMAND}"
|
||||
|
||||
rest_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-rest/hostname"
|
||||
grpc_hidden_service_file="${EXPORTS_TOR_DATA_DIR}/app-${EXPORTS_APP_ID}-grpc/hostname"
|
||||
export APP_LIGHTNING_REST_HIDDEN_SERVICE="$(cat "${rest_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")"
|
||||
export APP_LIGHTNING_GRPC_HIDDEN_SERVICE="$(cat "${grpc_hidden_service_file}" 2>/dev/null || echo "notyetset.onion")"
|
||||
|
||||
{
|
||||
# Перенесите настройки гибридного режима для обновлений приложений иначе, чем для новых установок.
|
||||
LIGHTNING_DATA_DIR="${EXPORTS_APP_DIR}/data/lightning"
|
||||
LND_DATA_DIR="${EXPORTS_APP_DIR}/data/lnd"
|
||||
|
||||
IS_POST_HYBRID_MODE_INSTALL_FILE_PATH="${LIGHTNING_DATA_DIR}/IS_POST_HYBRID_MODE_INSTALL"
|
||||
|
||||
# Если каталога lnd/data не существует, мы записываем файл, указывающий, что это новая установка.
|
||||
# Это позволяет обойти проблему, связанную с предварительным запуском lnd-контейнера при создании Tor HS.
|
||||
# и создаем каталог lnd/data.
|
||||
if [[ ! -d "${LND_DATA_DIR}/data" ]]; then
|
||||
touch "${IS_POST_HYBRID_MODE_INSTALL_FILE_PATH}"
|
||||
fi
|
||||
|
||||
APP_CONFIG_EXISTS="false"
|
||||
APP_HYBRID_MODE_SETTING_EXISTS="false"
|
||||
if [[ -f "${LIGHTNING_DATA_DIR}/settings.json" ]]; then
|
||||
APP_CONFIG_EXISTS="true"
|
||||
if jq -e '.lnd | has("tor.skip-proxy-for-clearnet-targets")' "${LIGHTNING_DATA_DIR}/settings.json" >/dev/null 2>&1; then
|
||||
APP_HYBRID_MODE_SETTING_EXISTS="true"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Нам нужно только сохранить конфигурацию только для Tor для существующих установок до 1.2.0.
|
||||
if [[ ! -f "${IS_POST_HYBRID_MODE_INSTALL_FILE_PATH}" ]]; then
|
||||
if [[ "${APP_CONFIG_EXISTS}" = "false" ]]; then
|
||||
# Если settings.json вообще не существует, это обновление версии приложения до Advanced-Settings, поэтому мы сохраняем существующую конфигурацию только для Tor.
|
||||
export LND_INITIALIZE_WITH_TOR_ONLY="true"
|
||||
elif [[ "${APP_CONFIG_EXISTS}" = "true" ]] && [[ "${APP_HYBRID_MODE_SETTING_EXISTS}" = "false" ]]; then
|
||||
# Если settings.json существует, но гибридный режим еще не настроен, то это версия приложения до версии 1.2.0, поэтому мы по-прежнему сохраняем существующую конфигурацию только для Tor.
|
||||
export LND_INITIALIZE_WITH_TOR_ONLY="true"
|
||||
fi
|
||||
fi
|
||||
} || true
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Отложите загрузку Lightning до тех пор, пока не будут готовы скрытые службы Tor GRPC и REST.
|
||||
|
||||
HIDDEN_SERVICE_FILE="${TOR_DATA_DIR}/app-${APP_ID}-grpc/hostname"
|
||||
|
||||
if [[ -f "${HIDDEN_SERVICE_FILE}" ]]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
"${DFWEBOS_ROOT}/scripts/app" compose "${APP_ID}" up --detach lnd
|
||||
"${DFWEBOS_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
|
||||
@@ -0,0 +1,7 @@
|
||||
# LND REST Скрытая служба
|
||||
HiddenServiceDir /data/app-$APP_ID-rest
|
||||
HiddenServicePort $APP_LIGHTNING_NODE_REST_PORT $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_REST_PORT
|
||||
|
||||
# LND Скрытая служба gRPC
|
||||
HiddenServiceDir /data/app-$APP_ID-grpc
|
||||
HiddenServicePort $APP_LIGHTNING_NODE_GRPC_PORT $APP_LIGHTNING_NODE_IP:$APP_LIGHTNING_NODE_GRPC_PORT
|
||||
Reference in New Issue
Block a user