Skip to content

stack, appliance: admit LAN clients to the TLS JSON-RPC listener (forward-port of #887) - #888

Closed
bkeroack wants to merge 1 commit into
masterfrom
fix/stack-tls-rpc-allowip-master
Closed

bkeroack wants to merge 1 commit into
masterfrom
fix/stack-tls-rpc-allowip-master

Conversation

@bkeroack

@bkeroack bkeroack commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Forward-port of #887 from release/0.6 to master: a git cherry-pick -x of 4920545. It applies cleanly, and its patch is identical to the release commit's.

Since #817, -rpcallowip gates the TLS JSON-RPC listener. The stack template's allowlist (loopback plus the stack subnet) therefore refused every LAN client of the published TLS port before the handshake. That broke all four appliance boot tests on the v0.6.0-rc1 tag. satd-init now writes rpcallowip=0.0.0.0/0. The plain listener is kept off the LAN by the network instead, as the other plain listeners already were. See #887 for the evidence, the reproduction on the rc1 binary and the version-skew notes (compose and StartOS keep passing SATD_STACK_SUBNET for older images).

Locally on this branch, satd-init-test.sh (including the new "the TLS listener admits a client outside the stack subnet" check) and compose-test.sh pass. The appliance-ci label runs the image boot test here, as it did on #887.

🤖 Generated with Claude Code

Since #817, -rpcallowip gates the TLS JSON-RPC listener once the list
has an entry. The stack template's list named only loopback and the
stack subnet, which were meant for the plain listener, while its TLS
listener binds 0.0.0.0 and is published. So every client on the LAN
was dropped before the handshake: on the appliance all four boot
tests fail "JSON-RPC is reachable over TLS" with an unexpected EOF,
and the satd log reads "RPC TLS connection rejected: source IP not in
the listener's allowlist".

satd-init now writes rpcallowip=0.0.0.0/0. The plain listener is kept
off the LAN by the network instead, as Electrum, Esplora and metrics
already were: it is never published directly, and the appliance's
nftables admits only the stack subnet to 8332.

The subnet no longer reaches bitcoin.conf, so satd-init stops reading
SATD_STACK_SUBNET and the appliance's render path stops passing it.
compose.yml keeps passing it (and keeps its subnet fixed) because an
older SATD_IMAGE's satd-init still uses it; the StartOS package does
the same for its pinned image and can drop it when the pin moves.

satd-init-test.sh checks that the rendered TLS listener admits a
client outside the stack subnet; it fails with the old two lines put
back.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 4920545)
@bkeroack bkeroack added the appliance-ci Run the heavy appliance CI jobs (stack bring-up + image build) on this PR label Oct 2, 2026
@bkeroack

bkeroack commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #901, which brings all of release/0.6 back to master: #887 itself unchanged, plus #886, #889 and the 0.6.0 cut (#897), followed by the 0.7.0-pre bump.

@bkeroack bkeroack closed this Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

appliance-ci Run the heavy appliance CI jobs (stack bring-up + image build) on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant