Files
DorkNet/docs/troubleshooting.md
Alexa f5ad4b59ef Localtunnel hosting + admin panel + AppData db
- Default hosting mode is now Localtunnel — public *.loca.lt URL,
  no account, auto-fetched on first run. Replaces the prototyped
  Tailscale mode.
- Tailscale code purged from launcher + CLI; docs swapped to
  Localtunnel throughout (easy-setup, joining-a-server, server-cli,
  troubleshooting, faq, READMEs).
- Launcher sidebar gains an Open admin panel button — opens
  https://admin.<apex> in the browser once the server is live.
- SQLite db moves to %APPDATA%\DorkNet\dorknet.db (server reads
  Database__SqlitePath env var, launcher passes it). Existing dbs
  under <serverDir>\data\ are migrated on first run.
- CLI Program.cs: --mode default flips from tailscale to localtunnel;
  csproj links in LocaltunnelTunnel + LocaltunnelInstaller.
- New Backend files: LauncherNameServer, LocaltunnelInstaller,
  LocaltunnelTunnel, SingleOriginServiceMap.
- .gitignore: exclude installer/out/.
2026-05-28 01:39:38 +03:00

4.3 KiB

Troubleshooting

If your symptom isn't here, check the FAQ and then open an issue with: your OS, DorkNet version, server log (Settings → Send logs to clipboard), and the exact steps that triggered the problem.

Client / patcher

"Signature verification failed" on launch

The image-signing public key baked into the patched global-metadata.dat doesn't match the private key on the server. Repair from the Patch tab — this re-fetches the server's current pubkey before patching.

"Check your internet connection" loop at startup

The watch can't reach the server URL. Verify:

  1. The host string in dorknet-clientmod.json matches the server's current join-code URL. (Localtunnel hands out a fresh <random>.loca.lt URL on every host restart — the joiner needs the most recent code.)
  2. Open https://<host>/healthz in a browser from the joiner's machine and confirm a 200 OK. If you instead see Localtunnel's "Click to Continue" page, click through once and retry the connect.
  3. No corporate proxy / DNS filter is intercepting loca.lt / sslip.io.

Black screen after the loading bar fills

The watch authenticated, joined Photon, but couldn't download the room data blob. Look in MelonLoader's Latest.log for [DownloadRoomDataBlobCoroutine] lines — the URL there tells you which asset the server failed to serve.

Save doesn't persist, MakerPen objects disappear after reload

Known issue with stale LocalRoomScene.DataBlobName. The client mod's SetRoomDataBlobName_Prefix hijack should handle this — verify it's firing in MelonLoader's log. If not, the mod failed to load; check that Mods\DorkNet.ClientMod.dll is present and not blocked by Windows.

Server

[boot] migrations failed

The schema patch SQL errored. Most likely cause: an existing column whose type doesn't match what we're trying to add. Look at the exact failure in the log; if it's a Postgres cannot alter type error, the prior column type needs a manual migration before DorkNet starts.

Photon CustomAuth returns 401

Either:

  • The Photon AppId in appsettings doesn't match the AppId baked into the patched client. They MUST match.
  • The user logging in doesn't have a row in the Players table — the auth flow expects userid to be a real account.

Room chat doesn't send

Run the client with SaveDebugMod enabled (or watch MelonLoader's log) and look for the [chat-trace] lines. The pipeline is:

SendChatEmote → RemoveInvalidCharactersFromMessage → PurifyString HTTP
              → ProcessNewChatMessageReceived → Photon RPC

If any trace line is missing, that's where it died. The two most common fixes:

  • [chat-fix] CanLocalPlayerChat returned false: the account is flagged as a Junior with chat disabled. Force-true via the client mod (default behavior) or fix it server-side in admin.
  • Received malformed RecNet response: the /api/sanitize/v1 endpoint returned the wrong shape. Should be a bare JSON-quoted string. See SanitizeController.cs.

Easy app

"Localtunnel couldn't get a URL"

DorkNet shells out to the Localtunnel client and waits for it to report back with a *.loca.lt URL. If that fails, the most common causes are:

  • Localtunnel's service is rate-limiting / down — wait a couple minutes and retry, or switch to LAN mode if friends are local.
  • No Node.js / npx available for the fallback path (the launcher bundles a .NET Localtunnel client, but if both that and npx fail you'll see this). Install Node.js 16+ from nodejs.org and click Retry.
  • Outbound HTTPS to loca.lt is blocked (corporate firewall, DNS filter). Switch to LAN mode or use the wildcard option with your own apex.

Patch button is greyed out

DorkNet didn't find a Rec Room install at the path you selected. Make sure you pointed at the folder containing Recroom_Release.exe, not the exe itself, and that Recroom_Release_Data/ exists alongside.

Mode switch lost my server data

Switching from Host mode → Join mode preserves the SQLite database; it just stops auto-starting the server. Switch back to Host mode and your players / rooms / images are still there.

If the data really is gone, check %APPDATA%\DorkNet\dorknet.db — that file is the entire host-side state, easy to copy elsewhere as a backup.