Skip to content

Commit d63384b

Browse files
committed
Update ProxyBase/EarnApp info, make dashboard rows clickable
- ProxyBase: add referral code, fix signup URL to peer.proxybase.org, $1 min payout - EarnApp: add Wise payment method, document auto-redeem options - Dashboard: clicking service row expands/collapses server list, only name link goes to website - Regenerate README and docs
1 parent 1d137bc commit d63384b

7 files changed

Lines changed: 27 additions & 22 deletions

File tree

AGENTS.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ This is how Portainer works. The worker is a dumb executor — it never decrypts
311311
| Koii Network | **broken** | Website returns HTTP 402 (paused) |
312312
| earn.cc | **broken** | Server error on signup |
313313
| GagaNode | **shady** | Site poorly made, not recommended |
314-
| BlockMesh | **shady** | Rebranded to Perceptron Network, unofficial extension requires dev mode |
314+
| BlockMesh | **dropped** | Rebranded to Perceptron Network, unofficial extension requires dev mode. Shady |
315315
| PassiveApp | **active** | Restored from dead (Mar 2026) |
316316
| Titan Network | **active** | Restored from dead (Mar 2026) |
317317
| Spide Network | **active** | Restored from dead (Mar 2026) |
@@ -320,12 +320,12 @@ This is how Portainer works. The worker is a dumb executor — it never decrypts
320320

321321
| Service | Type | Docker Feasibility | Notes |
322322
|---------|------|-------------------|-------|
323-
| **Grass** | Browser extension | No official image | Community Python bots exist but not containerized |
323+
| **Grass** | Browser extension | No official image | OTP-only login. `mrcolorrain/grass` lite image broken (Chrome driver error). WebSocket-based approach using `user_id` UUID bypasses login (e.g. `wss://proxy2.wynd.network:4650`) |
324324
| **Gradient** | Browser extension (Next.js) | No official image | Client-side JS reads `?referralCode=` param (camelCase, NOT `?code=`) |
325325
| **Teneo** | Browser extension | No official image | Websocket-based connection |
326326
| **Dawn** | Chrome extension / hardware box | Community Python bots exist (`Justi1980/Dawn-Validator-BOT`, `Jaammerr/The-Dawn-Bot`) that call Dawn's HTTP API directly, no browser needed. Trivially containerizable. |
327327
| **Nodepay** | Browser extension | No official image | Behind Cloudflare protection |
328-
| **BlockMesh** | Browser extension | No official image | -- |
328+
| **BlockMesh** | Browser extension | No official image | Dropped — shady, rebranded to Perceptron Network |
329329
| **Wipter** | Desktop/mobile app only | No Docker or API | Web registration at `/en/register` (accepts referral code), but **no web login/dashboard** -- `/login`, `/en/login`, `/dashboard`, `app.wipter.com` all 404/refused. Earnings visible only in desktop app. |
330330
| **GagaNode** | Desktop app | No official Docker image | -- |
331331
| **Titan** | Desktop app | No official Docker image | -- |
@@ -354,7 +354,7 @@ This is how Portainer works. The worker is a dumb executor — it never decrypts
354354
| **Repocket** | **No** | -- | No public referral program |
355355
| Bitping | **No** | -- | No referral program exists |
356356
| Storj | **No** | -- | No referral program for node operators |
357-
| ProxyBase | **No** | -- | No referral program |
357+
| ProxyBase | Yes | nXzS3c6iTO | `peer.proxybase.org?referral=nXzS3c6iTO`. **Two dashboards**: `client.proxybase.org` (buyer) vs `peer.proxybase.org` (seller). Docker needs **peer** USER_ID. $0.50/GB residential, $1 min payout |
358358
| Dawn | Yes | 2QLQV97F | Extension-based |
359359
| Spide | Yes | f3bc51 | `spide.network/register.html?f3bc51` |
360360
| PassiveApp | Yes | bqpC4M | `passiveapp.com/i/bqpC4M` |
@@ -372,7 +372,7 @@ This is how Portainer works. The worker is a dumb executor — it never decrypts
372372

