Skip to content

fix(proxybase): migrate to GHCR peer-cli image + Access Token credentials#96

Merged
GeiserX merged 2 commits into
mainfrom
fix/proxybase-ghcr-migration
Jul 17, 2026
Merged

fix(proxybase): migrate to GHCR peer-cli image + Access Token credentials#96
GeiserX merged 2 commits into
mainfrom
fix/proxybase-ghcr-migration

Conversation

@GeiserX

@GeiserX GeiserX commented Jul 17, 2026

Copy link
Copy Markdown
Owner

Mirrors the web catalog fix (CashPilot #103) into the desktop catalog. Verified against primary sources: pulled the current image and ran its --help, and fetched the live site.

Root cause

The catalog shipped the retired ProxyBase Docker Hub image (proxybase/proxybase) with USER_ID/DEVICE_NAME env vars and .io URLs. ProxyBase moved to ghcr.io/proxybaseorg/peer-cli on proxybase.org with a different env contract, so existing deployments silently stop earning.

Changes

File Change
services/bandwidth/proxybase.yml image → ghcr.io/proxybaseorg/peer-cli@sha256:b78dda39… (digest-pinned, multi-arch amd64/arm64/armv7); env USER_ID/DEVICE_NAMEID/NAME; credential relabelled Access Token + secret: true; proxybase.ioproxybase.org; residential_ip: false + vps_ip: true
internal/catalog/proxybase_test.go regression test pinning the GHCR image + exact ID/NAME contract
wails.json productVersion 0.9.0 → 0.10.1 (was drifted behind the v0.10.0 release)
CHANGELOG.md add [0.10.1]; move the already-released fleet per-worker-keys entry from [Unreleased] under [0.10.0]

Verified

  • Image --help: ProxyBase-Peer [<ID> [<NAME>]], 'set env var ID' / 'set env var NAME'.
  • Multi-arch index digest includes linux/arm64 + armv7.
  • gofmt clean, go build ./..., go vet ./..., go test ./... all pass (image-pin gate + new contract test included).

Release

Tag-driven: after merge, push v0.10.1 to build/publish all three platforms.

Backward compatibility

Breaking for existing ProxyBase deployments — the new client won't read the old USER_ID/DEVICE_NAME. Re-deploy ProxyBase and paste the Access Token.

Summary by CodeRabbit

  • New Features

    • Updated ProxyBase integration to use Access Token authentication.
    • Added support for VPS/datacenter IP addresses and expanded platform compatibility, including ARM devices.
    • Updated ProxyBase links and container source to the current service.
  • Bug Fixes

    • Retired legacy ProxyBase credentials and image references.
    • Existing ProxyBase deployments must be redeployed with a fresh Access Token.
  • Documentation

    • Updated service documentation and availability indicators to reflect current ProxyBase support.
  • Chores

    • Updated the application version to 0.10.1.

…ials

Mirror of the web catalog fix (CashPilot #103). ProxyBase retired its Docker
Hub image and old GHCR org, changed the credential contract, and moved to
proxybase.org.

- image: proxybase/proxybase -> ghcr.io/proxybaseorg/peer-cli, digest-pinned
  (multi-arch amd64/arm64/armv7 -- fixes arm64 / Raspberry Pi)
- env: USER_ID/DEVICE_NAME -> ID/NAME (verified against the image --help; the
  new client ignores the old vars and exits with 'Missing ID and NAME')
- credential relabelled 'Access Token' and masked (secret: true)
- domain proxybase.io -> proxybase.org across website + dashboard link
- requirements: datacenter/VPS IPs now accepted (residential still earns most)
- add regression test pinning the image + exact ID/NAME env contract
- bump productVersion 0.9.0 -> 0.10.1 (was drifted); move the released fleet
  per-worker-keys entry under [0.10.0] and add [0.10.1] to the changelog
@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 891b53ac-19f1-49bf-b0be-c5f17171c253

📥 Commits

Reviewing files that changed from the base of the PR and between 56de572 and 857d020.

⛔ Files ignored due to path filters (1)
  • frontend/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (8)
  • CHANGELOG.md
  • README.md
  • docs/BRANCH-2-RUNTIME.md
  • frontend/package.json
  • internal/catalog/proxybase_test.go
  • package.json
  • services/bandwidth/proxybase.yml
  • wails.json

📝 Walkthrough

Walkthrough

Changes

ProxyBase migration and release

Layer / File(s) Summary
ProxyBase service contract
services/bandwidth/proxybase.yml, internal/catalog/proxybase_test.go
Updates the image, platforms, authentication variables, URLs, IP requirements, and regression assertions for ProxyBase.
ProxyBase documentation updates
README.md, docs/BRANCH-2-RUNTIME.md, CHANGELOG.md
Documents VPS support, the corrected image reference, migration details, and redeployment requirements.
0.10.1 version metadata
package.json, frontend/package.json, wails.json
Changes project and application versions from 0.9.0 to 0.10.1.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the main ProxyBase migration to the GHCR peer-cli image and the new Access Token credential contract.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/proxybase-ghcr-migration

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…test guards

Panel-review fixes on top of the migration:
- README: ProxyBase VPS IP cell now matches vps_ip: true
- package.json / frontend package.json+lock: align 0.9.0 -> 0.10.1 (were
  drifted alongside wails.json)
- tests: guard the referral signup URL, Secret on ID, Residential/VPS flags,
  and linux/arm64 presence; drop the assertion subsumed by the digest-pin check
- docs: BRANCH-2-RUNTIME catalog-corrections note marked done + correct org
  (proxybaseorg; the proxybase-org-company org no longer exists)
- yaml: tighten NAME description (parity with web)
@GeiserX

GeiserX commented Jul 17, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@GeiserX
GeiserX merged commit 95cf369 into main Jul 17, 2026
6 checks passed
@GeiserX
GeiserX deleted the fix/proxybase-ghcr-migration branch July 17, 2026 14:40
GeiserX added a commit that referenced this pull request Jul 18, 2026
…ge, real hostname (CashPilot-Desktop-ada) (#99)

Four pre-existing latents from the PR #96 review:

1. DeployService persisted credentials BEFORE validation, so a rejected deploy
   left invalid/blank creds lingering (and lighting the 'Configured' badge for
   a service that could never start). Validate via the new
   Manager.ValidateCredentials first; persist only if it passes.
2. buildEnv copied every stored-cred key into the container env unfiltered.
   Restrict to catalog-declared keys so an orphaned pre-migration key can't
   leak into a container. (The native twin keeps its documented passthrough.)
3. The 'Configured' badge was len(creds)>0, so an orphaned old-key blob read as
   configured though a deploy would fail. Key it off the current required fields
   via Manager.RequiredCredentialsMet.
4. An unedited deploy form resubmitted the raw 'cashpilot-{hostname}' default as
   an override, which buildEnv only substituted on defaults (and to the literal
   'desktop') — producing a device literally named cashpilot-{hostname}. Expand
   {hostname} to the real host on defaults AND overrides (both runtimes), and
   surface AppState.hostname so the form renders the real value.

Tests: buildEnv filter+hostname, ValidateCredentials/RequiredCredentialsMet,
DeployService validate-before-persist. go test -race + vet + gofmt clean, tsc clean.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant