> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reskate.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Dedicated servers

> Run a ReSkate dedicated server on Windows or Linux: download it, start it, make yourself an admin, how players find and reach it, and how it keeps itself up to date.

A dedicated server is a ReSkate lobby that runs on its own, without the game or Steam installed. Players find it in the game's server browser, **Multiplayer** > **Servers**, or join with its code. It holds up to 249 players, and runs [plugins](https://docs.reskate.dev/servers/plugins.md) of its own.

## Download

Each [ReSkate release](https://github.com/Dingo-Shenanigans/ReSkate/releases) has the server for both systems:

| System | File |
| - | - |
| Windows | `ReSkateServer-<version>.zip` |
| Linux | `ReSkateServer-Linux-<version>.zip` |

Players and the server need the same ReSkate version. The server [updates itself](#updates) to stay on the latest one.

## Start it

**1. Unpack it**

Unpack the zip into a folder of its own, and keep its files together: the Steam libraries beside the server are how it talks to Steam, and `world-layers.json` lets it set the time of day and other world layers for everyone. On Linux, see [Linux servers](https://docs.reskate.dev/servers/linux.md).

**2. Run it once**

Run `ReSkateServer.exe`. The first run writes `ReSkateServer.json`, its [settings](https://docs.reskate.dev/servers/configuration.md), beside it.

**3. Name it**

Stop the server, set at least `"name"` in the `"server"` section of `ReSkateServer.json`, and start it again.

**4. Make yourself an admin**

Type `role <your SteamID64> admin` in the server's window. In the game, you then have every command: see [roles](https://docs.reskate.dev/servers/roles.md).

On Windows, `ReSkateServer.exe` opens the server's window, where you start the server and type its commands. Start it with `--headless` (or `--cli`, `--no-gui`) to run it in a console instead, as a service or a host panel does.

| Option | What it does |
| - | - |
| `--config <file>` | Use another settings file, such as `--config grom.json`. One that does not exist yet is written with the defaults. Run several servers from one folder this way. |
| `--no-update` | Do not install new releases. |
| `--headless` | Windows: run in a console, without the window. |

Type `help` in the window for a short list of every [command](https://docs.reskate.dev/servers/commands.md), and `status` for the server's name, map, players and join code.

## The server's files

| File | What it is |
| - | - |
| `ReSkateServer.json` | Every setting. The server writes it back whenever an admin changes one, so do not edit it while the server runs. |
| `data/roles.json` | Who may do what: see [roles](https://docs.reskate.dev/servers/roles.md). |
| `data/bans.json` | The server's own bans. |
| `data/words_filtered.txt`, `data/words_blocked.txt` | The server's own chat words: see [chat words](https://docs.reskate.dev/servers/moderation.md#chat-words). |
| `Mods\` | Custom maps and park mods the server offers: see [maps and parks](https://docs.reskate.dev/servers/maps.md). |
| `Plugins\` | The server's [plugins](https://docs.reskate.dev/servers/plugins.md). Their data is kept in `data/plugins`. |
| `ReSkateServer.log` | Everything the server says. |

## How players reach it

Players connect through Steam's relay network, so no ports need opening, and the server never sees a player's address. If you do forward UDP 27015 and 27016 (`port` and `query_port`), the browser also shows the server's ping and players join a little faster. To let players connect straight to the server for the lowest ping, see `use_steam_relay` in [network settings](https://docs.reskate.dev/servers/configuration.md#network).

A server signs in to Steam anonymously, and gets a new Steam ID, so a new join code, every time it starts. The browser always finds it by name.

To keep the same Steam ID, give it a Steam game server login token:

1. Make one at [steamcommunity.com/dev/managegameservers](https://steamcommunity.com/dev/managegameservers) with App ID `3354750`. Each running server needs its own.
2. Put it in `"steam_token"` in the `"server"` section. The server prints its Steam ID when it starts.

> [!WARNING]
>
> Keep the token private: anyone with it can sign in as your server.

The ReSkate team can set the server browser to show only servers with a token. The server says so in its log when that hides it. Players can always join with the code.

`"listed": false` hides the server from the browser; players then need its code.

## Updates

The server keeps itself on the latest ReSkate release. It checks when it starts and every half hour.

* A new version found while players are on is installed as soon as the server is empty. The server restarts on its own, keeping `ReSkateServer.json`, `Mods` and its logs.
* `update` checks and installs straight away; players are told to rejoin.
* `"auto_update": false`, or `--no-update`, turns it off.

## Next

> **[Settings](https://docs.reskate.dev/servers/configuration.md)**
>
> Every setting in ReSkateServer.json.

> **[Maps and parks](https://docs.reskate.dev/servers/maps.md)**
>
> The map pool, rotation, custom maps and park mods.

> **[Roles](https://docs.reskate.dev/servers/roles.md)**
>
> Admins, moderators, VIPs and roles of your own.

> **[Commands](https://docs.reskate.dev/servers/commands.md)**
>
> Everything you can type in the server window.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.