Рефакторизация структуры кода для улучшения читаемости и удобства сопровождения.

This commit is contained in:
2026-04-30 07:41:41 +03:00
parent eec534760e
commit 89b17ea2b2
1406 changed files with 38483 additions and 3 deletions
View File
View File
+105
View File
@@ -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
+69
View File
@@ -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"
+90
View File
@@ -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
+26
View File
@@ -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
+7
View File
@@ -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