You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
| 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|
315
315
| PassiveApp |**active**| Restored from dead (Mar 2026) |
316
316
| Titan Network |**active**| Restored from dead (Mar 2026) |
317
317
| 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
320
320
321
321
| Service | Type | Docker Feasibility | Notes |
322
322
|---------|------|-------------------|-------|
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`)|
324
324
|**Gradient**| Browser extension (Next.js) | No official image | Client-side JS reads `?referralCode=` param (camelCase, NOT `?code=`) |
325
325
|**Teneo**| Browser extension | No official image | Websocket-based connection |
326
326
|**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. |
327
327
|**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|
329
329
|**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. |
330
330
|**GagaNode**| Desktop app | No official Docker image | -- |
331
331
|**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
354
354
|**Repocket**|**No**| -- | No public referral program |
355
355
| Bitping |**No**| -- | No referral program exists |
356
356
| Storj |**No**| -- | No referral program for node operators |
-**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).
@@ -421,7 +421,7 @@ Fleet API key set via `CASHPILOT_API_KEY` env var on all instances.
421
421
422
422
-**`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.
423
423
-**`--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).
425
425
-**SQLite data retention**: 400-day retention. Daily job purges `earnings` and `health_events` older than 400 days.
426
426
-**Collection interval**: 1 hour. Earnings cache in SQLite, served instantly.
427
427
-**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.
0 commit comments