Commit graph

9 commits

Author SHA1 Message Date
Satoshi Nakamoto
8a6beec395
Update umbrel/lncli-wrapper.sh
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2026-06-23 23:21:05 +02:00
GaltRanch
58ea9d907d fix(umbrel): switch bundled bitcoin-cli to Bitcoin Knots
User preference: stick with Knots rather than Core. The RPC protocol is
identical so PyBLOCK's behavior is unchanged, but the bundled binary now
matches the Knots flavor Umbrel ships in `umbrel-bitcoin`.

- dockerfile: download bitcoin-cli from
  bitcoinknots.org/files/28.x/28.1.knots20250305/ instead of bitcoincore.org.
  SHA256SUMS verification preserved.
- umbrel/umbrel-app.yml: clarify release notes mention Knots specifically.

Verified locally: bitcoin-cli.bin --version now reports
"Bitcoin Knots RPC client version v28.1.knots20250305".

Co-Authored-By: kulvex code <noreply@github.com>
2026-06-23 18:12:49 -03:00
GaltRanch
ba5e9606db fix(umbrel): bundle bitcoin-cli and lncli for mode A/B without Lite fallback
PyBLOCK's mode A (Bitcoin + Lightning) and mode B (Bitcoin only) call
bitcoin-cli and lncli directly via subprocess. The Umbrel image did not
ship those binaries, so the startup validation in PyBlock.py:1898-1909
detected the empty CLI paths and silently redirected to Lite Mode against
public APIs — defeating the point of installing PyBLOCK on a node.

Per nmfretz's review on getumbrel/umbrel-apps#5258, this takes the
"bundle the binaries inside the PyBLOCK image" path (option 2):

- dockerfile: download bitcoin-cli (Bitcoin Core 28.1) and lncli (LND
  v0.20.1-beta, matching what Umbrel ships) for both linux/amd64 and
  linux/arm64. Verifies the Bitcoin Core SHA256SUMS. Real binaries land
  at /usr/local/bin/{bitcoin-cli,lncli}.bin.
- umbrel/{bitcoin-cli,lncli}-wrapper.sh: thin shell wrappers installed
  as /usr/local/bin/{bitcoin-cli,lncli} that exec the real binary with
  -rpcconnect/-rpcuser/-rpcpassword (or --rpcserver/--tlscertpath/
  --macaroonpath for lncli) injected from the BITCOIN_RPC_* / LND_*
  env vars Umbrel provides via APP_BITCOIN_* / APP_LIGHTNING_*. They
  fail loud if those env vars are missing.
- entrypoint.sh: default BITCOIN_CLI_PATH/LND_CLI_PATH to the wrapper
  locations when the relevant RPC host env vars are set and the wrapper
  is executable, so bclock.conf / blndconnect.conf get the right
  bitcoincli / ln paths automatically.
- umbrel/: bump image tag and app version to v4.0.2 with release notes.

Local smoke test on amd64:
  bitcoin-cli.bin --version -> Bitcoin Core RPC client version v28.1.0
  lncli.bin --version       -> lncli version 0.20.1-beta
  /usr/local/bin/bitcoin-cli (no env) -> fails with "BITCOIN_RPC_HOST must be set"
  /usr/local/bin/bitcoin-cli (env set) -> dispatches to the real binary

Image grows ~70MB (mostly the Go-built lncli).

Co-Authored-By: kulvex code <noreply@github.com>
2026-06-23 18:10:00 -03:00
GaltRanch
c94d9e265e fix(umbrel): pin container UID to 1000 to fix Umbrel permission errors
Umbrel forces `user: "1000:1000"` in docker-compose, but the previous
Dockerfile let useradd assign the next-free UID. Since ubuntu:24.04 ships
a pre-existing `ubuntu` user at 1000, `pyblock` ended up as 1001, causing
permission errors on the bind-mounted config dir reported in
getumbrel/umbrel-apps#5258.

- dockerfile: remove the default `ubuntu` user and pin pyblock to UID/GID
  1000 so file ownership matches the user Umbrel runs as.
- entrypoint.sh: fail fast with a clear, actionable message when the
  config dir is not writable (covers future UID-mismatch regressions).
- umbrel/: bump image tag and app version to v4.0.1 with release notes.

Verified with `docker run --user 1000:1000` and an empty bind-mount:
all 5 config files generated successfully, ttyd serves on :6969.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 19:16:31 -03:00
GaltRanch
8f7ec5e6ad Remove broken ColdCore integration
ColdCore was non-functional due to literal '$HOME' paths that never
expanded, making all file checks always fail. The upstream project
(jamesob/coldcore) is experimental/alpha and requires Coldcard
hardware, limiting its audience.

Removed: callColdCore() function, menu entry "I" (ColdCore), and
handlers from PyBlock.py, SPV/spvblock.py, and umbrel-app.yml.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 09:38:15 -03:00
GaltRanch
c50a8797fc Add gallery screenshots for Umbrel App Store
4 screenshots showing PyBLOCK in action:
- 1.png: Main menu with Rich panels
- 2.png: Bitcoin submenu with categorized columns
- 3.png: Block visualizer treemap
- 4.png: TUI dashboard

Updated umbrel-app.yml gallery references to .png format.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:47:33 -03:00
GaltRanch
42a02ae933 Add PyBLOCK logo PNG to Umbrel app directory
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:44:44 -03:00
GaltRanch
b152c96038 Add Umbrel app icon and submission documentation
- icon.svg: 256x256 cyberpunk Bitcoin icon with animated cursor,
  grid lines, Bitcoin B symbol gradient, and PyBLOCK text
- README.md: Testing instructions, submission steps, env var reference,
  and multi-arch Docker build commands

Gallery screenshots (1.jpg, 2.jpg, 3.jpg) to be added after
capturing from a running instance.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:38:50 -03:00
GaltRanch
667d5b6ae0 Add Umbrel app manifest and docker-compose configuration
umbrel/docker-compose.yml:
- app_proxy service for Umbrel authentication
- Web service with ttyd on port 6969
- Volume mounts: persistent config + read-only LND data
- All Bitcoin RPC and LND env vars from Umbrel's injection
- Auto-mode set to A (Bitcoin + Lightning)

umbrel/umbrel-app.yml:
- App manifest with full description and feature list
- Category: bitcoin
- Dependencies: bitcoin, lightning
- Port: 6969

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:32:23 -03:00