373373
Working collectors (12/12 deployed services):
374374
- **Honeygain** -- JWT auth, `/v1/users/tokens` + `/v1/users/balances`
375-
- **EarnApp** -- XSRF rotation + cookie auth, `/money` endpoint
375+
- **EarnApp** -- XSRF rotation + cookie auth, `/money` endpoint. **Auto-redeem** available: Amazon ($50 min), Wise ($10 min), PayPal ($10 min)
376376
- **MystNodes** -- Cloud API (`my.mystnodes.com/api/v2`), email/password auth. **Supports per-node earnings** via `GET /api/v2/node` (30-day MYST per node, need price conversion for USD).
377377
- **Traffmonetizer** -- JWT token, `data.traffmonetizer.com/api/app_user/get_balance`
378378
- **IPRoyal** -- Email/password auth
@@ -383,7 +383,7 @@ Working collectors (12/12 deployed services):
383383
- **ProxyRack** -- API key auth, POST `/api/balance`. Per-device bandwidth (not earnings) via POST `/api/bandwidth` with `device_id` param.
384384
- **Storj** -- API URL-based
385385
- **Grass** -- Bearer token from localStorage (`app.grass.io`), `api.getgrass.io`. Returns GRASS token balance (converted to USD via CoinGecko).
386-
- **Bytelixir** -- Laravel session cookie (expires ~3.5h), `dash.bytelixir.com`. hCaptcha blocks automated login.
386+
- **Bytelixir** -- Laravel session cookie (expires ~3.5h), `dash.bytelixir.com`. hCaptcha blocks automated login. v0.2.17: `unquote()` handles URL-encoded cookies automatically.
387387

388388
#### Per-Node/Per-Device Earnings Support
389389

@@ -421,7 +421,7 @@ Fleet API key set via `CASHPILOT_API_KEY` env var on all instances.
421421

