From 37a82fd2f9c0767dbba628038b8d7925a445eee1 Mon Sep 17 00:00:00 2001 From: archipelago Date: Sun, 23 Aug 2026 01:43:09 -0400 Subject: [PATCH] fix(cuprate): avoid Penpot RPC port collision --- apps/cuprate/manifest.yml | 9 +++++---- core/container/src/manifest.rs | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/cuprate/manifest.yml b/apps/cuprate/manifest.yml index e087cca6..c2d0e565 100644 --- a/apps/cuprate/manifest.yml +++ b/apps/cuprate/manifest.yml @@ -83,9 +83,10 @@ app: # what wallets use when connecting to a "remote node". Disabled by # cuprated's own default; enabled via files[] below. A dashboard login # would break wallet clients connecting programmatically, same - # reasoning as electrumx's port — canonical port 18089 is free on this - # fleet, so no remap needed here. - - host: 18089 + # reasoning as electrumx's port. The daemon still uses its canonical + # container port 18089, but Penpot already owns host port 18089, so this + # maps the public host port to the free 18090 instead. + - host: 18090 container: 18089 protocol: tcp auth: none @@ -136,7 +137,7 @@ app: health_check: type: tcp # Restricted RPC — the only RPC surface published now. - endpoint: localhost:18089 + endpoint: localhost:18090 interval: 30s timeout: 5s retries: 3 diff --git a/core/container/src/manifest.rs b/core/container/src/manifest.rs index 5d641851..71d236cc 100644 --- a/core/container/src/manifest.rs +++ b/core/container/src/manifest.rs @@ -1746,9 +1746,10 @@ app: } } exempt.sort(); - // 28 as of 2026-08-21: the 26 below plus cuprate's two exemptions — + // 28 as of 2026-08-23: the 26 below plus cuprate's two exemptions — // 18183 (Monero p2p gossip, same reasoning as bitcoin's 8333) and - // 18089 (Monero restricted RPC, upstream's own safe-for-public + // 18090 (host mapping for Monero's canonical 18089 restricted RPC, + // upstream's own safe-for-public // subset that wallets connect to directly as a "remote node" over // plain HTTP JSON-RPC — same reasoning as electrumx's 50001). // cuprate's unrestricted RPC (full node control) stays loopback-only