mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-25 23:18:44 -07:00
Add installer updater and server CLI
This commit is contained in:
+276
-44
@@ -1,63 +1,287 @@
|
||||
# Easy mode — host your own server
|
||||
|
||||
> Built for non-technical hosts. If you can install Discord, you can do this.
|
||||
>
|
||||
> **On Linux or macOS?** This guide is for the Windows GUI launcher.
|
||||
> For headless hosting from a Linux box / a Mac / a VPS, see
|
||||
> [server-cli.md](server-cli.md). Joiners on those platforms are not
|
||||
> supported yet — Rec Room itself is a Windows game.
|
||||
|
||||
DorkNet bundles everything you need to run a private Rec Room server on
|
||||
your own machine and hand a join code to your friends. The launcher is a
|
||||
single Windows app that:
|
||||
|
||||
- runs the server,
|
||||
- opens a public tunnel so friends anywhere can connect,
|
||||
- patches your local copy of Rec Room to point at the server,
|
||||
- packages a join code your friends paste into their launcher.
|
||||
|
||||
## What you'll need
|
||||
|
||||
- A Windows PC (Mac and Linux support coming later)
|
||||
- A copy of **Rec Room 2020.03.10** — the specific old build DorkNet targets.
|
||||
You acquire this yourself; see [Getting the 2020 client](#getting-the-2020-client) below.
|
||||
- Windows 10 or 11 (Mac and Linux support are not planned)
|
||||
- A copy of **Rec Room 2020.03.10** — the specific old build DorkNet
|
||||
targets. You acquire this yourself; see
|
||||
[Getting the 2020 client](#getting-the-2020-client) below.
|
||||
- A free Photon Cloud account — the launcher walks you through this on
|
||||
first run.
|
||||
- ~5 GB free disk space
|
||||
- About 10 minutes
|
||||
- About 10 minutes for first-run setup, ~30 seconds per subsequent launch
|
||||
|
||||
## Step 1 — Download DorkNet
|
||||
## Download
|
||||
|
||||
Grab `dorknet.exe` from the [latest release](https://github.com/YOUR_GH_USERNAME/dorknet/releases/latest).
|
||||
Two flavours on the
|
||||
[latest release](https://github.com/DorkSquadRR/DorkNet/releases/latest):
|
||||
|
||||
> Windows SmartScreen may warn you. The exe is code-signed; click "More info"
|
||||
> → "Run anyway".
|
||||
- **`dorknet-setup-<version>.exe`** *(recommended)* — installer.
|
||||
Drops the launcher under `%LocalAppData%\Programs\DorkNet`, adds
|
||||
Start menu + (optional) desktop shortcut, sets up the auto-updater,
|
||||
registers an uninstaller. No admin rights required.
|
||||
- **`dorknet.exe`** — single-file portable. Drop it anywhere; state
|
||||
lives in `%APPDATA%\DorkNet`. No shortcuts, no auto-updates.
|
||||
|
||||
## Step 2 — First launch
|
||||
Either works the same once it's running. Pick the installer if you'd
|
||||
like Start-menu integration and rolling updates; pick the portable exe
|
||||
if you'd rather no system changes.
|
||||
|
||||
When you open DorkNet for the first time, you'll see a welcome screen
|
||||
asking what you want to do.
|
||||
> Windows SmartScreen may warn you on first launch because the binary
|
||||
> isn't EV-signed. Click "More info" → "Run anyway".
|
||||
|
||||
### Auto-updates
|
||||
|
||||
The installed launcher checks GitHub on every launch for a newer
|
||||
release. If one's available, a small banner appears in the sidebar
|
||||
with an **Install & restart** button. Click it; the launcher
|
||||
downloads the new binary, shuts itself down, swaps the exe in place,
|
||||
and relaunches.
|
||||
|
||||
Turn this off during setup by un-ticking *Check for updates on launch*,
|
||||
or any time later by editing `HKCU\Software\DorkNet\AutoUpdate` (0
|
||||
disables). The portable `dorknet.exe` doesn't auto-update — pull a new
|
||||
release yourself when you want one.
|
||||
|
||||
## First launch — the welcome screen
|
||||
|
||||
The very first time you open DorkNet you get a hero screen.
|
||||
|
||||

|
||||
|
||||
Click **🏠 Host a server**.
|
||||
Click **GET STARTED** to enter the setup wizard. The wizard only runs
|
||||
once; future launches drop you straight into the main view.
|
||||
|
||||
## Step 3 — Patch your Rec Room install
|
||||
## The setup wizard
|
||||
|
||||
DorkNet needs to redirect Rec Room to talk to your server instead of the
|
||||
official one. This is a one-time patch.
|
||||
Five steps, top stepper shows your progress. **Back** and **Next** sit
|
||||
in the bottom bar; the choice cards on the first step auto-advance when
|
||||
clicked.
|
||||
|
||||
1. Click the **Patch game** tab.
|
||||
2. Click **Browse for Rec Room install...** — point it at the folder where
|
||||
`Recroom_Release.exe` lives.
|
||||
3. Click **Patch**. Takes 30 seconds.
|
||||
### Step 1 — Pick a mode
|
||||
|
||||

|
||||

|
||||
|
||||
✅ You're done with patching. You won't need to do this again unless you
|
||||
reinstall Rec Room.
|
||||
- **Run a server** — you'll host. The launcher will set up the tunnel
|
||||
and hand you a join code.
|
||||
- **Use a code** — a friend already hosts and gave you a join code.
|
||||
See [joining-a-server.md](joining-a-server.md) for that path.
|
||||
|
||||
## Step 4 — Start the server + tunnel
|
||||
This page is also reachable later via **Re-run setup** in the sidebar,
|
||||
so don't worry about getting it wrong.
|
||||
|
||||
1. Click **Start server** on the Status tab.
|
||||
2. After ~5 seconds you'll see a public URL like
|
||||
`https://abc-def-ghi.trycloudflare.com`. Anyone with that URL + a
|
||||
matching join code can connect to you.
|
||||
### Step 2 — Find your Rec Room install
|
||||
|
||||

|
||||
The wizard auto-detects common manual-install locations (it never
|
||||
touches your Steam library). If detection works you'll see a green
|
||||
"Detected install" banner with the path; otherwise click **Browse…** and
|
||||
point at your `Recroom_Release_Data` folder.
|
||||
|
||||
## Step 5 — Share the join code with your friends
|
||||
The path should look like `…\<install>\Recroom_Release_Data` — the
|
||||
*_Data sibling of `Recroom_Release.exe`. The launcher validates this
|
||||
when you continue.
|
||||
|
||||
1. Click the **Share** tab.
|
||||
2. Click **Copy join code**.
|
||||
3. Paste it to your friend in Discord / iMessage / wherever.
|
||||
### Step 3 — Set up your server
|
||||
|
||||
That's it for hosting. Your friend opens DorkNet, picks "Join a server",
|
||||
pastes the code, and they're in.
|
||||
- **Server name** — what shows up in your join code. Use whatever your
|
||||
friends will recognise ("Adam's Sunday games", "DorkSquad Test", etc.).
|
||||
- **Who can join?** — three options, only one shows extra inputs:
|
||||
- **Friends anywhere · Tunnelto** *(default, recommended)* — the
|
||||
launcher runs a Tunnelto tunnel that gives your server a public
|
||||
`*.tunnelto.me` URL. Works for anyone, anywhere. No router config.
|
||||
- **Tunnelto wildcard base** — advanced. If you've got a wildcard
|
||||
Tunnelto subscription, paste the apex domain. Subdomains like
|
||||
`api.<base>`, `auth.<base>`, etc. get auto-generated.
|
||||
- **Same WiFi only · sslip.io** — bind on your LAN only. Friends must
|
||||
be on the same network. No tunnel, lowest latency.
|
||||
|
||||
### Step 4 — Connect your Photon account
|
||||
|
||||
Photon Cloud runs the in-room realtime sync (positions, voice, room
|
||||
state). DorkNet doesn't ship one — you bring your own free account.
|
||||
|
||||
Click **OPEN WALKTHROUGH** to launch the in-app Photon wizard. It opens
|
||||
your browser to `dashboard.photonengine.com` and walks you through
|
||||
creating two apps (Realtime + Voice). The wizard waits for you to paste
|
||||
the AppIds back in. Voice is optional; without it, voice chat is
|
||||
text-only and you can use Discord on the side.
|
||||
|
||||
If you've already got AppIds from a previous setup, paste them directly
|
||||
into **REALTIME APPID** and **VOICE APPID** in step 4 and skip the
|
||||
walkthrough.
|
||||
|
||||
> For a standalone screenshot-by-screenshot guide to the Photon
|
||||
> dashboard, see [photon-setup.md](photon-setup.md). Useful if you
|
||||
> get stuck mid-walkthrough or want to re-do it later.
|
||||
|
||||
### Step 5 — Done
|
||||
|
||||
Confirmation card. Click **Finish** to enter the main view.
|
||||
|
||||
## The main view
|
||||
|
||||
The launcher's everyday UI:
|
||||
|
||||

|
||||
|
||||
- **Sidebar** (left): **Host a server**, **Join a friend**, **Settings**,
|
||||
**Re-run setup**. The brand-coloured stripe marks the active section.
|
||||
The footer at the bottom shows your server's live status (Idle /
|
||||
Starting / Live / Failed) and the launcher version.
|
||||
- **Header** (top of content): a short eyebrow describing the view,
|
||||
the title, and a **Screen mode** checkbox top-right.
|
||||
- **Content**: two panels — **Server** and **Photon Cloud** — followed
|
||||
by the action bar.
|
||||
|
||||
Everything in the wizard is editable here. If you change anything mid-
|
||||
session, the new values get used the next time you hit Start hosting.
|
||||
|
||||
### Server panel
|
||||
|
||||
- **REC ROOM INSTALL** — same picker as the wizard. The path shows in
|
||||
monospace so you can sanity-check it.
|
||||
- **SERVER NAME · SHOWN TO JOINERS** — text input. Updates the embedded
|
||||
name inside your next join code.
|
||||
- **REC ROOM VERSION TO HOST FOR** — dropdown. Pre-selects the version
|
||||
matching your install. Picking a different version means the launcher
|
||||
will fetch that server build the next time you Start hosting.
|
||||
- **WHO CAN JOIN?** — the same three options as step 3 of the wizard.
|
||||
- **TUNNELTO BASE HOST** — only visible when you pick the wildcard
|
||||
option. Auto-generated otherwise; not needed for the default or LAN
|
||||
modes.
|
||||
|
||||
### Photon Cloud panel
|
||||
|
||||
- **REALTIME APPID** — required. Realtime is the matchmaking + room
|
||||
sync layer. Click the **WALKTHROUGH** button (top-right of the
|
||||
panel) any time you want to re-run the in-app Photon wizard.
|
||||
- **VOICE APPID · OPTIONAL** — if set, voice chat works through Photon
|
||||
Voice. If empty, players use Discord.
|
||||
- **CLOUD REGION** — picks the Photon datacenter. All clients must
|
||||
match. Default is US; change for European / Asian players.
|
||||
|
||||
### Screen mode
|
||||
|
||||
The **Screen mode** checkbox in the header passes `+forcemode:screen`
|
||||
when launching Rec Room, opening the game in 2D desktop mode instead
|
||||
of looking for a VR headset. Useful for testing or for friends who
|
||||
don't have VR.
|
||||
|
||||
## Starting your server
|
||||
|
||||
Hit **START HOSTING** (orange button, bottom of the content panels).
|
||||
The launcher runs through six steps in order:
|
||||
|
||||
1. **Download server** — fetches the matching server build into
|
||||
`%LOCALAPPDATA%\DorkNet\servers\<version>\`. ~50 MB the first time;
|
||||
reused on subsequent launches.
|
||||
2. **Open tunnel** — starts Tunnelto and assigns a public hostname.
|
||||
Skipped in LAN mode.
|
||||
3. **Start server** — boots the server process. SQLite database lives
|
||||
in `%APPDATA%\DorkNet\dorknet.db`.
|
||||
4. **Download patcher** — fetches the client-patcher payload that
|
||||
matches your version.
|
||||
5. **Strip Steam DRM** — only runs if your install is a Steam build
|
||||
(Steamless does the unwrap; original `Recroom_Release.exe` is backed
|
||||
up next to itself).
|
||||
6. **Apply patch** — rewrites the game's network URLs, Photon AppIds,
|
||||
and embedded keys in place.
|
||||
|
||||
Progress steps show inline. If any step fails, the row turns red and
|
||||
**Retry** appears under the steps list (along with **Get help** which
|
||||
opens the troubleshooting docs).
|
||||
|
||||
## Sharing your server
|
||||
|
||||
When step 6 finishes, the join code panel appears with the orange
|
||||
"SERVER LIVE" header.
|
||||
|
||||
You get:
|
||||
|
||||
- a **QR code** on a white tile — scan with a phone to get the join
|
||||
string into your friend's clipboard,
|
||||
- the join code itself in monospace,
|
||||
- three share actions:
|
||||
- **COPY CODE** — copies just the code,
|
||||
- **Copy as message** — wraps it in a friendly Discord-ready blurb
|
||||
that links back to the DorkNet download,
|
||||
- **Email** — opens your mail client with subject + body filled in.
|
||||
|
||||
Your friend opens DorkNet, picks **Join a friend** on first launch
|
||||
(or from the sidebar later), pastes the code, and gets the matching
|
||||
patcher.
|
||||
|
||||
## Launching the game
|
||||
|
||||
Once your server is live, the **LAUNCH REC ROOM** button (teal, sits
|
||||
next to **STOP**) becomes visible. Click it; the launcher starts your
|
||||
patched copy with the right command-line args. Toggle **Screen mode**
|
||||
in the header first if you want desktop play.
|
||||
|
||||
## Stopping the server
|
||||
|
||||
**STOP** kills the server process and the tunnel cleanly, hides the
|
||||
join code panel, and re-enables **START HOSTING**. Your data
|
||||
(`dorknet.db`) persists; relaunching restores everything.
|
||||
|
||||
The launcher also stops the server automatically when you close the
|
||||
window. Don't quit mid-game — your friends will get disconnected.
|
||||
|
||||
## Settings
|
||||
|
||||
Sidebar → **Settings**.
|
||||
|
||||
- **Cache locations** — read-only paths to your state file, server
|
||||
cache, patcher cache, and logs. Useful for "I want to clear the
|
||||
cache" or "where did my db go".
|
||||
- **Dev overrides** — only appears when one of the `DORKNET_LOCAL_*`
|
||||
env vars is set. Lists which overrides are active. Unset the env
|
||||
vars to return to the normal release-fetching mode.
|
||||
- **About** — version, license (AGPL-3.0), and a link to the GitHub
|
||||
repo.
|
||||
|
||||
The sidebar also has a **Re-run setup** entry. It clears the
|
||||
"setup-complete" flag without losing your saved values, so the wizard
|
||||
walks again from step 1 — handy if you want to change modes (host
|
||||
↔ join) or re-do the Photon walkthrough.
|
||||
|
||||
## Switching from host to join
|
||||
|
||||
From the sidebar, click **Join a friend**. Your host settings are
|
||||
preserved (Photon AppIds, server name, etc.) so switching back later
|
||||
picks up where you left off. The SQLite database also stays put.
|
||||
|
||||
See [joining-a-server.md](joining-a-server.md) for the join-side flow.
|
||||
|
||||
---
|
||||
|
||||
## Hosting-mode deep-dive
|
||||
|
||||
| Mode | Tunnel | Public URL | Best for |
|
||||
| --- | --- | --- | --- |
|
||||
| Friends anywhere · Tunnelto | yes | `dorknet-<random>.tunnelto.me` | Default — works for everyone, no setup |
|
||||
| Tunnelto wildcard base | yes | `<your-apex>` + `api.<apex>`, `auth.<apex>`, … | Power users with a wildcard Tunnelto plan |
|
||||
| Same WiFi only · sslip.io | no | `<lan-ip>.sslip.io` | LAN games, lowest latency, no internet exposure |
|
||||
|
||||
Default mode is the right pick for >95% of cases. The wildcard mode is
|
||||
only useful if you've already got a stable apex domain set up. LAN mode
|
||||
is for when everyone's in the same room.
|
||||
|
||||
---
|
||||
|
||||
@@ -80,14 +304,22 @@ DorkNet's authors can't help you obtain the game. Search the web for
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
See [troubleshooting.md](troubleshooting.md) for common issues.
|
||||
See [troubleshooting.md](troubleshooting.md) for the full list.
|
||||
|
||||
The most common ones:
|
||||
- **"This site can't be reached" when joining** — your tunnel URL changed.
|
||||
Get the new one from the Status tab and share it again. (Cloudflare
|
||||
Quick Tunnels give a new URL each session. See
|
||||
[advanced-setup.md](advanced-setup.md) if you want a stable one.)
|
||||
- **Friend can't connect** — they need to use the same Photon region as
|
||||
you. Settings → Photon region. Default is `eu`.
|
||||
- **Game launches but stays on the loading screen** — your friend isn't
|
||||
patched. Make sure they ran the Patch tab in their copy of DorkNet.
|
||||
The most common problems:
|
||||
|
||||
- **Server starts but friend can't connect** — Cloudflare Quick Tunnels
|
||||
rotate the URL on every restart. Re-share the join code if you've
|
||||
restarted hosting.
|
||||
- **"Photon CustomAuth 401" in the server log** — your Realtime AppId
|
||||
on the server doesn't match what the launcher patched into the
|
||||
client. Make sure both sides use the same AppIds.
|
||||
- **Game launches but stays on the loading screen** — your friend
|
||||
didn't run the patcher. Their Join view needs to complete step 3
|
||||
(Apply Patch) before launching Rec Room.
|
||||
- **Game launches but goes straight back to the title screen** — your
|
||||
Photon region setting differs from your friend's. Both clients must
|
||||
match. Set in Photon Cloud → CLOUD REGION.
|
||||
|
||||
Logs live at `%LOCALAPPDATA%\DorkNet\logs\` and capture the full
|
||||
server output for each session.
|
||||
|
||||
Reference in New Issue
Block a user