Hosting a server
Anyone can run a community game server. It is the same runtime as official matches (server-community) with community defaults: guest names, no ranked writes, dumb autofill bots.
Download
From the game: Create Server. Zips are served from R2 (downloads.doorsfps.com), not from the Pages worker (they are larger than the 25 MiB asset cap).
| File | Platform |
|---|---|
doors-server-win.zip | Windows |
doors-server-mac-arm64.zip | Apple Silicon |
doors-server-mac-x64.zip | Intel Mac |
doors-server-linux.zip | Linux |
Each zip unpacks to a doors/ folder: doors-server (or .exe), config.json, and maps/.
Build locally:
cd server-community && deno task compile:allRun
Run the binary. It listens for Socket.IO clients (HTTP/LAN). Share IP:port for a direct join, or register the session so friends connect through proxy.games… (the game host’s community edge). Production relay refuses private/LAN targets.
Friends on the same LAN can join the Vite Network URL + the server port without the proxy.
What community is not
- No official XP, SS, coins, or mystery cards.
- No Clerk usernames. Everyone joins with a guest name.
- WebTransport is off. Official hosts advertise
/wt; community stays Socket.IO. - Token signing keys are not in the downloadable build.
Desktop
desktop/ is an Electron shell that loads https://doorsfps.com (or DOORS_GAME_URL for local). Same rules and servers as the browser. See desktop/README.md for packaging.