We replaced RustDesk with self-hosted MeshCentral, white-labelled as Boom Assist. This is the follow-along guide to stand up the engine, wire Assistee to it, and rebrand it so nobody ever meets the stock MeshCentral console. Everything the code needs is already written โ this is the ops half.
Add an A record so the engine has a home:
mesh.assistee.online A 24.199.95.101 (boom-hosting droplet)
You Do this first โ SSL issuance in step 3 needs it resolving. Give it a few minutes to propagate.
On the boom-hosting droplet (24.199.95.101) โ not the Supabase box (keeps the OOM-prone Supabase droplet clear).
SaaS/Assistee/infra/meshcentral-coolify.yml.MESH_HOSTNAME=mesh.assistee.online, and a MONGO_USER / MONGO_PASS of your choosing.https://mesh.assistee.online โ create the first account โ it becomes site administrator.assistee-api. This is what Assistee's control API logs in as.
Give it device-group management rights (site-admin is fine for MVP). Its username/password become
MESH_API_USER / MESH_API_PASS.The stock MeshCentral UI is dated. Two things fix that:
/dashboard/view./opt/meshcentral/meshcentral-data/config.json with infra/meshcentral-config.json,
fill in the Mongo string + a random loginKey, drop boom-logo.png /
boom-favicon.ico into meshcentral-data, and restart.Key flags already set in that config:
| Setting | Why |
|---|---|
title / titlePicture / favicon | "Boom Assist" branding, your logo, your favicon โ no MeshCentral identity |
AllowFraming: true | Lets Assistee embed the desktop viewer in an iframe (the /dashboard/view wrapper) |
AllowLoginToken: true | Enables token-based auto-auth for embedded/console deep links |
newAccounts: false | No public signups on the engine โ invite/admin only |
consentMessages | The permission prompt the client sees says "Boom Assist", not "MeshCentral" |
Code done The app is already repointed off RustDesk. You just supply env + run the migration.
NEXT_PUBLIC_MESH_SERVER_URL=https://mesh.assistee.online
MESH_CONTROL_URL=wss://mesh.assistee.online/control.ashx
MESH_API_USER=assistee-api
MESH_API_PASS=<the service account password>
# BOO_ORG_ID once the Boom Media internal org exists
cd "SaaS/Assistee" && npm install # adds ws + @types/ws
# then, in the db.boommedia.us SQL editor:
# run migrations/002_meshcentral.sql (after 001_initial.sql)
src/lib/meshcentral.ts) is written to MeshCentral's documented protocol (actions
createmesh, nodes, createInviteLink, createDeviceShareLink;
x-meshauth login). It couldn't be exercised without a live server. On first deploy, run one
Add-Device and one Connect and confirm each call โ adjust action/param names if your MeshCentral build differs.
The app degrades gracefully until then (clean "engine not configured" states, never a crash).npm run dev โ sign up. Onboarding provisions a device group for the org.POST /api/boo/support-session) for the restaurant "Request Support" button.| Assistee concept | MeshCentral | Where |
|---|---|---|
| Org | Device group (mesh) | organizations.mesh_id |
| Device | Node (installed agent) | devices.mesh_node_id |
| Add Device | generateinvitelink | /api/devices/invite |
| Sync | listdevices | /api/devices/sync |
| Connect (unattended) | createDeviceShareLink (desktop, no-login) | /api/session/create โ /dashboard/view |
| Start Session / BOO | generateinvitelink + hosted page | /api/session/create, /api/boo/support-session |