From 25ae459629fd4c7e27dc0c5bec23d37319715794 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2026 04:54:14 +0000 Subject: [PATCH 1/4] Update ghcr.io/bisq-network/bisq2-api Docker tag to v2.1.12.1 --- apps/bisq2-node/2.1.11.2/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bisq2-node/2.1.11.2/docker-compose.yml b/apps/bisq2-node/2.1.11.2/docker-compose.yml index ce63a268f..effd55055 100644 --- a/apps/bisq2-node/2.1.11.2/docker-compose.yml +++ b/apps/bisq2-node/2.1.11.2/docker-compose.yml @@ -1,6 +1,6 @@ services: server: - image: "ghcr.io/bisq-network/bisq2-api:2.1.12.0@sha256:beba2f2db5aefca0f4b8d49285b105cb0b29d0eb0ed0f8136712aace0e167906" + image: "ghcr.io/bisq-network/bisq2-api:2.1.12.1@sha256:79fb71d64d23863c8f48d484a9d84754dae40e12cb395bca348f17dcec46b297" container_name: ${CONTAINER_NAME} restart: unless-stopped stop_grace_period: 1m From 43c4005a16cfdfbcfd13ed310163fdb3aa407110 Mon Sep 17 00:00:00 2001 From: okxlin <61420215+okxlin@users.noreply.github.com> Date: Fri, 11 Sep 2026 15:45:16 +0800 Subject: [PATCH 2/4] Update bisq2-node app Rebuilt-from-PR: #6708 Source-PR: https://github.com/okxlin/appstore/pull/6708 Maintainer-workflow: appstore-pr-maintainer --- apps/bisq2-node/2.1.11.2/.env.sample | 2 +- apps/bisq2-node/2.1.11.2/data.yml | 110 ++++++++++-------- apps/bisq2-node/2.1.11.2/scripts/init.sh | 50 ++++++-- apps/bisq2-node/2.1.11.2/scripts/uninstall.sh | 2 - apps/bisq2-node/2.1.11.2/scripts/upgrade.sh | 4 - apps/bisq2-node/README_en.md | 38 ++++++ apps/bisq2-node/data.yml | 20 ++-- apps/bisq2-node/logo-LICENSE.txt | 10 -- apps/bisq2-node/logo.png | Bin 22932 -> 8270 bytes 9 files changed, 154 insertions(+), 82 deletions(-) delete mode 100755 apps/bisq2-node/2.1.11.2/scripts/uninstall.sh delete mode 100755 apps/bisq2-node/2.1.11.2/scripts/upgrade.sh create mode 100644 apps/bisq2-node/README_en.md delete mode 100644 apps/bisq2-node/logo-LICENSE.txt diff --git a/apps/bisq2-node/2.1.11.2/.env.sample b/apps/bisq2-node/2.1.11.2/.env.sample index d7c6c70d9..87288f0b3 100644 --- a/apps/bisq2-node/2.1.11.2/.env.sample +++ b/apps/bisq2-node/2.1.11.2/.env.sample @@ -1,4 +1,4 @@ -CONTAINER_NAME=bisq2-node +CONTAINER_NAME=bisq2-node-compose-check PANEL_APP_PORT_HTTP=8390 PAIRING_TTL_SECONDS=86400 APP_DATA_DIR=./data diff --git a/apps/bisq2-node/2.1.11.2/data.yml b/apps/bisq2-node/2.1.11.2/data.yml index c1328b906..8885413c9 100644 --- a/apps/bisq2-node/2.1.11.2/data.yml +++ b/apps/bisq2-node/2.1.11.2/data.yml @@ -1,51 +1,63 @@ additionalProperties: formFields: - - default: 8390 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Local Management Port - labelZh: 本地管理端口 - label: - en: Local Management Port - zh: 本地管理端口 - zh-Hant: 本機管理連接埠 - ja: ローカル管理ポート - ko: 로컬 관리 포트 - ru: Локальный порт управления - ms: Port Pengurusan Tempatan - pt-br: Porta de Gerenciamento Local - required: true - rule: paramPort - type: number - - default: 86400 - edit: true - envKey: PAIRING_TTL_SECONDS - labelEn: Pairing Code Lifetime (Seconds) - labelZh: 配对码有效期(秒) - label: - en: Pairing Code Lifetime (Seconds) - zh: 配对码有效期(秒) - zh-Hant: 配對碼有效期(秒) - ja: ペアリングコード有効期間(秒) - ko: 페어링 코드 유효 시간(초) - ru: Срок действия кода сопряжения (сек.) - ms: Tempoh Kod Gandingan (Saat) - pt-br: Validade do Codigo de Pareamento (Segundos) - required: true - type: number - - default: ./data - edit: true - envKey: APP_DATA_DIR - labelEn: Data Directory - labelZh: 数据目录 - label: - en: Data Directory - zh: 数据目录 - zh-Hant: 資料目錄 - ja: データディレクトリ - ko: 데이터 디렉터리 - ru: Каталог данных - ms: Direktori Data - pt-br: Diretorio de Dados - required: true - type: text + - default: 8390 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Local Management Port + labelZh: 本地管理端口 + label: + en: Local Management Port + zh: 本地管理端口 + zh-hant: 本機管理連接埠 + ja: ローカル管理ポート + ko: 로컬 관리 포트 + ru: Локальный порт управления + ms: Port Pengurusan Tempatan + pt-br: Porta de Gerenciamento Local + tr: Yerel Yönetim Portu + es-es: Puerto de gestión local + fa: درگاه مدیریت محلی + lo: ພອດຈັດການພາຍໃນ + required: true + rule: paramPort + type: number + - default: 86400 + edit: true + envKey: PAIRING_TTL_SECONDS + labelEn: Pairing Code Lifetime (Seconds) + labelZh: 配对码有效期(秒) + label: + en: Pairing Code Lifetime (Seconds) + zh: 配对码有效期(秒) + zh-hant: 配對碼有效期(秒) + ja: ペアリングコード有効期間(秒) + ko: 페어링 코드 유효 시간(초) + ru: Срок действия кода сопряжения (сек.) + ms: Tempoh Kod Gandingan (Saat) + pt-br: Validade do Codigo de Pareamento (Segundos) + tr: Eşleştirme Kodu Geçerlilik Süresi (Saniye) + es-es: Duración del código de emparejamiento (segundos) + fa: مدت اعتبار کد جفت‌سازی (ثانیه) + lo: ອາຍຸລະຫັດຈັບຄູ່ (ວິນາທີ) + required: true + type: number + - default: ./data + edit: true + envKey: APP_DATA_DIR + labelEn: Data Directory + labelZh: 数据目录 + label: + en: Data Directory + zh: 数据目录 + zh-hant: 資料目錄 + ja: データディレクトリ + ko: 데이터 디렉터리 + ru: Каталог данных + ms: Direktori Data + pt-br: Diretorio de Dados + tr: Veri Dizini + es-es: Directorio de datos + fa: شاخه داده‌ها + lo: ໄດເຣັກທໍຣີຂໍ້ມູນ + required: true + type: text diff --git a/apps/bisq2-node/2.1.11.2/scripts/init.sh b/apps/bisq2-node/2.1.11.2/scripts/init.sh index 06cd93422..ef7e59993 100755 --- a/apps/bisq2-node/2.1.11.2/scripts/init.sh +++ b/apps/bisq2-node/2.1.11.2/scripts/init.sh @@ -27,6 +27,40 @@ configured_value() { printf '%s\n' "${value:-$default_value}" } +resolve_app_path() { + local key="$1" + local raw="$2" + local clean candidate resolved current part + local -a parts=() + case "$raw" in + ""|/*|.|..|../*|*/../*|*/..) echo "unsafe ${key} path" >&2; return 1 ;; + esac + if [[ "$raw" =~ [[:cntrl:]] ]]; then + echo "unsafe ${key} path" >&2 + return 1 + fi + clean="${raw#./}" + [[ -n "$clean" ]] || { echo "unsafe ${key} path" >&2; return 1; } + command -v realpath >/dev/null 2>&1 || { echo "realpath is required" >&2; return 1; } + candidate="$ROOT_DIR/$clean" + resolved="$(realpath -m -- "$candidate")" || { echo "unsafe ${key} path" >&2; return 1; } + case "$resolved" in + "$ROOT_DIR"/*) ;; + *) echo "unsafe ${key} path" >&2; return 1 ;; + esac + current="$ROOT_DIR" + IFS='/' read -r -a parts <<< "$clean" + for part in "${parts[@]}"; do + [[ -z "$part" || "$part" == "." ]] && continue + current="$current/$part" + if [[ -L "$current" ]]; then + echo "unsafe ${key} path" >&2 + return 1 + fi + done + printf '%s\n' "$resolved" +} + data_raw="$(configured_value APP_DATA_DIR ./data)" pairing_ttl="$(configured_value PAIRING_TTL_SECONDS 86400)" @@ -34,21 +68,19 @@ pairing_ttl="$(configured_value PAIRING_TTL_SECONDS 86400)" printf '%s\n' 'APP_DATA_DIR must be a non-empty relative path using only letters, digits, dots, underscores, hyphens, and slashes' >&2 exit 1 } -data_dir="$(realpath -m -- "$ROOT_DIR/${data_raw#./}")" -case "$data_dir" in - "$ROOT_DIR"/*) ;; - *) - printf '%s\n' 'APP_DATA_DIR must remain inside the application version directory' >&2 - exit 1 - ;; -esac +APP_DATA_DIR="$data_raw" +data_dir="$(resolve_app_path APP_DATA_DIR "$APP_DATA_DIR")" if [[ ! "$pairing_ttl" =~ ^[0-9]+$ ]] || ((10#$pairing_ttl < 300 || 10#$pairing_ttl > 86400)); then printf '%s\n' 'PAIRING_TTL_SECONDS must be an integer from 300 through 86400' >&2 exit 1 fi -install -d -m 0750 "$data_dir" +install -d -m 0750 -- "$data_dir" +[[ "$(resolve_app_path APP_DATA_DIR "$APP_DATA_DIR")" == "$data_dir" ]] || { + printf '%s\n' 'APP_DATA_DIR changed during initialization' >&2 + exit 1 +} data_dir="$(realpath -e -- "$data_dir")" case "$data_dir" in "$ROOT_DIR"/*) ;; diff --git a/apps/bisq2-node/2.1.11.2/scripts/uninstall.sh b/apps/bisq2-node/2.1.11.2/scripts/uninstall.sh deleted file mode 100755 index 6e877466e..000000000 --- a/apps/bisq2-node/2.1.11.2/scripts/uninstall.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail diff --git a/apps/bisq2-node/2.1.11.2/scripts/upgrade.sh b/apps/bisq2-node/2.1.11.2/scripts/upgrade.sh deleted file mode 100755 index a1b212511..000000000 --- a/apps/bisq2-node/2.1.11.2/scripts/upgrade.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -echo 'Back up the Bisq 2 data directory before upgrading.' diff --git a/apps/bisq2-node/README_en.md b/apps/bisq2-node/README_en.md new file mode 100644 index 000000000..b68f5a26d --- /dev/null +++ b/apps/bisq2-node/README_en.md @@ -0,0 +1,38 @@ +# Bisq 2 Node + +## Introduction + +Bisq 2 Node is a self-hosted trading node for Bisq Connect. It joins the Bisq peer-to-peer network over bundled Tor so your phone can use a node you control. It is not a Bitcoin full node and does not download the Bitcoin blockchain. + +## Features + +- Joins the Bisq 2 peer-to-peer network through bundled Tor +- Provides a self-controlled trading node for Bisq Connect +- Displays node status and a time-limited pairing QR code +- Persists node identity, databases, and Tor state +- Keeps the node API on shared loopback with no host publication + +## Usage + +The management page is forcibly bound to `127.0.0.1:` on the 1Panel host because it displays a pairing credential that can authorize node access and trade control. Reach it through an SSH tunnel, such as `ssh -L 8390:127.0.0.1:8390 user@server`, then open `http://127.0.0.1:8390/`. An existing authenticated HTTPS reverse proxy may target the loopback listener. Never rebind it to `0.0.0.0`, a public address, or an unauthenticated proxy. + +Pairing codes default to 86400 seconds and may be configured from 300 through 86400 seconds. Close the page after pairing. A code is single-use and held only in node memory; every node start overwrites the QR file in `APP_DATA_DIR`, invalidating an unused code from the previous process. Node identity and paired-client records persist. + +## Data and security + +`APP_DATA_DIR` must be a relative path inside the application version directory. It stores node identity, keys, databases, Tor state, and pairing material. The uninstall hook does not remove this data; back it up before upgrades, migrations, or removal. Restrict access to 1Panel, Docker, and the host because administrators can read the mounted data. + +The node API stays unpublished on shared loopback `127.0.0.1:8090`. The Web sidecar exposes only the static UI, pairing text, and fixed version proxy. Both containers use read-only root filesystems, `no-new-privileges`, and reduced capabilities. + +The pinned upstream images may contain dependency vulnerabilities. Re-scan the images after upstream publishes fixes and upgrade promptly. A vulnerability review does not replace updating vulnerable dependencies. + +## Network and trading risk + +The node communicates with the public Bisq network and external services over Tor. Tor improves network privacy but cannot eliminate traffic correlation, malicious peers, upstream data errors, software vulnerabilities, or a compromised host. Running your own node does not make offers, counterparties, payment methods, dispute outcomes, or market data trustworthy. Confirm transaction details, back up identity data, and follow local legal and tax requirements. + +## References + +- Source and license: +- Official Bisq website: +- Bisq Connect support: +- Official Umbrel deployment submission: diff --git a/apps/bisq2-node/data.yml b/apps/bisq2-node/data.yml index 381387466..c70dee924 100644 --- a/apps/bisq2-node/data.yml +++ b/apps/bisq2-node/data.yml @@ -1,24 +1,30 @@ name: Bisq 2 Node tags: - - Bitcoin +- Bitcoin title: 通过 Tor 运行自己的 Bisq 2 交易节点 description: 通过 Tor 运行自己的 Bisq 2 交易节点 additionalProperties: key: bisq2-node name: Bisq 2 Node tags: - - Bitcoin + - Bitcoin shortDescZh: 通过 Tor 运行自己的 Bisq 2 交易节点 shortDescEn: Run your own Bisq 2 trading node over Tor description: - en: Self-hosted Bisq 2 node for private peer-to-peer Bitcoin trading with Bisq Connect + en: Self-hosted Bisq 2 node for private peer-to-peer Bitcoin trading with Bisq + Connect zh: 配合 Bisq Connect 使用的自托管 Bisq 2 点对点比特币交易节点 - zh-Hant: 配合 Bisq Connect 使用的自託管 Bisq 2 點對點比特幣交易節點 + zh-hant: 配合 Bisq Connect 使用的自託管 Bisq 2 點對點比特幣交易節點 ja: Bisq Connect向けのセルフホスト型Bisq 2ピアツーピアBitcoin取引ノード ko: Bisq Connect용 자체 호스팅 Bisq 2 P2P 비트코인 거래 노드 ru: Собственный узел Bisq 2 для одноранговой торговли биткоином через Bisq Connect ms: Nod Bisq 2 hos sendiri untuk dagangan Bitcoin rakan-ke-rakan dengan Bisq Connect - pt-br: No Bisq 2 auto-hospedado para negociacao de Bitcoin ponto a ponto com Bisq Connect + pt-br: No Bisq 2 auto-hospedado para negociacao de Bitcoin ponto a ponto com Bisq + Connect + tr: Bisq Connect ile özel eşler arası Bitcoin ticareti için kendi barındırdığınız Bisq 2 düğümü + es-es: Nodo Bisq 2 autoalojado para el comercio de Bitcoin entre pares con Bisq Connect + fa: گره خودمیزبان Bisq 2 برای معامله همتا‌به‌همتای بیت‌کوین با Bisq Connect + lo: ໂນດ Bisq 2 ທີ່ໂຮສຕົນເອງ ສຳລັບການຊື້ຂາຍ Bitcoin ແບບເພື່ອນຫາເພື່ອນດ້ວຍ Bisq Connect type: tool crossVersionUpdate: true limit: 0 @@ -26,5 +32,5 @@ additionalProperties: github: https://github.com/bisq-network/bisq2 document: https://github.com/bisq-network/bisq2/tree/v2.1.11 architectures: - - amd64 - - arm64 + - amd64 + - arm64 diff --git a/apps/bisq2-node/logo-LICENSE.txt b/apps/bisq2-node/logo-LICENSE.txt deleted file mode 100644 index 4dc5b07a7..000000000 --- a/apps/bisq2-node/logo-LICENSE.txt +++ /dev/null @@ -1,10 +0,0 @@ -Bisq 2 icon - -Source: https://github.com/bisq-network/bisq2/blob/v2.1.11/Bisq2_icon.svg -Source commit: 3e0f0f8d69e2449a717d8a4bb404a9fa7dd9b295 -Source SHA-256: 05f92725f611bc5df2ba5c1a769f9508b28de2a7d0fe85165345265832c9ee14 -License: AGPL-3.0-only -License text: https://github.com/bisq-network/bisq2/blob/v2.1.11/LICENSE - -Bisq and its icon are trademarks of their respective owners. This package is -not sponsored, endorsed by, or affiliated with Bisq contributors. diff --git a/apps/bisq2-node/logo.png b/apps/bisq2-node/logo.png index 412926d3fa07566e3ddaf09bc5964115d8109b4e..9b93d05769e020081982a462ace07384e6bb83fd 100644 GIT binary patch literal 8270 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 Dw8YUo literal 22932 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 From f5c236547c1364a7687afdf7e2cce3f7a5d8754d Mon Sep 17 00:00:00 2001 From: okxlin <61420215+okxlin@users.noreply.github.com> Date: Fri, 11 Sep 2026 17:02:22 +0800 Subject: [PATCH 3/4] Normalize Bisq 2 app metadata --- apps/bisq2-node/2.1.11.2/.env.sample | 2 +- apps/bisq2-node/logo-LICENSE.txt | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 apps/bisq2-node/logo-LICENSE.txt diff --git a/apps/bisq2-node/2.1.11.2/.env.sample b/apps/bisq2-node/2.1.11.2/.env.sample index 87288f0b3..d7c6c70d9 100644 --- a/apps/bisq2-node/2.1.11.2/.env.sample +++ b/apps/bisq2-node/2.1.11.2/.env.sample @@ -1,4 +1,4 @@ -CONTAINER_NAME=bisq2-node-compose-check +CONTAINER_NAME=bisq2-node PANEL_APP_PORT_HTTP=8390 PAIRING_TTL_SECONDS=86400 APP_DATA_DIR=./data diff --git a/apps/bisq2-node/logo-LICENSE.txt b/apps/bisq2-node/logo-LICENSE.txt new file mode 100644 index 000000000..4dc5b07a7 --- /dev/null +++ b/apps/bisq2-node/logo-LICENSE.txt @@ -0,0 +1,10 @@ +Bisq 2 icon + +Source: https://github.com/bisq-network/bisq2/blob/v2.1.11/Bisq2_icon.svg +Source commit: 3e0f0f8d69e2449a717d8a4bb404a9fa7dd9b295 +Source SHA-256: 05f92725f611bc5df2ba5c1a769f9508b28de2a7d0fe85165345265832c9ee14 +License: AGPL-3.0-only +License text: https://github.com/bisq-network/bisq2/blob/v2.1.11/LICENSE + +Bisq and its icon are trademarks of their respective owners. This package is +not sponsored, endorsed by, or affiliated with Bisq contributors. From bb86aaead02706ae19e46348b9d897e8e9c3d377 Mon Sep 17 00:00:00 2001 From: okxlin <61420215+okxlin@users.noreply.github.com> Date: Fri, 11 Sep 2026 17:06:40 +0800 Subject: [PATCH 4/4] Remove conflicting Bisq 2 memory limit --- apps/bisq2-node/2.1.11.2/docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/bisq2-node/2.1.11.2/docker-compose.yml b/apps/bisq2-node/2.1.11.2/docker-compose.yml index effd55055..4d1e6f77b 100644 --- a/apps/bisq2-node/2.1.11.2/docker-compose.yml +++ b/apps/bisq2-node/2.1.11.2/docker-compose.yml @@ -4,7 +4,6 @@ services: container_name: ${CONTAINER_NAME} restart: unless-stopped stop_grace_period: 1m - mem_limit: 2g networks: - 1panel-network ports: