Add installer updater and server CLI

This commit is contained in:
Alexa
2026-05-27 20:54:53 +03:00
parent 4f44505759
commit 7852b410ee
25 changed files with 4153 additions and 703 deletions
+276 -44
View File
@@ -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 &amp; 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.
![first-run welcome screen](images/first-run-welcome.png)
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
![patch tab](images/patch-tab.png)
![mode pick — Host a server vs Join a friend](images/first-run-welcome-join.png)
✅ 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
![status tab running](images/status-running.png)
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:
![host view with Server and Photon panels](images/patch-tab.png)
- **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.