422422
- **`container.stats(stream=False)` is slow** (~1-2s per container). Never call in request path. Use `get_status_cached()` for page loads; background health check refreshes every 5 min.
423423
- **`--read-only` breaks Docker socket access**: The entrypoint needs to modify `/etc/group` to add the `cashpilot` user to the Docker socket's group. Drop `--read-only` or add tmpfs for `/etc`.
424-
- **Cross-subnet workers**: If worker and UI are on different subnets, use a VPN/overlay IP (e.g. Tailscale MagicDNS) for `CASHPILOT_UI_URL`. Worker may need `--network host` for VPN routing.
424+
- **Cross-subnet workers**: If worker and UI are on different subnets, ensure Tailscale subnet routing: the UI server must `tailscale set --advertise-routes=<UI-subnet>` and the worker server must `tailscale set --accept-routes=true`. Worker uses `CASHPILOT_UI_URL` with the UI's LAN IP (not Tailscale IP).
425425
- **SQLite data retention**: 400-day retention. Daily job purges `earnings` and `health_events` older than 400 days.
426426
- **Collection interval**: 1 hour. Earnings cache in SQLite, served instantly.
427427
- **Worker heartbeat data**: Container status comes from workers' heartbeat data stored in SQLite. `_get_all_worker_containers()` consolidates all online workers' container lists into a flat list for display.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,13 @@ Services CashPilot can deploy and manage automatically via Docker.
7474
| [Anyone Protocol](https://anyone.io) ||| Unlimited | 1 | Crypto (ANYONE) |
7575
| [Bitping](https://app.bitping.com) ||| Unlimited | 1 | Crypto (SOL) |
7676
| [Earn.fm](https://earn.fm/ref/GEISYB91) ||| Unlimited | 1 | Crypto |
77-
| [EarnApp](https://earnapp.com/i/TSMD9wSm) ||| 15 | 1 | PayPal, Gift Cards |
77+
| [EarnApp](https://earnapp.com/i/TSMD9wSm) ||| 15 | 1 | PayPal, Gift Cards, Wise |
7878
| [Honeygain](https://dashboard.honeygain.com/ref/SERGIB4014) ||| 10 | 1 | PayPal, Crypto |
7979
| [IPRoyal Pawns](https://pawns.app?r=19266874) ||| Unlimited | 1 | PayPal, Crypto, Bank Transfer |
8080
| [MystNodes](https://mystnodes.co/?referral_code=do7v7YOoBBpbOstKQovX2pUvZYKia4ZhH3QIdNtE) ||| Unlimited | Unlimited | Crypto (MYST) |
8181
| [PacketStream](https://packetstream.io/?psr=7xgZ) ||| Unlimited | 1 | PayPal |
8282
| [Presearch](https://presearch.com/signup?rid=4872322) ||| Unlimited | 1 | Crypto (PRE) |
83-
| [ProxyBase](https://proxybase.io) ||| Unlimited | 1 | Crypto |
83+
| [ProxyBase](https://peer.proxybase.org?referral=nXzS3c6iTO) ||| Unlimited | 1 | Crypto |
8484
| [ProxyLite](https://proxylite.ru/?r=KMUPRZIZ) ||| Unlimited | 1 | Crypto, PayPal |
8585
| [ProxyRack](https://peer.proxyrack.com/ref/mpwiok3xlaxeycnn5znqlg7ipjeutxyxr6xl7vmn) ||| 500 | 1 | PayPal, Crypto |
8686
| [Repocket](https://repocket.com/) ||| 5 | 2 | PayPal, Crypto |

app/static/js/app.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ const CP = (() => {
359359
// For single instance: show action buttons directly
360360
let actionBtns;
361361
if (isMulti) {
362-
const chevron = `<button class="btn btn-icon expand-toggle" onclick="CP.toggleInstances('${svc.slug}')" title="Expand instances">
362+
const chevron = `<button class="btn btn-icon expand-toggle" onclick="event.stopPropagation(); CP.toggleInstances('${svc.slug}')" title="Expand instances">
363363
<svg class="expand-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg>
364364
</button>`;
365365
actionBtns = `<div class="action-btns">${claimBtn}${chevron}</div>`;
@@ -386,7 +386,7 @@ const CP = (() => {
386386

387387
// Main row
388388
let html = `
389-
<tr class="breakdown-row${isMulti ? ' expandable' : ''}" data-slug="${escapeHtml(svc.slug)}">
389+
<tr class="breakdown-row${isMulti ? ' expandable' : ''}" data-slug="${escapeHtml(svc.slug)}"${isMulti ? ` onclick="CP.toggleInstances('${escapeHtml(svc.slug)}', event)" style="cursor:pointer;"` : ''}>
390390
<td>${nameHtml}<div style="font-size:0.7rem; color:var(--text-muted);">${subtitle}</div></td>
391391
<td style="text-align:center;"><span class="badge badge-${statusClass}"><span class="status-dot ${statusClass}"></span> ${statusLabel}</span>${instanceLabel}</td>
392392
<td style="text-align:center;">${healthBadge}</td>
@@ -439,7 +439,12 @@ const CP = (() => {
439439
return html;
440440
}
441441

442-
function toggleInstances(slug) {
442+
function toggleInstances(slug, event) {
443+
if (event) {
444+
// Don't toggle when clicking links or buttons inside the row
445+
const target = event.target.closest('a, button, .action-btns');
446+
if (target) return;
447+
}
443448
const rows = document.querySelectorAll(`.instance-row[data-parent="${slug}"]`);
444449
const mainRow = document.querySelector(`.breakdown-row[data-slug="${slug}"]`);
445450
const isOpen = rows.length > 0 && rows[0].style.display !== 'none';

docs/guides/earnapp.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ EarnApp by Bright Data lets you sell your unused bandwidth for passive income. B
1414
| Monthly range | $2 - $5 |
1515
| Per | device |
1616
| Minimum payout | $2.50 |
17-
| Payout frequency | On request |
18-
| Payment methods | Paypal, Amazon Giftcard |
17+
| Payout frequency | On request (auto-redeem available: PayPal $10 min, Wise $10 min, Amazon $50 min) |
18+
| Payment methods | Paypal, Amazon Giftcard, Wise |
1919

2020
> Highly location-dependent. US/EU IPs earn the most. Earnings scale with bandwidth consumed.
2121

docs/guides/proxybase.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ProxyBase is a bandwidth-sharing platform that pays users in cryptocurrency for
1313
|--------|-------|
1414
| Monthly range | $1 - $5 |
1515
| Per | device |
16-
| Minimum payout | $5 |
16+
| Minimum payout | $1 |
1717
| Payout frequency | On request |
1818
| Payment methods | Crypto |
1919

@@ -33,7 +33,7 @@ ProxyBase is a bandwidth-sharing platform that pays users in cryptocurrency for
3333

3434
### 1. Create an account
3535

36-
Sign up at [ProxyBase](https://proxybase.io).
36+
Sign up at [ProxyBase](https://peer.proxybase.org?referral=nXzS3c6iTO).
3737

3838
### 2. Get your credentials
3939

services/bandwidth/earnapp.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ requirements:
4343
min_storage: ""
4444

4545
payment:
46-
methods: [paypal, amazon_giftcard]
46+
methods: [paypal, amazon_giftcard, wise]
4747
minimum_payout: "$2.50"
4848
currency: USD
49-
frequency: "On request"
49+
frequency: "On request (auto-redeem available: PayPal $10 min, Wise $10 min, Amazon $50 min)"
5050

5151
earnings:
5252
monthly_low: 2

services/bandwidth/proxybase.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ description: >
1010
short_description: Bandwidth sharing - crypto payout, user ID auth
1111

1212
referral:
13-
signup_url: "https://proxybase.io"
13+
signup_url: "https://peer.proxybase.org?referral=nXzS3c6iTO"
1414

1515
docker:
1616
image: proxybase/proxybase
@@ -40,7 +40,7 @@ requirements:
4040

4141
payment:
4242
methods: [crypto]
43-
minimum_payout: "$5"
43+
minimum_payout: "$1"
4444
currency: USD
4545
frequency: "On request"
4646

@@ -53,8 +53,8 @@ earnings:
5353

5454
cashout:
5555
method: redirect
56-
dashboard_url: "https://proxybase.io/dashboard"
57-
min_amount: 5.0
56+
dashboard_url: "https://peer.proxybase.org/dashboard"
57+
min_amount: 1.0
5858
currency: USD
5959

6060
platforms: [windows, linux]

0 commit comments

Comments
 (0)