# Game Server Hosting - everything RE:NODE has published

> Instantly deployed servers for 30 games, from Minecraft and Counter-Strike 2 to Arma 3 and Factorio. NVMe storage, full file access and a console that does not hide anything from you.

Generated from https://www.renode.space/game-servers, the live catalogue, the deploy docs, the panel guides and the RE:NODE blog. English. Source of truth for anything that changes: https://www.renode.space/game-servers.

> This file is trimmed to stay under 400,000 characters: every post is listed with its link, but only the newest ones are included in full. Open a post's link for its text.

Contents: what it is, plans and prices, panel how-to, tutorials, rules for the assistant.

## What it is

Every game deploys ready to play: the right runtime, a generated map and its own admin password. Full file manager, SFTP, live console and scheduled tasks on every plan, from $3.

Four titles need a credential the publisher issues to a person (a Steam token, a Steam account, a Klei token or a Cfx.re licence). Their pages say so before you pay.

The panel runs standard Pterodactyl eggs, so almost anything with a dedicated server can be added. Ask in Discord or open a ticket and tell us which one - most requests are live within a day or two.

Each game has its own file with its plans and every tutorial written about it:

- [Minecraft](https://www.renode.space/ai/game-servers/minecraft.md)
- [Counter-Strike 2](https://www.renode.space/ai/game-servers/counter-strike-2.md)
- [FiveM](https://www.renode.space/ai/game-servers/fivem.md)
- [Palworld](https://www.renode.space/ai/game-servers/palworld.md)
- [Valheim](https://www.renode.space/ai/game-servers/valheim.md)
- [Project Zomboid](https://www.renode.space/ai/game-servers/project-zomboid.md)
- [7 Days to Die](https://www.renode.space/ai/game-servers/7-days-to-die.md)
- [Unturned](https://www.renode.space/ai/game-servers/unturned.md)
- [Terraria](https://www.renode.space/ai/game-servers/terraria.md)
- [Garry's Mod](https://www.renode.space/ai/game-servers/garrys-mod.md)
- [DayZ](https://www.renode.space/ai/game-servers/dayz.md)
- [Factorio](https://www.renode.space/ai/game-servers/factorio.md)
- [Satisfactory](https://www.renode.space/ai/game-servers/satisfactory.md)
- [Team Fortress 2](https://www.renode.space/ai/game-servers/team-fortress-2.md)
- [Counter-Strike 1.6](https://www.renode.space/ai/game-servers/counter-strike-1-6.md)
- [Arma 3](https://www.renode.space/ai/game-servers/arma-3.md)
- [Insurgency: Sandstorm](https://www.renode.space/ai/game-servers/insurgency-sandstorm.md)
- [SCP: Secret Laboratory](https://www.renode.space/ai/game-servers/scp-secret-laboratory.md)
- [The Isle](https://www.renode.space/ai/game-servers/the-isle.md)
- [Sons of the Forest](https://www.renode.space/ai/game-servers/sons-of-the-forest.md)
- [The Forest](https://www.renode.space/ai/game-servers/the-forest.md)
- [Killing Floor 2](https://www.renode.space/ai/game-servers/killing-floor-2.md)
- [Don't Starve Together](https://www.renode.space/ai/game-servers/dont-starve-together.md)
- [Abiotic Factor](https://www.renode.space/ai/game-servers/abiotic-factor.md)
- [RimWorld](https://www.renode.space/ai/game-servers/rimworld.md)
- [BeamMP (BeamNG.drive)](https://www.renode.space/ai/game-servers/beammp.md)
- [The Front](https://www.renode.space/ai/game-servers/the-front.md)
- [Euro Truck Simulator 2](https://www.renode.space/ai/game-servers/euro-truck-simulator-2.md)
- [Assetto Corsa](https://www.renode.space/ai/game-servers/assetto-corsa.md)
- [Skyrim Together](https://www.renode.space/ai/game-servers/skyrim-together.md)

### General questions

### Getting started

**How quickly is my server ready?**

Game, app, web and database servers are created the moment payment clears, usually inside a minute. The game or runtime is installed and started for you, and the console is live in your browser while it happens. VDS and dedicated servers are prepared by hand and delivered within 24 hours.

**Do I need to configure anything before it works?**

No. The install runs, the configuration is written, and admin passwords are generated for your server rather than shared with everybody else's. The exception is four games whose publisher issues a credential to a person - those say so on the shop before you pay, and ask for it on a Setup tab afterwards.

**Which games need a key from me?**

Counter-Strike 2 needs a Steam game-server token, Don't Starve Together a Klei cluster token, FiveM a Cfx.re licence, and DayZ, Project Zomboid, 7 Days to Die, Arma 3 and Unturned need a Steam account or token of your own. We cannot create any of them and we never share one between customers. Your server is built immediately and the installation waits until you paste yours in.

**Can I try before buying?**

There is no free tier. The entry plans start at $1.50 a month precisely so that trying something costs about as much as a coffee.

**Can Claude or ChatGPT set my project up?**

Yes, and the panel gives it what it needs. On a server's Console tab, pick a purpose and press Connect AI: the panel copies a private link with the runtime, the port the code must read from SERVER_PORT, the code path, the GitHub branch, the databases and the limits. Paste it into Claude, ChatGPT or any assistant that can open links; the same link followed by /mcp works as an MCP server URL. It stops by itself after 7 days unused. You can also connect Claude, or any MCP client, to your whole account at https://panel.renode.space/api/client/mcp. Linked repositories get a pre-flight check that shows what will break before a deploy, no AI needed. No password or token is ever shown to the assistant - the AI setup page explains it all.

### Running the server

**Do I get full file access?**

Yes - a complete file manager with an in-browser editor, plus SFTP credentials. There is no plan on which the file manager is disabled or read-only.

**Can I install mods and plugins?**

Yes. Upload them through the file manager or SFTP, or use the game's own workshop support where it has any. Nothing here whitelists which mods you are allowed to run.

**Can other people help me run it?**

Yes. Invite subusers with granular permissions - console only, files only, no billing - or build a team with a role and grant it access to several servers at once. Permissions are a union, so nobody loses access they were given elsewhere.

**What happens if my server runs out of memory?**

New servers are configured so the kernel stops the container and it restarts clean, rather than swapping and dragging the whole machine down. If a server restarts repeatedly we warn you on the server page and open a support ticket before anything is suspended - you get told twice before it stops.

**Is the CPU limit a hard limit?**

Yes, and it cannot be breached: the container is throttled to the share you bought. A server sitting at 100% is slow, not broken, and is never suspended for it.

### Backups and safety

**Are backups included?**

Every plan carries backup slots - two on the entry tiers, more further up. Take them on demand or on a schedule, and restore with a button rather than a support ticket.

**Where are backups stored?**

Off the machine they protect. A backup sitting on the same disk as the thing it is insuring covers you deleting your world and covers nothing at all about the disk failing.

**What happens to my backups if I cancel?**

Deleting a server deletes its backups with it, deliberately and including locked ones. Download anything you want to keep first - the panel lets you.

### Billing

**How do I pay?**

PayPal, card, your wallet balance, or bank transfer. Every method produces a proper invoice you can download or print, with our details and the bank account on it while it is unpaid.

**Can I pay in Georgian lari?**

The panel displays every figure in lari at the National Bank of Georgia's published rate, marks converted figures as approximate, and always shows the amount that will actually be charged. Invoices stay in the currency they were raised in, because an invoice is a demand for a specific amount.

**What happens when my subscription is due?**

An invoice is raised and emailed to you seven days before expiry, and again on the day. Paying it settles that same document rather than raising a second one.

**Can I upgrade or downgrade later?**

Yes, and it does not rebuild anything. Changing plan changes the limits on the container you already have - your world, files and database stay exactly where they are.

**Do you offer refunds?**

There is no automatic refund button. If a server cannot do what it was sold to do, open a ticket and we will sort it out - including refunding you. We would rather fix the plan than argue about the policy.

### Support and the honest bits

**How do I get help?**

Open a ticket from the panel - it reaches every member of staff and every administrator, not a queue aimed at nobody in particular. Attach a screenshot if it helps; attachments are private to your ticket rather than sitting at a guessable public URL. Discord is there for faster, less formal questions.

**Where are the servers?**

Germany, on hardware we run. That is one location: if you need players in another region on a low ping, say so before buying rather than after.

**Is there an uptime guarantee?**

We measure node availability every five minutes and report it in the panel rather than printing a number with four decimal places we have not earned. If something is down you will usually hear it from us first.

**Who actually runs this?**

A small team that writes the panel, the shop and the automation itself. When something is wrong the fix is a code change, which is why the list of things wrong keeps getting shorter.

## Plans and prices

Read from the live catalogue at 2026-10-15 22:30 UTC. Prices are in US dollars per month; checkout also takes Georgian lari and bills for 1, 3, 6, 12 or 24 months. Prices change - re-check on https://www.renode.space/game-servers or in the panel shop at https://panel.renode.space before quoting one.

- Minecraft: from $5/month, 5 plans, 2 GB-14 GB memory. Every plan: https://www.renode.space/ai/game-servers/minecraft.md
- Counter-Strike 2: from $7/month, 5 plans, 1 GB-6 GB memory. Every plan: https://www.renode.space/ai/game-servers/counter-strike-2.md
- FiveM: from $9/month, 5 plans, 2 GB-12 GB memory. Every plan: https://www.renode.space/ai/game-servers/fivem.md
- Palworld: from $19/month, 4 plans, 8 GB-14 GB memory. Every plan: https://www.renode.space/ai/game-servers/palworld.md
- Valheim: from $6/month, 5 plans, 2 GB-8 GB memory. Every plan: https://www.renode.space/ai/game-servers/valheim.md
- Project Zomboid: from $9/month, 5 plans, 3 GB-10 GB memory. Every plan: https://www.renode.space/ai/game-servers/project-zomboid.md
- 7 Days to Die: from $20/month, 3 plans, 8 GB-14 GB memory. Every plan: https://www.renode.space/ai/game-servers/7-days-to-die.md
- Unturned: from $6/month, 5 plans, 2 GB-8 GB memory. Every plan: https://www.renode.space/ai/game-servers/unturned.md
- Terraria: from $3/month, 5 plans, 512 MB-4 GB memory. Every plan: https://www.renode.space/ai/game-servers/terraria.md
- Garry's Mod: from $5/month, 5 plans, 1 GB-6 GB memory. Every plan: https://www.renode.space/ai/game-servers/garrys-mod.md
- DayZ: from $19/month, 4 plans, 6 GB-12 GB memory. Every plan: https://www.renode.space/ai/game-servers/dayz.md
- Factorio: from $5/month, 5 plans, 1 GB-6 GB memory. Every plan: https://www.renode.space/ai/game-servers/factorio.md
- Satisfactory: from $21/month, 4 plans, 8 GB-14 GB memory. Every plan: https://www.renode.space/ai/game-servers/satisfactory.md
- Team Fortress 2: from $6/month, 5 plans, 2 GB-6 GB memory. Every plan: https://www.renode.space/ai/game-servers/team-fortress-2.md
- Counter-Strike 1.6: from $3/month, 5 plans, 512 MB-4 GB memory. Every plan: https://www.renode.space/ai/game-servers/counter-strike-1-6.md
- Arma 3: from $12/month, 5 plans, 4 GB-12 GB memory. Every plan: https://www.renode.space/ai/game-servers/arma-3.md
- Insurgency: Sandstorm: from $9/month, 5 plans, 2 GB-6 GB memory. Every plan: https://www.renode.space/ai/game-servers/insurgency-sandstorm.md
- SCP: Secret Laboratory: from $8/month, 5 plans, 4 GB-10 GB memory. Every plan: https://www.renode.space/ai/game-servers/scp-secret-laboratory.md
- The Isle: from $16/month, 5 plans, 6 GB-14 GB memory. Every plan: https://www.renode.space/ai/game-servers/the-isle.md
- Sons of the Forest: from $20/month, 3 plans, 8 GB-12 GB memory. Every plan: https://www.renode.space/ai/game-servers/sons-of-the-forest.md
- The Forest: from $8/month, 5 plans, 3 GB-8 GB memory. Every plan: https://www.renode.space/ai/game-servers/the-forest.md
- Killing Floor 2: from $8/month, 5 plans, 3 GB-8 GB memory. Every plan: https://www.renode.space/ai/game-servers/killing-floor-2.md
- Don't Starve Together: from $5/month, 5 plans, 1 GB-6 GB memory. Every plan: https://www.renode.space/ai/game-servers/dont-starve-together.md
- Abiotic Factor: from $10/month, 5 plans, 4 GB-12 GB memory. Every plan: https://www.renode.space/ai/game-servers/abiotic-factor.md
- RimWorld: from $5/month, 5 plans, 1 GB-6 GB memory. Every plan: https://www.renode.space/ai/game-servers/rimworld.md
- BeamMP (BeamNG.drive): from $6/month, 5 plans, 2 GB-8 GB memory. Every plan: https://www.renode.space/ai/game-servers/beammp.md
- The Front: from $15/month, 5 plans, 6 GB-14 GB memory. Every plan: https://www.renode.space/ai/game-servers/the-front.md
- Euro Truck Simulator 2: from $5/month, 5 plans, 1 GB-6 GB memory. Every plan: https://www.renode.space/ai/game-servers/euro-truck-simulator-2.md
- Assetto Corsa: from $8/month, 5 plans, 2 GB-8 GB memory. Every plan: https://www.renode.space/ai/game-servers/assetto-corsa.md
- Skyrim Together: from $5/month, 5 plans, 1 GB-6 GB memory. Every plan: https://www.renode.space/ai/game-servers/skyrim-together.md

## Panel how-to

From the panel guides at https://www.renode.space/guides.

### Ordering a server

Ordering takes about a minute and happens in three screens: find what you want to run, pick a plan, and pay. Pay by card or PayPal and the server is set up the moment the payment goes through - you can watch it install in its console.

- Takes: About a minute
- Pay with: Card, PayPal or bank transfer
- Billed for: 1, 3, 6, 12 or 24 months
- Prices in: US dollars or Georgian lari

Open the shop and find what you want to run:

1. Sign in to the panel and open the shop. The tabs along the top are the product lines: VDS, Game Servers, App Hosting, Web Hosting and Databases.
2. Find your game - there is a search box - and press View plans. The card already shows the lowest price and the range of memory on offer.

Compare the plans and pick one:

3. Every plan lists its memory, CPU and NVMe storage, roughly how many players it suits, and what is included - updates, backup slots, file and SFTP access.
4. Press Get Started on the one you want. Not sure? Start smaller: you can move to a bigger plan later without losing your world.

Choose how long, then pay:

5. Pick a billing period - 1, 3, 6, 12 or 24 months. The total for the whole period is shown before you pay, so there are no surprises.
6. Pay with PayPal, or press Debit or Credit Card - paying by card does not need a PayPal account. The server is created as soon as the payment completes.

Paying by bank transfer instead: Prefer to pay from your bank? Choose bank transfer at checkout. The server is set up once the payment arrives, usually the next working day.

1. Switch the payment tab to Bank transfer. The account details for Bank of Georgia and TBC Bank appear, each with a Copy button.
2. Press Order & get invoice, then pay that invoice from your banking app, quoting the reference on it.

After you pay:

- The server appears under My Servers and installs itself. Open it to watch the install in the console.
- Your orders, invoices and subscriptions are under Finances in the side menu.
- Stuck at any step? Open Support in the side menu and raise a ticket.

### The console

Live output, a command line, power controls and the resource graphs. It is the server's own output rather than a filtered summary - if the game prints it, you see it.

- Start, stop, restart and kill, with the current state always visible.
- Command history with the arrow keys, and tab completion for common commands.
- Web-server noise - the internet knocking on doors that are not there - is folded behind a count you can switch off. A real error always prints.
- Graphs for memory, CPU and disk against your limits, so whether it is the plan or the mod is answerable.

### Files and SFTP

A complete file manager with an editor in the browser, plus SFTP credentials for the tools you already use. Upload a modpack, fix a config, pull a world down to your machine.

- Drag files in, or upload a folder. Archives can be unpacked in place.
- Edit any text file with syntax highlighting and save without downloading it.
- PDFs and images preview in the panel rather than downloading first.
- SFTP on the same credentials - use FileZilla, WinSCP or your editor's remote mode.

### Backups

Take one before you try something. Restore it when the something goes wrong. Lock the ones that matter so they are not rotated away.

- Slots on every plan - two on the entry tiers, more further up.
- Take one on demand, or on a schedule you set.
- Download any backup to your own machine.

> Important: Deleting a server deletes its backups, including the locked ones. A lock stops you removing a backup by accident; it is not a claim on the disk after the server is gone. Download what you want to keep before you cancel.

### Subusers, roles and teams

Give somebody the console without giving them your files, or the files without your billing. Three separate ideas, kept apart deliberately.

- A role holds permissions - what may be done.
- A team holds people.
- A grant joins a team to a server with a role, so adding a moderator to the team gives them the same access everywhere at once.
- Invite by link, by a join code, or by email address - and require approval on the codes if you would rather vet people.
- Access can be time-boxed, and expiry stops working immediately rather than overnight.

### Scheduled tasks

Restart nightly, back up before the restart, announce it to players first. Tasks run in order with delays between them, so a schedule can be a small routine rather than one action.

- Send a console command - a warning to players, a save, a world flush.
- Take a backup.
- Power actions: start, stop, restart.

### Games that need a key from you

A few games want a credential their publisher issues to a person - a Steam game-server token, a Steam account that owns the server files, a Klei cluster token, a Cfx.re licence. We cannot create one and we never share one between customers.

> Note: Those games say so on the shop before you pay. Your server is built immediately, and the game installation is held until you paste the value into a Setup tab, because installing without it produces a server with no game files in it and no explanation.

## Tutorials

148 posts, newest first. The newest 18 follow in full after the list; open the link for the rest.

- [SteamCMD errors and fixes: a reference for server admins](https://www.renode.space/blog/steamcmd-errors-and-fixes) (2026-10-15): What SteamCMD errors really mean - Missing configuration, No subscription, Disk write failure, state 0x202 and 0x602, timeouts, 32-bit libraries - and how to fix each.
- [SteamCMD login and Steam Guard: anonymous vs account](https://www.renode.space/blog/steamcmd-login-and-steam-guard) (2026-10-15): When SteamCMD needs a real Steam login, how Steam Guard codes and cached credentials work, and how to use a spare account so a server never holds your main one.
- [SteamCMD on Windows: install, scripts and updates](https://www.renode.space/blog/steamcmd-on-windows) (2026-10-15): Set up SteamCMD on Windows: the first-run self-update, force_install_dir, batch files with +runscript, Task Scheduler updates and Defender exclusions.
- [Choosing a hosting provider: what to look at, from the inside](https://www.renode.space/blog/choosing-a-hosting-provider-from-the-inside) (2026-10-14): What matters when picking a game server, VDS or app host, from the operator's side: CPU, 'unlimited', status pages, backups, access, support and red flags.
- [Game server backups to S3: off-site world copies on a schedule](https://www.renode.space/blog/game-server-backups-to-s3) (2026-10-08): Copy game worlds and saves to S3 storage every night with rclone or restic: what to copy, getting a clean save, keeping history, pruning, and restoring.
- [Announcing server maintenance to players](https://www.renode.space/blog/announcing-maintenance-and-downtime) (2026-10-07): When and how to warn players about game server maintenance, in-game countdown commands, automated restart warnings, and what to post during and after an outage.
- [ARK cluster setup and cross-server transfers](https://www.renode.space/blog/ark-cluster-and-cross-server-transfers) (2026-10-07): How an ARK: Survival Ascended cluster works: the cluster ID, the shared directory, upload and download rules, transfer limits, and what breaks between maps.
- [ARK Ascended mods on a server via CurseForge](https://www.renode.space/blog/ark-mods-curseforge-on-server) (2026-10-07): Add CurseForge mods to an ARK: Survival Ascended server: finding project IDs, the -mods list, map mods, mod settings, updates, and removing a mod safely.
- [ARK Ascended server ini settings](https://www.renode.space/blog/ark-survival-ascended-game-ini-settings) (2026-10-07): Which ARK: Survival Ascended settings belong in GameUserSettings.ini and which in Game.ini, with rates, breeding, imprinting and stat multipliers explained.
- [Arma Reforger server: config.json and mods](https://www.renode.space/blog/arma-reforger-dedicated-server) (2026-10-07): Set up an Arma Reforger dedicated server: SteamCMD install, every config.json block, scenario IDs, Workshop mods, crossplay, ports, admins and RCON.
- [Astroneer dedicated server setup and ports](https://www.renode.space/blog/astroneer-dedicated-server) (2026-10-07): Run an Astroneer dedicated server: install, every key in AstroServerSettings.ini, port 8777, PublicIP, owner and whitelist, moving a save and fixing join errors.
- [Automating game server updates safely](https://www.renode.space/blog/automating-game-server-updates) (2026-10-07): Update on restart, scheduled SteamCMD updates and validate explained: which servers can update themselves safely, which must not, and how to stage the rest.
- [Barotrauma dedicated server and mods](https://www.renode.space/blog/barotrauma-dedicated-server) (2026-10-07): Run a Barotrauma dedicated server: install, serversettings.xml, ports 27015 and 27016, permissions and ranks, console commands, LocalMods and campaign saves.
- [BattlEye and Easy Anti-Cheat on servers](https://www.renode.space/blog/battleye-and-easy-anti-cheat-on-servers) (2026-10-07): What BattlEye and Easy Anti-Cheat actually do on a dedicated server, which switches and files belong to you, how bans work, and what neither will ever catch.
- [Cheapest way to host a server for friends](https://www.renode.space/blog/cheapest-way-to-host-a-server-for-friends) (2026-10-07): Honest options for hosting a server for friends: in-game hosting, free hosts, a spare PC at home, Realms and small rented plans, with real costs and catches.
- [Choosing a game for your group's server](https://www.renode.space/blog/choosing-a-game-for-your-server) (2026-10-07): Which game suits your group's server: co-op crews, persistent communities, competitive and roleplay players, with player caps, admin effort and costs.
- [Conan Exiles server: settings, mods, purge](https://www.renode.space/blog/conan-exiles-dedicated-server) (2026-10-07): Set up a Conan Exiles dedicated server: ServerSettings.ini, Engine.ini and Game.ini, ports, admin and RCON, Workshop mods with modlist.txt, purge and saves.
- [Core Keeper dedicated server: setup and saves](https://www.renode.space/blog/core-keeper-dedicated-server) (2026-10-07): Set up a Core Keeper dedicated server: SteamCMD install, ServerConfig.json and launch flags, Game ID or direct connect, world modes, saves and backups.
- [Cross-play on dedicated game servers](https://www.renode.space/blog/cross-play-dedicated-servers-explained) (2026-10-07): Which games let PC, Xbox and PlayStation players share a dedicated server, how console players connect, and what cross-play costs in mods, admin and latency.
- [Discord bots for game server admins](https://www.renode.space/blog/discord-bots-for-game-server-admin) (2026-10-07): Which Discord integrations game servers actually use, how to give a bot console access without handing Discord your RCON, and a small slash-command admin bot.
- [Eco server setup: configs and world settings](https://www.renode.space/blog/eco-server-guide) (2026-10-07): Run an Eco dedicated server: Network.eco and the other config files, world size, meteor timing, admins, the web UI on port 3001, mods in UserCode and saves.
- [Enshrouded dedicated server: config and ports](https://www.renode.space/blog/enshrouded-dedicated-server-guide) (2026-10-07): Set up an Enshrouded dedicated server: enshrouded_server.json key by key, user groups and passwords, ports, moving a local world in, and keeping saves safe.
- [First game server checklist, start to finish](https://www.renode.space/blog/first-game-server-checklist) (2026-10-07): A beginner's checklist for a first game server: pick game and size, secure the panel, set passwords and admins, test the connection, back up, schedule restarts, invite.
- [Game server admin account security](https://www.renode.space/blog/game-server-admin-account-security) (2026-10-07): How each game decides who is an admin, why shared admin passwords and name-based admins leak, and how to give staff power you can take back cleanly.
- [Game server admin plugins compared](https://www.renode.space/blog/game-server-admin-plugins-compared) (2026-10-07): Which admin tool each game uses - SourceMod, AMX Mod X, CounterStrikeSharp, ULX and SAM, LuckPerms, Oxide, txAdmin, TShock - what each gives you and what vanilla lacks.
- [Game server autosave: how often to save](https://www.renode.space/blog/game-server-autosave-intervals) (2026-10-07): Autosave settings for Valheim, Minecraft, Rust, Palworld, ARK, Factorio and more, what each save costs in lag, how much progress a crash loses, and how to set them.
- [Game server backup strategy, game by game](https://www.renode.space/blog/game-server-backup-strategy) (2026-10-07): Which folders hold the world in each popular game, how to get a consistent copy, how many backups to keep, and where the off-site copy should live.
- [Game server bandwidth per player, by game](https://www.renode.space/blog/game-server-bandwidth-per-player) (2026-10-07): How much upload each player costs on Minecraft, Source games, Valheim, Arma 3, Factorio and more, the settings that change it, and how to size and measure server traffic.
- [Game server config formats: ini, json, xml](https://www.renode.space/blog/game-server-config-file-formats) (2026-10-07): How to edit every game server config format - ini, json, yaml, xml, cfg, lua and toml - the syntax rules that break servers, and how to check a file first.
- [Game server CPU: clock speed vs cores](https://www.renode.space/blog/game-server-cpu-requirements) (2026-10-07): Why one fast core decides how most game servers run, how many vCPU each game really uses, what a CPU percentage means and how to prove the CPU is the limit.
- [Game server crash loops: find the bad mod](https://www.renode.space/blog/game-server-crash-loops-diagnosis) (2026-10-07): How to read a game server crash loop, tell a broken mod from a corrupt save or a bad config, and bisect a mod folder to the one file at fault in a few starts.
- [Discord for a game server: channels and roles](https://www.renode.space/blog/game-server-discord-setup) (2026-10-07): Set up a Discord for your game server: a channel layout, roles and permission overrides, verification against raids, bots, and linking roles to the game.
- [Game server disk full: what to delete](https://www.renode.space/blog/game-server-disk-space-full) (2026-10-07): What fills a game server's disk - logs, local backups, crash dumps, map tiles, Workshop caches - how to find the biggest folders, and what is safe to delete.
- [Game server events and tournaments](https://www.renode.space/blog/game-server-events-and-tournaments) (2026-10-07): How to run events and tournaments on a game server: picking a format, scheduling across timezones, preparing the server, rules, prizes and the night itself.
- [Game server exploits and crash bugs](https://www.renode.space/blog/game-server-exploits-and-crash-bugs) (2026-10-07): How crash exploits, dupes and remote code bugs reach game servers, what Log4Shell taught Minecraft owners, and the patches, limits and settings that blunt them.
- [Game server file permissions and ownership](https://www.renode.space/blog/game-server-file-permissions-and-ownership) (2026-10-07): Why a game server says Permission denied: Linux owners and modes, the executable bit, read-only configs, and which of your staff can touch which files.
- [Game server for a school or club](https://www.renode.space/blog/game-server-for-a-school-or-club) (2026-10-07): How to run a game server for a school, club or youth group: choosing a game, whitelists, chat and moderation, staff access, schedules, data and budgeting.
- [Game server glossary in plain English](https://www.renode.space/blog/game-server-glossary) (2026-10-07): Plain-English definitions of game server terms: dedicated, headless, tick rate, TPS, query port, RCON, GSLT, SteamCMD, egg, allocation, wipe, whitelist, OOM and more.
- [Game server listing and voting sites](https://www.renode.space/blog/game-server-listing-and-voting-sites) (2026-10-07): How server listing and voting sites work, getting your server polled correctly, NuVotifier vote rewards on Minecraft, list rules and paid slots worth skipping.
- [Game server logs: where and what to search](https://www.renode.space/blog/game-server-logs-explained) (2026-10-07): Where Minecraft, Source, Unity, Unreal, DayZ, Zomboid and other game servers write their logs, which files matter, and the exact strings worth searching for.
- [Game server map rotation and custom maps](https://www.renode.space/blog/game-server-maps-and-map-rotation) (2026-10-07): How map rotation works across game servers: mapcycle.txt, CS2 map groups, Squad layers, Arma missions, KF2 and Sandstorm cycles, map votes and custom map downloads.
- [Game server memory leaks: find and fix them](https://www.renode.space/blog/game-server-memory-leaks) (2026-10-07): How to tell a real memory leak from world growth and a full heap, find the plugin or mod behind it in Java, Lua, Unity and Source servers, and contain it meanwhile.
- [Game server ping by region from Germany](https://www.renode.space/blog/game-server-ping-by-region) (2026-10-07): Typical ping from each part of the world to a game server in Germany, what that feels like in shooters, survival and racing games, and how to measure it fairly.
- [Game server privacy: player data and GDPR](https://www.renode.space/blog/game-server-privacy-and-player-data) (2026-10-07): What personal data a game server collects, when GDPR applies to a community server, how long to keep IP logs, and how to answer access and deletion requests.
- [Game server save files: where worlds live](https://www.renode.space/blog/game-server-save-files-explained) (2026-10-07): Where dedicated servers keep worlds and player data for Minecraft, Valheim, Palworld, 7 Days to Die, Zomboid, Satisfactory and more, and how to copy them safely.
- [Game server startup parameters by game](https://www.renode.space/blog/game-server-startup-parameters-explained) (2026-10-07): What launch flags do on a game server: -flag, +convar and ?option styles, panel startup variables, and real command lines for Source, Unity, Unreal and Java.
- [Game server update day checklist](https://www.renode.space/blog/game-server-update-day-checklist) (2026-10-07): A checklist for the day a game patches: backup first, check mods and plugins, update with SteamCMD, test, tell players, and roll back cleanly if it breaks.
- [Game server version pinning and rollbacks](https://www.renode.space/blog/game-server-version-pinning-and-rollbacks) (2026-10-07): How to keep a game server on a known build, use Steam beta branches, fetch an older depot, and roll a server and its world back when an update goes wrong.
- [Game server whitelist applications](https://www.renode.space/blog/game-server-whitelist-applications) (2026-10-07): Run whitelist applications for a game server: when to use one, questions that filter, vetting applicants, whitelist commands per game and handling data.
- [Whitelist vs password for a private server](https://www.renode.space/blog/game-server-whitelist-vs-password) (2026-10-07): Password, whitelist, hidden listing or accounts: how each way of keeping a game server private works, its weak spots, and the exact settings in popular games.
- [Global ban lists across game servers](https://www.renode.space/blog/global-ban-systems-for-communities) (2026-10-07): How shared ban systems work for a network of servers or between communities: SourceBans++, Minecraft ban plugins, BattleMetrics lists, the database and the risks.
- [Handling cheaters: evidence and ban lists](https://www.renode.space/blog/handling-cheaters-and-ban-lists) (2026-10-07): How to confirm a cheater before you act, record evidence that survives an appeal, ban by the right identifier in each game, and keep ban lists that last.
- [Holdfast: Nations At War server config](https://www.renode.space/blog/holdfast-server-config-guide) (2026-10-07): Set up a Holdfast: Nations At War server: install, the serverconfig file, ports, map rotation blocks, game modes, map voting, mods, auto-restarts and rc admin.
- [Rust server RAM: sizing by map and wipe](https://www.renode.space/blog/how-much-ram-does-a-rust-server-need) (2026-10-07): Real Rust server memory figures by world size and population, why usage peaks the day before a wipe, what plugins add, and how to stop a map generation crash.
- [ARK server RAM: Ascended and Evolved](https://www.renode.space/blog/how-much-ram-does-an-ark-server-need) (2026-10-07): ARK server memory by map, tribe count and mods for Survival Ascended and Evolved, the ini settings that set the ceiling, clusters, and why saves freeze.
- [Game server storage: disk space by game](https://www.renode.space/blog/how-much-storage-does-a-game-server-need) (2026-10-07): How much disk a game server really needs: install sizes by game, how saves, mods, logs and backups grow, the free space updates need, and how to find what filled it.
- [Icarus dedicated server setup and prospects](https://www.renode.space/blog/icarus-dedicated-server) (2026-10-07): Run an Icarus dedicated server: install, every ServerSettings.ini key, the 5-minute auto-shutdown, creating and resuming prospects, ports 17777 and 27015, admin commands.
- [LAN party server setup: network and games](https://www.renode.space/blog/lan-party-server-setup) (2026-10-07): How to set up servers for a LAN party: wired network layout, a local server box vs a hosted server, LAN mode per game, Steam download caching and the usual failures.
- [Left 4 Dead 2 addons and SourceMod](https://www.renode.space/blog/left-4-dead-2-addons-and-sourcemod) (2026-10-07): Install VPK addons and custom campaigns on an L4D2 server, fix addon conflicts, set up SourceMod with left4dhooks, and run 8 or more survivors without breaking it.
- [Linux vs Windows for game servers](https://www.renode.space/blog/linux-vs-windows-game-servers) (2026-10-07): Which dedicated servers ship Linux builds, which are Windows-only, and the real differences: memory, cost, case-sensitive paths, mods with DLLs and shutdown.
- [Malicious plugins and mods on game servers](https://www.renode.space/blog/malicious-plugins-and-mods) (2026-10-07): The four routes backdoored plugins take onto servers, what the code looks like in Minecraft, Garry's Mod and FiveM, how to search for it, and what to do when you find it.
- [Mod load order on game servers](https://www.renode.space/blog/mod-load-order-explained) (2026-10-07): How mod load order, dependencies and conflicts work on game servers - Minecraft, Arma and DayZ, 7 Days to Die, Factorio, RimWorld, Zomboid, ARK and FiveM.
- [Mordhau dedicated server: config, maps, mods](https://www.renode.space/blog/mordhau-dedicated-server) (2026-10-07): Set up a Mordhau dedicated server: SteamCMD install, Game.ini keys, map rotation, the three ports, admins by PlayFab ID, admin commands, mod.io mods and tick rate.
- [NAT and CGNAT: why home game servers fail](https://www.renode.space/blog/nat-and-cgnat-for-game-hosts) (2026-10-07): How NAT, CGNAT and DS-Lite block inbound connections, what NAT types and hole punching mean for co-op hosting, and the real ways out when you cannot port forward.
- [OpenTTD server: openttd.cfg, network, AI](https://www.renode.space/blog/openttd-server-guide) (2026-10-07): Run an OpenTTD dedicated server: openttd -D, the network settings in openttd.cfg, invite codes, ports 3979 and 3977, rcon, AI companies, NewGRFs and autosaves.
- [Port forwarding vs hosted game servers](https://www.renode.space/blog/port-forwarding-vs-hosted-servers) (2026-10-07): What a port forward really does, the router features that break it at home, and what changes on the network when the server lives in a datacentre instead.
- [Pterodactyl eggs for game servers](https://www.renode.space/blog/pterodactyl-eggs-for-game-servers) (2026-10-07): How a Pterodactyl egg works field by field: Docker images, the startup line, variables and rules, config parsers, the install script, done detection and stop.
- [Query ports and A2S: server status queries](https://www.renode.space/blog/query-ports-and-a2s) (2026-10-07): What the query port answers, how Valve's A2S protocol and its challenge work, how to query any Steam server from a script, and why a query fails while the game works.
- [Game server CPU: what 100% on one thread means](https://www.renode.space/blog/reading-game-server-cpu-usage-single-thread) (2026-10-07): Why a game server lags at 100% CPU on a multi-core plan, how panels count CPU per core, and how to find the main thread, throttling and tick time yourself.
- [RedM server setup: server.cfg and txAdmin](https://www.renode.space/blog/redm-server-setup-guide) (2026-10-07): Set up a RedM server for Red Dead Redemption 2: the same FXServer as FiveM, gamename rdr3, game builds, resource manifests, ports, txAdmin and sizing.
- [RedM roleplay frameworks: VORP vs RSG](https://www.renode.space/blog/redm-vorp-and-rsg-frameworks) (2026-10-07): VORP and RSG compared for RedM roleplay: how each is built, database and oxmysql setup, resource load order, ecosystem, performance and which to start with.
- [A modded server for friends, minus the hassle](https://www.renode.space/blog/running-a-modded-server-for-friends) (2026-10-07): Run a small modded server for friends: pick a pack or list, get everyone on identical mods, size the memory, install, update without breaking the world.
- [Running a test game server beside production](https://www.renode.space/blog/running-a-test-server-beside-production) (2026-10-07): How to run a second game server for testing updates, mods and configs: what to copy, what must differ, sizing it cheaply, and promoting changes safely.
- [Rust admin commands: bans, teleport, spectate](https://www.renode.space/blog/rust-admin-commands) (2026-10-07): The Rust admin commands you will actually use - owner and moderator grants, kicks and bans, teleport, spectate, noclip, items - and how to make them stick.
- [Rust Carbon vs Oxide: switching frameworks](https://www.renode.space/blog/rust-carbon-mod-framework) (2026-10-07): How the Carbon mod framework for Rust differs from Oxide, which plugins carry over, how to install it on Windows or Linux, and how to switch safely.
- [Rust custom maps, world size and seeds](https://www.renode.space/blog/rust-custom-maps-and-procedural-size) (2026-10-07): Pick a Rust world size and seed for your population, preview maps before wipe day, and host a custom .map file with server.levelurl that downloads cleanly.
- [Rust dedicated server setup: install and ports](https://www.renode.space/blog/rust-dedicated-server-setup) (2026-10-07): Install RustDedicated with SteamCMD, write a startup line that works, open the right ports and get through the first boot and map generation without surprises.
- [Rust modded server: gather rates and kits](https://www.renode.space/blog/rust-modded-server-gather-rates-and-kits) (2026-10-07): Set up a 2x, 3x or 5x Rust server properly: gather rates, stack sizes, smelting, kits, the Modded listing, and keeping the economy and lag in check.
- [Rust force wipe schedule: dates and times](https://www.renode.space/blog/rust-monthly-force-wipe-schedule) (2026-10-07): When the Rust force wipe lands, the first Thursdays through 2027, how to fit weekly or biweekly wipes around four- and five-week months, and what to automate.
- [Rust Oxide plugins: install and permissions](https://www.renode.space/blog/rust-oxide-umod-plugins) (2026-10-07): Install Oxide on a Rust server, add uMod plugins, edit their JSON configs, set up groups and permissions, and survive the monthly update without losing them.
- [Rust RCON and WebRCON: setup and security](https://www.renode.space/blog/rust-rcon-and-webrcon) (2026-10-07): Enable WebRCON on a Rust server, connect RustAdmin, BattleMetrics or a script, read the JSON messages, and keep rcon.password from being the weak point.
- [Rust server.cfg and convars: decay and upkeep](https://www.renode.space/blog/rust-server-cfg-and-convars) (2026-10-07): Where Rust keeps server.cfg and users.cfg, how convars load, and the settings that matter - listing, PvE, AFK kicks, decay, upkeep - with what each one does.
- [Rust server performance: entities and FPS](https://www.renode.space/blog/rust-server-performance-entities) (2026-10-07): Read a Rust server's frame rate and entity count, find what drags them down - bases, plugins, garbage collection, map size - and fix lag without guessing.
- [SCUM admin commands, squads and logs](https://www.renode.space/blog/scum-admin-commands-and-squads) (2026-10-07): Make yourself a SCUM server admin, use the # chat commands safely, manage squads, flags and bans, and read the server logs that settle every dispute.
- [SCUM server lag, puppet caps and loot](https://www.renode.space/blog/scum-server-performance-and-loot) (2026-10-07): Size and tune a SCUM server: RAM and CPU by player count, what really causes lag, puppet and vehicle caps, database growth, and the Loot override folder.
- [SCUM server settings: ServerSettings.ini](https://www.renode.space/blog/scum-server-settings-guide) (2026-10-07): A guide to SCUM's ServerSettings.ini: where it lives, the scum. key format, time of day, puppets, loot multipliers, fame, respawn and the files beside it.
- [Server not showing in the Steam list?](https://www.renode.space/blog/server-browser-visibility-steam-master-server) (2026-10-07): Why a running game server does not appear in the Steam or in-game browser: master server registration, query ports, tokens, filters and the per-game list flags.
- [Soulmask dedicated server setup and saves](https://www.renode.space/blog/soulmask-dedicated-server) (2026-10-07): Run a Soulmask dedicated server: install, launch parameters, ports 8777, 27015 and 18888, GameXishu.json, admin access, the world.db save and backups.
- [SourceMod admin flags, groups and immunity](https://www.renode.space/blog/sourcemod-admin-flags-and-immunity) (2026-10-07): Every SourceMod admin flag, the admins_simple.ini and admins.cfg formats, groups, immunity levels and sm_immunity_mode, and command overrides that fit your staff.
- [Space Engineers server: config and PCU](https://www.renode.space/blog/space-engineers-dedicated-server) (2026-10-07): Set up a Space Engineers dedicated server: SpaceEngineers-Dedicated.cfg, world settings, PCU and block limits, ports, admins, mods and keeping sim speed at 1.0.
- [Squad Workshop mods and layer rotation](https://www.renode.space/blog/squad-mods-and-layers) (2026-10-07): How Squad layers are named and rotated, how to install Workshop mods on a dedicated server, add mod layers to LayerRotation.cfg, and keep a modded server joinable.
- [Squad Server.cfg, admins and bans](https://www.renode.space/blog/squad-server-config-and-admins) (2026-10-07): Run a Squad server's staff and rules properly: the ServerConfig folder file by file, admin groups and permissions, bans, reserved slots, remote lists and rotations.
- [SRCDS basics: launch options and cfg](https://www.renode.space/blog/srcds-source-dedicated-server-basics) (2026-10-07): How srcds works for TF2, Garry's Mod, CS:S and L4D2: srcds_run, launch options, server.cfg and the cfg folder, ports, logs, updates and common errors.
- [Starbound server config and mods](https://www.renode.space/blog/starbound-server-guide) (2026-10-07): Run a Starbound dedicated server: SteamCMD install, every key in starbound_server.config, accounts and admins, port 21025, commands, mods and universe backups.
- [Starting a roleplay server community](https://www.renode.space/blog/starting-a-roleplay-server-community) (2026-10-07): How to start a roleplay server that survives its first month: picking a game and framework, RP rules people understand, staff roles, scripts and launch.
- [Stationeers dedicated server setup](https://www.renode.space/blog/stationeers-dedicated-server) (2026-10-07): Set up a Stationeers dedicated server: SteamCMD install, the -file start and -settings launch syntax, worlds, ports, admin access, saves and performance tuning.
- [Steam connect links and direct connect](https://www.renode.space/blog/steam-connect-links-and-direct-connect) (2026-10-07): How steam://connect links, console connect commands and direct IP join work, with passwords, per-game syntax and why some links do nothing when clicked in Discord.
- [SteamCMD app IDs and beta branches](https://www.renode.space/blog/steamcmd-app-ids-and-beta-branches) (2026-10-07): Server and game app IDs for 30 dedicated servers, how to list and switch beta branches, beta passwords, when validate helps and which installs need a login.
- [Game server tunnels: playit.gg, frp and VPS](https://www.renode.space/blog/tunnels-and-proxies-for-game-servers) (2026-10-07): How tunnels like playit.gg, frp and WireGuard on a VPS put a home game server online behind CGNAT, what they cost in latency and real player IPs, and when to use one.
- [Unity dedicated server: batchmode and logs](https://www.renode.space/blog/unity-dedicated-server-basics) (2026-10-07): How Unity game servers run: -batchmode and -nographics, where Player.log goes, the _Data folder, Mono vs IL2CPP for mods, and the errors that are only noise.
- [Unreal Engine dedicated server: ini and ports](https://www.renode.space/blog/unreal-engine-dedicated-server-basics) (2026-10-07): How Unreal Engine dedicated servers work across Palworld, ARK, Satisfactory and others: the Saved/Config layout, Engine.ini, launch flags, ports, logs and crashes.
- [V Rising dedicated server: settings and admins](https://www.renode.space/blog/v-rising-dedicated-server-guide) (2026-10-07): Run a V Rising dedicated server: ServerHostSettings.json and ServerGameSettings.json explained, ports 9876-9877, admins, PvP windows, saves and backups.
- [Vintage Story server: setup, config and mods](https://www.renode.space/blog/vintage-story-dedicated-server) (2026-10-07): Run a Vintage Story dedicated server: install and .NET runtime, serverconfig.json key by key, world generation settings, roles and whitelist, mods and backups.
- [TeamSpeak vs Mumble for gaming communities](https://www.renode.space/blog/voice-servers-teamspeak-mumble-for-communities) (2026-10-07): When a community needs its own TeamSpeak or Mumble server instead of Discord, how to set each up, the ports to open, and how much CPU, RAM and bandwidth voice uses.
- [Why players cannot connect to your server](https://www.renode.space/blog/why-players-cannot-connect-to-your-server) (2026-10-07): Find why players cannot join a game server, step by step: is it up, listening, reachable, on the right port and accepting them, with the errors each step causes.
- [Wine and Proton: Windows game servers on Linux](https://www.renode.space/blog/wine-and-proton-for-windows-only-servers) (2026-10-07): How to run a Windows-only dedicated server on Linux with Wine or Proton: the prefix, winetricks, Xvfb, SteamCMD platform forcing, clean stops and common errors.
- [Cloudflare for websites and game servers](https://www.renode.space/blog/cloudflare-for-websites-and-game-servers) (2026-09-21): The orange cloud carries HTTP and nothing else. What that means for a Minecraft server, an SRV record, SSL modes and your origin address.
- [DDoS attacks on game servers: an honest look](https://www.renode.space/blog/ddos-attacks-on-game-servers-explained) (2026-09-21): What the three attack layers actually do, why UDP games are cheap to hit, what upstream filtering can and cannot drop, and what you can do that helps more.
- [Game server RAM, CPU and disk by game](https://www.renode.space/blog/game-server-requirements-by-game) (2026-09-21): A single table of sensible RAM, vCPU, disk and port numbers for every game we host, then the reason each genre needs what it needs.
- [Growing a game server community](https://www.renode.space/blog/growing-a-game-server-community) (2026-09-21): How servers actually get players and keep them: listings, the first ten minutes, Discord that is not dead, events, and the numbers worth tracking.
- [How much does a game server cost per month?](https://www.renode.space/blog/how-much-does-a-game-server-cost) (2026-09-21): What drives the price of a game server, starting prices by game, why Palworld costs four times Terraria, and what the monthly figure does not include.
- [Choosing game server hosting: a checklist](https://www.renode.space/blog/how-to-choose-game-server-hosting) (2026-09-21): The questions to ask before you pay any host: latency you measured yourself, what the CPU share really is, whether backups are yours, and how to leave.
- [Monetising a game server within the rules](https://www.renode.space/blog/monetising-a-game-server-within-the-rules) (2026-09-21): What Minecraft, FiveM and Valve actually let you sell on a server, how a store is wired to the game, and the chargebacks and tax nobody warns you about.
- [Several game servers on one VDS](https://www.renode.space/blog/multiple-game-servers-on-one-vds) (2026-09-21): How to run four or five game servers on one box: a port map, one user each, systemd units with limits, LinuxGSM, staggered updates and backups, and when not to bother.
- [Pterodactyl panel: Wings, eggs and containers](https://www.renode.space/blog/pterodactyl-panel-explained) (2026-09-21): What Pterodactyl actually is: the panel, the Wings daemon, eggs, and one Docker container per server. What a panel-based host gives you, and what it cannot.
- [Reading traceroute and MTR correctly](https://www.renode.space/blog/reading-traceroute-and-mtr) (2026-09-21): Loss in the middle of a trace usually means nothing. How traceroute works, what the MTR columns mean, and how to tell a real fault from a decoy.
- [Game server at home vs renting one](https://www.renode.space/blog/self-hosting-a-game-server-at-home-vs-renting) (2026-09-21): When a spare PC at home is genuinely enough, and when CGNAT, upload speed, electricity or your own IP address make renting the cheaper answer.
- [Server rules, moderation and staff](https://www.renode.space/blog/server-rules-moderation-and-staff) (2026-09-21): Rules people can be held to, the logs that make a ban stick, how few staff you need, panel permissions, a sane ban ladder and an appeals process.
- [Steam game server login tokens (GSLT)](https://www.renode.space/blog/steam-game-server-tokens-gslt) (2026-09-21): What a GSLT is, who may create one, which app id to use, where the token goes in each game, what gets one banned, and why you should never accept one from a host.
- [Steam Workshop mods on dedicated servers](https://www.renode.space/blog/steam-workshop-mods-on-dedicated-servers) (2026-09-21): How Workshop content reaches a server and its players: item ids, SteamCMD downloads, collections, per-game config keys, update breakage, disk cost and trust.
- [SteamCMD: updates, betas and scripts](https://www.renode.space/blog/steamcmd-explained) (2026-09-21): What SteamCMD is, how app ids work, anonymous versus account logins, what validate really does, beta branches, unattended update scripts and every common error.
- [TCP vs UDP: why game servers use UDP](https://www.renode.space/blog/tcp-vs-udp-for-game-servers) (2026-09-21): Why almost every game speaks UDP, what that costs you in firewall rules and proxies, and how to test a UDP port properly when telnet is useless.
- [How a dedicated game server actually works](https://www.renode.space/blog/what-is-a-dedicated-game-server) (2026-09-21): A dedicated game server runs the game with nobody playing on it. What that changes, what it needs in RAM, CPU and ports, and how to run one properly.
- [Game server ports: query, RCON and firewalls](https://www.renode.space/blog/game-server-ports-explained) (2026-09-01): Every port a game server uses, what the query port is for, why a running server never appears in the browser, and how to test a port from outside.
- [ARK: Survival Ascended dedicated server](https://www.renode.space/blog/ark-survival-ascended-server-setup) (2026-08-28): What Ascended costs in memory, the GameUserSettings.ini and Game.ini keys that decide whether your island is playable, ports, RCON, mods and clusters.
- [Why your game server keeps restarting](https://www.renode.space/blog/why-your-game-server-keeps-restarting) (2026-08-25): Out-of-memory kills, crash loops, schedules you forgot and tokens that expired - how to tell them apart from exit codes and console lines, and what to fix.
- [Rust wipes without losing your players](https://www.renode.space/blog/rust-wipes-without-losing-your-players) (2026-07-14): What Rust's forced wipe actually forces, which files a map wipe and a BP wipe delete, how to pick a cadence, and a wipe-day runbook that does not lose people.
- [Left 4 Dead 2 server setup and lobby settings](https://www.renode.space/blog/left-4-dead-2-server) (2026-07-03): Running an L4D2 dedicated server: the install, server.cfg and Director cvars, lobbies and sv_search_key, custom campaigns, more than four players, and fixes.
- [Squad server hosting: licence and config](https://www.renode.space/blog/squad-server-hosting) (2026-06-19): Running a Squad dedicated server: the Offworld licence and its conditions, Server.cfg, Admins.cfg, RCON, the five ports, Workshop mods and holding 50 Hz.
- [Tick rate and why your server feels slow](https://www.renode.space/blog/what-tick-rate-actually-means) (2026-06-09): TPS, MSPT, ping and frame rate are four different numbers. How to read each one, which of them your players are complaining about, and what fixes each.
- [What we do about attacks and what no host can](https://www.renode.space/blog/what-we-do-about-attacks) (2026-06-02): Which attacks upstream filtering actually drops, why player-shaped floods get through, and the query, whitelist and moderation settings that do the rest.
- [Game server location and latency](https://www.renode.space/blog/choosing-where-your-server-lives) (2026-05-26): Latency is distance divided by the speed of light. How to choose a location for the players you actually have, measure it honestly, and read the numbers.
- [SFTP and the file manager for your server](https://www.renode.space/blog/sftp-and-the-file-manager) (2026-05-19): Both reach the same filesystem. Which one to use for a config edit, a plugin folder or a whole world, and the traps that quietly eat an upload.
- [How many players fit on a server, by game](https://www.renode.space/blog/how-many-players-fit-on-a-server) (2026-05-08): Slot counts are a config number. What really limits concurrency is memory, tick budget and bandwidth - plus a table of realistic player counts for 20 games.
- [CPU or RAM: what limits your game server](https://www.renode.space/blog/cpu-vs-ram-for-game-servers) (2026-05-01): Memory is what gets sold and clock speed is usually what limits you. How to tell them apart in thirty seconds, with the exact commands, graphs and fixes.
- [Bandwidth, fair use and unmetered hosting](https://www.renode.space/blog/bandwidth-and-fair-use) (2026-04-17): How much traffic a game or web server actually uses, the sums that turn kilobytes per second into a monthly figure, and what unmetered does not cover.
- [Scheduled tasks every game server needs](https://www.renode.space/blog/scheduled-tasks-worth-having) (2026-03-31): The cron expression, the task order and the delays that make a schedule safe: warnings, saves, backups, dumps and restarts, with the commands per game.
- [Game server restart schedules that help](https://www.renode.space/blog/restart-schedules-that-help) (2026-02-20): A nightly restart is a workaround, not maintenance. When it genuinely helps, how often to run one, and how to tell what it is quietly hiding.
- [Moving a game server without losing players](https://www.renode.space/blog/moving-a-server-without-losing-players) (2026-02-13): The order of operations that makes a migration uneventful: what to copy, when to stop the old server, how DNS TTL really behaves, and how to roll back.
- [When a mod update breaks your server](https://www.renode.space/blog/what-to-do-when-a-mod-update-breaks) (2026-01-16): The triage that gets a modded server running again in ten minutes: read the crash report, find the file that changed, roll it back, and stop it repeating.
- [Server monitoring: four checks worth alerting](https://www.renode.space/blog/monitoring-that-tells-you-something) (2026-01-09): Uptime checks that catch real outages, thresholds for memory, disk and CPU, where the alert should land, and the rule that keeps the list short.
- [Subdomains for game servers and apps](https://www.renode.space/blog/subdomains-for-servers) (2025-12-19): Why every server should have its own name, how to create the record, what a subdomain cannot carry, and the TTL routine that makes a migration boring.
- [Domain for a game server: A and SRV records](https://www.renode.space/blog/connecting-a-domain-to-a-game-server) (2025-12-12): A game server lives at an address and a port, and a domain carries only the address. The three ways to bridge that gap, and how to prove it worked.
- [IPv6 and game servers: benefits and pitfalls](https://www.renode.space/blog/ipv6-and-game-servers) (2025-11-28): Support is uneven across games, launchers and tooling. What works over IPv6, what silently does not, and why dual-stack is the only sane answer today.
- [Latency, jitter and packet loss in games](https://www.renode.space/blog/latency-jitter-and-packet-loss) (2025-11-21): Players call all of it lag. The three have different causes and different fixes, and a sixty-second ping test tells you which one you are looking at.
- [The firewall rules that actually matter](https://www.renode.space/blog/firewall-rules-that-matter) (2025-11-14): Default deny, a short allow list, and the three ports people leave open without meaning to. With the ufw and nftables rules to copy and the audit commands.
- [Safe RCON: ports, passwords and the console](https://www.renode.space/blog/rcon-safely) (2025-10-24): Remote console is a plaintext password on an open port. How RCON works per game, which ports to close, and when the panel console replaces it entirely.
- [Mod and plugin safety on a modded server](https://www.renode.space/blog/keeping-a-modded-server-clean) (2025-10-17): Mods run with your server's permissions. Where to download them, how to check a jar before it runs, the signs of a compromise, and how to clean up after one.

---

### SteamCMD errors and fixes: a reference for server admins

Published 2026-10-15 by RE:NODE Team. https://www.renode.space/blog/steamcmd-errors-and-fixes

Most SteamCMD failures come down to five causes: the login does not own the app, the disk is full, the user cannot write to the folder, the network dropped mid-download, or Steam's cached data about the app is stale. The error text names one of these, but usually in a way that points somewhere else. This page takes the messages people actually search for, says what each one means, and gives the fix in the order worth trying. It assumes you already know the basic install line. If you do not, [SteamCMD explained](https://www.renode.space/blog/steamcmd-explained) covers app ids, anonymous login, `validate`, beta branches and update scripts. This post is about what to do when that line fails.

#### How to read a SteamCMD failure

A failed `app_update` ends with one of two kinds of line, and they tell you different things.

```text
ERROR! Failed to install app '896660' (Disk write failure)
Error! App '896660' state is 0x202 after update job.
```

The first kind has a reason in brackets. That reason comes from the Steam client's own content system and is the closest thing to a diagnosis you get. The second kind only reports the state the app was left in, as a hexadecimal set of flags. It tells you the update stopped, not why it stopped. Both are covered below.

Before you start changing things, get three facts:

1. **The full output, not the last line.** Scroll up. A login that quietly failed, or a warning about the install directory, is often fifty lines above the error everyone quotes.
2. **Free space and inodes on the volume you install to.** `df -h /srv/valheim` and `df -i /srv/valheim` on Linux. A full inode table produces the same error as a full disk while `df -h` shows plenty of room.
3. **Who owns the install directory, and who is running SteamCMD.** `ls -ld /srv/valheim` and `whoami`. If they differ, you have probably found the problem.

SteamCMD also keeps logs of its own under its Steam directory - on Linux usually `~/Steam/logs/`, on Windows the `logs` folder next to `steamcmd.exe`. `content_log.txt` in that folder records each update job in more detail than the console shows, including which file failed to write. Exact paths vary with how SteamCMD was installed (a distribution package puts things in a different home than the tarball), so search for the file if it is not where you expect.

One setting changes what you see. In a script run with `+runscript`, `@ShutdownOnFailedCommand 1` makes SteamCMD stop at the first error. Without it, a failed `app_update` is followed by `quit`, the process exits, and a wrapper that only checks the exit code reports success. If your errors are being discovered by players rather than by you, fix that first. The habit of grepping for `Success! App 'X' fully installed.` is explained in the main SteamCMD post, and [reading the console](https://www.renode.space/blog/reading-the-console) covers the general skill of telling the cause from the noise.

#### Missing configuration

```text
ERROR! Failed to install app '90' (Missing configuration)
```

This is the most searched SteamCMD error and the least specific. It means SteamCMD could not get a usable configuration for that app - the information about which depots to download for this platform and this login. The causes, roughly from most to least common:

- **A stale app info cache.** SteamCMD keeps cached metadata for every app in an `appcache` folder inside its own directory. When that cache disagrees with what Steam currently publishes, the install fails before it downloads anything.
- **The wrong app id.** Passing a game's id where the dedicated server tool's id belongs, or a typo that lands on an unrelated app.
- **A login with no access to that configuration.** The app may report this rather than `No subscription` when the login cannot see its configuration.
- **A platform with no depots.** Some apps report a missing configuration rather than `Invalid platform` when there is simply no build for your operating system.
- **Something transient on Steam's side.** It happens, and a retry ten minutes later works.

Work through the fixes in order:

1. Run the same command again. Not as a superstition - a first run that refreshed the app info cache often succeeds on the second attempt.
2. Check the app id against the server tool's id, not the game's. Valheim's server is `896660`, the game is `892970`, and only the first installs.
3. Stop SteamCMD and delete its `appcache` folder (not `steamapps`, and not your install directory). The next run rebuilds it from scratch.
4. Try a forced platform if the app only ships for another OS - see below.
5. If it needs an owning account, log in with one.

```bash
$ cd ~/steamcmd
$ rm -rf appcache
$ ./steamcmd.sh +force_install_dir /srv/hlds +login anonymous \
    +app_update 90 validate +quit
```

##### The Half-Life Dedicated Server special case

App `90` - the old GoldSrc server used by Counter-Strike 1.6 and other Half-Life mods - is famous for this error. It has been unreliable for years, and the long-standing community workaround is to tell SteamCMD which mod you want with `app_set_config` and then run `app_update 90 validate` several times until it reports success:

```bash
$ ./steamcmd.sh +force_install_dir /srv/cs16 +login anonymous \
    +app_set_config 90 mod cstrike \
    +app_update 90 validate +app_update 90 validate +quit
```

Behaviour has changed over time and differs by mod, so treat this as the thing to try rather than a guarantee. If you only need a running CS 1.6 server, a prepared install is less painful than fighting app `90` - the [Counter-Strike 1.6 server guide](https://www.renode.space/blog/counter-strike-1-6-server-guide) covers what the server needs once the files are in place.

##### Invalid platform

```text
ERROR! Failed to install app '556450' (Invalid platform)
```

This one is unambiguous: the app has no build for the operating system SteamCMD is running on. The Forest's dedicated server is the usual example, because it only ships a Windows binary. On Linux you can download the Windows build anyway and run it under Wine:

install-forest.txt:

```text
@ShutdownOnFailedCommand 1
@sSteamCmdForcePlatformType windows
force_install_dir /srv/theforest
login anonymous
app_update 556450 validate
quit
```

The setting has to come before `app_update`, and it applies to the rest of that run. Running a Windows server on Linux is a separate decision with its own costs; [Linux vs Windows game servers](https://www.renode.space/blog/linux-vs-windows-game-servers) lists which games need it.

#### No subscription

```text
ERROR! Failed to install app '223350' (No subscription)
```

Clearer than it looks: the logged-in identity does not hold a licence for that app. There are three ways to get there.

- **Anonymous login against an app that refuses it.** DayZ (`223350`), Arma 3 (`233780`) and Project Zomboid's server are the common ones. You need a Steam account that owns the game.
- **The right account, the wrong app.** An account that owns the game but is installing something it has no licence for - often the result of a mistyped id.
- **A login that did not actually happen.** If the `login` step failed, every command after it runs as nobody, and an app that needs an owner reports `No subscription`. Scroll up and look for the login line ending in `OK`.

The fix is to log in as an account that owns the game, interactively the first time so Steam Guard can be satisfied, and then keep using that account in scripts. Use a spare account that holds nothing but the game: a server is a poor place to keep the credentials of the account you buy things with.

On RE:NODE, games that need your own Steam login - Arma 3, DayZ, Project Zomboid and 7 Days to Die among them - are created immediately and then wait on the Setup tab until you enter the credentials. They are stored as typed, which is why the advice about a spare account applies there too.

#### Disk write failure and Missing file permissions

```text
ERROR! Failed to install app '896660' (Disk write failure)
ERROR! Failed to install app '896660' (Missing file permissions)
```

These are two different messages for overlapping problems, and a permissions problem can surface as either. Check these four things, in this order:

| Check | Command or place | What fixes it |
| --- | --- | --- |
| Free space | `df -h <dir>` | Free 20-30% above the install size |
| Free inodes | `df -i <dir>` | Delete small files, old logs |
| Ownership | `ls -ld <dir>` | `chown -R` to the SteamCMD user |
| Read-only mount | `mount`, kernel log | Fix the filesystem, then validate |

Space is the most common cause, and it is less obvious than it sounds. SteamCMD stages downloaded chunks on the same volume before committing them, so an update needs room for the changed files on top of the existing install. A disk with 2 GB free can fail a 1.5 GB update. Old Workshop content, crash dumps and rotated logs are the usual things filling it; [what to do when the disk is full](https://www.renode.space/blog/game-server-disk-space-full) has a cleanup list.

Ownership is the second. The classic route is running SteamCMD once as root "to get it working", which leaves root-owned files the service user cannot replace on the next update. Fix it once:

```bash
$ sudo chown -R steam:steam /srv/valheim /home/steam/steamcmd
$ sudo -u steam /home/steam/steamcmd/steamcmd.sh \
    +force_install_dir /srv/valheim +login anonymous \
    +app_update 896660 validate +quit
```

Then never run it as root again. [File permissions and ownership](https://www.renode.space/blog/game-server-file-permissions-and-ownership) goes through the general case, including servers that write files as a different user from the one that installs them.

On Windows the usual causes are an install directory under `C:\Program Files` without elevated rights, a file locked because the server is still running, and antivirus quarantining a freshly written executable mid-update. Stop the server before updating, install outside `Program Files`, and exclude the install directory from real-time scanning if the failures always land on `.exe` and `.dll` files.

> [!WARNING]
> Do not try to fix a disk write failure by deleting `steamapps` inside your install directory. That removes the app manifest and Workshop records, and on some games it sits next to save data. Free space elsewhere first, then run the update with `validate`.

#### State codes: 0x202, 0x402, 0x602 and friends

```text
Error! App '740' state is 0x602 after update job.
```

The hexadecimal number is a set of flags describing the app's state, added together. Knowing what the bits mean turns a mystery code into a plain sentence. These are the flags you will see in these errors:

| Flag | Meaning |
| --- | --- |
| `0x2` | Update required |
| `0x4` | Fully installed |
| `0x200` | Update paused |
| `0x400` | Update started |

Read the codes against that table:

- **`0x202`** = update required plus update paused. The job stopped and the app still needs the update. In practice this is overwhelmingly a disk space problem; check `df -h` before anything else.
- **`0x402`** = update required plus update started. The job began and did not finish. Network interruptions and timeouts are the usual cause.
- **`0x602`** = required, paused and started. The update got going and then stopped. It is the generic "something went wrong mid-update" state: disk space, permissions, a dropped connection, or a process that was killed.
- **`0x6`** = update required on an installed app, with no update in progress. Usually seen when a job never got as far as starting - look for a login or app info failure earlier in the output.

None of these codes contains the reason. That is why the three checks at the top of this page - space, ownership, network - are the answer to all of them, and why `content_log.txt` is worth opening when the obvious checks pass.

The same flags live in the app manifest as a decimal number. Open `steamapps/appmanifest_<appid>.acf` in the install directory and look for `StateFlags`. A healthy install reads `"StateFlags" "4"`. Anything else means SteamCMD considers the install unfinished, and the next `app_update` with `validate` is the right move.

Progress lines during a download use a different set of codes, which confuses people who search for them:

```text
 Update state (0x5) verifying install, progress: 12.40 (512 / 4130)
 Update state (0x61) downloading, progress: 45.22 (1868 / 4130)
 Update state (0x101) committing, progress: 98.10 (4052 / 4130)
```

These are phases, not errors. The word after the code is the part to read. A progress line that sits on the same number for minutes during `downloading` is a network or disk throughput problem; during `committing` or `verifying` on a slow disk it is often just slow, and interrupting it is how you get a `0x602`.

#### Timeouts, connection failures and login errors

Network problems show up in a few distinct shapes.

**SteamCMD cannot update itself.** On first launch, or after a long gap, the bootstrapper checks for its own update before doing anything. If it cannot reach Steam's content servers it stops there, with a message along the lines of `Steam needs to be online to update`. Check DNS resolution on the host, outbound HTTP and HTTPS through any firewall, and a proxy if your network requires one. A host with broken IPv6 routing but a working IPv4 path is a frequent culprit.

**Login hangs or fails.** The login line ends in `OK` or `FAILED` with a reason. The ones you will meet:

```text
Logging in user 'spareaccount' to Steam Public...FAILED (Invalid Password)
Logging in user 'spareaccount' to Steam Public...FAILED (Rate Limit Exceeded)
Logging in user 'spareaccount' to Steam Public...FAILED (Two-factor code mismatch)
```

`Invalid Password` is what it says, though check for a shell eating a special character if you passed it on the command line. `Rate Limit Exceeded` means too many attempts in a short time; the only fix is to stop and wait, and every retry pushes the window out. `Two-factor code mismatch` means a Steam Guard code was wrong or expired, which also happens when the host's clock has drifted. Running one interactive login by hand, approving it, and letting SteamCMD cache the credential is how unattended runs avoid all three.

**Downloads that time out.** Large app updates occasionally stall, and Workshop downloads time out far more often:

```text
ERROR! Timeout downloading item 463939057
```

Big Workshop items routinely need two or three attempts on a slow link. Retry the same item before assuming anything is wrong. If the same item fails every time, delete `steamapps/workshop/appworkshop_<gameappid>.acf` and the item's folder, then fetch it again. A different message, `ERROR! Download item 463939057 failed (Failure).`, more often means the item is private, removed, or needs an owning login. [Steam Workshop mods on dedicated servers](https://www.renode.space/blog/steam-workshop-mods-on-dedicated-servers) covers the Workshop side in depth.

#### Linux: 32-bit libraries and steamclient.so

SteamCMD on Linux is a 32-bit program. On a fresh 64-bit system without 32-bit support, the failure is confusing because the file it complains about plainly exists:

```text
steamcmd.sh: line 38: /home/steam/steamcmd/linux32/steamcmd: No such file or directory
```

"No such file" here refers to the 32-bit loader the binary needs, not the binary itself. The other common form names a library:

```text
linux32/steamcmd: error while loading shared libraries: libstdc++.so.6:
cannot open shared object file: No such file or directory
```

Both are fixed the same way:

```bash
# Debian and Ubuntu
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install lib32gcc-s1      # lib32gcc1 on older releases
$ sudo apt install lib32stdc++6     # if libstdc++.so.6 is still missing

# RHEL, Rocky, AlmaLinux
$ sudo dnf install glibc.i686 libstdc++.i686
```

Package names change between distribution releases, which is why guides disagree. If `apt` cannot find `lib32gcc-s1`, you are on an older release that calls it `lib32gcc1`.

A related problem appears after a successful install, when the game server starts rather than SteamCMD:

```text
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance
of Steam, or a local steamclient.so.
```

The game server is looking for `steamclient.so` in `~/.steam/sdk64/` (or `sdk32` for a 32-bit server) and not finding it. SteamCMD ships the library in its own `linux64` and `linux32` folders. Linking it into place is the standard fix:

```bash
$ mkdir -p ~/.steam/sdk64
$ ln -sf ~/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
```

Some servers instead expect the file next to their own executable, and their start scripts set `LD_LIBRARY_PATH` to find it. If a game's own start script does that, use it rather than launching the binary directly.

#### Messages you can ignore

SteamCMD is noisy, and several lines look like errors on every run without meaning anything. Knowing them saves an evening:

- `Redirecting stderr to '.../logs/stderr.txt'` - informational.
- `ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".` - printed on early runs, harmless.
- `dlmopen steamservice.so failed: steamservice.so: cannot open shared object file` - SteamCMD does not need it; printed every run on Linux.
- `Unable to determine CPU Frequency. Try defining CPU_MHZ.` - cosmetic, common in containers and VMs.
- `Please use force_install_dir before logon!` - not ignorable in the same way. Current builds warn when `force_install_dir` comes after `login`, and the install may not go where you meant. Move it first.

The rule of thumb: if the run ends with `Success! App 'X' fully installed.` or `Success! App 'X' already up to date.`, the lines above it were noise.

#### When validate fixes it, and when it does not

`validate` re-hashes every file in the install against Steam's manifest and replaces what does not match. It fixes:

- an install left half-written by a full disk, a killed process or a dropped connection - the `0x602` family;
- a server that crashes at startup right after an update that "succeeded";
- files corrupted on disk.

It does not fix:

- anything on the list above about logins, licences, platforms or app ids - it runs after those checks pass;
- a disk that is still full, or a directory the user still cannot write to;
- a broken mod, plugin or config file you added, since those are not in the manifest. Use [what to do when a mod update breaks](https://www.renode.space/blog/what-to-do-when-a-mod-update-breaks) instead;
- a version mismatch with clients. That is a branch question, covered in [version pinning and rollbacks](https://www.renode.space/blog/game-server-version-pinning-and-rollbacks).

Also remember that it reverts any file that shipped with the app, including a start script or default config you edited in place. Keep a copy.

When `validate` itself keeps failing on the same app, the last resort before a clean reinstall is to delete `steamapps/appmanifest_<appid>.acf` in the install directory and run the update again. SteamCMD then has no record of the install and re-downloads everything, keeping files that are not part of the app. Back up saves first.

On a container-based host there is one more cause to name. If a server hits its memory limit during an install or update, the container is stopped rather than left to swap - on RE:NODE it restarts clean - and what remains is a half-written install with a `0x602`-style state. Re-running the update with `validate` repairs it. If it keeps happening, the plan is too small for that game's install step; [why your game server keeps restarting](https://www.renode.space/blog/why-your-game-server-keeps-restarting) explains how to tell. The panel console shows SteamCMD's output line for line and graphs disk use against the plan's limit, which is usually enough to see which of the causes above you hit; the [console guide](https://www.renode.space/guides#console) shows where.

#### FAQ

##### Is "Missing configuration" a problem with my server?

Usually not. It means SteamCMD could not get a usable configuration for that app from Steam - most often a stale app info cache, the wrong app id or a transient failure. Retry once, check the id is the dedicated server's rather than the game's, then delete the `appcache` folder in SteamCMD's directory and run again.

##### What does "state is 0x202 after update job" mean?

The update stopped while the app still needs it: flag `0x2` is "update required" and `0x200` is "update paused". In practice it is almost always a disk that ran out of space during the download. Free space on the install volume, leave 20-30% headroom, and run the update with `validate`.

##### Why does SteamCMD say "No subscription" when the server is free?

Because the server tool for that game is not free to anonymous logins. DayZ, Arma 3 and Project Zomboid need a Steam account that owns the game. The same message appears if the login silently failed earlier in the output, so check that the login line ended in `OK`.

##### Should I run SteamCMD as root to stop permission errors?

No. It makes the next update fail instead, because the files it writes belong to root and the service user cannot replace them. Run SteamCMD as the same ordinary user that runs the server, `chown` the install directory to that user once, and the permission errors stop.

##### Can I safely delete SteamCMD's appcache folder?

Yes. It is a cache of app metadata that SteamCMD rebuilds on the next run, and it holds no game files, saves or credentials. Do not confuse it with `steamapps` inside your install directory, which holds the app manifest and Workshop records.

##### How do I fix SteamCMD on a fresh 64-bit Linux install?

Enable 32-bit packages and install the 32-bit C and C++ runtime: on Debian and Ubuntu, `dpkg --add-architecture i386` followed by `apt install lib32gcc-s1` (or `lib32gcc1` on older releases), and `lib32stdc++6` if it still complains. On RHEL-family systems, `glibc.i686` and `libstdc++.i686`.

On RE:NODE the SteamCMD install runs when the server is created, usually inside a minute of payment clearing, with app ids and launch values exposed on the Startup tab. Games that need your own Steam login wait on the Setup tab, and the console shows every line SteamCMD prints, next to graphs of disk use against your plan's limit.

[Browse game servers](https://www.renode.space/game-servers)

---

### SteamCMD login and Steam Guard: anonymous vs account

Published 2026-10-15 by RE:NODE Team. https://www.renode.space/blog/steamcmd-login-and-steam-guard

Most dedicated servers install with `+login anonymous` and need nothing from you. A handful - DayZ and Arma 3 are the ones you will meet first - refuse an anonymous session, and SteamCMD then wants a real Steam username and password, answers a Steam Guard challenge once, and caches a login token so later updates run unattended. That token, and the password you typed to get it, end up on the server. So the whole security story fits in one sentence: use a spare Steam account that owns the game and nothing else, and treat the machine that runs SteamCMD as somewhere that account's credentials now live.

The rest of this post is the detail: which servers need an account, what each Steam Guard prompt looks like and how to answer it, where the cached credential is stored and how long it lasts, how to set up the spare account properly, and what the login errors mean. The basics of SteamCMD itself - install, `force_install_dir`, `validate`, scripts - are in [SteamCMD explained](https://www.renode.space/blog/steamcmd-explained), and this post does not repeat them.

#### What the login actually decides

SteamCMD always logs in before it downloads anything. The login is not about the server you are going to run - a game server never uses this session once it is running. It decides one thing: which licences the download session holds.

- **Anonymous** is a session with no account behind it. It holds a licence for every app the publisher has marked as free for anonymous download, which covers most dedicated-server tools. No password, no Steam Guard, nothing stored.
- **An account login** holds whatever that account owns, plus the free tools. It is needed when the publisher has restricted the server tool, or its Workshop content, to accounts that own the game.

Two consequences follow, and both surprise people. First, the credential is only needed at install and update time. The running DayZ or Arma 3 server does not log in to Steam with your account; it is SteamCMD, run before the server starts, that does. Second, the credential is needed again on every update, which is why it is cached rather than typed once and forgotten. A server that updates on every restart is a server that logs in to Steam with that account every restart.

The login is also a separate thing from a game server login token. A [GSLT](https://www.renode.space/blog/steam-game-server-tokens-gslt) is what a running server presents so that Steam lists it in the browser; it is created on a web page and is never typed into SteamCMD. People mix the two up because both are "a Steam credential the host asks for", but one installs the files and the other identifies the running server. A few games need both.

#### Which servers need a real account

There is no flag you can read in advance that says "this one refuses anonymous". You find out from the publisher's documentation, from the Valve developer wiki's dedicated servers list, or from SteamCMD itself, which answers an anonymous attempt on a restricted app with `No subscription`.

| Game | Server tool needs an account | Workshop needs an owning account |
| --- | --- | --- |
| DayZ | Yes, one that owns DayZ | Yes |
| Arma 3 | Yes | Yes |
| Project Zomboid | Varies - see below | Mods download through the server |
| 7 Days to Die | Usually anonymous | Mods are installed as files |
| Most others (Valheim, CS2, Palworld...) | No | Depends on the game |

DayZ is the clear case. The `DayZ Server` tool (app `223350`) will not install for an anonymous session or for an account that does not own the game, and its Workshop items are fetched against the game's app id, `221100`, which needs the same owning account. [DayZ server and mods](https://www.renode.space/blog/dayz-server-and-mods) covers the rest of that install.

Arma 3 is the case where sources disagree in an instructive way. Valve's list marks the server tool (`233780`) as not available anonymously, and Bohemia's own server documentation tells you to log in with a real username and suggests a separate account for the job. Bohemia also describes the server package as free, so whether the account has to own Arma 3 just to fetch the server has varied by time and by who you ask. Workshop mods are a different matter: `workshop_download_item 107410 <id>` needs an account that owns Arma 3. Since nearly every real Arma 3 server runs mods, plan on an owning account either way. [Arma 3 server and mods](https://www.renode.space/blog/arma-3-server-and-mods) has the full mod workflow.

Project Zomboid and 7 Days to Die are the grey zone. Their server tools have been widely installed with `login anonymous` for years, yet hosts and guides differ on whether a login is wanted, and publishers can change an app's access without announcement. The practical test is quick: try anonymous first. If it installs, you need no account for the server itself. If you get `No subscription`, you do. [SteamCMD app IDs and beta branches](https://www.renode.space/blog/steamcmd-app-ids-and-beta-branches) has the server and game ids for thirty titles if you are unsure which number to test.

> [!NOTE]
> Passing the game's app id instead of the server's to `app_update` with an account that owns the game does not fail. It downloads the full game client into your server folder - many gigabytes of textures and sound, and nothing that starts as a server. If an install with a real account is suspiciously large, check the id first.

#### Logging in for the first time

The first login with an account should always be interactive - you, at a terminal, able to read what SteamCMD asks. Start SteamCMD with no arguments and log in at its prompt, so the password never appears on a command line:

```bash
$ ./steamcmd.sh
Steam> login myserveraccount
password:
```

What happens next depends on how Steam Guard is set up on the account, covered in the next section. Once the login succeeds you will see a line confirming it and the `Steam>` prompt returns. From there, install as normal:

```text
Steam> force_install_dir /srv/dayz
Steam> app_update 223350 validate
Steam> quit
```

That one interactive session does two jobs: it satisfies Steam Guard, and it leaves a cached credential behind. Every later run - a cron job, a restart script, a panel update - can then log in with the username alone:

```bash
$ ./steamcmd.sh +force_install_dir /srv/dayz \
    +login myserveraccount \
    +app_update 223350 +quit
```

No password, no code. SteamCMD finds the cached credential for that username and uses it. If it cannot find one, it says so and either prompts (in an interactive run) or fails (in a script with `@NoPromptForPassword 1`), which is exactly what you want from an unattended job: a loud failure rather than a hang.

Avoid the shortcut of `+login user password` on the command line. It works, but the password lands in your shell history, in the output of `ps` for anyone else on the machine while SteamCMD runs, and often in whatever logs the job's output. In a container it is worse: a password passed as an environment variable is readable by anyone who can inspect the container. [Environment variables and secrets](https://www.renode.space/blog/environment-variables-and-secrets) covers why that is a weaker hiding place than people assume.

#### Steam Guard: email codes, mobile codes and approvals

Steam Guard is Steam's second factor, and SteamCMD meets it the same way the desktop client does when it signs in from a new device. There are three states an account can be in, and each produces a different experience.

##### Email Steam Guard

The account has Steam Guard but no mobile authenticator. On the first login from a new machine, Steam emails a short code to the account's address, and SteamCMD asks for it:

```text
Steam Guard code:
```

Type the code from the email. The code is tied to that login attempt, so request it and use it in one go; an old code from an earlier attempt is rejected. If the email never arrives, check the spam folder before retrying - repeated attempts are how you end up rate-limited.

##### Mobile authenticator

The account has the Steam Mobile app set up as its authenticator. SteamCMD asks for the rotating code from the app:

```text
Two-factor code:
```

The code is five characters and changes every 30 seconds. Type it promptly; a code that rolled over while you were typing produces a mismatch, and you simply try again with the new one. Recent Steam builds can also offer approval on the phone instead of a typed code, the way the desktop client does - if SteamCMD tells you to confirm the sign-in in the app, do that and it continues. Whether you see the prompt or the approval depends on the SteamCMD build, so read what it prints rather than assuming.

SteamCMD also accepts the code as a third argument to `login` (`login user password code`), which is how people answer Steam Guard from a script. It works, but it puts the password on the command line, so use it only for a one-off from a terminal you control, never in a file.

##### Steam Guard turned off

No prompt at all. This is the setup people reach for after the first frustrating Steam Guard loop, and it is the wrong fix. An account with Steam Guard off is protected by its password alone, and the password is precisely the thing you have just typed into a server. Leave Steam Guard on; it only asks once per machine.

```diagram
title: First login versus every later update
first = First run | interactive, by hand
guard = Steam Guard | email or mobile code
cache = Cached credential | config.vdf
later = Later updates | username only
steam = Steam | licences for the session
first -> guard : password
guard -> cache : token saved
later -> cache : reads token
cache -> steam : login without a code
```

#### Cached credentials: where they live and when they stop working

After a successful login SteamCMD stores a login token for that account in its configuration, in `config/config.vdf` under SteamCMD's data directory. On Windows that is the `config` folder beside `steamcmd.exe`. On Linux it depends on how SteamCMD was installed: the Valve tarball and the distribution packages keep their data in different places, commonly under `~/Steam` or `~/.steam`. If you are not sure, search the SteamCMD user's home directory for `config.vdf`. Older builds also left `ssfn` sentry files beside it, which played the same role.

What matters about that file:

- **It is a credential.** It is not your password, but it lets SteamCMD on that machine log in as the account without one. Anyone who can copy it can, in practice, do the same - which is why it belongs to a spare account and nowhere else.
- **It belongs to the user that ran SteamCMD.** Run the first interactive login as the same Unix user that the cron job or service uses. Logging in as yourself and then running updates as a `steam` service user is the most common reason a cached login "does not work".
- **In a container it must persist.** If SteamCMD runs inside a container whose filesystem is thrown away on restart, the cached credential goes with it, and every start asks for Steam Guard again. Put SteamCMD's config directory on a persistent volume.

The cache does not last for ever. It stops working when:

1. **The password changes.** Steam ends existing sessions, and SteamCMD needs the new password and, usually, a fresh Steam Guard challenge.
2. **You deauthorise devices.** "Deauthorize all other devices" on the account's Steam Guard page logs out every machine that holds a cached login, SteamCMD included. That is also the right move if a server holding the credential may have been compromised.
3. **The token simply expires.** Cached logins are long-lived but not permanent. When one lapses, the next unattended update fails at the login step.

That third case is the one that bites in production, because it happens at a random time months after setup. An unattended update must therefore be able to fail safely: check for the `Success! App 'X' fully installed.` line rather than trusting the exit code, and start the server on the existing files if the update did not happen. [Automating game server updates](https://www.renode.space/blog/automating-game-server-updates) covers wrapping SteamCMD so that a failed login means a stale server rather than a dead one.

> [!WARNING]
> Never fix a failing unattended login by writing the password into the update script. The day the cache expires is a day to log in by hand once, not a reason to store the password in plain text for ever.

#### Setting up the spare account

A spare account is not a nice-to-have here. The password and a long-lived login token sit on a machine that, for a rented server, someone else administers, and that runs mods and plugins written by strangers. If that account is also the one with your library, wallet balance, saved payment cards and fifteen years of friends, all of that is one leak away.

Setting one up properly:

1. **Create a new Steam account** with its own email address - a mailbox you use for nothing else. If the email is shared with your main account, compromising the mailbox compromises both.
2. **Buy or gift the game to it** if the server needs an owning account (DayZ, and Arma 3 for Workshop). This costs one copy of the game, and it is the price of keeping your main account off the server.
3. **Do not add a payment method** and do not top up a wallet. Nothing on this account should be spendable.
4. **Turn on Steam Guard.** Email Steam Guard on the dedicated mailbox is fine; the mobile authenticator is stronger. The Steam Mobile app can hold more than one account, so the spare one can live beside your main account on the same phone.
5. **Give it a unique, generated password** from a password manager. It will be typed into a server, so assume it may be seen, and make sure it opens nothing else.
6. **Do not play on it.** The account exists to download files. Keeping it out of play keeps it out of trades, friend requests and the phishing that follows them.

A spare account also helps with Workshop downloads for heavily modded servers, because Workshop subscriptions and downloads attach to that account rather than to your personal one. The download mechanics, including what happens when an item is removed from the Workshop, are in [Steam Workshop mods on dedicated servers](https://www.renode.space/blog/steam-workshop-mods-on-dedicated-servers).

#### The security risks, stated plainly

Typing a Steam login into a server is a trust decision, and it helps to be specific about who can see it afterwards.

| Who | What they can reach |
| --- | --- |
| Anyone on the same machine | Passwords in `ps` output, shell history, logs |
| Anyone with file access to SteamCMD's folder | The cached token in `config.vdf` |
| The host | Whatever it stores to run SteamCMD for you |
| A malicious mod or plugin | Any file the server process can read |
| Anyone you send a screenshot to | Whatever was on the screen |

The host line deserves the most honesty. Any host that runs SteamCMD on your behalf for a game that needs a login has to hold your credentials in a form it can use, which means it can read them. There is no clever arrangement that avoids this. What differs between hosts is whether they say so. On RE:NODE the games that need your own Steam login - Arma 3, DayZ, Project Zomboid and 7 Days to Die - are created as soon as payment clears, and the install waits on the Setup tab until you enter the credentials there. They are stored as you typed them, and that is the reason this whole post keeps returning to the spare account.

The other lines are the ones you control:

- **File access is credential access.** A subuser who can browse the server's files may be able to read the cached login. Give staff console access without file access where they do not need files - [subusers and least privilege](https://www.renode.space/blog/subusers-and-least-privilege) shows how to build roles like that.
- **Mods run with the server's permissions.** A plugin can read anything the server process can. [Malicious plugins and mods](https://www.renode.space/blog/malicious-plugins-and-mods) covers what that looks like in practice.
- **Support conversations leak.** Never paste a password or a Steam Guard code into Discord, a forum or a public channel while asking for help. On RE:NODE a support ticket takes private attachments, which is the right place for anything sensitive.
- **Your panel account is the front door.** Whoever can sign in to the panel can see the Setup tab. Turn on [two-factor on your panel account](https://www.renode.space/blog/two-factor-on-your-panel-account) so the Steam login is not one leaked panel password away.

If you think the spare account's credentials have been exposed, the response takes five minutes: change the password, use "Deauthorize all other devices", and log in once by hand on the servers that should still have access. Because the account holds nothing but a game licence, that is the full extent of the damage.

#### Login errors and what they mean

SteamCMD reports login failures on the line that starts `Logging in user`, with the reason in brackets at the end.

| Message contains | What it means |
| --- | --- |
| `Invalid Password` | Wrong password, or a username typo |
| `Two-factor code mismatch` | Mobile code expired or mistyped; use the current one |
| `Invalid Login Auth Code` | Email Steam Guard code wrong or from an older attempt |
| `Account Logon Denied` | Steam Guard wants an email code before it will continue |
| `Rate Limit Exceeded` | Too many attempts; stop and wait |
| `No subscription` | Logged in, but this identity does not own the app |

`Rate Limit Exceeded` is the one to respect. It is triggered by repeated failed logins, typically a script retrying in a loop with a stale password, and every further attempt extends the lockout. Stop whatever is retrying, wait - often an hour or more - and then log in once, by hand, correctly.

`No subscription` after a successful login is never a password problem. Either the account does not own the game, or you passed an app id that belongs to something else. For DayZ, confirm the account owns DayZ itself; for an Arma 3 Workshop download, confirm it owns Arma 3 and that you used `107410`, not the server's `233780`.

A login that works by hand and fails from cron is almost always the user mismatch described above: the cached credential belongs to whichever user ran the interactive login, and the scheduled job is someone else.

#### FAQ

##### Can I install a DayZ server without owning DayZ?

No. The DayZ server tool refuses anonymous logins and accounts that do not own the game, and its Workshop mods need the same owning account. Buy a copy on a spare account rather than putting your main account on the server.

##### Do I have to enter a Steam Guard code every time the server updates?

No. Steam Guard is answered once per machine. SteamCMD then caches a login token and later runs log in with the username alone. You will be asked again only after a password change, a device deauthorisation, or when the cached login eventually expires.

##### Is it safe to give a host my Steam login?

It is as safe as the host, which is why you should only ever give one a spare account. Any host that installs DayZ or Arma 3 for you has to store a usable credential. Choose a host that tells you so, and make sure the account behind it owns nothing you would miss.

##### Should I disable Steam Guard on the spare account to stop the prompts?

No. The prompt only appears on the first login from each machine, so disabling Steam Guard saves you one code and removes the only protection left once the password has been typed into a server. Keep it on, ideally with the mobile authenticator.

##### Does the running server use my Steam account?

No. The account is used by SteamCMD to download and update files. The running server does not log in with it. If the game also needs a server listing token, that is a separate credential created on Steam's game server account page.

##### How do I make a machine forget the login?

Delete the cached credential from SteamCMD's `config/config.vdf`, or, if you do not control the machine any more, use "Deauthorize all other devices" in the account's Steam Guard settings and change the password. Either way the next login on that machine needs the password and Steam Guard again.

DayZ, Arma 3, Project Zomboid and 7 Days to Die servers on RE:NODE are created as soon as payment clears, and the install waits on the Setup tab for your Steam login - stored as you type it, so bring a spare account that owns the game. The console shows SteamCMD's output line for line, support tickets take private attachments, and subuser roles let staff work the console without file access.

[See DayZ plans](https://www.renode.space/game-servers/dayz)

---

### SteamCMD on Windows: install, scripts and updates

Published 2026-10-15 by RE:NODE Team. https://www.renode.space/blog/steamcmd-on-windows

SteamCMD on Windows is one zip file: download `steamcmd.zip` from Valve, unpack it into a short path such as `C:\steamcmd`, and run `steamcmd.exe` once with `+quit` so it can update itself. After that, every server install is the same line - `+force_install_dir` with an absolute path, `+login anonymous`, `+app_update <id> validate`, `+quit` - which you move into a script file and call from a batch file, and then hand to Task Scheduler for unattended updates. The Windows-specific parts are where things go wrong: paths with spaces, folders under `Program Files` or your profile, a scheduled task that runs as a different user from the one you tested with, and Defender scanning thousands of small files during every update. This post covers those parts. The arguments themselves, the error table and how app ids work are in [SteamCMD explained](https://www.renode.space/blog/steamcmd-explained), and branch switching is in [SteamCMD app IDs and beta branches](https://www.renode.space/blog/steamcmd-app-ids-and-beta-branches).

#### Downloading SteamCMD and the first run

There is no installer and nothing to add to the Start menu. Valve publishes a zip containing a single small executable, and that executable downloads the rest of itself.

1. Create a folder for it. `C:\steamcmd` is the convention, and the short path matters later.
2. Download `https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip` and extract `steamcmd.exe` into that folder.
3. Open Command Prompt or PowerShell, change to the folder, and run `steamcmd.exe +quit`.

The same three steps from an ordinary (not elevated) PowerShell window:

```text
PS> New-Item -ItemType Directory -Path C:\steamcmd
PS> Invoke-WebRequest -Uri https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip `
      -OutFile C:\steamcmd\steamcmd.zip
PS> Expand-Archive C:\steamcmd\steamcmd.zip -DestinationPath C:\steamcmd
PS> C:\steamcmd\steamcmd.exe +quit
```

The first run is the self-update. SteamCMD reports that it is checking for updates, downloads its packages, extracts them, and relaunches itself before it gets to `Loading Steam API...OK` and a prompt. On a normal connection this takes a minute or two. The exact lines change between releases, but they look roughly like this:

```text
[  0%] Checking for available updates...
[----] Downloading update (...)
[----] Extracting package...
[----] Installing update...
[----] Cleaning up...
[----] Update complete, launching Steamcmd...
Loading Steam API...OK
```

Let it finish. Interrupting the first run - closing the window, or a scheduled task that times out - leaves a half-unpacked client that fails in confusing ways on the next launch. If that happens, delete everything in the folder except `steamcmd.exe` and run `+quit` again. That is also the standard repair for a SteamCMD that has started crashing on startup after months of working: the bootstrapper rebuilds what it needs from scratch, and nothing you care about lives in those files unless you have been installing servers into the default location (see the next section).

SteamCMD checks for its own updates on every launch, not only the first. When Valve has shipped a new client, your next scripted update will spend its first minute updating SteamCMD before it touches the game. Plan timeouts around that.

##### Runtimes the server will want

SteamCMD itself needs nothing extra. The servers you download with it often do. Many Windows dedicated servers are built against the Microsoft Visual C++ Redistributable, and a missing one shows up as the server refusing to start with a message about a DLL such as `VCRUNTIME140.dll` or `MSVCP140.dll`. Some older or Unreal-based servers also want pieces of the DirectX runtime. These are per-game requirements, not SteamCMD's, so check the game's own server documentation. Installing the current x64 Visual C++ Redistributable from Microsoft before your first server is a reasonable default on a fresh Windows Server machine, which ships without most of what a desktop picked up from games over the years.

#### Where things go: the folder layout

After the first run, `C:\steamcmd` holds a few dozen files and folders. The ones worth knowing:

| Path | What it holds |
| --- | --- |
| `steamcmd.exe` | The bootstrapper. The only file you need to keep |
| `package\` | The client packages from the self-update |
| `config\config.vdf` | Settings and the cached login for real accounts |
| `logs\` | Text logs, including `content_log.txt` for downloads |
| `steamapps\` | Default install location and SteamCMD's own state |

Two of those deserve a comment. `config\config.vdf` is where SteamCMD keeps the cached credential after a real-account login has passed Steam Guard. For anonymous installs it does not matter; for Arma 3 or DayZ it is the file that makes unattended updates possible, and it should be treated like a password. `logs\content_log.txt` records every download, every state change and every failure with a timestamp. When an update fails overnight and the batch file's own log says nothing useful, this is the one to read.

If you never set `+force_install_dir`, servers land in `C:\steamcmd\steamapps\common\<AppName>`. That works for one server and becomes awkward for several, because the game files sit inside the tool's folder, a SteamCMD repair has to step around them, and backups of "the server" accidentally include the client. The layout that stays manageable keeps SteamCMD, servers and scripts apart:

```text
C:\steamcmd\                 SteamCMD only
C:\servers\valheim\          one folder per server install
C:\servers\satisfactory\
C:\servers\scripts\          .txt runscripts, .cmd files, logs
```

Keep the root short and free of spaces. Windows still has a 260-character path limit for many programs unless long paths are switched on in policy and the program opts in, and game servers are not reliably among the programs that opt in. A Workshop item several folders deep inside `C:\Users\Administrator\Documents\Game Servers\...` gets surprisingly close to that limit.

Avoid three places in particular:

- **`C:\Program Files`** and **`C:\Program Files (x86)`**. Writing there needs elevation, so either every update runs as administrator or the update fails with a permissions error part-way through.
- **Your user profile**, including Desktop, Documents and Downloads. A scheduled task running as another account cannot see it, and Defender's Controlled folder access, if it is on, blocks unrecognised programs from writing to those folders.
- **A OneDrive-synced folder.** Sync clients lock and upload files while SteamCMD is replacing them, and a game server writing its world every few minutes turns into constant sync traffic.

Every server install also gets its own `steamapps\appmanifest_<appid>.acf`, holding the installed build id. That file is how you tell which version a server is on; [SteamCMD explained](https://www.renode.space/blog/steamcmd-explained) goes through it.

#### force_install_dir on Windows

`+force_install_dir` takes an absolute path, and on Windows the details are paths and quotes.

```text
C:\steamcmd\steamcmd.exe +force_install_dir C:\servers\valheim +login anonymous ^
    +app_update 896660 validate +quit
```

The `^` is the line continuation character in Command Prompt and batch files. In PowerShell the continuation character is the backtick instead, and in either shell it is safer to keep the whole command on one line until it works.

Order matters. Recent SteamCMD builds print a warning along the lines of "Please use force_install_dir before logon!" if `+login` comes first, and depending on the version the directory is then ignored and the files go to the default location. Put `+force_install_dir` first, then `+login`, then `+app_update`. The same order applies inside script files.

If the path contains a space, quote it: `+force_install_dir "C:\Game Servers\valheim"`. Quoting works, but it is one more thing to get wrong in batch files, where a variable holding a quoted path picks up a second set of quotes when you use it. The simpler fix is a path without spaces.

Do not use relative paths. A relative directory is resolved against SteamCMD's own folder rather than the folder your batch file or shell is in, so `+force_install_dir ..\valheim` lands somewhere different depending on where SteamCMD lives. A mapped network drive is also a bad target: drive letters are per logon session, so a drive mapped in your desktop session does not exist for a scheduled task, and SteamCMD over SMB is slow and fragile even when it does.

One SteamCMD folder can manage any number of server installs, because each one is a separate `force_install_dir`. What it should not do is run twice at the same time. Two instances share `package\`, `config\` and the self-update, and a second launch while the first is updating itself is a reliable way to corrupt the client. If several servers update on a schedule, update them one after another in a single script, or stagger their tasks by enough time for each to finish.

#### Script files and +runscript

A long command line in a batch file becomes a maintenance problem the first time you need to change one argument in six places. SteamCMD reads commands from a text file instead, one per line, without the `+` prefix:

C:\servers\scripts\update-valheim.txt:

```text
// Valheim dedicated server, app 896660
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
force_install_dir C:\servers\valheim
login anonymous
app_update 896660
quit
```

```text
C:\steamcmd\steamcmd.exe +runscript C:\servers\scripts\update-valheim.txt
```

Lines starting with `//` are comments. The two `@` lines are settings: `@ShutdownOnFailedCommand 1` stops at the first failing command instead of carrying on to `quit`, and `@NoPromptForPassword 1` stops an unattended run hanging forever on a password prompt nobody will answer. Both should be in every script that runs without you watching. Pass the script with an absolute path, for the same reason as `force_install_dir`.

Note what is not in that script: `validate`. A routine update fetches only changed chunks; `validate` reads and hashes the whole install, and replaces any shipped file you have edited. Keep a second script with `validate` for repairs, and run it by hand when you need it. The reasoning is in [automating game server updates safely](https://www.renode.space/blog/automating-game-server-updates).

A script file is also where you would put more than one app. Several `force_install_dir` and `app_update` pairs can follow one `login`, which runs the updates in sequence under one SteamCMD launch and sidesteps the two-instances problem above:

C:\servers\scripts\update-all.txt:

```text
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login anonymous
force_install_dir C:\servers\valheim
app_update 896660
force_install_dir C:\servers\satisfactory
app_update 1690800
quit
```

That order puts `login` before the directory, which the warning above complains about. In practice later `force_install_dir` lines are honoured for the `app_update` that follows them, but behaviour has changed between SteamCMD versions, so check where the files land after the first run. If the warning matters to you, run one script per server instead.

#### A batch file that stops, updates and checks

SteamCMD cannot replace files a running server holds open. Updating a running server either fails with a file-in-use error or, worse, half-succeeds and leaves an install that crashes on its next start. So the wrapper's job is: stop the server cleanly, update, check the result, start the server.

This example assumes the server runs as a Windows service named `Valheim` (NSSM is the usual way to do that - the [Valheim on Windows guide](https://www.renode.space/blog/valheim-windows-dedicated-server-install) sets one up with a proper Ctrl+C stop so the world saves). `net stop` waits for the service to stop before returning, which is what you want.

C:\servers\scripts\update-valheim.cmd:

```text
@echo off
setlocal
cd /d "%~dp0"
set LOG=%~dp0update-valheim.log

echo ==== %DATE% %TIME% ==== >> "%LOG%"
net stop Valheim >> "%LOG%" 2>&1

C:\steamcmd\steamcmd.exe +runscript "%~dp0update-valheim.txt" > "%~dp0last-run.log" 2>&1
type "%~dp0last-run.log" >> "%LOG%"

findstr /C:"Success! App '896660'" "%~dp0last-run.log" >nul
if errorlevel 1 (
    echo UPDATE FAILED - server left stopped >> "%LOG%"
    exit /b 1
)

net start Valheim >> "%LOG%" 2>&1
exit /b 0
```

A few lines need explaining.

- `cd /d "%~dp0"` changes to the folder the batch file is in. `%~dp0` expands to that folder with a trailing backslash. Task Scheduler starts tasks in `C:\Windows\System32` unless told otherwise, and any relative path in a script that "worked when I double-clicked it" breaks there.
- The success check reads SteamCMD's output, not its exit code. The exit code has not been a reliable signal across versions, and a failed download can exit with a code that looks fine. The line SteamCMD prints after a good update or install is `Success! App '<id>' fully installed.`, and when it is already up to date it prints `Success! App '<id>' already up to date.` Matching on the common prefix accepts both.
- On failure the script leaves the server stopped. That is a choice. Starting a server on a half-updated install risks corrupting the world; leaving it down means players notice and somebody looks. For a server where downtime is worse than risk, change that branch to start the service anyway and alert you some other way.
- `%DATE%` and `%TIME%` are formatted by the system locale, so do not try to build file names from them; the format changes between machines. If you want one log file per run, get the timestamp from PowerShell with `Get-Date -Format yyyyMMdd-HHmm` instead.

If the server is not a service but a console window started from a batch file, there is no clean way for a script to stop it. Closing the window or `taskkill /F` ends the process without letting it save. Run game servers as services if you intend to update them unattended; it is the only arrangement where "stop" means a clean stop.

> [!WARNING]
> Test the batch file by running it the way Task Scheduler will - as the same account, from a different working directory - before you trust it. A script that only works from your own desktop session will fail at four in the morning, and the first you will hear of it is players asking why the server is down.

#### Scheduled updates with Task Scheduler

Task Scheduler is Windows' cron. It can be driven from the GUI (`taskschd.msc`) or from the command line with `schtasks`, which is easier to document and repeat.

```text
schtasks /Create /TN "Servers\Update Valheim" ^
    /TR "C:\servers\scripts\update-valheim.cmd" ^
    /SC WEEKLY /D MON /ST 05:00 /RU SYSTEM /RL HIGHEST
```

That creates a task in a `Servers` folder that runs every Monday at 05:00 as the built-in `SYSTEM` account with highest privileges. Test it immediately, then read its last result:

```text
schtasks /Run /TN "Servers\Update Valheim"
schtasks /Query /TN "Servers\Update Valheim" /V /FO LIST
```

`Last Result: 0` means the batch file exited with `0`, which in the script above means the success line was found. `1` means the script's own failure branch ran. Anything else - a large hexadecimal number - usually means the task never got as far as running the script: a wrong path in `/TR`, or an account without permission to the folder.

The account the task runs as is the decision that matters.

| Run as | Good for | Watch out for |
| --- | --- | --- |
| `SYSTEM` | Anonymous installs, services | Full control of the machine |
| A dedicated local user | Real-account logins | Needs folder rights |
| Your own account | Testing | Password changes break it |

`SYSTEM` is the simplest: it can stop and start services and write anywhere. It is also the most powerful account on the machine, so a script it runs should live in a folder that only administrators can write to. For servers that need a real Steam login (Arma 3, DayZ), a dedicated local user is cleaner. Log in once as that user, run SteamCMD by hand to pass Steam Guard, and the cached credential in `config\config.vdf` lets the scheduled task log in without a prompt afterwards. That user needs Modify rights on `C:\steamcmd` and `C:\servers`, the "Log on as a batch job" right (granted automatically when you save a task with its password), and the right to control the service if the script stops and starts it.

Options worth setting in the task's properties, whichever account you use:

- **Run whether user is logged on or not.** Otherwise the task only runs while someone is signed in at the console.
- **Stop the task if it runs longer than** something sensible, such as two hours. The default is three days, which hides a hung SteamCMD for a long time.
- **Do not start a new instance** if the task is already running. This is the default and it prevents two SteamCMD runs overlapping.
- **Run task as soon as possible after a scheduled start is missed.** Useful if the machine was rebooting for Windows updates at 05:00 - though a weekly server update colliding with Patch Tuesday is worth avoiding in the first place.

How often to run it depends on the server. A vanilla server can update weekly or on every restart; a modded server should not update itself at all on the day of a game patch, because the update breaks mods until their authors catch up. [What to do when a mod update breaks](https://www.renode.space/blog/what-to-do-when-a-mod-update-breaks) covers the recovery, and [scheduled tasks worth having](https://www.renode.space/blog/scheduled-tasks-worth-having) covers what else belongs on the same schedule.

```diagram
title: A scheduled update on Windows
task = Task Scheduler | weekly, 05:00
cmd = update-valheim.cmd | stop, update, check
svc = Valheim service | net stop / net start
steam = steamcmd.exe | +runscript
log = last-run.log | Success! App
task -> cmd
cmd -> svc : stop first
cmd -> steam : update.txt
steam -> log : output
log -> svc : start only on success
```

#### Windows Defender exclusions

Microsoft Defender's real-time protection scans files as they are written. An update writes thousands of them, and a `validate` reads every file in the install, which Defender may scan again. On a large install that is the difference between a validate finishing in a few minutes and one that takes much longer. Defender can also hold a freshly written file open for a moment while it scans, which occasionally collides with SteamCMD moving it into place.

Excluding the SteamCMD folder and the server folders from scanning removes both problems. From an elevated PowerShell window:

```text
PS> Add-MpPreference -ExclusionPath "C:\steamcmd"
PS> Add-MpPreference -ExclusionPath "C:\servers"
PS> Get-MpPreference | Select-Object -ExpandProperty ExclusionPath
```

The last line lists the current exclusions so you can confirm they took. On a machine managed by Group Policy or Intune, local exclusions may be ignored or overwritten, and the policy has to carry them instead.

Be honest with yourself about the trade. An exclusion means Defender will not look at anything in those folders, including a malicious plugin someone sends you or a mod downloaded from a site you should not have trusted. Keep exclusions to the folders that need them, never exclude a downloads folder or a whole drive, and scan mods and plugins before they go into an excluded folder. [Malicious plugins and mods](https://www.renode.space/blog/malicious-plugins-and-mods) explains why that is not paranoia.

Defender exclusions are separate from Windows Defender Firewall. SteamCMD itself needs only outbound internet access, which Windows allows by default. The game server needs inbound rules for its ports, and the first time it starts Windows will ask whether to allow it on private or public networks. Answer for the network the server is actually on, or create the rules yourself with `New-NetFirewallRule` - the Valheim Windows guide linked above walks through both.

#### Troubleshooting SteamCMD on Windows

**SteamCMD closes immediately when double-clicked, or the window flashes and vanishes.** It probably updated itself and relaunched, or hit an error and exited. Run it from an open Command Prompt so the output stays on screen, and read `logs\bootstrap_log.txt`.

**`Failed to install app 'X' (Disk write failure)`.** The target folder is not writable by the account running SteamCMD, or the disk is full. Check the account first if it only fails from Task Scheduler. On a full disk, remember an update needs free space on top of the existing install - [what to do when the disk is full](https://www.renode.space/blog/game-server-disk-space-full) covers how much.

**`Failed to install app 'X' (Missing file permissions)` or access denied.** A file in the install is in use (the server is still running), read-only, or owned by an account the current one cannot modify. Stop the server, then compare the folder's permissions against the account the task runs as.

**The update says success but the server did not change.** The task ran a different script, the install directory in the script differs from the one the service starts from, or `force_install_dir` came after `login` and the files went to `C:\steamcmd\steamapps\common`. Look for a second copy of the server there.

**The task's Last Result is non-zero but the log is empty.** The batch file never started, or started in `System32` and wrote its log there. Check the path in the task's action and the `cd /d "%~dp0"` line.

**SteamCMD hangs at login in a scheduled task.** It is waiting for a password or a Steam Guard code that will never come. Run SteamCMD once by hand as the task's account to cache the credential, and keep `@NoPromptForPassword 1` in the script so the next failure ends instead of hanging.

**Everything stopped working after a Windows update.** Usually not SteamCMD. Confirm the service still starts by hand and the task still exists; then delete everything in `C:\steamcmd` except `steamcmd.exe` and the `config` folder (if you use a real account), and run `+quit` to rebuild the client.

#### When you do not want to run Windows at all

Most of this post exists because Windows was not designed around unattended command-line tools, and every step above - service wrappers, task accounts, Defender exclusions - is there to make it behave like one. Some servers only ship a Windows build, and for those it is worth it, or worth reading [Linux vs Windows for game servers](https://www.renode.space/blog/linux-vs-windows-game-servers) and the [Wine and Proton route](https://www.renode.space/blog/wine-and-proton-for-windows-only-servers). For the rest, the question is whether you want to maintain the machine at all.

On RE:NODE the SteamCMD step runs when a game server is created, usually inside a minute of payment clearing, and the install output appears line for line in the console. Game variables and launch settings are fields on the Startup tab, so there is no script to maintain. The Schedules tab runs cron-style tasks with ordered steps - a backup, then a restart, with delays between them - which covers the job Task Scheduler does above; the [guides](https://www.renode.space/guides#schedules) show how it is set up. Games that need your own Steam login wait on the Setup tab until you add it.

#### FAQ

##### Do I need to run SteamCMD as administrator?

No, as long as it and the server folders are somewhere the account can write to, such as `C:\steamcmd` and `C:\servers`. Needing administrator rights is usually a sign the files are under `Program Files`. The only part of this setup that needs elevation is adding Defender exclusions and creating tasks that run as `SYSTEM`.

##### Can I use the Steam client's Tools library instead of SteamCMD?

For some servers, yes: dedicated servers listed under Tools in the Steam library install like any game. That needs the full Steam client signed in on the machine and updates whenever Steam decides to, which suits a home PC that also plays games. A machine that only runs servers is better served by SteamCMD, which needs no desktop session.

##### Where are the SteamCMD logs on Windows?

In the `logs` folder inside the SteamCMD directory, for example `C:\steamcmd\logs`. `content_log.txt` records downloads and install failures and is the first file to read when an update fails. Your own batch file's log is separate and only holds what you redirected into it.

##### Can I download the Linux build of a server from Windows?

Yes. Add `@sSteamCmdForcePlatformType linux` at the top of the script before `login`. The files download but will not run on Windows; it is useful for preparing an install to copy to a Linux machine or a host's file manager.

##### How do I uninstall SteamCMD?

Delete its folder, and delete any scheduled tasks and Defender exclusions you created for it. SteamCMD does not write to the registry or install services of its own. Server installs in other folders are untouched and keep working; they only lose their updater.

##### Why does the update take longer every time a new SteamCMD is released?

Because SteamCMD updates itself before running your commands whenever Valve ships a new client. The first scheduled run after a client release spends extra time on that. It is normal, and the reason a task's time limit should be generous.

On RE:NODE game servers are installed with SteamCMD when they are created, usually inside a minute of payment clearing, with game variables and launch settings as fields on the Startup tab. Scheduled backups and restarts run from the Schedules tab, and backup slots come with every game plan.

[Browse game servers](https://www.renode.space/game-servers)

---

### Choosing a hosting provider: what to look at, from the inside

Published 2026-10-14 by RE:NODE Team. https://www.renode.space/blog/choosing-a-hosting-provider-from-the-inside

When we pick a host, we look at six things, in this order: what CPU the workload actually lands on and how fast one core of it is, what every "unlimited" on the page turns into once the terms are read, whether the status page tells the truth on a bad day, who restores your data and how, how much of the machine you can reach without asking anyone, and whether a person answers when you write in. Price comes after all of that, because a cheap plan that fails on any of the six is not cheap.

We run the RE:NODE platform - the orchestration that provisions, scales and recovers customer servers, the game, VDS, web, database and storage lines, and the monitoring and backup automation around them. That gives us an uncomfortable view of how hosting is sold versus how it is run. Most of what follows is the stuff operators know and the plan page does not say. It applies to any host, including us, and some of it is deliberately unflattering to small providers like ours.

There is a shorter checklist version in [choosing game server hosting](https://www.renode.space/blog/how-to-choose-game-server-hosting). This one is the reasoning behind it.

#### Why the spec sheet lies by omission

A plan page is written to be compared, so it lists the things that compare easily: gigabytes of RAM, gigabytes of disk, a number of cores, a price. None of those is false. The trouble is what they leave out, and from the inside we can tell you the omissions are not random.

RAM is easy to sell and easy to deliver honestly, because memory is either there or it is not. Disk size is the same. Cores are where it gets slippery, because "2 vCPU" says nothing about which CPU, how old it is, how fast one thread runs, or how many other customers are queued on the same physical cores. Bandwidth is slipperier still. And the things that decide whether you stay - backups, access, support, what happens at 3am - rarely appear on the plan page at all.

So the rule we ended up with is simple: the numbers on the page are the floor of what you need to know, not the answer. Everything below is about the questions those numbers do not answer.

#### CPU: generation and single-thread speed beat core counts

This is the single most misunderstood thing in hosting, and it matters most for game servers.

Most game servers do their important work on one thread. The simulation tick - moving entities, running game logic, deciding what every player sees next - runs on a main thread, and the other cores help with networking, chunk loading, saving and the like. Minecraft is the famous example, but the pattern is broad: when a server lags, it is usually one core at 100% while the rest sit idle. We wrote that up properly in [reading game server CPU usage](https://www.renode.space/blog/reading-game-server-cpu-usage-single-thread), and [game server CPU requirements](https://www.renode.space/blog/game-server-cpu-requirements) covers it game by game.

What that means for choosing a host:

- A newer CPU at a high clock usually beats an older CPU with more cores. Per-clock performance has moved a lot between generations, so "3.0 GHz" on a CPU from many years ago and "3.0 GHz" on a recent one are not the same speed.
- Many-core server chips are excellent at running many things at once and often unremarkable at running one thing fast. That is the right trade for a host packing in web apps. It is the wrong one for a single busy game server.
- A "vCPU" is usually one hardware thread, not one physical core. Two vCPU may be the two hyperthreads of a single core, which is less than two full cores when both are busy.

The question to ask any host is "which CPU model does this plan run on?" A good answer names a model. A fair answer says "it varies by node, here are the models we use". An evasive answer - "enterprise-grade processors" - tells you they would rather you did not know. In fairness to hosts, not all of them can promise a model, because nodes get replaced. But they can tell you what is in the fleet today.

On RE:NODE, the VDS line names its CPU (the Intel i9-9900K), and on the shared lines the plan's CPU figure is a percentage of one core enforced as a hard limit - 250 means 2.5 vCPU of throttled share, not 2.5 cores you get to burst past. A server sitting at its limit is slow, never suspended for it. We do not publish a model for the shared nodes, so if that matters to you, that is a question to ask us too.

##### How to check what you actually got

On a VDS you have a shell, so look:

```bash
$ lscpu | grep -E 'Model name|^CPU\(s\)|Thread'
$ sysbench cpu --threads=1 --time=30 run
$ vmstat 1 10
```

The first line tells you the model and how many threads you have. The `sysbench` run with one thread gives you an events-per-second number you can compare between hosts - run it on every candidate the same way. In `vmstat`, watch the `st` column: steal time is CPU your virtual machine wanted and the hypervisor gave to someone else. A few percent now and then is normal on shared hardware. Steal that sits high while your own load is low means a crowded host, and [shared CPU and noisy neighbours](https://www.renode.space/blog/shared-cpu-and-noisy-neighbours) explains what you can and cannot do about it.

On a game panel you usually have no shell, but the host's `/proc/cpuinfo` is often visible from inside the container, and the console's CPU graph against the limit tells you whether you are bounded by the share you bought.

#### What "unlimited" means

From the operator's side, nothing is unlimited. Every resource we work with has a physical ceiling: uplink capacity, disk throughput, inodes, power. When a plan says "unlimited", it means one of three things, and you want to know which.

| The page says | What it usually means | What to ask |
|---|---|---|
| Unlimited bandwidth | Not billed per GB, under a fair-use clause | What happens at the fair-use line? |
| Unlimited slots | No slot count enforced in software | What does the CPU and RAM handle? |
| Unlimited disk or sites | Limited by inodes, I/O or file count | Where is the inode or I/O limit? |

"Unmetered" is the honest word for bandwidth: you are not charged per gigabyte. It is not a promise that you can saturate a shared uplink all month. Every host with an unmetered plan has a point at which someone's traffic starts hurting other customers, and the only real question is whether they tell you where it is and what happens when you reach it - a throttle, an email, a suspension. Our own wording is that unmetered means not billed per gigabyte, not a licence to saturate a shared uplink, and [bandwidth and fair use](https://www.renode.space/blog/bandwidth-and-fair-use) goes into what that means in practice.

"Unlimited player slots" on a game server is the one that annoys us most, because it is technically true and practically meaningless. The game, the CPU and the RAM decide how many players fit, not a number in the panel. A host advertising unlimited slots on a small plan is selling a number you cannot use.

The test we apply: if a plan says unlimited, search the terms of service for "fair use", "acceptable use", "excessive" and "inode". Whatever the terms say is the real plan. If the terms say nothing at all, the limit exists anyway - it is just enforced by whoever is on shift, by judgement, without warning.

#### How to read a status page

Every host has a status page now, and most of them are green almost all the time. That alone tells you very little. Here is what we look at instead.

1. Who measures it. A status page fed by automated checks from outside the host's network is worth more than one somebody edits by hand after the fact. A hand-edited page is green until a human decides it should not be.
2. How fine-grained it is. One "All systems operational" banner for an entire company hides the fact that your node can be down while everything else is up. Per-node or per-service components are more honest.
3. The history. Scroll back. A page with no incidents in a year is either describing a remarkably lucky operation or not being updated. Real infrastructure has bad days, and the honest pages show them.
4. What the incident notes say. "We are investigating" followed by "resolved" with nothing in between teaches you nothing. Notes that say what broke, what was affected and what changed afterwards tell you how the team thinks.
5. Where it is hosted. If the status page lives on the same infrastructure it reports on, it goes down at exactly the moment you need it.

On uptime percentages: they are only meaningful with the measurement interval and the definition next to them. 99.9% over a 30-day month allows about 43 minutes of downtime; 99.99% allows about four. If the check runs every five minutes, anything shorter than that may never be seen. And an SLA usually means a partial credit off your bill, not your downtime back - read what the remedy is before you are impressed by the number.

For what it is worth, RE:NODE's [status page](https://www.renode.space/status) samples availability every five minutes and we do not publish an uptime percentage or an SLA. We would rather say that plainly than print a figure. You should weigh that the same way you would weigh it on any host.

#### Backups, and who restores them

This is where we have the strongest opinions, because backup automation is a large part of running a platform, and because the gap between "we do backups" and "you can get your data back" is where most hosting disappointment lives.

There are two different things a host can mean by "backups":

- Platform backups - the host copies its own disks so it can recover the machine if hardware fails. You usually cannot see these, cannot choose what is in them and cannot restore a single file from them yourself. They protect the host's ability to rebuild, not your ability to undo a mistake.
- Customer backups - copies of your server that you can make, schedule, restore and download.

You want to know which one a plan includes, and you want the second kind. Then you want answers to these:

- Can I restore it myself, or do I file a ticket and wait?
- Can I download it, so a copy exists outside this host entirely?
- Where is it stored? A backup on the same disk as the data it protects is a convenience, not a backup.
- What happens to backups when I cancel or delete the server?
- Has anyone restored one recently?

That last one matters most. As the house line goes, a backup nobody has restored is a hypothesis. We have strong views on testing restores before you need them, and they are in [testing a restore before you need it](https://www.renode.space/blog/testing-a-restore-before-you-need-it) and [backups that actually restore](https://www.renode.space/blog/backups-that-actually-restore).

On RE:NODE, every plan has backup slots: on demand or scheduled, restored with a button, downloadable, lockable against rotation and stored off the machine they protect. Deleting a server deletes its backups, locked ones included - which is exactly the kind of detail you should look for on any host, because people learn it the wrong way. Separately, the platform takes nightly backups copied to separate hardware. Neither replaces a copy you keep yourself, and we would say that about any host's backups, RE:NODE's included.

#### Panel, file and console access

The question here is how much of your own server you can reach without asking anyone. The less you can reach, the more every small problem becomes a support ticket, and the harder it is to leave.

For a game server or app host on a panel, the minimum we would accept:

- A live console with the raw, unfiltered output and a command line. If a host only shows you a cleaned-up log or a "server is running" badge, you cannot diagnose anything yourself.
- A file manager and SFTP. The file manager is for quick edits; SFTP is how you move a whole world, a modpack or a site in and out. No SFTP is a red flag on its own.
- The startup command or at least its variables. You will eventually need a launch flag, a JVM option or a different branch.
- Resource graphs against the limits, so you can see whether you are hitting the CPU share or the memory ceiling.
- Control over who else gets access, with permissions narrower than "everything".

For a VDS, the minimum is root, a way to reinstall, and some out-of-band console (VNC or serial) for when you lock yourself out with a firewall rule. Ask what you get if SSH stops answering. "Open a ticket" is a weak answer.

There is also an exit question hiding in here. Can you get all of your data out, in a normal format, without the host's help? If the answer is yes, a bad host costs you a weekend. If it is no, it costs you whatever they decide.

What the RE:NODE panel gives every plan, without tiers: an unfiltered live console with a command line, a file manager, SFTP with credentials per server rather than per account, a Startup tab for game and environment variables, CPU, memory and disk graphs against the limits, and subusers with granular permissions. It is built on Pterodactyl and Wings with our own panel on top, so if you know Pterodactyl, the shape will be familiar - [what Pterodactyl is](https://www.renode.space/blog/pterodactyl-panel-explained) covers that.

#### Support you can reach

The thing nobody can tell from a plan page is what support is like, and it is the thing that decides whether you stay. Hosting is a support business with servers attached.

What to look for:

- More than one channel, and at least one that leaves a written trail. A ticket system where your attachments stay private beats a public Discord channel for anything involving credentials or logs.
- A clear statement of when people are actually there. "24/7 support" from a small host often means "someone gets a notification". That is not dishonest, but it is not the same as a person on shift. We would rather a host told you its real hours.
- Answers written by someone who read the question. A pasted knowledge-base link in reply to a specific question is a sign of a team triaging by keyword.
- Whether support can do things, not just relay them. Can the person answering restore a backup, open a port, move a server? Or do they open an internal ticket and wait for an engineer?

Here is the uncomfortable thing from the operator side: small hosts are often better at support than large ones, because the person answering frequently wrote the code, and worse at coverage, because there are fewer of them. Big hosts tend to be the reverse. Decide which you need. A hobby server can wait until morning; a paid community or a business app may not.

RE:NODE support is a ticket from the panel (it reaches all staff, with private attachments), Discord and email. We do not advertise round-the-clock staffing, and we would not trust a host our size that did.

#### Testing a host in the first week

You learn more in the first week on a host than from any amount of reading reviews. Treat the first payment as the cost of a test, and run the test deliberately. Where a host offers a short term, take it.

| When | Test | What a pass looks like |
|---|---|---|
| Day 1 | Route from your players | Low, steady ping and little loss in `mtr` |
| Day 1 | CPU and disk benchmark | Numbers close to other hosts on the same tier |
| Days 1-7 | Load at your peak hours | No steal or slowdown at busy times |
| Day 2 | Support question | A specific answer from a person |
| Day 3 | Backup and restore | You restore and download it yourself |
| Day 5 | Data export | Everything comes out over SFTP or a dump |

The route test matters first, because no amount of CPU fixes a bad path between the machine and your players. Run it from where your players actually are, not from where you are:

```bash
$ mtr -rwc 100 203.0.113.10
$ fio --name=rand --rw=randread --bs=4k --size=1G --iodepth=32 \
    --ioengine=libaio --direct=1 --runtime=30 --time_based
```

The address there is a documentation example - put in your server's. [Reading traceroute and mtr](https://www.renode.space/blog/reading-traceroute-and-mtr) explains how to read the output, and the most common misreading: loss on a middle hop that does not continue to the last hop is usually a router deprioritising the probes, not real loss.

Then load the server the way you will use it, at the hours you will use it. A machine that benchmarks well at 10am on a Tuesday and crawls on Saturday evening has a capacity problem that a single benchmark will not show. Repeat the one-thread `sysbench` run at a few different times and compare.

Ask support one real question you already know the answer to, and note how long the reply takes and whether it is right. Take a backup, delete a file you can live without, restore it, download the archive, and open it on your own machine. Pull your data out the way you would if you were leaving. If any of these is hard in week one, it will be worse in month six.

#### Red flags

Some of these are dealbreakers; some are just a reason to ask harder questions. We have tried to only list things we would also hold our own platform to.

- No CPU model anywhere, and evasion when you ask.
- "Unlimited" everything, with no fair-use section you can find.
- A status page that has never shown an incident.
- A DDoS protection claim with a large number and no explanation of what is filtered. Real protection drops obvious volumetric floods; attacks that look like real players are much harder, and anyone promising to stop everything is selling you a sentence, not a service. There is more on that in [DDoS attacks on game servers explained](https://www.renode.space/blog/ddos-attacks-on-game-servers-explained).
- No SFTP, no raw console, or backups you can only restore through a ticket.
- No way to export your data, or an export locked behind a cancellation.
- Lifetime plans, or prices so far below everyone else's that the arithmetic cannot work. Hardware, power and bandwidth cost the same for everyone in a given market; a plan priced below that is subsidised by something - overselling, a short life, or both.
- Terms that let the host suspend you for using the resources you paid for. Running at 100% of your CPU share should make your server slow, not get it removed.
- Pressure to buy a long term up front before you have tested anything.

None of these is proof a host is bad. Several together usually are.

#### The trade-offs we would make again

A few opinions, stated plainly, from running one of these.

We would take a host that admits its limits over one that hides them. Every host has a ceiling on bandwidth, a support rota with gaps, a location that suits some players and not others. The ones that write those down are the ones you can plan around. RE:NODE runs in one location, Germany, on hardware we run - that is the right answer for players in Europe and the wrong one for players far away, and we would rather you knew that before you paid.

We would take fewer features and more access. A panel with an honest console, SFTP and real backups beats one with a hundred one-click buttons and no shell.

We would always keep our own copy of anything that matters, on someone else's infrastructure. Not because hosts are careless, but because the failure you are protecting against might be the host itself - a billing mistake, a closed account, a company that stops trading.

And we would test before committing. Every host, including ours, looks better on its own website than it does at 3am. The first week is where you find out which ones look the same.

If you want the wider view on what kind of server to rent in the first place, [VPS vs VDS vs dedicated server](https://www.renode.space/blog/vps-vs-vds-vs-dedicated-server) is the place to start.
#### FAQ

##### Is a higher core count always better for a game server?

No. Most game servers are limited by how fast one core is, because the main simulation loop runs on a single thread. A plan with fewer cores on a newer, higher-clocked CPU will usually run a busy game server better than more cores on an older or many-core chip. Extra cores help with mods, plugins, chunk generation and running several servers side by side.

##### What is the difference between unmetered and unlimited bandwidth?

Unmetered means you are not billed per gigabyte transferred. Unlimited is a marketing word for the same thing and should never be read as no ceiling at all - every host has a shared uplink and a fair-use point. The useful question is what the host does when you reach it: throttle, warn or suspend.

##### Should I trust a 99.9% uptime guarantee?

Treat it as a statement about compensation, not about reliability. It allows about 43 minutes of downtime in a 30-day month, the measurement interval decides what counts, and the remedy is usually a partial credit. A status page with real incident history tells you more about how a host operates than the percentage does.

##### Are the host's backups enough on their own?

They are a good first line and nothing more. Make sure you can restore and download them yourself, and keep at least one recent copy somewhere else entirely - your own machine or separate object storage. If the problem is the host account itself, backups stored with that host do not help.

##### How long should I test a new host before committing?

A week of normal use, including your busiest hours, is enough to find most problems: route quality, CPU contention at peak, support response, and whether restores and exports actually work. Avoid paying for a long term until that week is behind you, even if it is cheaper per month.

##### Is a small host riskier than a big one?

Differently risky. A small host is more likely to have support from people who built the system and less likely to have staff on shift at every hour. A big host has more coverage and more layers between you and an engineer. Your own backups and an easy way to export your data make either choice much safer.

Every RE:NODE plan gets the same panel: an unfiltered console, a file manager, SFTP per server, and backups you restore with a button and can download. Game, app, web and database servers are usually ready inside a minute of payment, on NVMe in Germany.

[See RE:NODE plans](https://www.renode.space/game-servers)

---

### Game server backups to S3: off-site world copies on a schedule

Published 2026-10-08 by RE:NODE Team. https://www.renode.space/blog/game-server-backups-to-s3

The reliable way to get a game server's world into S3 storage every night is a small job on a machine you control that pulls the world over SFTP and pushes it to a bucket, timed a few minutes after the server has been told to save. rclone does both halves in one command, because it speaks SFTP and S3 natively; restic adds encryption and deduplication if you want months of history in little space. The panel's own backups stay your first line - they are quick to take and one button to restore - and the S3 copy is the one that survives the things panel backups do not: a deleted server, a mistake that was backed up over, or an account you can no longer reach. This post builds that job end to end: what to copy, how to get a clean copy, how to keep history without versioning, how to prune, and how to prove it restores.

#### Why a second copy, and what it protects against

Panel backups and an S3 copy fail in different ways, which is the whole reason to have both.

| Risk | Panel backup | Copy in S3 storage | Copy at home |
| --- | --- | --- | --- |
| Griefing, bad plugin, corrupt save | Yes | Yes | Yes |
| Backup slots rotated past the good copy | Only if locked | Yes, with longer retention | Yes |
| Server deleted (backups go with it) | No | Yes | Yes |
| Loss of the whole location | Depends | No, if in the same location | Yes |
| You lose access to the hosting account | No | Only if it is a separate account | Yes |

On RE:NODE, game plans include backup slots that are stored off the machine they protect, can be locked against rotation and restore with a button - but deleting a server deletes its backups, locked ones included. A copy in a bucket outlives that. Be honest about the other row, though: RE:NODE's S3 storage keeps one copy of your data on NVMe in one location, Germany, the same place as the game servers. It protects against deletion and mistakes, not against losing the site. For a world you would be heartbroken to lose, the third column matters too, and the same rclone job can drop a copy on your own disk. [Backups that actually restore](https://www.renode.space/blog/backups-that-actually-restore) covers the 3-2-1 reasoning in full, and [S3 storage sizing and the 3-2-1 rule](https://www.renode.space/blog/s3-storage-sizing-and-the-3-2-1-rule) applies it to buckets.

#### The shape of the setup

A game server on a panel is a container running the game, not a general-purpose machine: you get a console, a file manager, SFTP and a scheduler that runs console commands, backups and power actions - not arbitrary shell scripts. So the copy job runs somewhere else and reaches in over SFTP.

```diagram
title: A nightly pull from the game server to a bucket
panel = Panel schedule | save at 03:55
game = Game server | world files
puller = Backup job | rclone on a VDS or PC
bucket = S3 bucket | game-backups
home = Local disk | optional third copy
panel -> game : save command
puller -> game : SFTP read at 04:00
puller -> bucket : S3 upload
puller --> home : optional
```

The puller can be anything that runs on a timer: a Linux VDS, a home server or Raspberry Pi, or a Windows PC that is on at night. It needs rclone, the game server's SFTP details, and the bucket's keys. It never needs to run a game or keep files between runs unless you choose restic, which keeps a small cache.

If the game runs on a VDS or a machine of your own instead, skip the SFTP half: the job runs on the same machine and reads the world folder directly.

#### What to copy

Copy state and configuration; skip anything that can be downloaded again. The world folder is usually megabytes to a few gigabytes, while the game files around it are often tens of gigabytes that SteamCMD will reinstall in minutes.

| Game | Copy | Skip |
| --- | --- | --- |
| Minecraft (Paper) | `world*/`, `plugins/`, `server.properties`, `*.json` lists | `cache/`, `libraries/`, `versions/`, server jar |
| Valheim | the save folder's `worlds_local/`, the three list files | the game install |
| Palworld | `Pal/Saved/` | everything else |
| Project Zomboid | `Zomboid/Saves/`, `Zomboid/db/`, `Zomboid/Server/` | the game install, `Zomboid/Logs/` |
| Terraria | `.wld` files, `serverconfig.txt`, `tshock/` | the server binaries |
| Factorio | `saves/`, `data/server-settings.json`, `mods/` | the game install |

These paths move if the server is started with a custom save directory, so check yours against the startup line. [Game server backup strategy](https://www.renode.space/blog/game-server-backup-strategy) has the longer list, including the games where the obvious folder is not the whole story - Project Zomboid's player database being the classic.

Write the choice down as an rclone filter file. It doubles as documentation of what your backup actually contains:

minecraft.filter:

```text
+ /world/**
+ /world_nether/**
+ /world_the_end/**
+ /plugins/**
+ /server.properties
+ /*.json
- /plugins/*.jar.old
- /plugins/**/logs/**
- *
```

Rules are read top to bottom, the first match wins, and the final `- *` excludes everything not listed. Keeping plugin jars in the copy is deliberate: a world restored next to a newer plugin version is a common way to break it, and the exact jar you were running may not be downloadable later.

#### Setting up the rclone remotes

Install rclone on the puller (`sudo apt install rclone` is often old; the install script or a release binary from rclone.org gets the current version), then define two remotes - one for the game server's SFTP, one for the storage.

~/.config/rclone/rclone.conf:

```ini
[mc]
type = sftp
host = sftp.example-node.net
port = 2022
user = yourname.a1b2c3d4
pass = <output of: rclone obscure 'your-sftp-password'>

[store]
type = s3
provider = Other
access_key_id = AKIA...
secret_access_key = ...
endpoint = https://s3.example.com
region = us-east-1
force_path_style = true
```

Take the SFTP host, port and username exactly as the panel shows them for that server - on Pterodactyl-based panels the username carries a server suffix and the port is usually not 22. The `pass` field must hold the output of `rclone obscure`, not the plain password. `rclone obscure` is reversible encoding, not encryption, so protect the file itself with `chmod 600`. [SFTP and the file manager](https://www.renode.space/blog/sftp-and-the-file-manager) explains where the credentials come from.

For the storage remote, `provider = Other` is the generic S3-compatible setting and `force_path_style = true` is already rclone's default. The endpoint is the HTTPS hostname you pointed at the storage plan's proxy slot; the raw plain-HTTP port works too, but then your world travels unencrypted. Test both remotes before anything else:

```bash
$ rclone lsd mc:/
$ rclone ls mc:/ --filter-from minecraft.filter | head
$ rclone lsd store:
$ rclone mkdir store:game-backups
```

The second line is the important one: it lists exactly the files the backup will take. If the world folder is not in that list, nothing after this point matters. [rclone with S3 storage](https://www.renode.space/blog/rclone-with-s3-storage) covers remotes, flags and bandwidth limits in more depth.

#### Getting a clean copy: save first

Most games hold the world in memory and write it on a timer. Copy files while the game is halfway through writing and you get a backup that looks complete and does not load. The answer is to tell the game to save shortly before the copy starts, using the panel's scheduler.

On RE:NODE the Schedules tab runs ordered tasks with delays from a cron expression. For Minecraft, a nightly schedule at 03:55 would be:

Schedule: pre-backup save, 55 3 * * *:

```text
Task 1  command  save-off
Task 2  command  save-all flush       (delay 5 s)
Task 3  command  save-on              (delay 600 s)
```

`save-off` stops autosaves so the game does not start rewriting region files mid-copy, `save-all flush` writes everything to disk and waits for it, and `save-on` re-enables autosave ten minutes later, after the puller has finished at 04:00. For a world that copies in a minute, ten minutes is generous; for a multi-gigabyte world, time a run and widen the gap. Other games have their own save command - `save` in Project Zomboid and Terraria, `saveworld` in 7 Days to Die, `/server-save` in Factorio - and some, like Valheim and DayZ, have no server console command and are safest copied from a scheduled panel backup or after a clean restart. [Scheduled tasks worth having](https://www.renode.space/blog/scheduled-tasks-worth-having) and [cron expressions explained](https://www.renode.space/blog/cron-expressions-explained) cover the scheduler.

The puller's clock and the panel's schedule must agree on the time zone. Write both in UTC, or check what each one assumes, before trusting a five-minute gap.

#### Keeping history without versioning

A single `rclone sync` keeps the bucket identical to the server - which means that when the world gets griefed at 21:00, the 04:00 sync faithfully copies the griefed world over the good one. A backup needs history. Without bucket versioning to lean on, there are three ways to get it.

**Dated full copies.** Each night goes into its own prefix. Simple, obvious to restore, and costs a full world's size per day.

```bash
$ rclone copy mc:/ store:game-backups/mc/daily/$(date -u +%F) \
    --filter-from minecraft.filter --transfers 4 --log-file /var/log/mc-backup.log
```

**Sync with a backup directory.** The bucket holds one current copy, and every file that sync would overwrite or delete is moved into a dated folder first. History costs only the files that changed, which for a Minecraft world is the region files players actually visited.

```bash
$ rclone sync mc:/ store:game-backups/mc/current \
    --backup-dir store:game-backups/mc/changed/$(date -u +%F) \
    --filter-from minecraft.filter
```

Restoring a past day this way means taking `current` and laying the dated folders back over it, newest first down to the day you want - possible, but fiddly under pressure.

**restic.** Pull the files to a local staging folder with rclone, then let restic take a snapshot to the bucket. restic deduplicates at the chunk level and encrypts everything, so thirty daily snapshots of a world that changes a little each day cost little more than one. Restoring any snapshot is one command. It is the best option if you can spare the puller some local disk.

```bash
$ rclone sync mc:/ /srv/stage/mc --filter-from minecraft.filter
$ restic -r s3:https://s3.example.com/game-backups/restic backup /srv/stage/mc --tag mc
```

restic reads `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` and `RESTIC_PASSWORD` (or `RESTIC_PASSWORD_FILE`) from the environment. Lose the restic password and the repository is unreadable - by design. [restic backups to S3](https://www.renode.space/blog/restic-backups-to-s3) covers initialising the repository and the rest.

#### Retention and cleanup

Storage without lifecycle rules does not delete anything on its own, so retention is part of your job script.

The obvious command is the wrong one. `rclone delete --min-age 14d` filters on each object's modification time, and rclone preserves the source file's modification time when it uploads (it stores it in the object's metadata). A config file nobody has touched for a month arrives in tonight's dated folder already "a month old", and `--min-age 14d` deletes it the moment the job finishes. Your newest backup quietly loses every file that had not changed recently - exactly the files you would not think to check.

Delete whole dated prefixes by their name instead. The folder name is the date the copy was taken, which is what you mean by age:

```bash
CUTOFF=$(date -u -d '14 days ago' +%F)
rclone lsf --dirs-only store:game-backups/mc/daily | while read -r d; do
  d=${d%/}
  if [[ "$d" < "$CUTOFF" ]]; then
    rclone purge "store:game-backups/mc/daily/$d"
  fi
done
```

ISO dates (`2026-10-08`) sort the same way as text and as time, which is why the plain string comparison works. `date -d` is GNU date, standard on Linux; on macOS use `date -u -v-14d +%F`. The same applies to the `--backup-dir` layout: prune the dated `changed/` folders by name, never with `--min-age`. For restic, retention is a policy:

```bash
$ restic -r s3:https://s3.example.com/game-backups/restic forget \
    --tag mc --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
```

A sensible policy for most game servers is a week of dailies, a month of weeklies, and a copy before every major update kept indefinitely. Size the bucket from that: a 2 GB Minecraft world with dated full copies for fourteen days needs about 28 GB; the same history in restic is usually a small multiple of one world. [How much storage a game server needs](https://www.renode.space/blog/how-much-storage-does-a-game-server-need) helps with the world side of that sum.

#### Scheduling the job

Put the whole thing in one script so the schedule is one line:

/usr/local/bin/mc-backup.sh:

```bash
#!/usr/bin/env bash
set -euo pipefail
DAY=$(date -u +%F)
CUTOFF=$(date -u -d '14 days ago' +%F)
rclone copy mc:/ "store:game-backups/mc/daily/$DAY" \
  --filter-from /etc/rclone/minecraft.filter --log-file /var/log/mc-backup.log
rclone lsf --dirs-only store:game-backups/mc/daily | while read -r d; do
  d=${d%/}
  if [[ "$d" < "$CUTOFF" ]]; then rclone purge "store:game-backups/mc/daily/$d"; fi
done
curl -fsS -m 10 https://hc.example.com/ping/mc-backup > /dev/null || true
```

Then `crontab -e` and `0 4 * * * /usr/local/bin/mc-backup.sh`. `set -euo pipefail` stops the script at the first failure, so a failed copy never goes on to delete old backups. The last line pings a dead-man's-switch monitor (Healthchecks.io and similar services), which alerts you when the ping does not arrive - the only reliable way to notice a backup job that silently stopped. On a Windows puller, Task Scheduler runs the same rclone commands from a `.bat` file; rclone behaves identically there.

#### Restoring from the bucket

A backup nobody has restored is a hypothesis. Restore one before you need to:

1. Pick a day and download it to your PC: `rclone copy store:game-backups/mc/daily/2026-10-07 ./restore-test`.
2. Open the world in a local copy of the game, or on a test server, and walk around the main base.
3. For a real restore, stop the game server, move the damaged world folder aside, upload the restored one with rclone or the file manager, and start the server.

Pushing the restore straight back over SFTP works the same way in reverse - `rclone copy store:game-backups/mc/daily/2026-10-07 mc:/` - but only with the server stopped, or the game's next save overwrites what you just put back. [Testing a restore before you need it](https://www.renode.space/blog/testing-a-restore-before-you-need-it) turns this into a quarterly habit.

#### FAQ

##### Can the game server push to S3 by itself?

Not from a panel game server: its scheduler runs console commands, backups and power actions, not shell scripts. Some games have plugins that upload backups to S3, and those work if you trust the plugin. Otherwise pull from outside with rclone, as above.

##### How often should I copy the world off-site?

Daily is right for most servers, timed for the quietest hour. Add a manual copy before every game update and every major plugin change. Hourly copies of a large world cost more than they protect.

##### Is the panel's backup not enough?

It is enough for most mistakes, and it is the fastest restore. It does not survive the server being deleted, and slots rotate. The S3 copy exists for the cases panel backups cannot cover.

##### Should I encrypt game world backups?

restic encrypts everything by default. With rclone you can wrap the storage remote in a `crypt` remote. For a game world the main reason is that configs often contain RCON and database passwords.

##### Will copying the world slow the server down?

Reading a few hundred megabytes over SFTP is light, but a big world on a busy server can cause a brief stutter. Run the job at the quietest hour and use `--bwlimit` in rclone if players notice.

RE:NODE's S3 storage works with rclone and restic as they are: an access key and secret key generated for your server, a first bucket created, path-style addressing and any region name, with HTTPS through the plan's proxy slot. It keeps one copy on NVMe in Germany - a good second home for your worlds, alongside a copy of your own.

[See S3 storage plans](https://www.renode.space/object-storage#s3-storage)

---

### Announcing server maintenance to players

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/announcing-maintenance-and-downtime

Tell players about planned maintenance at least a day ahead, with the exact start time in their own timezone, how long it will take, what changes, and whether they need to do anything. Remind them an hour before, warn in game at ten, five and one minute, and post again the moment the server is back. For unplanned downtime the order reverses: acknowledge it within minutes even if you do not know the cause, post an update on a fixed cadence until it is resolved, never promise a time you cannot keep, and finish with a short note on what happened. Players forgive downtime far more readily than silence, and most of the warning work can be automated so it happens even when you are busy.

Restarts themselves - when they help and when they only hide a problem - are covered in [restart schedules that help](https://www.renode.space/blog/restart-schedules-that-help). This post is about the people on the other end.

#### Planned and unplanned downtime need different messages

| | Planned maintenance | Unplanned outage |
| --- | --- | --- |
| Examples | Game update, mod update, wipe, plan change, migration | Crash loop, broken update, host incident, attack |
| First message | Days or a day ahead | Within minutes of noticing |
| What you know | Start time, duration, changes | Often only that it is down |
| Updates | Reminder, start, finish | On a fixed cadence until fixed |
| Last message | "Back up, here is what changed" | "Back up, here is what happened" |
| Tone | Routine, brief | Calm, factual, no guessing |

Most communities are good at the first column and bad at the second. A planned update gets a polished announcement; a crash at 21:00 gets nothing for forty minutes while the owner fixes it, and by then a dozen people have asked in chat and two have decided the server is dead. The fix is to treat the first message of an outage as part of the fix, not something to do after it.

#### What every maintenance announcement must say

Five facts, in this order, and nothing a player has to work out themselves:

1. **What** - "Update to the new game version", "Monthly map wipe", "Moving to a bigger plan".
2. **When** - the start time in every reader's timezone, using a Discord timestamp.
3. **How long** - a realistic estimate, rounded up. "About 30 minutes" when you expect fifteen.
4. **What changes** - for players, not for you. "Clients must update before joining", "Inventories are kept, builds are wiped", "Nothing - this is invisible".
5. **What to do** - update the game, re-import the mod profile, nothing at all.

Planned maintenance template:

```text
Maintenance: game update to version 1.2
When: <t:1767294000:F> (<t:1767294000:R>)
Expected downtime: about 30 minutes
What changes: you need to update your game before rejoining.
Worlds, inventories and builds are not affected.
What to do: update through your launcher, then join as usual.
We will post here when the server is back.
```

Discord renders `<t:UNIX:F>` as a full date and time in each reader's own timezone, and `<t:UNIX:R>` as a live countdown. Get the Unix time from any converter, or `date -d "2026-01-01 20:00 CET" +%s` on a Linux machine. The other formats are `t` and `T` for short and long time, `d` and `D` for dates, and `f` for short date and time.

Leave out everything else. Players do not need to know which config file you are editing. If there is a reason worth telling them - "the update fixes the crash on the bridge" - one sentence is enough.

#### When to announce

| Change | First notice | Reminders |
| --- | --- | --- |
| Routine weekly or nightly restart | A pinned schedule, once | In game: 5 and 1 minute |
| Game or mod update, under an hour | 24 hours | 1 hour, then in game 10, 5, 1 minute |
| Wipe or reset | At least a week | 24 hours, 1 hour, in game |
| Migration or long maintenance | Several days | 24 hours, 1 hour, in game |
| Emergency fix with the server up | As soon as decided | In game 10, 5, 1 minute minimum |

Routine restarts do not need an announcement each time. Publish the schedule once - "the server restarts every day at 05:00 CET" - pin it, and let the in-game warnings handle the rest. A ping for every routine restart trains players to mute the announcements channel, and then they miss the one that matters.

Wipes are different. Players plan around them, sometimes for weeks, and a wipe moved or announced late costs more goodwill than almost anything else you can do. [Wipes without losing your players](https://www.renode.space/blog/rust-wipes-without-losing-your-players) is mostly about this.

Avoid starting maintenance at your peak hour. Your player-count history shows when the server is quietest - often early morning in the server's timezone - and that is when routine work belongs. For a server in Germany, early morning CET is also late evening in the Americas, so check whether a part of your community plays then.

#### Warning players in game

A Discord announcement reaches people who read Discord. The in-game countdown reaches the people who are about to lose their progress. Most games have a console command that broadcasts to everyone:

| Game | Broadcast from the console |
| --- | --- |
| Minecraft | `say Restarting in 5 minutes` or `tellraw @a` with JSON text |
| CS2, TF2, Garry's Mod, other Source games | `say Restarting in 5 minutes` |
| 7 Days to Die | `say "Restarting in 5 minutes"` |
| Project Zomboid | `servermsg "Restarting in 5 minutes"` |
| Factorio | Type the text without a leading slash; it is sent as chat from the server |
| FiveM | txAdmin's scheduled restarter warns players automatically before each restart |
| Valheim | No broadcast command in the vanilla server; use Discord, or a server-side mod |

Minecraft: a more visible warning:

```text
tellraw @a {"text":"Server restarting in 5 minutes - find somewhere safe.","color":"gold"}
title @a actionbar {"text":"Restart in 1 minute","color":"red"}
```

Palworld's admin `Broadcast` command also exists; on some versions it mangles spaces in the message, so test it before relying on it. Whatever the game, send the warnings at fixed offsets - ten minutes, five, one - and say whether progress is safe. "The world saves before the restart" stops people logging out in a panic in the middle of a fight.

The last warning should go out shortly before the server stops, not at the moment it stops, and the stop itself should be a clean one that saves the world. A kill does not save. [Graceful shutdown and health checks](https://www.renode.space/blog/graceful-shutdown-and-health-checks) explains the difference.

#### Automating the countdown with a schedule

A restart that relies on someone typing warnings at 05:00 will eventually happen without them. Put the whole sequence in a schedule: warnings, a pause, a backup, the restart.

On RE:NODE the Schedules tab takes a cron expression and an ordered list of tasks, each with a delay: a console command, a backup, or a power action. A daily restart with warnings looks like this:

Schedule: daily restart at 05:00, cron 0 5 * * *:

```text
1. Console command   say Restarting in 10 minutes. The world saves first.   delay 0
2. Console command   say Restarting in 5 minutes.                          delay 300 s
3. Console command   say Restarting in 1 minute.                           delay 240 s
4. Console command   save-all                                              delay 50 s
5. Backup                                                                  delay 10 s
6. Power action      restart                                               delay 0
```

Adapt the commands to your game from the table above; `save-all` is Minecraft's, and other games either save on a clean stop or have their own save command. Check which timezone the schedule runs in before trusting the hour, and remember that the five fields are minute, hour, day of month, month and day of week - [cron expressions explained](https://www.renode.space/blog/cron-expressions-explained) has the details and the common mistakes. More schedules worth setting up are in [scheduled tasks worth having](https://www.renode.space/blog/scheduled-tasks-worth-having).

FiveM servers usually leave restart warnings to txAdmin, whose scheduled restarter announces upcoming restarts to players on its own. Do not run two restart schedules on the same server; the second one will restart a server that just came up.

Automation also covers the "it is back" message. A webhook that posts when the server stops and when it starts gives players a status channel that updates itself, at two in the morning, without anyone awake. [Discord webhooks for server status](https://www.renode.space/blog/discord-webhooks-for-server-status) has the setup.

#### When it goes down without warning

The first message is about speed, not information. Within a few minutes of noticing:

Outage: first message:

```text
The server is down. We know, and we are looking at it.
Next update by <t:1767297600:t>, sooner if it is fixed.
```

Then keep the promise. Post on the cadence you named - every 30 minutes is reasonable - even when the update is "still working on it, no new information". A channel that has said nothing for an hour reads as abandoned.

What not to do:

- **Do not give a time to fix before you know the cause.** "Back in 10 minutes" that becomes two hours is worse than no estimate.
- **Do not guess at the cause in public.** "We are being attacked" or "the host is down" said on a hunch is often wrong and hard to take back.
- **Do not blame anyone** - a player, a mod author, a host. Even when it is true, it reads as deflection.
- **Do not go quiet while you fix it.** Ask a trusted member of staff to handle the updates if you need both hands.

Check your own side first: the console log and the resource graphs will usually say whether it is a crash loop, a memory limit or something outside the server. [Why your game server keeps restarting](https://www.renode.space/blog/why-your-game-server-keeps-restarting) covers reading those. RE:NODE publishes a status page at [/status](https://www.renode.space/status), which is the place to look before assuming the problem is yours or the host's. On RE:NODE, a server that crashes three times in an hour also gets a warning on its server page and an automatic support ticket, so a crash loop does not go unnoticed even if you are asleep.

#### After it is back: the closing message

The closing message is the one players remember. Post it as soon as the server accepts connections, not after you have finished tidying up.

Back online:

```text
The server is back. Downtime was about 45 minutes.
What happened: an update to a plugin failed to load and stopped the server.
What we did: rolled it back from the backup taken before the update.
Lost progress: none - the backup was from 10 minutes before the restart.
What changes: the plugin stays on the old version until it is fixed upstream.
```

For planned maintenance, the closing message is a changelog: what changed, what players need to do, and anything that behaves differently. For an outage, it is a short post-incident note: what happened, what you did, whether anything was lost, and what you are changing so it does not happen again. Three to five sentences. A detailed technical write-up can go in a separate channel for those who want it.

If progress was lost, say how much, plainly. "Everything after 20:40 is gone" is better than discovering it. Restoring from a backup means everything since that backup is lost, which is why backups shortly before every maintenance window matter - [backups that actually restore](https://www.renode.space/blog/backups-that-actually-restore) covers why the restore half deserves practice.

#### Big changes: version jumps, wipes and moves

Some maintenance changes what players have to do to keep playing, and those announcements need more than a time and a duration.

A **version jump** - a major game update, a new modpack version, a Minecraft release - means every player must update their client, and modded players may need a new profile or pack. Say exactly which version to be on, link the pack or profile, and say whether the world carries over. If mods have not caught up with a game patch yet, say that the server is deliberately staying on the old version and roughly when you will review it; players on auto-updating launchers otherwise assume you have forgotten.

A **wipe** needs the most notice of anything: what is wiped (map, inventories, blueprints, characters), what carries over, the exact time, and whether the old world will be downloadable or visitable. Post it at least a week ahead, repeat it at 24 hours and one hour, and never move it quietly.

A **move** to a new server or address needs the new address published before the old one goes away, and both working for a while if you can manage it. A domain name that you repoint, rather than a raw IP, makes this nearly invisible to players. [Moving a server without losing players](https://www.renode.space/blog/moving-a-server-without-losing-players) has the order of operations, including DNS timing.

A **plan change** on RE:NODE is the easy case: changing plan moves the limits on the server you already have rather than rebuilding it, so the address and world stay the same. It still involves a restart, which deserves the usual in-game warning.

#### Where the announcements should go

One source of truth, mirrored elsewhere:

- **The Discord announcements channel** is the source. Make it an Announcement channel on a Community server and other Discords - a partner server, a list of your alliance's servers - can follow it.
- **In game**, for anything happening in the next ten minutes.
- **The server's MOTD or description**, for a known upcoming wipe date.
- **Listing sites**, if a long outage would otherwise show you as offline for days. [Server listing and voting sites](https://www.renode.space/blog/game-server-listing-and-voting-sites) covers keeping a listing accurate.
- **A status channel** updated by a webhook, for up and down events.

Keep the announcements channel for announcements. If players can reply there, it becomes a support channel and the next notice is buried. Point replies to a support or chat channel instead.

#### FAQ

##### How far in advance should I announce maintenance?

At least 24 hours for a short update, a week or more for a wipe or migration, with reminders an hour before and in-game warnings in the final ten minutes. Routine daily restarts only need the schedule published once and in-game warnings each time.

##### What time of day should maintenance happen?

When your player count is lowest, which your player history shows. For a server in Germany that is usually early morning CET, but check whether part of your community is in a timezone where that is prime time.

##### How do I warn players in game before a restart?

Use the game's broadcast command from the console - `say` in Minecraft and Source games, `servermsg` in Project Zomboid - at ten, five and one minute. Put the warnings in a scheduled task with delays so they run even when nobody is at the keyboard.

##### Should I give an estimate during an outage?

Only once you know the cause and the fix. Before that, promise the time of the next update instead of the time of the fix, and keep that promise even if the update says nothing new.

##### Do I need to explain what went wrong after an outage?

Briefly, yes. Two or three sentences on what happened, what was lost, and what you are changing build trust far faster than silence. Avoid blaming anyone and avoid technical detail most players will not read.

##### Should players be compensated for downtime?

It is not expected for a free community server, and promising it sets a precedent. A small in-game gesture after a long outage is a nice touch, but a clear explanation and no repeat matter much more.

RE:NODE game servers include a Schedules tab that runs console warnings, a backup and a restart in order with delays between them, backup slots on every plan, and a public status page. Three crashes in an hour raise a warning on the server page and an automatic ticket, so a crash loop is noticed even overnight.

[See game server plans](https://www.renode.space/game-servers)

---

### ARK cluster setup and cross-server transfers

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/ark-cluster-and-cross-server-transfers

An ARK cluster is two or more dedicated servers started with the same `-clusterid=` and pointed at the same directory with `-ClusterDirOverride=`. When a player uploads a character, a creature or an item at an obelisk or transmitter, the server writes it to a file in that directory; when they arrive on another map in the cluster, that server reads it back. That is the entire mechanism. There is no central service and no network link between the servers - just a folder both of them can write to. Everything that goes wrong with clusters goes wrong because that folder is not shared, is not backed up, or is read by a server whose rules say no.

This post assumes each map already runs on its own. The [ARK: Survival Ascended setup guide](https://www.renode.space/blog/ark-survival-ascended-server-setup) covers a single server; here we connect several.

#### What a cluster is, and what it costs

Each map in a cluster is a separate, complete server: its own process, its own install, its own save, its own ports, its own memory. A cluster of three maps is three servers that happen to agree on a directory. Nothing is shared except transfer data.

That has two consequences people underestimate.

- **Cost scales with maps, not players.** Ten players spread across three maps use roughly three times the memory of ten players on one map, because each map holds its own world, its own wild creatures and its own structures regardless of who is on it. A quiet map with nobody on it still costs most of what a busy one does.
- **Population spreads thin.** A server with twelve active players feels alive. The same twelve over three maps feel like three servers with four people each. Clusters suit communities that are big enough to fill more than one map, or groups who want to work through the story maps in sequence while keeping their creatures.

| Cluster size | Memory, all maps together | Suits |
| --- | --- | --- |
| One map, no cluster | 10-16 GB | Groups under about fifteen |
| Two maps | 20-32 GB | A main map and a progression or event map |
| Three to four maps | 30-64 GB | Communities with 30+ regulars |
| Five or more | 50 GB upwards | Large public communities with staff |

These figures follow the single-server sizing in [how much RAM an ARK server needs](https://www.renode.space/blog/how-much-ram-does-an-ark-server-need); a cluster does not change the per-map number, it multiplies it. CPU works the same way - each map wants a fast core of its own for its game thread.

#### The launch arguments that make a cluster

Three launch arguments are involved, and two of them must be identical on every server.

```text
TheIsland_WP?listen?SessionName=Longship Island?Port=7777?QueryPort=27015?RCONPort=27020 -clusterid=longship-c1 -ClusterDirOverride=/srv/ark/cluster -NoTransferFromFiltering -log
ScorchedEarth_WP?listen?SessionName=Longship Scorched?Port=7779?QueryPort=27017?RCONPort=27022 -clusterid=longship-c1 -ClusterDirOverride=/srv/ark/cluster -NoTransferFromFiltering -log
```

| Argument | Must match across servers | What it does |
| --- | --- | --- |
| `-clusterid=` | Yes | Names the cluster. Servers only see transfer data with the same ID |
| `-ClusterDirOverride=` | Yes, same physical folder | Where transfer data is written and read |
| `-NoTransferFromFiltering` | Should | Relaxes the check on where uploaded data came from |

The cluster ID is a free-form string. Make it unique and a little obscure - a cluster ID that another community also uses is harmless only as long as you never share storage with them, and on a host where the cluster directory sits in a common location, it is a collision waiting to happen. `longship-c1` is better than `cluster`.

`-ClusterDirOverride` names a parent folder; the server keeps its transfer files in a subfolder named after the cluster ID. If you leave it out, each server uses a default location inside its own install, which means each server has its own private "cluster" folder and nothing transfers. This is the single most common reason a newly built cluster appears to work - the obelisk lets you upload - and then nothing shows up on the other map.

Every server also needs its own game port, query port and RCON port, and its own `SessionName`. Two servers on one address with the same port will not both start. Keep a short table of which map has which ports; you will need it when someone asks why they cannot find Scorched Earth in the browser. [Game server ports explained](https://www.renode.space/blog/game-server-ports-explained) covers why the query port is the one that decides whether a server is listed.

#### Upload and download rules

Whether something can leave a map and whether it can arrive are separate switches, set per server in `GameUserSettings.ini` under `[ServerSettings]`.

| Key | Effect when `True` |
| --- | --- |
| `NoTributeDownloads` | Nothing can be downloaded on this server at all |
| `PreventDownloadSurvivors` | Characters cannot arrive here |
| `PreventDownloadItems` | Items cannot be downloaded here |
| `PreventDownloadDinos` | Creatures cannot be downloaded here |
| `PreventUploadSurvivors` | Characters cannot leave from here |
| `PreventUploadItems` | Items cannot be uploaded here |
| `PreventUploadDinos` | Creatures cannot be uploaded here |

For an open cluster, set all seven to `False` on every server. Restrictions are what make a cluster interesting, though, and the per-server design lets you build one-way rules:

- **A progression cluster** where creatures can go forward to later maps but not come back to earlier ones: allow dino uploads on the early maps and dino downloads on the later ones, but block downloads on the early maps.
- **An event or arena map** where people bring characters but not creatures: `PreventDownloadDinos=True` on the event server only.
- **A "fresh start" map** that accepts survivors but nothing they carry: block item and dino downloads there.

Write your rules down before you set them, and post them where players can read them. A creature that cannot come back from a map is a creature somebody will lose, and the server should not be the first to tell them.

GameUserSettings.ini - Scorched Earth (event map, no tames):

```ini
[ServerSettings]
NoTributeDownloads=False
PreventDownloadSurvivors=False
PreventDownloadItems=False
PreventDownloadDinos=True
PreventUploadSurvivors=False
PreventUploadItems=False
PreventUploadDinos=True
```

#### Transfer limits and expiry

Uploaded data does not wait forever, and it is limited in quantity. The keys below control that. Defaults have varied between releases, so check what your build does before you rely on a number.

| Key | What it controls |
| --- | --- |
| `MaxTributeDinos` | How many creatures one player can hold uploaded at once |
| `MaxTributeItems` | How many item stacks one player can hold uploaded at once |
| `TributeDinoExpirationSeconds` | How long an uploaded creature survives before it is deleted |
| `TributeItemExpirationSeconds` | How long an uploaded item survives |
| `TributeCharacterExpirationSeconds` | How long an uploaded character survives; `0` usually means never |

The expiry timers are the ones that hurt. A player uploads their best creature on Friday, forgets about it, and comes back the following week to find it gone - not lost to a bug, but expired on schedule. On official-style settings, uploaded creatures and items expire after about a day. On a private cluster where people play a few evenings a week, raising the creature and item timers to a week or longer avoids this whole category of support request. Do not set them to zero unless you have confirmed what zero means on your build; for some keys it means "never expire" and for others it is not honoured.

The quantity limits exist to stop the cluster folder from becoming a warehouse. Uploaded data is stored outside both worlds, which makes it a tempting place to keep things safe from raids, and on a PvP cluster that is exactly what people will use it for. Keep the limits modest on PvP and relax them on PvE.

#### Map-specific creatures and items

Not every creature is allowed to leave its home map. Some creatures and items are restricted to the maps they come from, either by the game or by the transfer rules of the map they would arrive on. The usual examples are the story-map creatures that the game treats as part of that map's progression. A server setting, `CrossARKAllowForeignDinoDownloads`, relaxes the restriction for creatures arriving from other maps on builds that honour it; behaviour here has changed between Evolved and Ascended and between patches, so test with one creature you can afford to lose before telling players a transfer is safe.

Element and some boss-related items have also been restricted in transfers at various points. The rule of thumb is the same: if a transfer would let someone skip a map's progression, assume the game might block it and test.

#### Mods and clusters

Mods are where clusters get fragile. A creature or item from a mod is a reference to something the mod defines. If the destination map does not run the same mod, the reference points at nothing:

- An item from a mod that the destination server does not load is deleted on download, or never appears.
- A creature from a missing mod does not arrive.
- A character wearing modded armour may arrive without it.

The safe rule is to run the same mod list, in the same order, on every server in the cluster. Where that is not possible - a map mod that only one server needs, for example - Ascended supports listing mods as passive on the other servers with `-passivemods=`, which loads a mod's data without its content so that its items survive a transfer. Behaviour of passive mods has shifted with updates; verify with a test transfer after every mod change. [ARK mods from CurseForge on a server](https://www.renode.space/blog/ark-mods-curseforge-on-server) covers the mod list itself.

Update mods across the cluster at the same time. A cluster where one map runs version 1.4 of a mod and another runs 1.5 can transfer data that the older version cannot read. Stop all the maps, update, and start them together.

#### Where the shared directory has to live

This is the honest constraint of clusters, and the one that decides where you can run one.

```diagram
title: Every map in a cluster reads and writes one shared folder
island = The Island | port 7777
scorched = Scorched Earth | port 7779
center = The Center | port 7781
cluster = Cluster directory | -ClusterDirOverride
backup = Separate backup | copied on a schedule
island <-> cluster : upload / download
scorched <-> cluster : upload / download
center <-> cluster : upload / download
cluster --> backup : nightly copy
```

The directory has to be one physical folder that every server writes to. On a single machine that is trivial: point every server at the same path. Across machines it means a network filesystem, which works but adds latency and a new way to fail - a network share that drops mid-write can corrupt a transfer file, and the server will not tell you it happened.

On panel-based hosts, including Pterodactyl and anything built on it, every server is its own container with its own files. Two servers on the same account do not see each other's folders, and a shared cluster directory between them is something the host has to set up deliberately, if they do it at all. Ask before you buy the second server, and if the answer is vague, assume no. A single machine you control - a [dedicated server or VDS](https://www.renode.space/dedicated-servers) - is the straightforward way to run a cluster, because all the maps can share one local path. [Multiple game servers on one VDS](https://www.renode.space/blog/multiple-game-servers-on-one-vds) covers splitting one machine between several servers, which is exactly what a cluster is.

#### Backups, restarts and cluster data

The cluster directory is not part of any map's save. Back it up on its own, on the same schedule as the maps. If you restore the maps but not the cluster folder, every item and creature that was in transit at the time of the backup is gone, and if you restore the cluster folder without the maps, you can create duplicates: a creature that was uploaded after the map backup was taken exists both in the restored map and in the cluster folder.

The safe procedure for a full rollback is:

1. Stop every server in the cluster.
2. Restore every map save and the cluster directory from backups taken at the same time.
3. Start the servers.

Restarts deserve the same coordination on a busier cluster. Restarting all maps at the same scheduled minute is simpler for players and avoids the edge case where someone uploads on map A, map B restarts, and they arrive on a server that is not there yet. A daily restart for ARK is normal anyway; [restart schedules that help](https://www.renode.space/blog/restart-schedules-that-help) covers when and how to warn players.

> [!WARNING]
> Never copy or restore files in the cluster directory while any server in the cluster is running. A transfer file read halfway through a write is how items disappear and how duplicates appear.

#### Admin work across a cluster

Admin commands are per server. Bans, kicks and broadcasts on one map do not propagate to the others; a player banned on The Island can still join Scorched Earth. Ban on every map, or use a tool that sends RCON commands to all of them. [RCON safely](https://www.renode.space/blog/rcon-safely) covers keeping several RCON ports usable without exposing them, and each map should have its own `ServerAdminPassword` only if you have a reason - one password for the cluster is easier to rotate.

Keep the gameplay settings identical unless a map is meant to be different. Players move their breeding to whichever map has the fastest rates, and their farming to whichever has the best harvest. If you do want a difference, make it deliberate and announce it. The [ARK settings guide](https://www.renode.space/blog/ark-survival-ascended-game-ini-settings) has the keys.

#### Troubleshooting transfers

**Uploads work but nothing appears on the other map.** The servers do not share a directory. Check that `-ClusterDirOverride` is set on both and that it resolves to the same physical folder, not two folders with the same name.

**The other map is not in the transfer list.** Check that the `-clusterid` values match exactly, including case, and that both servers are running.

**A creature uploaded fine and could not be downloaded.** A `PreventDownloadDinos` on the destination, a map-specific creature, or a missing mod.

**Items vanished from the upload list after a few days.** The expiry timers. Raise `TributeItemExpirationSeconds` and `TributeDinoExpirationSeconds`.

**A survivor arrived without their gear.** Items from a mod the destination does not run. Align the mod lists or use passive mods.

**After a restore, players have duplicate creatures.** The maps and the cluster folder were restored from different points in time. Restore both from the same backup set.

#### FAQ

##### Do all maps in an ARK cluster need to be on the same machine?

No, but they all need to read and write the same cluster folder. On one machine that is a shared path. Across machines it needs a network filesystem, which is slower and adds failure modes.

##### Can I run a cluster with different mods on each map?

You can, but modded items and creatures will not survive transfers to maps without the mod. Run the same list everywhere, or list the missing mods as passive on the maps that do not need their content.

##### How do I stop players bringing tames to a new map?

Set `PreventDownloadDinos=True` in that server's `GameUserSettings.ini`. Characters and items can still arrive unless you block those as well.

##### Why did my uploaded dino disappear?

Most likely it expired. Uploaded creatures are deleted after `TributeDinoExpirationSeconds`, which on default-style settings is about a day. Raise it on a private cluster.

##### Is a cluster worth it for six players?

Rarely. You pay for every map whether anyone is on it or not, and six people across two maps feels empty. Play one map, then wipe and move to the next when the group is ready.

RE:NODE's VDS line runs on an Intel i9-9900K with NVMe storage in Germany, with plans up to 24 GB of memory - room for two ARK maps sharing one local cluster folder, not five. A VDS is prepared by hand within 24 hours of payment, and you install and run the servers yourself.

[See dedicated server plans](https://www.renode.space/dedicated-servers)

---

### ARK Ascended mods on a server via CurseForge

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/ark-mods-curseforge-on-server

To add mods to an ARK: Survival Ascended dedicated server, find each mod's numeric CurseForge project ID, add them to the launch line as `-mods=id1,id2,id3`, and restart. The server downloads the mods from CurseForge itself during startup, and players who join are given the same mods automatically - nobody has to subscribe to anything or copy files by hand. That is the whole mechanism, and it is a real improvement over Survival Evolved and its Steam Workshop. What still goes wrong is everything around it: the wrong ID, a mod that has not been updated after a patch, two mods fighting over the same structure, and a mod removed from a live save that takes half a base with it.

The base server setup - install, ports, launch line - is in the [ARK: Survival Ascended setup guide](https://www.renode.space/blog/ark-survival-ascended-server-setup). This post is only about mods.

#### How mods work on Ascended

Mods for Ascended are published on CurseForge, and every mod is a CurseForge project with a numeric project ID. The server is given a list of those IDs. At startup it asks CurseForge for each one, downloads anything missing or out of date, and loads them. A connecting client compares its own mod list with the server's and downloads whatever it lacks before it loads in.

Three consequences of that design are worth knowing before you add the first mod:

- **The server needs outbound internet access to CurseForge at startup.** If CurseForge is unreachable or slow, the start stalls or mods fail to download. The log says so, eventually.
- **The first start after a mod change is slow, and so is everyone's first join.** The server downloads the mod, then every client does. Change mods before an evening, not during one.
- **Mods are cross-platform by design.** Ascended's mod support was built so that console players can use mods too, which means a modded server is not automatically a PC-only server. Whether a particular mod is available on every platform is up to the mod and its approval, so check the mod page if console players are in your group.

There is also no allow list on the server side. Any mod in the `-mods` list is loaded; any mod not in it is not. A player cannot bring a mod the server does not run.

#### Finding a mod's project ID

The project ID is a number, not the mod's name and not its URL slug. On the mod's CurseForge page it is shown in the About Project panel at the side, labelled Project ID. Copy that number.

| You see | Use it? |
| --- | --- |
| Project ID in the About panel, for example `928793` | Yes - this is what `-mods=` wants |
| The mod's name, for example `Awesome Spyglass!` | No |
| The URL slug at the end of the page address | No |
| A file ID from the Files tab | No - that is one version, not the project |

Keep a small text file that maps each ID to the mod's name and the reason you installed it. Six months from now, `-mods=928793,929420,931874` will mean nothing to you, and the person who inherits the server will thank you.

> [!TIP]
> When a mod refuses to load, check the ID first. A file ID pasted in place of the project ID is the most common reason a server starts without a mod and says nothing useful about it.

#### Adding mods to the launch line

The mod list is a launch argument. It comes after the query string, separated by a space, with IDs separated by commas and no spaces between them:

```text
TheIsland_WP?listen?SessionName=Longship?Port=7777?QueryPort=27015 -mods=928793,929420,931874 -log
```

On a panel-based host the launch line is built from fields on the Startup tab, and there is usually a dedicated field for the mod list. Paste the comma-separated IDs there.

The steps, in order:

1. Take a backup of the save. A mod is a change to the world as soon as anybody uses it.
2. Stop the server cleanly.
3. Add the new ID to the end of the list.
4. Start the server and watch the log until the mod has downloaded and the server is accepting players.
5. Join, check the mod is present, and play with it for an evening before adding another.

Some builds also read an `ActiveMods=` line in `GameUserSettings.ini`. Use one method, not both. The launch argument is the one that is documented and the one that panels expose, so that is the one to rely on.

##### Load order

The order of IDs in the list is the load order. It only matters when two mods change the same thing - the same structure, the same creature, the same loot table - and in that case one of them wins. Which way round it works is not something you should guess at; the authors of large mods usually say on their page whether their mod should be loaded first or last, and that instruction is worth more than any general rule. If two mods conflict and neither says, try them in both orders on a test save and keep the one that behaves. [Mod load order explained](https://www.renode.space/blog/mod-load-order-explained) covers the idea across games.

#### Map mods

Custom maps are mods too. Running one takes two changes rather than one:

1. Add the map mod's project ID to `-mods=`.
2. Replace the map name at the start of the launch line with the map's own level name.

The level name is not the mod name. The mod page normally gives the exact string to use - Ascended map names follow the `_WP` convention of the official maps, but a custom map may not. Get it wrong and the server either fails to start or falls back to a default map, which is easy to miss if you are only watching the console for errors.

A map mod is the biggest kind of mod. It is a whole world, and the first download is large for the server and for every player. A custom map also comes with its own performance profile; some are lighter than The Island and some are far heavier. Before you commit a community to one, run it for a few evenings and watch memory across the session.

#### Configuring mods

Most mods that have settings read them from the server's own ini files, in a section named after the mod. Typically that is a section in `GameUserSettings.ini`, sometimes in `Game.ini`. The mod page or its documentation gives the section name and the keys.

GameUserSettings.ini:

```ini
[ServerSettings]
XPMultiplier=2.0

[SomeModName]
SomeSetting=True
AnotherSetting=50
```

The same rules apply as for the game's own settings, covered in the [ARK GameUserSettings.ini and Game.ini guide](https://www.renode.space/blog/ark-survival-ascended-game-ini-settings): stop the server before editing, because a clean shutdown rewrites `GameUserSettings.ini`; spell keys exactly, because a typo is silently ignored; and put the section in the file the mod expects. Some mods also accept configuration in game through an admin menu, which writes back to the ini.

A mod that changes a value the game also controls - stack sizes, structure limits, taming - usually wins over the server setting. If a vanilla setting stops working after you add a mod, that is the first thing to check.

#### Which mods cost memory and CPU

Not all mods are equal. A handful of categories account for almost every modded server that runs out of memory.

| Mod type | Cost | Why |
| --- | --- | --- |
| Interface and quality of life (spyglasses, sorting, auto-feeding) | Low | Little or no extra world state |
| Structure packs | High over time | They let players build more, and players do |
| Creature packs | Medium to high | More creature types, often more wild spawns |
| Storage and auto-craft systems | Medium | Large inventories and timers that tick constantly |
| Custom maps | Varies widely | A whole world with its own budget |
| Stack size and weight mods | Low, sometimes negative | Fewer item stacks to track |

The pattern is that a mod's cost is mostly what players do with it, not the mod itself. A structure pack costs nothing on the day you install it. Three months later, when everyone has a castle, it costs several gigabytes. Budget for that at the start; [how much RAM an ARK server needs](https://www.renode.space/blog/how-much-ram-does-an-ark-server-need) has the baseline to add it to.

Popular quality-of-life mods on Ascended include spyglass mods such as Awesome Spyglass!, structure and storage overhauls such as Cybers Structures QoL+ and Utilities Plus, and death-recovery mods. Names and availability change; check that a mod is maintained and recently updated before you build a server around it.

#### Updating mods without breaking the server

Mods update independently of the game, and the game updates break mods. Those two facts define a modded server's maintenance.

When the server starts, it fetches the current version of each mod. A restart is therefore also a mod update, whether you meant it to be or not. Clients get the new version when they next join.

The dangerous day is a game patch. Wildcard ships an update, the server updates, and every mod that touches what changed may fail to load or crash the server until its author ships a fix. Some mods are fixed in hours; some take days; some are abandoned. The defensive routine:

1. Do not let a modded server update the game automatically on patch day. Update it deliberately, after checking that your important mods have been updated for the new version.
2. Take a backup before every game update and before every mod change.
3. If a mod is broken and the author has not fixed it, decide whether you can run without it for a few days. For an interface mod, usually yes. For a structure pack that half the bases are built from, no - keep the server on the old build if you can, or close it until the fix lands.

[What to do when a mod update breaks](https://www.renode.space/blog/what-to-do-when-a-mod-update-breaks) is the general procedure for that morning, and [keeping a modded server clean](https://www.renode.space/blog/keeping-a-modded-server-clean) covers the habits that make it rarer.

> [!WARNING]
> A restart can pull a new mod version you did not ask for. If a server that ran fine yesterday crashes on start today and nobody touched it, check whether one of its mods updated overnight.

#### Removing a mod from a live save

Removing a mod is the most destructive thing you can do to an ARK server short of deleting it. Everything the mod defined - structures, items, creatures - is stored in the save as a reference to the mod. Take the mod away and the references point at nothing:

- Structures from the mod vanish, and anything resting on them may collapse.
- Items from the mod disappear from inventories and storage.
- Creatures from the mod are removed.
- In bad cases, the save fails to load at all.

If you must remove a mod:

1. Announce it, with a date, so people can move their things out of modded storage and off modded foundations.
2. Take a backup immediately before, and confirm the backup restores. [Testing a restore before you need it](https://www.renode.space/blog/testing-a-restore-before-you-need-it) explains how.
3. Remove the ID from `-mods=`, start the server, and check the log and the world.
4. If the save does not load, restore and plan the removal for a wipe instead.

Some mods ship a removal or cleanup command that deletes their content properly before uninstalling. If a mod has one, use it. Most do not.

#### Mods in a cluster

Every map in a cluster should run the same mod list in the same order. An item or creature from a mod that the destination map does not load does not survive the transfer. Where one map needs a mod that the others do not - a map mod, for example - Ascended can load a mod's data without its content on the other servers through a passive mod list (`-passivemods=`), which keeps that mod's items intact across transfers. Behaviour has shifted with updates, so test a transfer after every change. [ARK clusters and cross-server transfers](https://www.renode.space/blog/ark-cluster-and-cross-server-transfers) has the rest.

#### Running modded ARK on a panel

On RE:NODE, the mod list goes into the launch arguments on the Startup tab, and the server downloads mods from CurseForge itself, so there is nothing to upload. Mod ini settings are edited in the in-browser file manager or over SFTP. The console shows the download progress live, which is the quickest way to tell a slow first start from a stuck one. Backup slots come with every plan, which covers the before-every-change backup this post keeps asking for. RE:NODE does not run a mod allow list or a one-click mod installer - you choose the mods. ARK does not have its own catalogue line, so see the [game server list](https://www.renode.space/game-servers) for current options.

#### Troubleshooting modded servers

**The server starts but a mod is missing.** Wrong ID (a file ID instead of the project ID), a typo in the list, or a space after a comma. Check the log for the download line for that ID.

**Startup sits for minutes with no output.** Mod downloads. Give it ten minutes on the first start after a change. If it never moves, remove the newest ID and start again.

**The server crashes on start after a game update.** A mod that has not been updated for the new build. Remove mods one at a time, starting with the most recently updated, until it starts.

**Players are stuck downloading when they join.** A large mod, often a map. It is a one-time cost per version. If it fails repeatedly, the player can try clearing their local mod cache.

**A vanilla setting stopped working.** A mod is overriding it. Check the mod's own settings.

**Half a base disappeared overnight.** A mod was removed or failed to load, so its structures were dropped. Stop the server and restore the last backup taken before the change, before anybody plays on the damaged world.

#### FAQ

##### Do players need to install ARK mods manually to join a server?

No. Ascended downloads the server's mod list to the client automatically when they connect. It takes a while the first time, and again after each mod update.

##### Where do I find an ARK mod's ID?

On the mod's CurseForge page, in the About Project panel, labelled Project ID. It is a number. The file IDs on the Files tab are versions, not projects, and will not work.

##### Can I add a mod to an existing world?

Yes, adding is almost always safe. It is removing a mod that damages saves. Take a backup first anyway, because a broken mod can still crash the server.

##### How many mods can an ARK server run?

There is no fixed number. The practical limit is memory, startup time and how many things can break on patch day. Twenty well-maintained mods is a lot; forty is asking for a bad week after every update.

##### Do console players get the mods too?

Ascended's mod system is cross-platform, so in principle yes. Individual mods may not be available on every platform; check the mod page before you add one to a server with console players.

Every RE:NODE game server has a Startup tab for launch arguments, a live console that shows mod downloads as they happen, an in-browser file manager and SFTP for mod settings, and backup slots that restore with one button. Mods are your choice - there is no allow list.

[Compare game server plans](https://www.renode.space/game-servers)

---

### ARK Ascended server ini settings

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/ark-survival-ascended-game-ini-settings

ARK: Survival Ascended reads its rules from two files in `ShooterGame/Saved/Config/WindowsServer/`. `GameUserSettings.ini` holds server-wide settings under `[ServerSettings]` - passwords, difficulty, harvest and taming rates, decay, structure limits. `Game.ini` holds the rules the game mode reads under `[/script/shootergame.shootergamemode]` - breeding and imprinting, per-level stat multipliers, experience sources, engram and level overrides. Put a key in the wrong file or the wrong section and it is silently ignored. Edit only while the server is stopped, because a clean shutdown writes `GameUserSettings.ini` back to disk. That is most of the job; the rest of this post is which keys matter, which way each one turns, and what they cost.

If you have not got a server running yet, start with the [ARK: Survival Ascended setup guide](https://www.renode.space/blog/ark-survival-ascended-server-setup), which covers the install, launch line, ports and the dozen settings everybody changes on day one. This post assumes the server starts and goes deeper into the two files.

#### Which file a setting belongs in

The split is historical rather than logical, and it trips people up because the names do not tell you where a key lives. A rough rule that holds for almost everything:

- **`GameUserSettings.ini`, `[ServerSettings]`**: anything an official server would show in its server list or that the admin might change on a live server. Rates that apply globally (harvest, taming, XP), damage and resistance multipliers, food and water drain, decay timers, PvE and PvP switches, structure caps, the admin and join passwords, RCON.
- **`Game.ini`, `[/script/shootergame.shootergamemode]`**: rules attached to the game mode class. Breeding, maturation, imprinting, per-level stat gains for players and creatures, separate XP sources, crop and spoil timers, tribe and alliance limits, engram overrides, level caps and per-item or per-creature arrays.

There is one escape hatch. Any key from `[ServerSettings]` can also be passed on the launch line as a `?Key=Value` query argument, and the launch line wins over the file. That is useful on a panel where the launch line is built from fields, and confusing when someone has set `?XPMultiplier=2` on the Startup tab and someone else keeps editing the ini wondering why nothing changes. Pick one place per setting and stick to it. `Game.ini` keys cannot be passed that way.

```text
TheIsland_WP?listen?SessionName=Longship?XPMultiplier=2.0?TamingSpeedMultiplier=3.0 -log
```

The other rule worth repeating: the server writes `GameUserSettings.ini` on a clean shutdown with whatever it had in memory. Editing it while the server is up and then pressing Stop throws your edits away. `Game.ini` is not rewritten the same way, but changes to it only take effect on the next start, so the safe habit for both is the same: stop, edit, start.

> [!WARNING]
> A misspelled key, a key in the wrong file, or a key under a section header with a typo is ignored with no error and no log line. If a change does not take effect, check spelling and section before anything else. Copy key names from a known-good list instead of typing them from memory.

#### Rates in GameUserSettings.ini

These are the multipliers players ask about in the first ten minutes. All default to `1.0` unless noted, and all live under `[ServerSettings]`.

| Key | What it scales | Typical boosted value |
| --- | --- | --- |
| `XPMultiplier` | All experience gained | `2.0` - `5.0` |
| `TamingSpeedMultiplier` | Taming effectiveness gained per feed | `3.0` - `5.0` |
| `HarvestAmountMultiplier` | Resources per hit | `2.0` - `3.0` |
| `HarvestHealthMultiplier` | Hits a node survives | `1.0` - `2.0` |
| `ResourcesRespawnPeriodMultiplier` | Time before nodes regrow (lower is faster) | `0.5` |
| `DayCycleSpeedScale` | Speed of the whole day/night cycle | `1.0` |
| `DayTimeSpeedScale` / `NightTimeSpeedScale` | Day and night separately | night `2.0` to shorten it |
| `PlayerCharacterFoodDrainMultiplier` | Player hunger | `0.5` - `1.0` |
| `PlayerCharacterWaterDrainMultiplier` | Player thirst | `0.5` - `1.0` |
| `PlayerCharacterStaminaDrainMultiplier` | Player stamina use | `1.0` |
| `DinoCharacterFoodDrainMultiplier` | Tame hunger | `0.5` - `1.0` |
| `ItemStackSizeMultiplier` | Stack sizes | `2.0` - `10.0` |

A few interactions are worth knowing before you multiply everything by five.

`HarvestHealthMultiplier` and `HarvestAmountMultiplier` both raise the yield of a node, in different ways. Raising the amount gives more per hit; raising the health gives more hits before the node is gone. Doubling both roughly quadruples what one rock gives you, which is usually more than intended. Pick one.

`TamingSpeedMultiplier` changes how much taming progress each piece of food gives, which shortens the tame without changing how long the creature stays knocked out. At high values the bottleneck becomes torpor and narcotics, not food. Pairing a high taming rate with a lower `DinoCharacterFoodDrainMultiplier` makes tamed creatures cheap to keep, which in turn means more of them, which is the expensive part of an ARK server.

`ItemStackSizeMultiplier` is one of the few quality-of-life settings that genuinely helps a server's health: fewer item stacks means fewer objects in boxes. It has been reliable on Ascended, but it has had exceptions over time (items with fixed stack sizes, such as some consumables), so test on the items your players care about.

`DayTimeSpeedScale` and `NightTimeSpeedScale` multiply the speed of each half of the day, so `NightTimeSpeedScale=2.0` makes nights last half as long. They stack with `DayCycleSpeedScale`, which scales both. Shortening nights is the single most common request on a PvE server and costs nothing.

#### Difficulty, damage and survival rules

Difficulty on ARK is not a difficulty in the usual sense. It sets the maximum level of wild creatures, and through that, loot quality from drops and crates.

| Key | Effect |
| --- | --- |
| `DifficultyOffset` | 0.0 to 1.0 scaling between the minimum and maximum of the override |
| `OverrideOfficialDifficulty` | `5.0` gives wild levels up to 150, `6.0` up to 180 |
| `DinoDamageMultiplier` | Damage dealt by wild creatures |
| `PlayerDamageMultiplier` | Damage dealt by players |
| `StructureDamageMultiplier` | Damage dealt by structures (turrets, spikes) |
| `PlayerResistanceMultiplier` | Damage taken by players (lower is tougher) |
| `DinoResistanceMultiplier` | Damage taken by creatures (lower is tougher) |
| `StructureResistanceMultiplier` | Damage taken by structures (lower is tougher) |

The wild level cap is `OverrideOfficialDifficulty` multiplied by 30, which is where the 150 and 180 figures come from. Set `DifficultyOffset=1.0` so you actually reach the cap, then run `cheat DestroyWildDinos` once so the map repopulates at the new levels. Without that last step the change only applies to creatures that spawn from now on, and you will spend a week wondering why the change did nothing.

Resistance multipliers run the opposite way to damage multipliers. `PlayerResistanceMultiplier=0.5` means players take half damage. It is easy to set `StructureResistanceMultiplier=2.0` thinking it makes buildings stronger; it makes them take twice the damage.

Rules that change how the server plays rather than how hard it is:

- `ServerPVE=True` turns off player-versus-player damage. On a PvE server, also look at `AllowFlyerCarryPvE` (picking up other players' creatures) and `AllowCaveBuildingPvE`.
- `ServerHardcore=True` resets a character to level one on death.
- `PreventOfflinePvP=True` with `PreventOfflinePvPInterval` (seconds) protects a tribe's structures once everybody in it has been offline for that long. It is the main tool for making a small PvP server bearable for people with jobs.
- `ShowMapPlayerLocation=True` puts your own position on the map, which most PvE groups want.
- `AllowThirdPersonPlayer` and `ServerCrosshair` are what they say.
- `DisableStructureDecayPvE=True` stops PvE structures from decaying at all; `PvEStructureDecayPeriodMultiplier` stretches the timer instead of removing it.

Decay deserves a decision rather than a default. On a private server for friends, turn it off: nobody wants to come back from a fortnight away to find the base claimable. On a public server, decay is your garbage collector. A base built by somebody who played one weekend is still a few thousand structures the server holds in memory and writes to disk on every save. `AutoDestroyOldStructuresMultiplier` and the dino decay switches (`DisableDinoDecayPvE`, `PvPDinoDecay`, `AutoDestroyDecayedDinos`) exist for the same reason.

#### Structure and tame limits

These are the settings that decide how big your save gets, and they matter more than any rate.

| Key | Default | What it caps |
| --- | --- | --- |
| `TheMaxStructuresInRange` | `10500` | Structures within a radius of a placement |
| `MaxTamedDinos` | `5000` | Tamed creatures on the whole server |
| `MaxPersonalTamedDinos` | `0` (off) | Tames per tribe, when set |
| `PersonalTamedDinosSaddleStructureCost` | `0` (off) | How many tames a platform saddle counts as |
| `MaxPlatformSaddleStructureLimit` | varies by build | Structures on one platform saddle |

`MaxTamedDinos` is the global ceiling, and the server refuses new tames once it is reached. On a server with a handful of players it never comes into play. What does come into play is one breeder with a hundred and fifty creatures in a pen, which is legal under every default. `MaxPersonalTamedDinos` set to something like 300 per tribe puts a predictable limit on that without hurting normal play, and it is far kinder than discovering the problem when saves start taking a minute.

Raising `TheMaxStructuresInRange` lets people build bigger single bases. That is fine on a server with spare memory and a terrible idea on one that is already near its limit. Each structure is an object on the server, and a mega-base is tens of thousands of them. The [ARK memory sizing guide](https://www.renode.space/blog/how-much-ram-does-an-ark-server-need) works through what that looks like in gigabytes.

#### Breeding and imprinting in Game.ini

This is where most of `Game.ini` is spent, because official breeding times are measured in real days. All of these go under `[/script/shootergame.shootergamemode]`.

Game.ini:

```ini
[/script/shootergame.shootergamemode]
MatingIntervalMultiplier=0.25
MatingSpeedMultiplier=2.0
EggHatchSpeedMultiplier=10.0
BabyMatureSpeedMultiplier=10.0
BabyFoodConsumptionSpeedMultiplier=0.5
BabyCuddleIntervalMultiplier=0.1
BabyCuddleGracePeriodMultiplier=2.0
BabyImprintAmountMultiplier=1.0
BabyImprintingStatScaleMultiplier=1.0
LayEggIntervalMultiplier=0.5
```

What each of them does, and the direction it runs:

- `MatingIntervalMultiplier` - cooldown before a female can mate again. Lower is faster. `0.25` turns an official cooldown of up to two days into roughly half a day.
- `MatingSpeedMultiplier` - how quickly the mating bar fills while the pair stands together. Higher is faster.
- `EggHatchSpeedMultiplier` - egg incubation. Higher is faster. Also covers gestation for mammals.
- `BabyMatureSpeedMultiplier` - the growth from baby to adult. Higher is faster. This is the setting that decides whether breeding a large creature is an evening or a week.
- `BabyFoodConsumptionSpeedMultiplier` - how much a baby eats. Lower makes raising easier.
- `BabyCuddleIntervalMultiplier` - time between imprint requests. Lower means more frequent requests.
- `BabyCuddleGracePeriodMultiplier` - how long a request waits before imprint quality starts dropping.
- `BabyImprintAmountMultiplier` - imprint percentage per cuddle.
- `BabyImprintingStatScaleMultiplier` - how much a full imprint boosts stats. `0` disables the imprint stat bonus entirely.
- `LayEggIntervalMultiplier` - how often unfertilised eggs drop. Lower is more often, which matters for kibble.

The interaction people get wrong is maturation against imprinting. Imprint requests come at intervals scaled to the creature's total maturation time, and the number of requests in a full growth is roughly fixed for a given species. Speed maturation up by ten without touching the cuddle interval, and a large creature may finish growing before it has asked for many cuddles, which caps the imprint you can reach. The fix is to lower `BabyCuddleIntervalMultiplier` roughly in step with the maturation speed-up, and to raise `BabyImprintAmountMultiplier` if you want full imprints to stay reachable. Test with one fast-maturing and one slow-maturing species before announcing the rates, because the numbers that work for a raptor do not necessarily work for a giganotosaurus.

`AllowAnyoneBabyImprintCuddle=True` in `GameUserSettings.ini` (not `Game.ini`) lets any tribe member answer a cuddle, not only the person who claimed the baby. Most groups want it.

> [!TIP]
> Breeding settings are the ones a group argues about. Agree the rates before the first egg hatches and write them in your server rules. Changing them mid-season makes every creature bred before the change look either cheap or wasted.

#### Stat multipliers for players and creatures

The per-level stat arrays decide how much each level-up adds. They take an index in brackets.

| Index | Stat |
| --- | --- |
| `0` | Health |
| `1` | Stamina |
| `2` | Torpidity |
| `3` | Oxygen |
| `4` | Food |
| `5` | Water |
| `6` | Temperature |
| `7` | Weight |
| `8` | Melee damage |
| `9` | Movement speed |
| `10` | Fortitude |
| `11` | Crafting speed |

The arrays that exist:

- `PerLevelStatsMultiplier_Player[i]` - points a player gains per level spent on a stat.
- `PerLevelStatsMultiplier_DinoWild[i]` - how wild creatures' levels distribute into stats.
- `PerLevelStatsMultiplier_DinoTamed[i]` - points per level spent on a tamed creature.
- `PerLevelStatsMultiplier_DinoTamed_Add[i]` - the flat bonus a creature gets from taming.
- `PerLevelStatsMultiplier_DinoTamed_Affinity[i]` - the percentage bonus from taming effectiveness.

Game.ini:

```ini
PerLevelStatsMultiplier_Player[7]=2.0
PerLevelStatsMultiplier_DinoTamed[7]=2.0
PerLevelStatsMultiplier_DinoTamed[0]=1.5
PerLevelStatsMultiplier_DinoTamed[8]=1.2
```

Weight is the safe one to raise for both players and tames: it reduces trips without changing who wins a fight. Health and melee on tames change the balance of every boss fight and every PvP encounter, so raise them carefully and in small steps. Speed is the one to leave alone; the default speed levelling rules have changed between ARK releases and depend on `bAllowSpeedLeveling` and `bAllowFlyerSpeedLeveling`, and raising speed multipliers produces creatures that outrun the server's ability to stream terrain to the client.

#### Experience, levels and engrams

`XPMultiplier` scales everything. `Game.ini` lets you scale the sources separately: `KillXPMultiplier`, `HarvestXPMultiplier`, `CraftXPMultiplier`, `GenericXPMultiplier`, `SpecialXPMultiplier` and `ExplorerNoteXPMultiplier`. The common use is to make crafting less dominant - on many servers people level by crafting thousands of cheap items, and `CraftXPMultiplier=0.5` pushes them back out into the world.

Level caps and engram points are arrays as well, and they are where most broken `Game.ini` files come from:

- `LevelExperienceRampOverrides` sets the XP required for each player level and, with it, the maximum level.
- `OverridePlayerLevelEngramPoints` gives the engram points for each level, one line per level, in order.
- `OverrideMaxExperiencePointsPlayer` and `OverrideMaxExperiencePointsDino` cap total XP; they must agree with the ramp or the levels above the cap are unreachable.
- `bAllowUnlimitedRespecs=True` lets players reset their stats with a Mindwipe Tonic as often as they like.
- `bOnlyAllowSpecifiedEngrams` with `OverrideNamedEngramEntries` lock or unlock specific engrams; useful for a primitive-only server.

Writing a level ramp by hand is tedious and error prone. Use a generator you trust, check that the number of `OverridePlayerLevelEngramPoints` lines matches the number of levels, and keep a copy of the working file before every change. If the ramp is malformed, the server tends to fall back to defaults for the whole override without saying so.

#### Crops, spoiling and the rest of Game.ini

A handful of other `Game.ini` keys are worth a minute:

| Key | Effect |
| --- | --- |
| `CropGrowthSpeedMultiplier` | Higher grows faster |
| `CropDecaySpeedMultiplier` | Higher rots faster |
| `GlobalSpoilingTimeMultiplier` | Higher keeps food longer |
| `GlobalItemDecompositionTimeMultiplier` | Higher keeps dropped items longer |
| `GlobalCorpseDecompositionTimeMultiplier` | Higher keeps bodies longer |
| `FuelConsumptionIntervalMultiplier` | Higher burns fuel slower |
| `PoopIntervalMultiplier` | Lower means more fertiliser |
| `MaxNumberOfPlayersInTribe` | Tribe size cap |
| `MaxAlliancesPerTribe` / `MaxTribesPerAlliance` | Alliance limits |
| `SupplyCrateLootQualityMultiplier` | Drop quality |
| `bDisableFriendlyFire` | No damage between tribe members |

Two of these affect performance rather than gameplay. `GlobalItemDecompositionTimeMultiplier` and `GlobalCorpseDecompositionTimeMultiplier` keep objects in the world longer. On a busy server, leaving them high means more loose objects lying around for the server to track; there is no benefit to raising them beyond making death recovery more forgiving.

#### A worked example: a relaxed PvE server for eight friends

A configuration that a small group can live with for a long season, with the reasoning attached.

GameUserSettings.ini:

```ini
[ServerSettings]
ServerPVE=True
DifficultyOffset=1.0
OverrideOfficialDifficulty=5.0
XPMultiplier=2.0
TamingSpeedMultiplier=4.0
HarvestAmountMultiplier=2.0
ItemStackSizeMultiplier=5.0
NightTimeSpeedScale=2.0
PlayerCharacterFoodDrainMultiplier=0.75
PlayerCharacterWaterDrainMultiplier=0.75
DisableStructureDecayPvE=True
AllowAnyoneBabyImprintCuddle=True
ShowMapPlayerLocation=True
AllowFlyerCarryPvE=True
MaxPersonalTamedDinos=300
AutoSavePeriodMinutes=15
```

Game.ini:

```ini
[/script/shootergame.shootergamemode]
MatingIntervalMultiplier=0.2
EggHatchSpeedMultiplier=8.0
BabyMatureSpeedMultiplier=8.0
BabyCuddleIntervalMultiplier=0.125
BabyImprintAmountMultiplier=1.0
CropGrowthSpeedMultiplier=3.0
GlobalSpoilingTimeMultiplier=2.0
PerLevelStatsMultiplier_Player[7]=2.0
PerLevelStatsMultiplier_DinoTamed[7]=2.0
bAllowUnlimitedRespecs=true
MaxNumberOfPlayersInTribe=8
```

The reasoning: official wild levels so the game still has a goal; double XP and harvest because people have jobs; fast taming because waiting at a knocked-out creature for an hour is not anyone's favourite part; no decay because it is a friends' server; breeding at roughly eight times official with the cuddle interval cut by the same factor so imprints stay reachable; extra weight because trips are the tedious part. The per-tribe tame cap is the one line aimed at the server rather than the players. Nobody notices it until somebody decides to breed a hundred creatures, and then it saves the server.

On RE:NODE you edit both files with the in-browser file manager or over SFTP while the server is stopped, and the launch arguments are fields on the Startup tab. Take a backup before changing breeding or stat settings - a backup slot comes with every plan, and restoring is one button - so a rate experiment that goes wrong is a rollback rather than a wipe. ARK has no catalogue line of its own, so check the [game server plans](https://www.renode.space/game-servers) for what is currently offered.

#### Troubleshooting settings that do not apply

**Changes revert after a restart.** You edited `GameUserSettings.ini` while the server was running. Stop the server, make the edit again, start it.

**A breeding setting has no effect.** It is in `GameUserSettings.ini` instead of `Game.ini`, or the section header in `Game.ini` is wrong. The header is `[/script/shootergame.shootergamemode]`, case-insensitive but spelled exactly.

**Wild creatures are still low level.** `DifficultyOffset` is below 1.0, or you did not run `DestroyWildDinos` after the change.

**The launch line and the ini disagree.** The launch line wins. Look at the Startup tab or your start script for a `?Key=` you forgot about.

**Players cannot level past a certain point.** A level ramp override with too few entries, or an `OverrideMaxExperiencePointsPlayer` below what the ramp needs.

**A setting from an old Evolved guide does nothing.** Some keys behave differently on Ascended or were never carried over. Search the Ascended server's own default files or a current list before assuming the server is broken. When a mod also changes the same value, the mod usually wins - see [ARK mods from CurseForge on a server](https://www.renode.space/blog/ark-mods-curseforge-on-server).

#### FAQ

##### Do I need to restart the server after changing Game.ini?

Yes. `Game.ini` is read at startup. Stop the server cleanly, edit, and start it again; there is no reload command for it.

##### Why does my ARK server ignore my GameUserSettings.ini edits?

Almost always because the file was edited while the server was running, and the clean shutdown wrote the in-memory values over yours. The other common cause is a launch-line `?Key=Value` that overrides the file.

##### What breeding multipliers are sensible for a small group?

Between five and ten times official for hatching and maturation, with `BabyCuddleIntervalMultiplier` reduced by about the same factor so full imprints remain possible. Above that, breeding stops being a project and turns into a production line.

##### Is there a setting for a maximum number of creatures per player?

Per tribe, yes: `MaxPersonalTamedDinos`. A solo player is a tribe of one, so it works as a per-player cap on a server where most people play alone.

##### Can I set different rates on different maps in a cluster?

Yes. Each server in a cluster has its own config files. Players will notice and move their breeding to the fastest map, so most clusters keep rates identical - see [ARK clusters and cross-server transfers](https://www.renode.space/blog/ark-cluster-and-cross-server-transfers).

##### Does raising stack size break anything?

Rarely. Some items keep fixed stack sizes regardless, and stack-size mods may override it. It reduces object counts in storage, which is a small win for the server.

Every RE:NODE server comes with an in-browser file manager with syntax highlighting, SFTP, backup slots that restore with one button and a Startup tab for launch arguments - the tools this post assumes. Changing plan does not rebuild the server, so moving up a tier keeps the world and its settings.

[Compare game server plans](https://www.renode.space/game-servers)

---

### Arma Reforger server: config.json and mods

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/arma-reforger-dedicated-server

An Arma Reforger dedicated server is a free SteamCMD download (app id `1874900`) with native Linux and Windows builds, configured entirely by one JSON file passed with `-config`. That file names the scenario to run by its ID, lists the mods to download from Bohemia's own Workshop, sets the player count (up to 128), crossplay and view distances, and holds the admin and RCON passwords. It needs UDP `2001` for the game and UDP `17777` for the server browser, plus a port for RCON if you use it, and a realistic 6 to 12 GB of memory depending on scenario and mods. The rest of this guide is each block of that file and the mistakes that stop a server appearing.

Reforger is a different engine (Enfusion) from Arma 3, and almost nothing carries over: no `server.cfg`, no `@mod` folders, no `.bikey` files, no Steam Workshop. If you are coming from Arma 3, read this as a new game. If you are looking for Arma 3 itself, see [the Arma 3 server and mods guide](https://www.renode.space/blog/arma-3-server-and-mods).

#### How a Reforger server works

The server loads one **scenario** - Conflict on Everon, Game Master, Combat Ops and so on, or a modded scenario - and runs it until it ends or the server restarts. Players connect from PC (Steam), Xbox and PlayStation, depending on which platforms you enable.

Three things make Reforger hosting different from older Bohemia titles:

- **Mods download themselves.** You list mod IDs in the config; the server fetches them from the Arma Reforger Workshop (Bohemia's own service, not Steam) at start-up, and players' clients download them on join. No manual uploads, no key files.
- **The config is JSON.** It is strict: one missing comma or a trailing comma after the last item and the server refuses to start. Validate the file before you restart.
- **Scenarios are referenced by resource ID**, a GUID in braces followed by a path, not by a friendly name.

#### Requirements and resource usage

Bohemia publishes minimums; real servers need more, and scenario choice matters more than player count.

| Setup | RAM | CPU | Notes |
| --- | --- | --- | --- |
| Game Master, small group | 4-6 GB | 2 cores | Load depends on what the Game Master spawns |
| Conflict, 32 players | 6-8 GB | 2-3 cores | AI and base building add up over a session |
| Conflict, 64+ players | 10-12 GB | 3-4 cores | The common public setup |
| Heavily modded, any size | 12 GB+ | 3-4 cores | Large mod packs dominate |

- **CPU.** Enfusion uses more than one thread better than Arma 3's engine, but the simulation still leans on a main thread, so clock speed counts. Cap the frame rate with `-maxFPS` so the server does not spin a core at 100% for frames nobody needs.
- **Memory.** Grows over a long Conflict session as bases are built and AI accumulates. A scheduled restart keeps it predictable.
- **Disk.** The server install is in the tens of gigabytes and mods add to it. Plan for 30-50 GB with a moderate mod list, and fast storage helps the long initial mod download and scenario load.

AI is the expensive part, as in every Arma. The `operating.aiLimit` setting caps the AI count; it is the most effective single knob for a server that struggles in the second hour. [CPU vs RAM for game servers](https://www.renode.space/blog/cpu-vs-ram-for-game-servers) explains how to tell which resource is short.

#### Installing and the launch line

The server is anonymous on SteamCMD:

```bash
$ steamcmd +force_install_dir /home/reforger/server +login anonymous \
    +app_update 1874900 validate +quit
$ cd /home/reforger/server
$ ./ArmaReforgerServer -config ./config.json -profile ./profile \
    -maxFPS 60
```

The arguments that matter:

| Argument | What it does |
| --- | --- |
| `-config` | Path to the JSON configuration. Required |
| `-profile` | Folder for logs, settings and downloaded mods. Keep it outside the install |
| `-maxFPS` | Caps server frame rate. `60` is a common, sensible value |
| `-listScenarios` | Prints the scenario IDs available, including from installed mods, and exits |

On Windows the binary is `ArmaReforgerServer.exe`. On a panel host the same arguments are assembled from the Startup tab, and `config.json` is a file you edit in the file manager. [SteamCMD explained](https://www.renode.space/blog/steamcmd-explained) covers `validate` and updates in general.

> [!TIP]
> Put `-profile` somewhere that survives a reinstall. The profile holds the logs you will need when something goes wrong, and the downloaded mods; losing it means re-downloading every mod and losing the history of what broke.

#### config.json: the top level, ports and RCON

A complete, working file looks like this. Each block is explained below.

config.json:

```json
{
  "bindAddress": "0.0.0.0",
  "bindPort": 2001,
  "publicAddress": "",
  "publicPort": 2001,
  "a2s": {
    "address": "0.0.0.0",
    "port": 17777
  },
  "rcon": {
    "address": "0.0.0.0",
    "port": 19999,
    "password": "a-long-random-rcon-password",
    "permission": "admin",
    "maxClients": 2
  },
  "game": {
    "name": "Everon Conflict | EU | Comms",
    "password": "",
    "passwordAdmin": "a-different-long-password",
    "admins": [],
    "scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
    "maxPlayers": 64,
    "visible": true,
    "crossPlatform": true,
    "supportedPlatforms": ["PLATFORM_PC", "PLATFORM_XBL"],
    "gameProperties": {
      "serverMaxViewDistance": 2500,
      "serverMinGrassDistance": 50,
      "networkViewDistance": 1500,
      "disableThirdPerson": false,
      "fastValidation": true,
      "battlEye": true
    },
    "mods": []
  },
  "operating": {
    "lobbyPlayerSynchronise": true,
    "playerSaveTime": 120,
    "aiLimit": -1,
    "slotReservationTimeout": 60,
    "joinQueue": { "maxSize": 0 }
  }
}
```

The networking keys:

| Key | Default | What it does |
| --- | --- | --- |
| `bindAddress` | all interfaces | Address the game listens on |
| `bindPort` | `2001` | Game port, UDP |
| `publicAddress` | detected | The address advertised to players. Set it if detection gets it wrong |
| `publicPort` | `2001` | The port advertised. Differs from `bindPort` only behind port translation |
| `a2s.port` | `17777` | Steam query (A2S), UDP - what server lists use |
| `rcon.port` | none set | RCON port, UDP |

`publicAddress` deserves a note: on a server with a straightforward public address it can usually stay empty, but if the browser shows your server with a private or wrong address, set it explicitly to the public IP. Behind NAT, `publicPort` is the external port and `bindPort` the internal one.

RCON in Reforger uses the BattlEye RCon protocol over UDP, so the familiar Arma RCON tools work with it. `permission` is `admin` (full control) or `monitor` (read-only). `maxClients` caps simultaneous RCON connections; `blacklist` and `whitelist` arrays can restrict which commands are allowed. The protocol is not encrypted, so treat the port the same way [RCON safely](https://www.renode.space/blog/rcon-safely) describes: long unique password, restricted by source address where possible, or left out of the config entirely if you do not use it.

#### The game block: identity, scenario and platforms

**`name`, `password`, `passwordAdmin`.** The browser name, the join password (empty for public), and the password used with `#login` in chat. Keep the admin password long and do not reuse the RCON one.

**`admins`.** A list of player identifiers granted admin rights. It accepts the player's Bohemia identity ID and, for Steam players, their SteamID64. The identity ID is shown in the server log when the player connects, which is the reliable place to copy it from.

**`scenarioId`.** The scenario to load, as a resource reference:

```text
{ECC61978EDCC2B5A}Missions/23_Campaign.conf    Conflict - Everon
{59AD59368755F41A}Missions/21_GM_Eden.conf     Game Master - Everon
```

Those two have been stable for a long time, but new terrains and official scenarios have been added with each major update, each with its own ID. Do not copy lists from old posts. Run the server once with `-listScenarios` and use what it prints - that output includes scenarios from the mods in your config, which is the only way to get a modded scenario's ID right.

**`maxPlayers`.** 1 to 128, default 64. Conflict is designed around large counts; Game Master and Combat Ops sessions play better far smaller.

**`visible`.** Whether the server appears in the browser. Set `false` for a private event server people join by address.

**`crossPlatform` and `supportedPlatforms`.** With `crossPlatform` true, the platforms listed in `supportedPlatforms` can join: `PLATFORM_PC`, `PLATFORM_XBL` (Xbox) and `PLATFORM_PSN` (PlayStation). Leaving a platform out keeps it off your server. Console players can only load mods that are available on their platform, so a mod list that works for PC players can quietly exclude consoles; check each mod's platform availability on the Workshop if you want crossplay to mean anything.

#### gameProperties and operating: performance and behaviour

`gameProperties` controls what the server asks clients to render and simulate:

| Key | Default | Range / values | What it does |
| --- | --- | --- | --- |
| `serverMaxViewDistance` | `1600` | `500`-`10000` | Maximum view distance clients may use |
| `serverMinGrassDistance` | `0` | `0`, `50`-`150` | Minimum grass draw distance, so grass cannot be turned off for an advantage |
| `networkViewDistance` | `1500` | `500`-`5000` | Distance at which the server sends updates about objects |
| `disableThirdPerson` | `false` | true / false | Force first person |
| `fastValidation` | `true` | true / false | Quicker client data validation. Keep it on |
| `battlEye` | `true` | true / false | Anti-cheat. Keep it on for public servers |

`networkViewDistance` is the one with a real server cost. Every object within it is replicated to each player, so raising it on a 64-player Conflict server raises bandwidth and CPU together. Leave it near the default unless your community plays long-range armour and helicopters and you have measured the cost. `serverMinGrassDistance` set to around `50` closes the "turn grass off and see everyone lying in the field" trick that annoys public servers.

`operating` covers server behaviour:

| Key | Default | What it does |
| --- | --- | --- |
| `lobbyPlayerSynchronise` | `true` | Keep the lobby in sync with in-game players |
| `playerSaveTime` | `120` | Seconds between saves of player state |
| `aiLimit` | `-1` | Cap on AI characters, `-1` for no cap |
| `slotReservationTimeout` | `60` | Seconds a slot is held for a disconnected player |
| `disableAI` | `false` | Disable AI entirely |
| `joinQueue.maxSize` | `0` | Join queue length, up to `50` |

Recent versions also support saving scenario progress, configured in a `persistence` block (an autosave interval and a hive identifier). It is younger than the rest of the file and has changed between releases, so check the current Bohemia documentation before relying on it for a long-running Conflict campaign, and keep your own backups of the profile folder regardless.

#### Choosing a scenario type for your group

The scenario decides almost everything about the server - who it suits, how many players it needs and what it costs to run - so choose it before tuning anything else.

- **Conflict** is the large-scale persistent mode: two factions build bases, capture territory and supply the front line. It needs a population to work. Below about twenty players the map feels empty and one side usually snowballs. It is also the heaviest on memory over a long session, because bases, vehicles and AI accumulate.
- **Game Master** puts one or more players in control of the scenario, spawning AI, objectives and events for everyone else in real time. It suits organised groups running their own operations, and it is the most variable load: a Game Master who spawns two hundred AI in one town has just made the server's worst evening. Set `aiLimit` on Game Master servers even if you trust your staff.
- **Combat Ops and other official co-op scenarios** are shorter, structured missions against AI for small groups. They are light to run and need no ongoing maintenance.
- **Modded scenarios** range from small training maps to complete overhauls. Treat each as a new game: read the mod page for its expected player count and dependencies.

A sensible pattern for a community is one public Conflict server and, if there is demand, a smaller password-protected Game Master server for scheduled operations. Running both on the same machine is possible with different ports and profile folders, but each server needs its own memory, and Conflict alone will use most of a mid-sized plan at peak.

#### Mods from the Reforger Workshop

Mods are listed in `game.mods`. The server downloads each into the profile folder at start-up; joining clients download the same set.

```json
"mods": [
  {
    "modId": "0123456789ABCDEF",
    "name": "Example Weapons Pack",
    "version": "1.0.12"
  },
  {
    "modId": "FEDCBA9876543210",
    "name": "Example Map"
  }
]
```

The fields:

- **`modId`** is the 16-character hexadecimal ID from the mod's Workshop page (on reforger.armaplatform.com or in the in-game Workshop). It is the only field that identifies the mod. The IDs above are placeholders.
- **`name`** is informational. It shows in logs and helps humans read the file.
- **`version`** is optional. Leave it out and the server takes the latest version on every start. Set it and the server pins that version - which is the right choice for a server where mods must not change underneath you.
- **Dependencies** are resolved automatically: list the mod you want and its required mods are fetched too.

```diagram
title: How Reforger mods reach the server and players
workshop = Reforger Workshop | Bohemia service
config = config.json | modId, version
server = Reforger server | downloads at start
profile = Profile folder | cached mods
player = Player | downloads on join
config -> server
server -> workshop : fetch listed mods
workshop -> profile
player -> server : join
workshop -> player : same versions
```

The trade-off of automatic downloads is that an unpinned mod can update overnight, the server picks up the new version on its next restart, and the mod breaks. For any server people depend on, pin versions, update deliberately, and test after updating. [What to do when a mod update breaks](https://www.renode.space/blog/what-to-do-when-a-mod-update-breaks) and [keeping a modded server clean](https://www.renode.space/blog/keeping-a-modded-server-clean) apply here exactly as to any other game.

A modded scenario is selected exactly like an official one: add the mod, start once with `-listScenarios`, copy its scenario ID into `scenarioId`.

#### Ports, admins and day-to-day running

| Port | Protocol | Purpose |
| --- | --- | --- |
| `2001` | UDP | Game traffic (`bindPort`) |
| `17777` | UDP | A2S query - server browser and list sites |
| `19999` | UDP | RCON, only if configured |

Everything is UDP. A server that runs but is not listed is the A2S port in most cases; a server that is listed but cannot be joined is the game port or a wrong `publicAddress`. [Game server ports explained](https://www.renode.space/blog/game-server-ports-explained) covers why the query port exists separately.

Admins log in from chat with `#login` followed by `passwordAdmin` (players listed in `admins` are recognised as admins). Logged-in admins get in-game admin tools and chat commands for kicking, banning and restarting; the exact command set has grown over Reforger's updates, so type `#` commands from the official list for your version rather than from an old guide. RCON gives the same control remotely.

The routine that keeps a Reforger server healthy:

1. **Restart on a schedule.** Daily, at an hour nobody plays. It clears accumulated AI and memory growth, and picks up config changes. [Restart schedules that help](https://www.renode.space/blog/restart-schedules-that-help) has the reasoning.
2. **Update deliberately.** After a Reforger update, the server must update before anyone can join, and mods may need their authors to release fixes. Update the server, check mods, then start.
3. **Back up the config and profile.** `config.json` is small and precious. The profile holds logs and any saved progress. On a panel, back up before each update and restore with one click if it goes wrong.
4. **Read the log after every change.** JSON errors, failed mod downloads and wrong scenario IDs are all stated plainly at start-up. [Reading the console](https://www.renode.space/blog/reading-the-console) helps with finding the line that matters.

#### Troubleshooting

**The server exits immediately.** Invalid JSON. A trailing comma after the last item in a list or object is the usual culprit. Run the file through a JSON validator.

**"Scenario not found" or the wrong scenario loads.** The `scenarioId` is mistyped, belongs to a mod that is not in the list, or is from an older version. Use `-listScenarios`.

**Not in the server browser.** A2S port closed or wrong, `visible` false, or `publicAddress` advertising the wrong address.

**Console players cannot join.** `crossPlatform` is false, their platform is not in `supportedPlatforms`, or a mod in the list is not available on their platform.

**Mod download fails at start-up.** Wrong `modId`, a pinned `version` that the author has removed, or a temporary Workshop outage. The log names the mod.

**Server FPS drops after an hour of Conflict.** AI and objects accumulating. Set an `aiLimit`, check `networkViewDistance`, and schedule restarts.

**Players see different view distances.** Expected - `serverMaxViewDistance` is a ceiling, not a target. Clients choose up to that value.

#### FAQ

##### Is Arma Reforger's server the same as Arma 3's?

No. Different engine, different files, different mod system. Reforger uses one `config.json`, downloads mods from Bohemia's Workshop automatically, and has no `server.cfg`, `@mod` folders or signature keys.

##### How many players can an Arma Reforger server hold?

Up to 128, set with `maxPlayers`. Whether your server can simulate that many depends on the scenario, AI count and CPU; most public Conflict servers run 64 or more on capable hardware.

##### Where do I find a scenario ID?

Start the server with `-listScenarios`. It prints the IDs of every scenario available, including those from the mods in your config. Copy the full string with the braces and path.

##### Do I need to upload mods to the server?

No. List each mod's ID in `game.mods` and the server downloads it from the Reforger Workshop at start-up. Players download the same mods when they join.

##### Can PlayStation and Xbox players join a modded server?

Only if every mod on the server is available on their platform, and only with `crossPlatform` enabled and their platform listed in `supportedPlatforms`. Check mod availability before promising crossplay.

##### Does Reforger need a Steam account or token to host?

The server downloads anonymously with SteamCMD and needs no game server token. Mods come from Bohemia's Workshop, which the server reaches without your Steam account.

Arma Reforger is not in the RE:NODE catalogue, so this guide is for any host. Our panel gives the same tools it assumes: an in-browser editor with syntax highlighting for `config.json`, SFTP, an unfiltered console for the start-up log, scheduled restarts and backup slots on every plan, on NVMe hardware in Germany.

[See the game servers](https://www.renode.space/game-servers)

---

### Astroneer dedicated server setup and ports

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/astroneer-dedicated-server

An Astroneer dedicated server is a free Windows program (Steam app `728470`, anonymous download) that runs one save for up to eight players. It is configured through two files in `Astro/Saved/Config/WindowsServer/`: `Engine.ini`, which holds the game port (`8777` UDP by default), and `AstroServerSettings.ini`, which holds everything else - name, password, owner, public IP, save intervals and the player list. The single setting that breaks most first attempts is `PublicIP`: the server registers itself with the game's backend using that address, and if it is wrong the server either does not appear or cannot be joined. Set it to the address players will actually connect to, open UDP `8777`, and the rest is detail.

#### How Astroneer dedicated servers work

Astroneer multiplayer comes in two forms. A hosted game runs on one player's PC and exists only while they play. A dedicated server runs the save on its own, so anyone in the group can play at any time and long-running automation keeps going.

A few things are specific to Astroneer:

- **Eight players maximum.** `MaximumPlayerCount` cannot usefully go beyond 8.
- **Windows only.** The server is `AstroServer.exe`. It runs on Linux under Wine, which many people do successfully, but it is not supported and updates occasionally break it.
- **Server registry.** The server does not use a classic Steam master server list. It registers with the game's online backend, and players add it to their server list by address. That is why `PublicIP` matters so much.
- **PC only.** Dedicated servers are for Steam and Microsoft Store players on PC. Console players use hosted sessions instead.

There is also a well-known community tool, AstroLauncher, that wraps the server on Windows. It manages the config files, handles restarts and backups, checks the network setup, and adds a small web interface. It is not official, but it fixes enough of the server's rough edges that most self-hosted Astroneer servers on Windows use it. On a game panel the panel plays the same role, so you do not need it there.

##### Dedicated server or hosted session?

For two friends who always play together, a hosted session is fine: whoever hosts starts the game, the other joins, and the save lives on the host's PC. The trouble starts when the group grows or schedules drift apart. The save is only reachable when the host is online, the host's frame rate is shared with the simulation, and when the host leaves, everyone else is dropped. Moving the save to another player means copying files around by hand.

A dedicated server fixes each of those. The save sits on a machine that is always on, anyone in the group can log in at any hour and pick up the project, and nobody's PC carries the world. It also changes what kind of game Astroneer becomes: automation that only runs while somebody is present - smelters, research chambers, trade platforms - can be left running while one player tends it, so progress no longer waits for the whole group.

What it does not change is the game's limits. Eight players is still the cap, the same save format is used, and the server is no better at large automated bases than a powerful gaming PC would be. If your hosted game already stutters at a huge base, a dedicated server with similar clock speed will stutter too. The gain is availability and fairness between players, not raw performance.

##### Running it under Wine on Linux

Because the server is a Windows executable, Linux hosting means running it through Wine. That is how many panel-based hosts and community container images run it, and for a private group it is usually fine. The costs are worth knowing before you commit:

- **Updates can break the setup.** A game update that changes something Wine handles badly can leave the server failing at start until the Wine version or container image is updated.
- **Troubleshooting is harder.** Error messages pass through an extra layer, and official support assumes Windows.
- **Performance is close to native** for a server of this size, so that is rarely the reason to avoid it.

If you need the most predictable setup, a Windows machine you control - a VDS, for example - is the safe route; [choosing between a VDS and a game panel](https://www.renode.space/blog/choosing-between-vds-and-a-game-panel) weighs the extra administration against the control you gain.

#### Requirements and resource usage

Astroneer's server is light at first and grows with the save. Big automated bases with long conveyor-like chains of storage, many rovers, and large terraformed areas push memory and CPU up over weeks.

| Save | RAM | CPU | Notes |
| --- | --- | --- | --- |
| New save, 1-4 players | 2-3 GB | 1-2 cores | Comfortable start |
| Mid-game, 4-8 players | 3-4 GB | 2 cores | Several bases, rovers |
| Late game, heavy automation | 4-6 GB | 2+ fast cores | Large terrain changes, many items |

- **CPU**: the simulation and physics lean on one main thread, so clock speed matters. `MaxServerFramerate` caps how hard it runs (see below).
- **Disk**: the server installs to a few gigabytes. Saves start at a few megabytes and grow into tens of megabytes; with automatic backups kept, give it 10 GB.
- **Network**: modest bandwidth, but latency shows up as rubber-banding rovers and delayed item pickups. [Latency, jitter and packet loss](https://www.renode.space/blog/latency-jitter-and-packet-loss) covers how to tell them apart.

#### Installing and first start

With SteamCMD on Windows:

```bash
$ steamcmd +force_install_dir C:\astro-server +login anonymous +app_update 728470 validate +quit
```

[SteamCMD explained](https://www.renode.space/blog/steamcmd-explained) covers the update loop and `validate`. Run `AstroServer.exe` once and let it start fully, then stop it. That first run creates the `Astro\Saved\Config\WindowsServer` folder with `Engine.ini` and `AstroServerSettings.ini`, and a `SaveGames` folder.

The sequence that works:

1. Start the server once to generate the config files.
2. Stop it.
3. Set the port in `Engine.ini` and the settings in `AstroServerSettings.ini`, including `PublicIP` and `OwnerName`.
4. Open UDP `8777` (or your chosen port) on every firewall between the server and the internet.
5. Start the server and have the owner join first.

> [!WARNING]
> Edit the ini files only with the server stopped. Like most Unreal Engine servers, Astroneer writes its settings back on shutdown, so an edit made while it runs can be silently replaced.

#### Engine.ini: the port

The game port lives in `Engine.ini`, not in the server settings:

Astro/Saved/Config/WindowsServer/Engine.ini:

```ini
[URL]
Port=8777
```

Change it only if your host has given you a different port, or you run several servers on one machine. The port is UDP. If you change it, every player has to use the new number when adding the server.

Older guides also tell you to add a `[SystemSettings]` block with `net.AllowEncryption=False` to `Engine.ini` - and, in some versions, to the players' own `Engine.ini` too - to fix connection failures. That was a real workaround for some builds; on current builds it is usually unnecessary, but it remains one of the first things the community suggests when a correctly configured server still refuses connections.

#### AstroServerSettings.ini, key by key

The file holds a single section. A typical edited version:

Astro/Saved/Config/WindowsServer/AstroServerSettings.ini:

```ini
[/Script/Astro.AstroServerSettings]
bLoadAutoSave=True
MaxServerFramerate=30.000000
MaxServerIdleFramerate=3.000000
bWaitForPlayersBeforeShutdown=False
PublicIP=203.0.113.10
ServerName=Exo Dynamics Annex
MaximumPlayerCount=8
OwnerName=NovaPilot
OwnerGuid=
PlayerActivityTimeout=0
ServerPassword=a-long-join-password
bDisableServerTravel=False
DenyUnlistedPlayers=False
VerbosePlayerProperties=True
AutoSaveGameInterval=900
BackupSaveGamesInterval=7200
ActiveSaveFileDescriptiveName=SAVE_1
ConsolePort=1234
```

What each setting does:

| Setting | Default | What it does |
| --- | --- | --- |
| `PublicIP` | empty | Address registered with the backend; must be reachable |
| `ServerName` | generic | Name shown in the server list |
| `ServerPassword` | empty | Join password |
| `OwnerName` | empty | Steam display name of the owner |
| `OwnerGuid` | empty | Filled in when the owner first joins |
| `MaximumPlayerCount` | `8` | Slots, up to 8 |
| `MaxServerFramerate` | `30` | Simulation rate cap with players on |
| `MaxServerIdleFramerate` | `3` | Rate cap with nobody online |
| `AutoSaveGameInterval` | `900` | Seconds between autosaves |
| `BackupSaveGamesInterval` | `7200` | Seconds between backup copies of the save |
| `DenyUnlistedPlayers` | `False` | `True` makes the server whitelist-only |
| `ActiveSaveFileDescriptiveName` | `SAVE_1` | Which save the server loads |
| `PlayerActivityTimeout` | `0` | Kick idle players after this many seconds; `0` is never |
| `ConsolePort` | `1234` | Local remote-console port used by tools |

##### PublicIP

Set it to the address players use to reach the server - on a rented server, the address shown in the panel. On a home server behind a router it is your public internet address, not the `192.168.x.x` address of the PC. If it changes (home connections often do), the server registers the wrong address and players cannot join until you update it. Hosted servers do not have that problem, which is one of the honest arguments covered in [self-hosting a game server at home vs renting](https://www.renode.space/blog/self-hosting-a-game-server-at-home-vs-renting).

##### Owner, admins and the whitelist

`OwnerName` is the Steam display name of the person who should own the server. The first time a player with that name joins, the server records their ID in `OwnerGuid`, and from then on that account is the owner whatever its name becomes.

The owner manages everyone else from inside the game, in the server's player list: promoting players to admin, whitelisting, kicking and blacklisting. The server writes these into the settings file as player entries with a category - `Owner`, `Admin`, `Whitelisted`, `Blacklisted` or `Unlisted`. `DenyUnlistedPlayers=True` then turns the server into a whitelist: only players already in the list can join. The usual flow for a private group is to leave it `False`, have everyone join once so they appear in the list, whitelist them, and then switch it to `True`.

##### Framerate settings

`MaxServerFramerate` caps how often the server simulates per second while players are online. The default 30 is fine for most saves. Raising it can smooth physics-heavy play but costs CPU in proportion, and the gain is small. `MaxServerIdleFramerate` is the rate when nobody is online; keeping it low means an empty server barely uses CPU. If you want automation to keep running at full speed overnight, raise the idle rate, but be aware the save keeps changing with nobody watching it.

#### Ports and connecting

| Port | Protocol | Purpose |
| --- | --- | --- |
| `8777` | UDP | Game traffic, set in `Engine.ini` |
| `1234` | TCP | Local console for management tools; do not expose |

Astroneer needs only the one game port open to the internet. The console port is for tools on the same machine or network - there is no reason to forward it, and an exposed management port is an invitation. [Game server ports explained](https://www.renode.space/blog/game-server-ports-explained) covers the general difference between game and management ports.

To join, a player opens the server list in the game, adds a server with the address and port (`203.0.113.10:8777`), and it appears in their list with its name and status. The password is asked for on join. If the server is listed as unreachable for everyone, the problem is almost always `PublicIP` or the firewall.

#### Moving a local save onto the server

Single-player and hosted saves can be moved to a dedicated server. Local saves on a Steam install live in:

```text
%LOCALAPPDATA%\Astro\Saved\SaveGames\
```

The steps:

1. Stop the server.
2. Copy the `.savegame` file you want into the server's `Astro\Saved\SaveGames` folder - [SFTP and the file manager](https://www.renode.space/blog/sftp-and-the-file-manager) covers getting files onto a hosted server.
3. Save file names carry a descriptive name followed by a `$` and a date stamp. Set `ActiveSaveFileDescriptiveName` to the part before the `$`.
4. Start the server and check the log to confirm it loaded that save rather than creating a new one.

If the server creates a fresh save instead, the descriptive name did not match. Look at the exact file name, including capitals, and try again. The original file is still there - nothing is lost.

#### Saves, backups and updates

Astroneer autosaves every `AutoSaveGameInterval` seconds (15 minutes by default) and makes a backup copy every `BackupSaveGamesInterval` seconds (two hours by default), keeping them in the same `SaveGames` folder. A clean stop saves first; a killed process loses everything since the last autosave.

Those built-in backups protect against a save corrupting, not against losing the server or deleting the wrong folder. Copy saves off the machine on a schedule, and occasionally restore one to check it works - [backups that actually restore](https://www.renode.space/blog/backups-that-actually-restore) explains why that check is the point.

Updates: after a game patch, the server must be updated before patched clients can join. Update through SteamCMD, start the server, and check it loads the existing save. Take a backup before every update; large updates have been known to change save handling.

Lowering `AutoSaveGameInterval` to 300 seconds limits what a crash costs on a busy save. The save hitch is brief on small saves and only becomes noticeable late in the game.

On RE:NODE, backup slots are included on every game plan, stored off the machine they protect and restored with a button, and the Schedules tab can run a backup before a restart. Astroneer's server is Windows-only and not in the catalogue, so this describes the panel, not an Astroneer plan.

#### Troubleshooting

**The server does not show as online in the list.** `PublicIP` is wrong or empty, or UDP `8777` is closed. Check both before anything else.

**Players get stuck on "Connecting" and time out.** Usually the port is open for TCP instead of UDP, or the port in `Engine.ini` does not match what you opened. The encryption workaround above is the next thing to try.

**The owner has no rights.** `OwnerName` did not match their Steam display name when they first joined, so someone else may have been recorded, or nobody. Stop the server, clear the wrong `OwnerGuid`, set the name exactly, and have them join first.

**The server loads a new world instead of the uploaded save.** `ActiveSaveFileDescriptiveName` does not match the file name before the `$`.

**Settings revert after a restart.** You edited while the server was running. Stop, edit, start.

**Rovers and items rubber-band.** CPU at its limit or latency. Check the CPU graph under load; on a late-game save, reducing automation or splitting bases helps more than anything in the config. See [CPU vs RAM for game servers](https://www.renode.space/blog/cpu-vs-ram-for-game-servers).

#### FAQ

##### How many players can an Astroneer dedicated server hold?

Eight. The game is designed around that number, and the server setting does not usefully go higher.

##### Can Xbox or PlayStation players join a dedicated server?

No. Dedicated servers are for PC players on Steam and the Microsoft Store. Console players use hosted sessions.

##### Does the Astroneer server run on Linux?

Only under Wine. It works for many people, but it is not supported, and updates have broken Wine setups before. Windows is the dependable choice.

##### What is the difference between autosave and backup intervals?

Autosave writes the current save; the backup interval copies it to a separate backup file. Both stay in the same folder, so neither replaces backups kept somewhere else.

##### Do I need AstroLauncher?

Not on a game panel, which already handles start, stop, restarts and backups. On a self-managed Windows server it is useful, because it automates exactly those chores and checks your network settings.

Astroneer is not in the RE:NODE catalogue, and its Windows-only server is a build-it-yourself job on a VDS, which is prepared by hand within 24 hours on hardware in Germany. The game servers we do sell all come with SFTP, off-machine backup slots and a Schedules tab, whatever the tier.

[See the game servers](https://www.renode.space/game-servers)

---

### Automating game server updates safely

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/automating-game-server-updates

Automate updates on vanilla servers and do them by hand on modded ones. A vanilla Steam game server can safely update itself on every restart, because the server must match the clients and the clients update themselves the moment a patch lands; leaving the server behind just locks everyone out. A modded server is the opposite case: a game patch routinely breaks mods, and an automatic update at four in the morning means a server that will not start when people arrive after work. Between those two sit the details - when to run `validate`, how to schedule the update so it does not land mid-session, how to know it worked - and that is what the rest of this post covers.

What SteamCMD itself is and how its arguments work is in [SteamCMD explained](https://www.renode.space/blog/steamcmd-explained). This post assumes you know the install line and are deciding how often to run it, and with what safeguards.

#### Why game servers need updating at all

A dedicated server has to run exactly the same game version as the clients connecting to it. For most Steam games that is enforced: the client sends its build number when it connects and the server refuses anything else, usually with an unhelpful message like "Incompatible version" or "Server is running a different version". When the developer pushes a patch, every player's Steam client downloads it within hours, and from that moment the old server cannot be joined.

So for most games the question is not whether to update but how quickly. The exceptions are worth knowing:

- **Minecraft Java** does not update anything automatically, and players choose their client version in the launcher. A server on 1.21.1 stays joinable by 1.21.1 clients indefinitely, and plugins such as ViaVersion let newer clients connect to an older server.
- **Factorio** lets players pick an older game version in Steam's betas tab and does not force updates on anyone, so a server can stay on a version as long as the group agrees.
- **FiveM** separates the server build (the "artifact") from the game. Clients connect to whatever the server runs, within the range of builds the platform still supports.
- **Terraria** clients update through Steam, but the dedicated server is a separate download, so somebody has to fetch the new one by hand.

Everything else - Valheim, Rust, Palworld, Project Zomboid, 7 Days to Die, Counter-Strike 2, Unturned, Satisfactory, DayZ, Arma 3 - needs the server on the same build as the clients, and a delay of a day means a day with nobody able to join.

#### Update on restart: the default for vanilla servers

The simplest automation is to run the update every time the server starts. On your own machine, that means the start script calls SteamCMD before launching the game:

start.sh:

```bash
#!/bin/sh
set -e
/home/steam/steamcmd/steamcmd.sh +force_install_dir /srv/valheim \
    +login anonymous +app_update 896660 +quit
cd /srv/valheim
exec ./valheim_server.x86_64 -nographics -batchmode \
    -name "Longship Crew" -port 2456 -world "Midgard" -password "$PASS"
```

On a panel built on Pterodactyl, most Steam game eggs offer the same behaviour as a startup variable - commonly a switch called something like auto-update - that runs SteamCMD before every boot. The name and default differ between eggs, so check the Startup tab on your own server rather than assuming.

Update on restart works well for vanilla servers for three reasons. SteamCMD only downloads changed chunks, so a restart with no update available adds a few seconds. The update happens at a moment the server is already down, so it costs no extra interruption. And a nightly restart, which many servers already have, becomes a nightly update check as a side effect.

Its weakness is that it is unconditional. It runs on a crash restart at three in the afternoon just as readily as on the scheduled one at five in the morning, so a patch released at noon is applied the next time the server happens to stop - which may be mid-raid. For most vanilla servers that is fine, because the alternative is a server nobody can join anyway.

#### When not to update automatically

Turn automatic updates off when any of these is true:

1. **The server runs mods or plugins that hook game code.** BepInEx on Valheim, Oxide or Carbon on Rust, UE4SS on Palworld, Harmony mods on 7 Days to Die and Rimworld, DayZ script mods, Unturned's RocketMod. These patch the game's own code at runtime, and a patch to the game moves the code they are patching. The mod either fails to load or, worse, loads and corrupts something.
2. **The server is on a pinned or beta branch on purpose.** An automatic update with the wrong branch argument switches you back to `public`.
3. **The world format changes with the update.** Major updates sometimes convert the save on first load. Once converted, it rarely loads in the old version. You want a backup taken by hand the minute before that happens.
4. **A competitive event is running.** A tournament weekend is not the time to discover a patch changed a cvar default.

For these servers, the procedure is the one in [the update day checklist](https://www.renode.space/blog/game-server-update-day-checklist): read the patch notes, wait for the mod authors, take a locked backup, update a test copy first, then the real server.

> [!WARNING]
> Rust is the clearest example. The monthly forced update on the first Thursday changes the server and breaks Oxide and Carbon until they release a matching build, usually within hours. An auto-updating modded Rust server comes up on the new game version with no plugins, or not at all. Update the game and the framework together, deliberately.

#### Validate: what it fixes and why not to run it every time

`validate` makes SteamCMD hash every file in the installation and replace anything that does not match the published manifest. It is the right tool after:

- an update that was interrupted - the disk filled, the container was killed, the connection dropped;
- a crash at startup with errors about missing or corrupt game files;
- a developer instruction to verify files after a botched patch.

It is the wrong tool on every restart, for two reasons. On a large install - Arma 3, DayZ and Rust each run to tens of gigabytes with their content - hashing everything reads the whole install from disk and can add minutes to every boot. And `validate` reverts any file the application shipped that you have edited: a launch script, a default config file in the install directory, a modified `.json` the game ships and you tuned. The edit is silently replaced with the original.

The pattern that works is plain update on every restart, and `validate` only when something is wrong:

```text
app_update 896660            # normal: changed files only
app_update 896660 validate   # repair: hash and replace everything
```

Where your edits live matters here. Most games write their own config files on first start, into a save or config folder outside the install - those are safe from `validate`. A few expect you to edit a file inside the install directory; keep a copy of those somewhere `validate` does not reach, or re-apply them after a repair.

#### Scheduling the update so it does not land mid-session

The better pattern for an active community is to make updates happen at a time you choose. On RE:NODE that means the Schedules tab: a cron expression and an ordered list of tasks with delays - console command, backup, power action. A nightly update-and-restart for a vanilla server with update on restart enabled looks like this:

Nightly update window, 05:00:

```text
Cron     0 5 * * *
Task 1   command  say Restarting for updates in 5 minutes      (delay 0)
Task 2   command  say Restarting in 1 minute                   (delay 240 s)
Task 3   command  save                                         (delay 60 s)
Task 4   backup                                                (delay 30 s)
Task 5   power    restart                                      (delay 60 s)
```

The restart triggers the update, the backup before it means a bad patch can be undone, and the warnings mean nobody is surprised. Substitute the right save and broadcast commands for your game; [scheduled tasks worth having](https://www.renode.space/blog/scheduled-tasks-worth-having) lists them, and [cron expressions explained](https://www.renode.space/blog/cron-expressions-explained) covers the cron syntax and time zones.

Two refinements are worth adding on a busy server:

- **Check before you restart.** If you run your own machine, compare the installed build with the latest one and skip the restart when they match. The installed build is in `steamapps/appmanifest_<appid>.acf` as `"buildid"`; the latest is printed by `+app_info_update 1 +app_info_print <appid>` under `branches` then `public`. The output format of `app_info_print` is not a stable interface, so treat a script that parses it as something to check after each SteamCMD update.
- **Do not fight the restart policy.** A schedule that restarts every night and a plugin that also restarts the server on a timer will overlap sooner or later. Pick one.

#### Knowing that an update worked

An update that failed silently looks exactly like one that succeeded: the server starts, on the old version, and players get a version mismatch. Three checks catch this.

1. **SteamCMD's success line.** A completed update prints `Success! App '<appid>' fully installed.`. Errors such as `Error! App '<appid>' state is 0x202 after update job.` (commonly disk space) or `0x6` / `0x602` (a stalled download) mean it did not. If you script updates, look for the success line rather than trusting the exit code, which has not always been reliable.
2. **The game's own version line.** Nearly every server prints its version early in the startup log. Valheim prints a `Valheim version:` line, Minecraft prints `Starting minecraft server version`, Source games print a build number in response to `version`. After an update, check it changed.
3. **One real join.** A client joining is the only check that proves client and server agree.

```bash
$ grep -E "Success! App|Error! App" steamcmd-update.log
Success! App '896660' fully installed.
```

When an update fails on a panel server, the first thing to look at is disk space. SteamCMD stages new files on the same volume before swapping them in, so it needs free space roughly equal to the changed content on top of the installed game. A disk at 95% is a disk whose next big patch fails - see [game server disk space full](https://www.renode.space/blog/game-server-disk-space-full) for what to clear.

#### Games that do not use SteamCMD

A fair number of popular servers have their own update path, and an update-on-restart switch for SteamCMD does nothing for them.

| Game | How the server is updated | Automate it? |
| --- | --- | --- |
| Minecraft (Paper) | Replace the server jar with a new build | Builds within one version: carefully. New versions: never |
| FiveM | Replace the server artifact | Pin a recommended build; update by hand |
| Factorio | Download a new headless build from factorio.com | Only if the group agrees on the version |
| Terraria | Replace the dedicated server files by hand | By hand, after tModLoader or TShock catch up |
| Minecraft Bedrock | Replace the Bedrock Dedicated Server build | By hand; clients update automatically on mobile and console |

For Minecraft, a Paper build update within the same Minecraft version is usually a bug fix and safe to apply on a schedule - though the occasional build changes behaviour plugins rely on. A move between Minecraft versions, 1.21.4 to 1.21.5 for example, converts the world on first load and can break half your plugins. That is always a manual, backed-up operation, covered in [Minecraft version upgrades](https://www.renode.space/blog/minecraft-version-upgrades). For FiveM, the safe update path is in [FiveM server updates and artifacts](https://www.renode.space/blog/fivem-server-updates-artifacts).

#### Workshop content updates too

Steam Workshop mods update on their own schedule, independently of the game, and a server that downloads Workshop items on start will pick up a new mod version at the next restart whether or not you wanted it. This is a quieter version of the same problem: a mod author pushes a change, the server restarts at night, and in the morning the server crashes on load, or clients cannot connect because their copy of the mod has not updated yet.

Different games handle this differently. Project Zomboid checks Workshop items when a player joins and kicks players whose versions differ; Garry's Mod, Arma 3 and DayZ fetch Workshop content through SteamCMD or the game's own loader. The general defence is the same as for the game: an evening update window, a backup before it, and a test server for anything with a long mod list. [Steam Workshop mods on dedicated servers](https://www.renode.space/blog/steam-workshop-mods-on-dedicated-servers) covers how each game fetches content and where it caches it.

#### A sane policy, by type of server

Putting it together:

| Server | Game updates | Mod updates | Validate |
| --- | --- | --- | --- |
| Vanilla, small group | Update on every restart | n/a | Only after a failure |
| Vanilla, active community | Nightly scheduled window with warning and backup | n/a | Only after a failure |
| Lightly modded (server-side only) | Scheduled window, read patch notes first | Monthly, by hand | Only after a failure |
| Heavily modded | By hand, after mods catch up, tested first | By hand, one at a time | After an interrupted update |
| Event or competitive | Frozen during events | Frozen | Never mid-event |

The heavy-mod row is where most of the work is, and where a second server pays for itself. [Running a test server beside production](https://www.renode.space/blog/running-a-test-server-beside-production) covers setting one up, and [game server version pinning and rollbacks](https://www.renode.space/blog/game-server-version-pinning-and-rollbacks) covers how to stay on an old build or go back to one when an update cannot be undone any other way.

#### FAQ

##### Should I turn on auto-update for my game server?

Yes for a vanilla server, because the clients update themselves and a stale server is unjoinable. No for a server with mods that patch game code, because the next game patch will break them and you want to choose when that happens.

##### Does update on restart slow down every restart?

Only slightly when nothing has changed - SteamCMD compares manifests and exits. It is `validate` that is slow, because it reads every file. Leave `validate` off for routine starts.

##### Why did my server update but players still see a version mismatch?

Either the update failed and the server started on the old build, or the server and clients are on different branches. Check the version line in the startup log, then check whether a beta branch is set on one side and not the other.

##### Can I delay an update until the mods are ready?

Only for games that let you. Steam games force clients onto the new build, so delaying the server means nobody can join. Some publishers keep the previous version available as a beta branch, which lets you run it for a little longer with players who switch their own client to the same branch.

##### What happens if the server restarts while an update is downloading?

The update is interrupted and the install is left partly updated. The next start usually resumes it, but if the server then fails with missing or corrupt files, run one update with `validate` to repair it.

On RE:NODE the Schedules tab chains a warning, a save, a backup and a restart into one timed task list, so updates happen in a window you choose, and backup slots on every game plan mean a bad patch is one button away from undone.

[See game server plans](https://www.renode.space/game-servers)

---

### Barotrauma dedicated server and mods

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/barotrauma-dedicated-server

A Barotrauma dedicated server is a free download (Steam app `1026340`, anonymous login) with Linux and Windows builds - `DedicatedServer` and `DedicatedServer.exe`. Its settings live in `serversettings.xml` in the server folder; permissions in `Data/clientpermissions.xml`; the enabled mods in `config_player.xml`. By default it listens on UDP `27015` for the game and UDP `27016` for the Steam query. It is light - 1-2 GB of memory and one or two cores carry a full sixteen-player crew - so what decides whether a Barotrauma server works is configuration: who gets which permissions, which mods everyone has, and how the campaign is saved.

#### How Barotrauma servers work

Barotrauma is a round-based game. A crew boards a submarine, completes a mission (or a campaign leg), and the round ends in the lobby. A dedicated server is a lobby that is always available, with no player carrying the host role, which changes three things compared with hosting from the game:

- **Nobody's PC is the server.** Hosting from the game runs a server process alongside the host's client, and the host's connection carries everyone.
- **The lobby has no owner by default.** On a dedicated server, someone has to be given the permissions to start rounds, change submarines and kick players - otherwise the server either does nothing or uses its auto-start settings.
- **Campaigns persist on the server.** A multiplayer campaign is saved by the server, so the crew can continue with whoever shows up.

The game modes are Sandbox, Mission (one-off rounds), Multiplayer Campaign (persistent progress, money, and a submarine you upgrade over time) and PvP. Traitors, the karma system and voting for submarines and modes are all server settings, and they shape the community more than any hardware choice.

##### Choosing the kind of server you run

Before touching a setting, decide what the server is for, because the right values for a crew of friends and for a public server are almost opposite.

A **private campaign crew** - four to eight people who know each other - wants a password, the campaign mode, traitors off, karma off or lenient, and one or two people with full permissions. Rounds start when the crew is ready. The submarine is chosen together and upgraded over weeks. The server can sit in the lobby with nobody on it for days without anything going wrong, and the campaign picks up where it left off.

A **public mission server** wants the opposite. Rounds should start on their own, because nobody can be relied on to press Start. Submarine and mode voting gives strangers a say without giving them power. Karma should be on, because welded doors, flooded reactors and friendly fire are the everyday griefing on public Barotrauma servers, and karma handles most of it before a moderator notices. Traitors are a matter of taste: they are part of what makes Barotrauma memorable, and they are also the setting that drives new players away fastest. Many public servers run traitors on a named schedule or on a separate server, so players know what they are walking into.

A **public campaign** is the hardest to run well. Progress belongs to whoever happens to be online, money can be spent by people who leave the next day, and one bad round can sink the submarine the regulars spent weeks upgrading. It works best with a whitelist-style community - a password shared on Discord - rather than an open listing.

Put the choice in the server name. "Campaign, no traitors, EU" tells a player in two seconds whether to join, and saves you a lobby full of people expecting something else.

#### Requirements and resource usage

Barotrauma's server is one of the lightest you will run. Physics, AI for creatures and NPCs, and networking are the cost; the world is one level per round, generated fresh.

| Crew | RAM | CPU | Notes |
| --- | --- | --- | --- |
| 2-6 players, vanilla | 1 GB | 1 core | Small private crew |
| 8-16 players, vanilla | 1.5-2 GB | 1-2 cores | Typical community server |
| 16 players, large mods | 2-4 GB | 2 cores | Content mods add memory |

- **CPU**: one fast core carries the simulation. Large submarines with many devices and wiring, and levels full of creatures, cost the most.
- **Disk**: the server installs to a few gigabytes; mods and submarines add to it.
- **Network**: modest, but latency affects how combat and repairs feel. [Latency, jitter and packet loss](https://www.renode.space/blog/latency-jitter-and-packet-loss) covers what to measure.

The sixteen-player figure is the usual maximum crew. Larger values exist in mods and some settings, but the game's submarines and missions are designed around crews up to that size.

#### Installing and first start

On Linux:

```bash
$ steamcmd +force_install_dir /home/barotrauma/server +login anonymous +app_update 1026340 validate +quit
$ cd /home/barotrauma/server
$ ./DedicatedServer
```

On Windows run `DedicatedServer.exe`. [SteamCMD explained](https://www.renode.space/blog/steamcmd-explained) covers keeping the install updated, which matters here: Barotrauma servers must match the client version exactly.

The first start writes `serversettings.xml` with defaults and opens the lobby. Stop it cleanly (the panel's stop, or the console's own exit command - `help` lists it), edit the settings, and start it again. The server writes its settings back when they change through the game, so edit with the server stopped.

#### serversettings.xml

The file is a single `serversettings` element with its settings as attributes. A trimmed example of the parts you will edit:

serversettings.xml:

```xml
<serversettings
  name="Europa Salvage Co."
  public="true"
  port="27015"
  queryport="27016"
  maxplayers="12"
  password=""
  enableupnp="false"
  autorestart="false"
  startwhenclientsready="false"
  allowspectating="true"
  karmaenabled="true" />
```

What the important ones do:

| Attribute | Default | What it does |
| --- | --- | --- |
| `name` | generic | Name in the server list |
| `public` | - | List the server publicly |
| `port` | `27015` | Game port, UDP |
| `queryport` | `27016` | Steam query port, UDP |
| `maxplayers` | - | Player slots |
| `password` | empty | Join password |
| `enableupnp` | - | Router port mapping; off on a hosted server |
| `autorestart` | `false` | Start rounds automatically on a timer |
| `startwhenclientsready` | `false` | Start when enough players are ready |
| `allowspectating` | - | Let late joiners spectate |
| `karmaenabled` | - | The karma system for griefing |

The file holds many more attributes - traitor settings, voting rules, submarine selection mode, allowed and banned items, respawn behaviour and more - and the set grows with updates. Most of them are easier to change in the game, through the server settings screen, by a player with the right permissions; the server then writes them to the file. Edit the file directly for the network settings and anything you want fixed before the first player joins.

> [!TIP]
> On a dedicated server with no regular host, turn on `autorestart` or `startwhenclientsready`. Otherwise a lobby full of players waits forever for someone with permission to press Start.

#### Ports and connecting

| Port | Protocol | Purpose |
| --- | --- | --- |
| `27015` | UDP | Game traffic (`port`) |
| `27016` | UDP | Steam query - server list (`queryport`) |

Both must be open and both are UDP. If your host gives you different numbers, set `port` and `queryport` to match. [Game server ports explained](https://www.renode.space/blog/game-server-ports-explained) covers why a server can be in the list but refuse connections, or the other way round.

Players find a public server in the in-game server list. A private server can be joined by address and port through the direct join option. If the list shows the server but joining times out, the game port is the problem; if direct join works but the server is not listed, the query port is.

#### Permissions, ranks and console commands

Barotrauma has a proper permission system, which is good, because a dedicated server with no permissions given out has nobody who can run it.

Permissions are granted per client and stored in `Data/clientpermissions.xml`. Rank presets - such as Moderator and Admin - bundle permissions and live in `Data/permissionpresets.xml`. Individual permissions include managing rounds, selecting submarines and modes, kicking, banning, managing settings and using console commands, and the console command permission can be restricted to a list of specific commands.

The simplest way to set up the first admin is from the server console:

```text
giverank PlayerName admin
```

After that, admins can manage others in the game from the player list: right-click a player, give a rank or individual permissions, and the server saves them.

Commands typed in the server console (or in game by a player with console permissions):

| Command | Effect |
| --- | --- |
| `help` | Lists commands, or details one |
| `giverank <client> <rank>` | Gives a rank preset to a client |
| `giveperm <client> <permission>` | Gives one permission |
| `revokeperm <client> <permission>` | Removes one permission |
| `showperm <client>` | Shows a client's permissions |
| `kick <client>` | Kicks a player |
| `ban <client>` | Bans a player |

The command set is large and changes between versions; `help` is the reference for your build. Bans are saved in the server's data so they survive restarts.

For a public server, think about permissions in layers: everyone can vote, trusted regulars can start rounds and pick submarines, moderators can kick, and very few people can ban or change settings. [Server rules, moderation and staff](https://www.renode.space/blog/server-rules-moderation-and-staff) has more on that structure, and the karma system handles the common griefing - welding doors shut, shooting crew - without an admin present.

#### Mods and content packages

Barotrauma mods are content packages: folders with a `filelist.xml` describing what they contain. On a dedicated server:

1. Download the mod - on a client, subscribe in the Steam Workshop and copy the downloaded folder, or take it from the author.
2. Put the folder in the server's `LocalMods` directory.
3. Enable it in `config_player.xml`, where the server keeps its list of enabled packages.
4. Start the server and watch the log for content errors.

The enabled list looks like this:

config_player.xml:

```xml
<contentpackages>
  <corepackage path="Content/ContentPackages/Vanilla.xml" />
  <regularpackages>
    <package path="LocalMods/ExampleMod/filelist.xml" />
  </regularpackages>
</contentpackages>
```

The folder name is a placeholder; use the mod's own folder. Order matters - packages later in the list override earlier ones when they change the same thing - so put large overhauls first and small patches after them.

When players join, the game compares their content with the server's and offers to download what is missing, from the Workshop or from the server directly. That makes Barotrauma one of the easier games for modded multiplayer, but it still means a download standing between a new player and their first round. Keep the list lean on public servers.

Rules that save a modded server:

- **Update mods together with the game.** A game update can break mods that change core content. Do not update a modded server the minute a patch lands.
- **Do not remove a mod mid-campaign.** A campaign save that references a modded submarine or items may fail to load without it.
- **Custom submarines** are mods too, or `.sub` files in a submarine folder; everyone needs the same file for that sub to be selectable.

[What to do when a mod update breaks](https://www.renode.space/blog/what-to-do-when-a-mod-update-breaks) has the general routine for a server that will not start after an update.

#### Campaign saves and backups

A multiplayer campaign is the thing worth protecting on a Barotrauma server. The server saves campaign progress - money, reputation, the submarine and its upgrades, the crew - to a save file in the game's multiplayer save folder under the user data directory, between rounds and when the campaign ends. A crashed round usually costs that round's progress, not the campaign.

- **Back up the campaign saves folder** on a schedule and before every update. Updates sometimes change save handling, and a campaign that will not load is a campaign lost.
- **Back up `serversettings.xml`, `config_player.xml` and the permissions files** too. With those and a mod list, a fresh install is your server again.
- **Keep copies off the machine.** [Backups that actually restore](https://www.renode.space/blog/backups-that-actually-restore) explains why copies next to the original do not count.

Several campaigns can exist side by side, and the lobby lets a permitted player choose which to load. Name them clearly; "Campaign 3" means nothing six weeks later.

On RE:NODE every game server has SFTP and a file editor for the XML files, backup slots stored off the machine and restored with a button, and a Schedules tab that can chain a backup and a restart. Barotrauma is not in the catalogue, so this describes the panel, not a Barotrauma plan.

#### Troubleshooting

**Players wait in the lobby and nothing happens.** Nobody has permission to start a round. Give someone a rank, or enable `autorestart` or `startwhenclientsready`.

**The server is not in the list.** `public` is false, or the query port is closed. Test a direct join to separate a listing problem from a network one.

**Players are refused with a version or content mismatch.** The game updated and the server did not, or a mod differs. Update with SteamCMD and check the enabled package list.

**The server fails at start after adding a mod.** The mod is broken or incompatible with this version. Remove its line from `config_player.xml` and start again.

**Settings changed in the file are lost.** You edited while the server ran and it saved its own copy. Stop, edit, start.

**Rounds lag on a large submarine.** Too many devices and wires, or a level full of creatures, on one core. A smaller sub or fewer heavy mods helps more than memory. [CPU vs RAM for game servers](https://www.renode.space/blog/cpu-vs-ram-for-game-servers) covers why.

#### FAQ

##### How many players can a Barotrauma server hold?

Sixteen is the normal maximum crew, and the submarines and missions are designed around crews up to that size. Most community servers run 8-16.

##### Do players need to download mods manually?

No. When a player joins, the game offers to download missing content from the Workshop or the server. They still need the download to finish before they can play.

##### How do I make myself admin on a dedicated server?

From the server console, give your player the admin rank with `giverank`. After that you can manage everyone else from the in-game player list.

##### Where does the server keep campaign progress?

In the multiplayer save folder under the game's user data directory on the server. Back up that folder, not just the server install.

##### Does the Barotrauma server need a Steam account?

No. It downloads anonymously through SteamCMD. Players need the game.

Barotrauma is not in the RE:NODE catalogue, so this guide is written for any host. Every game server on our panel gets an in-browser editor for files like `serversettings.xml`, SFTP with per-server credentials, a live console, and off-machine backup slots on every plan, on NVMe hardware in Germany.

[See the game servers](https://www.renode.space/game-servers)

---

### BattlEye and Easy Anti-Cheat on servers

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/battleye-and-easy-anti-cheat-on-servers

On a dedicated server running BattlEye or Easy Anti-Cheat, you control surprisingly little: whether the anti-cheat is switched on, a handful of settings around it, and - for BattlEye only - a local ban list, an RCon interface and a set of script filters on some games. The detection itself, the signatures, and every global ban belong to the anti-cheat vendor and the game's developer. You cannot unban someone they banned, you cannot see why a player was kicked beyond a short message, and you cannot add your own detections. Knowing exactly where that line falls is the difference between configuring the thing properly and spending an evening looking for settings that do not exist.

This post covers what each system does on the server, the switches per game, the files you own, how bans work at each level, and the cheating neither system will ever stop - which is where your own moderation comes in.

#### What a kernel anti-cheat does, and where the server fits

BattlEye and Easy Anti-Cheat (EAC, now part of Epic Online Services) are both client-side systems first. The heavy part runs on the player's PC, at kernel level on modern versions, and looks for known cheat software, memory tampering, injected modules and unsigned drivers. The server-side component is comparatively thin: it checks that every connecting client is running the anti-cheat, relays the client's reports to the vendor's backend, and kicks the client when the backend says so.

That design has three consequences worth stating plainly:

- **Detection happens elsewhere.** Your server is not scanning anything. It is enforcing a verdict reached on the player's machine and the vendor's servers.
- **A server can only require it, not improve it.** There is no "stricter mode" you can buy or configure. Every server running the same game build gets the same detections.
- **Turning it off is total.** A server with the anti-cheat disabled accepts clients that are not running it at all, which means anything goes.

Valve Anti-Cheat (VAC) is the third system you will meet, on Source games and CS2. VAC works differently - delayed bans issued by Valve, no kernel driver, no server-side interaction beyond the server being "secure" - but the ownership question has the same answer: Valve decides, you choose whether your server participates.

#### Which games use which system

This changes over time, and developers occasionally switch vendors, so treat the table as a starting point and check the game's current server documentation before you rely on it.

| Game | Anti-cheat | Server switch |
| --- | --- | --- |
| Arma 3 | BattlEye | `BattlEye = 1;` in `server.cfg` |
| DayZ | BattlEye | On by default for public servers |
| Arma Reforger | BattlEye | `battlEye` in the JSON config |
| ARK: Survival Evolved | BattlEye | `-NoBattlEye` launch option disables it |
| 7 Days to Die | EAC | `EACEnabled` in `serverconfig.xml` |
| Rust | EAC | `server.secure` (on by default) |
| CS2, TF2, GMod, L4D2 | VAC | `-insecure` launch option disables it |

A few of these deserve a sentence each. Arma 3 and DayZ have the deepest server-side BattlEye integration, with filters and RCon covered below. 7 Days to Die is the common case where people turn anti-cheat off on purpose, because mods that ship custom code (DLL mods) do not load with EAC enabled, while XML-only modlets do - [7 Days to Die server settings](https://www.renode.space/blog/seven-days-to-die-server-settings) covers the rest of that file. Rust community servers run EAC as a matter of course; a Rust server with `server.secure false` is a curiosity that most players will not join.

On Source games, VAC is on unless the server is started with `-insecure`, or `sv_lan 1` makes it a LAN server. An insecure server is not listed to VAC-secured players in the normal way, and VAC-banned accounts can join it, which is rarely what you want on a public server.

#### The switches you actually own

Here is the complete list of anti-cheat decisions that are yours on most games:

1. **On or off.** The single biggest choice. Leave it on for any public server. Turn it off only for a private group that needs mods the anti-cheat blocks, and accept that you are now relying on trust.
2. **Signature and file verification**, on games that have it. This is not the anti-cheat itself but works next to it, and on some games it matters more.
3. **Ping and timeout limits**, which BattlEye exposes on some games.
4. **Your local ban list and your RCon access**, for BattlEye games.
5. **Script filters**, on Arma-family games.

On Arma 3, the relevant part of `server.cfg` looks like this:

server.cfg:

```cfg
BattlEye = 1;              // require BattlEye
verifySignatures = 2;      // reject clients with unsigned or mismatched addons
kickDuplicate = 1;         // kick a second connection from the same ID
allowedFilePatching = 0;   // clients may not load loose files over packed data
```

`verifySignatures = 2` is the setting that does the most work against casual cheating on Arma 3. It requires every addon a client loads to be signed with a key the server has in its `keys` folder, which stops a player from loading a modified PBO that the server never approved. BattlEye catches the cheat software; signature checking catches the cheat content. [Arma 3 server.cfg and missions](https://www.renode.space/blog/arma-3-server-cfg-and-missions) goes through the rest of that file.

> [!WARNING]
> Putting a mod's `.bikey` in the server's `keys` folder is an act of trust. It tells the server that anything signed with that key is acceptable. Only add keys for mods you actually run, and remove them when the mod goes.

#### BattlEye on the server: files, RCon and filters

BattlEye's server side lives in a `BattlEye` folder, normally inside the server's profile directory. The file you edit is `BEServer_x64.cfg` (or `BEServer.cfg` on older 32-bit builds). It is short:

BattlEye/BEServer_x64.cfg:

```cfg
RConPassword a-long-generated-password
RConPort 2306
MaxPing 250
```

`RConPassword` and `RConPort` enable BattlEye's own remote console, a UDP protocol separate from the game's. `MaxPing` kicks players above that ping, which is cruder than it sounds - a player with a spike gets kicked mid-fight - so set it generously or leave it out. Some builds rewrite this file at start with an `_active_` suffix in the name; edit the base file, not the generated one.

BattlEye RCon is how almost every third-party admin tool talks to Arma and DayZ servers. The commands are few and worth knowing directly:

| Command | Effect |
| --- | --- |
| `players` | Lists players with number, IP, ping and BattlEye GUID |
| `kick <number> [reason]` | Kicks by player number |
| `ban <number> [minutes] [reason]` | Bans a connected player, `0` or omitted is permanent |
| `addBan <GUID or IP> [minutes] [reason]` | Bans someone who is not connected |
| `removeBan <ban number>` | Removes a ban by its position in `bans` |
| `bans` | Shows the ban list with numbers |
| `writeBans` / `loadBans` | Saves the list to disk / reloads it |
| `say -1 <message>` | Message to everyone |
| `loadScripts` / `loadEvents` | Reloads filter files after editing |

The same rules apply to BattlEye RCon as to any remote console: a long random password, the port exposed only if a tool really needs it, and access granted to as few people as possible. [RCON safely](https://www.renode.space/blog/rcon-safely) covers the reasoning; [DayZ admin tools and BattlEye RCon](https://www.renode.space/blog/dayz-admin-tools-and-rcon-battleye) covers the DayZ-specific tooling.

The BattlEye GUID in the `players` output is not a secret identifier. It is derived from the player's SteamID64 - an MD5 hash of the bytes `BE` followed by the 64-bit ID - so a ban tool can compute it from a SteamID, and a ban by GUID is effectively a ban by Steam account.

##### Script filters on Arma

On Arma 3, BattlEye can also filter scripting traffic: files such as `remoteexec.txt`, `createvehicle.txt`, `publicvariable.txt` and `setvariable.txt` in the BattlEye folder hold rules that log or kick when a client sends something matching a pattern. Well-made filters stop a large class of script-injection attacks that the kernel component would never see, because the "cheat" is just a legitimate game command sent by a client that should not be sending it.

Filters are also the easiest way to break a mission. A filter strict enough to stop injected code will kick legitimate players the moment the mission or a mod does something the filter author did not anticipate. The workable approach is to start from filters published for your mission or mod set, run them in log-only mode while you play a few sessions, read what they would have kicked, and only then switch the kicks on. `loadScripts` and `loadEvents` reload them without a restart.

#### How bans work at each level

There are three kinds of ban on an anti-cheat game, and mixing them up causes most of the confused tickets server owners send to the wrong place.

```diagram
title: Who can lift which ban
vendor = Vendor global ban | BattlEye or EAC
dev = Developer ban | game-wide
local = Your server ban | bans.txt or game list
player = Player
vendor -> player : every server
dev -> player : every server
local -> player : your server only
```

Only the bottom box is yours.

- **Global anti-cheat bans** are issued by BattlEye or by the developer through EAC, apply to every server running that game, and cannot be lifted by you. The player sees a message saying they are globally banned. If they believe it is a mistake, the appeal goes to the vendor or developer, not to you, and you should say so without engaging further.
- **Game bans** on Valve games (VAC and game bans) are issued by Valve. Same rule: not yours to lift, and a VAC-secured server will refuse the account.
- **Your local bans** are yours entirely. On BattlEye games they live in `bans.txt` in the BattlEye folder, one line per ban with the GUID or IP, the expiry (or `-1` for permanent) and the reason. On EAC and VAC games they live in the game's own ban list, which differs per title.

A local ban is only as good as the identifier behind it. GUID and Steam bans follow the account, which a determined cheater replaces with a new one. IP bans follow an address that may be shared by a whole household or university, and change at the next router restart. [Handling cheaters and ban lists](https://www.renode.space/blog/handling-cheaters-and-ban-lists) covers which identifier to ban and how to deal with the second account.

#### What anti-cheat will never catch

This is the part that matters most for your expectations. A kernel anti-cheat is good at catching known cheat software on a client. It is structurally unable to catch:

- **Closet cheating with good cheats.** Private, well-funded cheats evade detection for months. A player with a subtle aimbot and a natural-looking play style can stay undetected for a long time.
- **Hardware and external cheats.** Devices that read the screen with a second computer, or modified input hardware, never touch the game process.
- **Information from outside the game.** Somebody watching your server's stream, a teammate on voice in the other team, or a friend calling out positions.
- **Exploits of the game itself.** Glitching under the map, duplication bugs, abusing a mod's broken logic. These are allowed by the game, so the anti-cheat sees a normal client doing normal things.
- **Server-side abuse.** An admin with RCon spawning items for friends. Anti-cheat has no opinion about your staff.
- **Griefing and toxicity.** Not cheating in the anti-cheat sense at all.

That list is why anti-cheat is a baseline rather than a solution. On top of it you still need logs that let you review what happened, admins who spectate, a clear rule set and a ban process that holds up - [server rules, moderation and staff](https://www.renode.space/blog/server-rules-moderation-and-staff) is the policy side of that, and [game server exploits and crash bugs](https://www.renode.space/blog/game-server-exploits-and-crash-bugs) is the side about bugs rather than cheaters.

#### Mods, anti-cheat and the private-server compromise

The most common reason a server owner touches the anti-cheat switch is mods. The rules are game-specific but the pattern repeats:

- **Data-only mods usually work with anti-cheat on.** Configuration changes, XML modlets on 7 Days to Die, Workshop content on Arma and DayZ that is signed and verified.
- **Mods that inject code into the client usually do not.** 7 Days to Die DLL mods, client-side frameworks that hook the game process, anything that looks to the anti-cheat exactly like a cheat because, mechanically, it is the same technique.
- **Server-side mods are invisible to the anti-cheat.** Oxide or Carbon plugins on Rust, server-side DayZ scripts, admin tools - none of these touch clients, so the anti-cheat neither knows nor cares.

If your group needs a client-side code mod that the anti-cheat blocks, the honest options are: run that server with anti-cheat off and a password or allow list, so only people you know can join; or skip the mod. What you should not do is run a public, listed server with anti-cheat disabled because one mod needed it. The server becomes a destination for exactly the players who were banned everywhere else.

Server-side admin and logging mods, by contrast, are worth having on any anti-cheat game. They give you the evidence anti-cheat never will: who killed whom from where, who picked up what, who said what. On DayZ that is typically an admin tool reading the server's admin log; on Rust it is plugins built for logging and reporting.

#### Running it on a hosted server

Nothing about BattlEye or EAC needs special hosting. The server-side components ship with the dedicated server files and update with them. What does matter:

- **Ports.** BattlEye RCon needs its own UDP port if you use external tools. On RE:NODE every plan states its port allocations, and you can add one on the Network tab and point `RConPort` at it. If you never use external RCon tools, leave it unset and use the panel console instead.
- **Updates.** Anti-cheat versions are tied to game versions. A server that updates late gets clients refused, or the reverse; on Arma and DayZ, update the server when the game updates and the problem goes away. [Restart schedules that help](https://www.renode.space/blog/restart-schedules-that-help) covers doing that at a quiet hour.
- **Credentials.** Arma 3, DayZ and 7 Days to Die on RE:NODE need a Steam login to install, which is stored as typed, so use a spare Steam account rather than the one you play on. The server is created at once and the install waits on the Setup tab until you enter it.
- **Logs.** BattlEye writes its own logs in the BattlEye folder, which are the first place to look when players report being kicked with a BattlEye message.

#### Troubleshooting kicks and anti-cheat errors

**"BattlEye: Client not responding".** The client's BattlEye service stopped talking to the server. Usually the player's side: a firewall, a crashed BE service, or a very poor connection. If every player gets it at once, the server's BattlEye files do not match the game version - update the server.

**"BattlEye: Global Ban".** The vendor banned the account. Nothing to do on your side.

**Players kicked for a script restriction on Arma.** A filter matched. The kick message includes the filter file and line number; read that line in the file, decide whether it was a cheat or your mission, and adjust or exclude.

**Signature check failed on Arma.** The client has an addon the server has no key for, or a different version of a mod. Make sure the server and the client load exactly the same mod versions, and that the matching `.bikey` is in `keys`.

**EAC kicks every player on 7 Days to Die after installing a mod.** The mod contains custom code. Either remove it or set `EACEnabled` to `false` - and if you do the latter, put a password on the server.

**Nobody can join after a game update.** The client anti-cheat updated with the game and the server did not. Update the server; on a modded server, update the mods as well.

#### FAQ

##### Can I ban someone through BattlEye so they cannot join any server?

No. Your bans apply to your server only. Global bans come from BattlEye or the developer, based on their own detection. Reporting a cheater to the vendor with evidence is possible on some games, but you have no direct way to trigger a global ban.

##### Can I unban a player who was globally banned by mistake?

No, and you should not try to work around it by disabling anti-cheat. The player appeals to the vendor or to the game's developer. You can tell them where to go, and that is the end of your involvement.

##### Does running anti-cheat cost server performance?

Very little. The server-side components do almost no work compared to the game simulation. BattlEye script filters on Arma add some cost on a busy server with complex filters, but rarely enough to notice.

##### Is a server with anti-cheat off automatically full of cheaters?

Not if nobody can join it. A private server behind a password or allow list, for a group that knows each other, is a perfectly reasonable way to run mods the anti-cheat blocks. The problem is a public server with anti-cheat off.

##### Do server-side plugins conflict with BattlEye or EAC?

Generally not. Server-side code never touches the client, which is the only place the anti-cheat looks. Conflicts come from client-side mods that hook the game process.

Game servers on RE:NODE ship with the developer's anti-cheat components in the server files, ports you can add on the Network tab for RCon tools, and a panel console that covers most admin work without exposing RCon at all. Backup slots on every plan mean a filter or mod experiment can be rolled back with one button.

[See game server plans](https://www.renode.space/game-servers)

---

### Cheapest way to host a server for friends

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/cheapest-way-to-host-a-server-for-friends

The cheapest way to host a server for friends is usually not a server at all: if you always play together and one of you has a decent PC, host from inside the game for free. Once the world needs to exist when the host is offline, the honest options are a free hosting service (free, with queues, shutdowns and limits), a spare computer at home (free to set up, then electricity, port forwarding and your home IP address), an official subscription such as Minecraft Realms (simple, locked down), or the smallest rented plan for the game, which costs from a few dollars a month and is usually the cheapest option that is always on, has backups, and nobody has to babysit. Split between four or five friends, a small rented plan typically costs each person less than a coffee a month.

The longer comparison of home hosting against renting, with the networking detail, is in [hosting a game server at home vs renting](https://www.renode.space/blog/self-hosting-a-game-server-at-home-vs-renting). This post is the money view, for a small group.

#### The options at a glance

| Option | Monthly cost | Always on | Effort | The catch |
| --- | --- | --- | --- | --- |
| Host from inside the game | Free | Only while the host plays | None | Host's PC carries everyone |
| Free hosting service | Free | Starts on demand, sleeps when empty | Low | Queues, limits, adverts, few games |
| Free cloud tier | Free, in theory | Yes | High | ARM CPUs, sign-up hurdles, can be reclaimed |
| Spare PC at home | Electricity | If you leave it on | Medium to high | Port forwarding, CGNAT, your home IP |
| Official subscription (Realms) | About $4-8 | Yes | None | One game, few or no mods |
| Smallest rented plan | From $3-6 | Yes | Low | Costs money every month |
| Rented VDS for several games | From about $17 | Yes | High | You are the system administrator |

Each row is a real choice that suits some groups. The rest of this post goes through when each one is the right answer and what it actually costs.

#### Free: hosting from inside the game

Most co-op games let one player host and the others join, with no server involved. It costs nothing, and for a group that always plays together it is often all you need.

- **Valheim** - start a world with "Start server" ticked and friends join through Steam or a join code.
- **Terraria** - Host and Play, then friends join through Steam or by IP.
- **Palworld** - co-op sessions with an invite code, for a small group.
- **Project Zomboid, Factorio, Satisfactory, Sons of the Forest, Don't Starve Together** - all have an in-game host option.
- **Minecraft Bedrock** - friends join a world through their Xbox friend list.
- **Minecraft Java** - "Open to LAN" only works on the same network; joining over the internet needs a mod or tool that tunnels the connection, or port forwarding.

The limits are the same everywhere. The world exists only while the host is playing. The host's computer simulates the world for everyone, so their frame rate and their upload speed become everybody's problem. And the save lives on one person's disk, which is fine until that disk fails.

When those limits start to bite - friends want to play while the host is away, or the host's PC struggles - a separate server is worth paying for. Moving the world across is usually straightforward; [uploading a Valheim save to a dedicated server](https://www.renode.space/blog/valheim-upload-local-world-to-server) shows the pattern.

#### Free hosting services

Some services offer free servers, mostly for Minecraft, funded by adverts. They are a reasonable way to try a server for a weekend, and their limits are built into the business model:

- **The server starts on demand and stops when empty.** Someone has to visit a website and press start, sometimes wait in a queue, and the world is offline the rest of the time.
- **Resources are shared and limited.** Fine for a few players in vanilla; tight for mods or a large world.
- **Limited choice.** Usually one game, sometimes a curated list of plugins or modpacks.
- **Your world is on their terms.** Read what happens to inactive servers and whether you can download your world. Back it up yourself.

If you only play on a couple of evenings a week and a short wait to start is acceptable, a free host can be enough for a long time.

##### Free cloud tiers

Some cloud providers have free tiers, and one well-known example offers a surprisingly large always-free ARM virtual machine. It works for some people and costs others a weekend. The catches: ARM processors cannot run many game servers, which are built for x86 (Java-based Minecraft is the main exception), sign-up can require a card and may be refused, free capacity is not always available in your region, idle free machines can be reclaimed, and you administer a bare Linux machine yourself - firewall, updates, backups, everything. [Your first hour on a new VDS](https://www.renode.space/blog/first-hour-on-a-new-vds) shows what that involves. Read the provider's current terms rather than a two-year-old forum post.

#### A spare computer at home

An old desktop or laptop makes a perfectly good server for a few friends, and many people start this way. The costs are not zero, they are just less visible.

**Electricity.** A desktop that idles at 60-80 W running all month uses roughly 45-60 kWh. At a household price of 0.30 per kWh that is around 13-18 a month in your currency - more than the smallest rented plans for light games. A low-power mini PC or laptop drawing 15 W costs a fraction of that, and switching the machine off when nobody plays costs less still.

Electricity, worked out:

```text
watts x 24 hours x 30 days / 1000 = kWh per month
80 W  -> 57.6 kWh -> at 0.30 per kWh = 17.28 a month
15 W  -> 10.8 kWh -> at 0.30 per kWh =  3.24 a month
```

**Networking.** Friends outside your house need to reach it, which means port forwarding on your router. If your provider uses carrier-grade NAT, which many mobile and some fibre and cable providers do, port forwarding cannot work at all because you do not have a public address of your own. [NAT and CGNAT for game hosts](https://www.renode.space/blog/nat-and-cgnat-for-game-hosts) explains how to tell. Tunnelling services get around it at the cost of extra latency and another service in the path; [tunnels and proxies for game servers](https://www.renode.space/blog/tunnels-and-proxies-for-game-servers) covers when that is acceptable.

**Upload speed.** Home connections often have far less upload than download. A few players in Valheim or Terraria is fine on most connections; a busy modded Minecraft server or a dozen players in a heavier game can saturate a slow uplink and make your own video calls stutter.

**Your home IP address.** Everyone who joins knows it. For close friends that does not matter. For a server that grows beyond them, it means any falling-out can become an attack on your home connection. [IP leaks and doxxing for server owners](https://www.renode.space/blog/ip-leaks-and-doxxing-for-server-owners) covers the risk.

**Your time.** Updates, restarts, backups, the machine that did not come back after a power cut. For some people that is the fun part. Be honest about whether it is for you.

#### Official subscriptions: Minecraft Realms

Minecraft Realms is Mojang's own hosted server for small groups: no setup, always on, paid monthly through your Minecraft account, and accessible from the game's menu. Java Realms supports about ten players online at a time; Bedrock has plans for different group sizes. Prices vary by edition and country, roughly $4-8 a month in the US.

It is a good answer for a group that wants vanilla Minecraft with zero administration. It is the wrong answer if you want plugins, mods beyond what Realms allows, control over server settings, or direct backups of the world files. Java Realms does not run plugins or Forge and Fabric mods, and Bedrock Realms supports a limited set of add-ons and Marketplace content.

#### Renting the smallest plan that works

For a group that wants an always-on world with backups and no one babysitting a machine, a small rented game server is usually the cheapest reliable option. On RE:NODE the starting monthly prices at the time of writing include:

| Game | Smallest plan | From |
| --- | --- | --- |
| Terraria | 0.5 GB | $3 |
| Counter-Strike 1.6 | 0.5 GB | $3 |
| Minecraft | 2 GB | $5 |
| Factorio, Don't Starve Together, RimWorld | 1 GB | $5 |
| Valheim | 2 GB | $6 |
| Project Zomboid | 3 GB | $9 |

Check the plan page for current prices before you plan around them. Terms of 3, 6 and 12 months are cheaper per month than monthly billing, so once the group has played for a month and is still keen, a longer term lowers the cost further.

Three ways to keep the bill small:

1. **Pick the smallest plan that runs the game well and move up when the graphs say so.** Most small groups overestimate how much memory they need. Moving up a tier on RE:NODE changes the limits of the server you already have, without rebuilding it, so starting small costs nothing later. [When to upgrade your plan](https://www.renode.space/blog/when-to-upgrade-your-plan) has the signals.
2. **Split it.** A $9 server shared by five friends is under $2 each. Agree who pays and how before the first invoice, not after.
3. **Choose a lighter game, or fewer mods.** Memory drives price. Vanilla Valheim fits comfortably where a heavily modded Minecraft pack would not. [How much does a game server cost](https://www.renode.space/blog/how-much-does-a-game-server-cost) explains why some games cost four times others.

What you get for the money matters as much as the number: the world is on even when the host is not, backups are taken somewhere other than the server and restored with a button, you are not opening ports on your home router, and nobody's home address is the server address.

#### A VDS for several games

If the group plays several games and wants all of them available, a virtual dedicated server can run several game servers at once. It costs more than any single game plan - on RE:NODE the VDS line starts at $17 a month for 8 GB - and it turns you into the administrator of a Linux machine. For a technically confident group playing three or four light games, it can be cheaper than separate plans. For everyone else, it is more work than it saves. [Multiple game servers on one VDS](https://www.renode.space/blog/multiple-game-servers-on-one-vds) and [choosing between a VDS and a game panel](https://www.renode.space/blog/choosing-between-vds-and-a-game-panel) go through the trade.

#### The costs nobody counts

Comparing monthly prices misses the costs that decide whether a server survives:

- **Your evenings.** Hours spent fixing a home server or fighting a free host's queue are hours not playing.
- **Lost worlds.** The cheapest options are usually the ones with the weakest backups. A world lost after three months of play costs the group far more than a year of hosting. Whatever you choose, keep a copy of the world somewhere else - [backups that actually restore](https://www.renode.space/blog/backups-that-actually-restore) explains why the restore half matters.
- **Downtime at the wrong time.** A server that is off when the group finally has a free evening is not cheap, it is unused.
- **Growth.** A setup that works for three friends may not work for eight. Leave yourself a way to move up without starting over.

#### How to decide

1. Do you always play together, and does one person have a capable PC? Host from inside the game. Spend nothing.
2. Do you play a couple of evenings a week, can tolerate a short wait to start, and play vanilla Minecraft? Try a free host or Realms.
3. Do you enjoy tinkering, have a spare low-power machine, a public IP and good upload? Host at home, and keep backups off the machine.
4. Do you want it always on, with backups, for a group that plays at different times? Rent the smallest plan for the game and split the cost.
5. Do you run several games and like administering Linux? Consider a VDS.

#### FAQ

##### Is there a completely free way to host a game server for friends?

Yes: host from inside the game while you play, use a free hosting service that starts the server on demand, or run it on a computer you already own. Each is free in money and costs something else - availability, limits, electricity or your time.

##### How much does it cost to run a game server on my own PC?

Mainly electricity. A desktop idling at 80 W around the clock uses about 58 kWh a month, which at 0.30 per kWh is around 17 a month in your currency. A low-power machine, or switching it off when nobody plays, costs much less.

##### Is Minecraft Realms cheaper than renting a server?

It can be similar in price for a small group and is far simpler, but it is limited: vanilla only on Java, no plugins, and less control over settings and backups. A rented server costs about the same and lets you run Paper, plugins and your own configuration.

##### What is the cheapest game to host a server for?

Light games such as Terraria and Counter-Strike 1.6 run in half a gigabyte of memory and start at $3 a month on RE:NODE. Minecraft, Factorio and Don't Starve Together start around $5, and Valheim at $6.

##### Can friends join my home server if I have CGNAT?

Not through port forwarding, because you do not have a public address of your own. Options are asking your provider for a public IP, using a tunnelling service at some cost in latency, or hosting the server somewhere that has a public address.

##### How should friends split the cost of a server?

Agree before the first payment: one person pays and the others send their share monthly, or each takes a turn paying for a term. Longer terms are cheaper per month, so once the group is committed, a 3 or 6 month term split between everyone is usually the cheapest arrangement.

RE:NODE game servers start at $3 a month, are created as soon as payment clears, include backup slots stored off the machine they protect, and move up a tier without rebuilding the server. Terms of 3, 6 and 12 months are cheaper per month than monthly billing.

[See game server plans](https://www.renode.space/game-servers)

---

### Choosing a game for your group's server

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/choosing-a-game-for-your-server

The right game for a server is decided by the group, not the game: how many people will play at once, whether they play together on fixed evenings or drop in alone, how much administration someone is willing to do, and what the monthly budget is. For two to ten friends who play together, co-op survival games - Valheim, Terraria, Don't Starve Together, Factorio, Satisfactory, Palworld - give the most for the least effort. For a persistent community of dozens, Minecraft remains the most flexible choice by a distance, with Project Zomboid and Garry's Mod as strong alternatives. For people who want matches rather than a world, Counter-Strike 2 and Team Fortress 2 servers are cheap and need no saves at all. Roleplay on FiveM is the most demanding of everything, in money and time. Match the game's natural group size and play pattern to your group first, then check the cost and the work.

The hardware side - memory, CPU and disk for every game - is in [game server requirements by game](https://www.renode.space/blog/game-server-requirements-by-game). This post is about fit.

#### Start with the group, not the game

Before comparing games, answer five questions about the people who will play.

1. **How many at the same time?** Not how many in the Discord - how many online together on a normal evening. Many games are built for a specific number and are worse above it.
2. **Together or apart?** Some groups always play as a group on set evenings. Others drop in at different times and want the world to have moved on. Persistent-world games suit the second; match-based games need enough people online at once.
3. **What platforms?** If anyone plays on Xbox or PlayStation, the list shrinks a lot. [Cross-play on dedicated servers](https://www.renode.space/blog/cross-play-dedicated-servers-explained) has the details.
4. **Who will run it?** Someone has to update the server, handle mods, restore backups and deal with the occasional argument. Some games need an hour a month of that; some need an hour a day.
5. **What will it cost each month?** Server costs vary by a factor of five or more between games, mainly because of memory. Divide the monthly price by the number of regular players and ask whether that is a reasonable share.

The answers will usually point at a category straight away. The sections below go through each.

#### Small groups of friends, two to ten players

Co-op survival and building games are made for this. They have a world that persists, progress shared between friends, and player caps set around small groups.

| Game | Built-in player cap | Play style | Admin effort | From |
| --- | --- | --- | --- | --- |
| Valheim | 10 | Exploration, building, bosses | Low | $6 |
| Terraria | 8 by default, configurable | Boss progression, building | Low | $3 |
| Don't Starve Together | 6 by default, configurable | Hard survival, cooperation | Low | $5 |
| Factorio | No fixed cap | Automation, long projects | Low | $5 |
| Satisfactory | 4 by default, configurable | 3D factory building | Low to medium | $21 |
| Palworld | Up to 32 | Creature collection, bases | Medium | $19 |
| Sons of the Forest | 8 | Horror survival | Low | $20 |
| Project Zomboid | 32 by default | Slow, punishing survival | Medium | $9 |
| 7 Days to Die | 8 by default | Survival with a nightly horde cycle | Medium | $20 |

Prices are the starting monthly price of a RE:NODE plan for that game at the time of writing; check the plan page before relying on them.

A few observations from running these:

- **Valheim and Terraria** are the safest first servers. Light on resources, cheap, easy to understand, and the worlds last for months. Both have deep mod scenes for when the group wants more. [The Valheim guide](https://www.renode.space/blog/valheim-dedicated-server-guide) covers the server end to end.
- **Factorio** is ideal for groups who play at different times: one person's work in the afternoon is the next person's starting point in the evening. It is also one of the most efficient servers to run for its depth.
- **Satisfactory and Palworld** need much more memory than their player counts suggest, which is why they cost several times more. Both are excellent; both are expensive for what a small group gets.
- **Project Zomboid** suits groups who enjoy slow, careful survival and do not mind dying. It scales further than most co-op games and has a big mod scene.
- **Don't Starve Together** is the most demanding to play and the cheapest to run.

If the group is two or three people who always play together, a server is a convenience rather than a necessity. [The cheapest way to host a server for friends](https://www.renode.space/blog/cheapest-way-to-host-a-server-for-friends) goes through when hosting from inside the game is enough.

#### Persistent communities, ten to a hundred players

When the group is a community rather than a friend circle - people who do not all know each other, joining and leaving over months - the game has to scale, support permissions and moderation tools, and have a mod or plugin ecosystem that lets you shape it.

**Minecraft** is the default for a reason. No other game combines its range: vanilla survival, building, minigames, skyblock, roleplay, modded tech progression, all on the same basic server with plugins or mods. Paper and its plugins give you permissions, protection, economies and logging. It runs on modest plans for small communities and scales to proxy networks for large ones. The cost of that flexibility is choice: you have to decide what kind of Minecraft server it is. [Paper, Fabric or vanilla](https://www.renode.space/blog/paper-fabric-or-vanilla) and [the Minecraft setup guide](https://www.renode.space/blog/minecraft-server-setup-guide) are the starting points.

**Garry's Mod** suits communities built around game modes rather than a world: TTT, DarkRP, Prop Hunt, sandbox building. It is cheap to run and lives on the Steam Workshop. [The Garry's Mod setup guide](https://www.renode.space/blog/gmod-server-setup) covers the server.

**Project Zomboid** works for survival communities of twenty to fifty with a whitelist and a strong moderation culture. Servers often run for months with seasonal resets.

**Unturned** is a lighter, free-to-play survival option with RocketMod plugins, which helps when part of the community will not buy a game.

**Palworld** can host a community up to its slot cap, with the memory bill that comes with it.

For any of these, the community side - rules, staff, Discord, listing - matters as much as the game. [Growing a game server community](https://www.renode.space/blog/growing-a-game-server-community) covers it.

#### Competitive and match-based play

Some groups do not want a world at all. They want ten-minute rounds, scrims, practice and a scoreboard. Match-based servers are the cheapest to run, need no saves or backups worth speaking of, and are only alive when enough people are online at once.

| Game | Good for | Notes |
| --- | --- | --- |
| Counter-Strike 2 | 5v5 practice, scrims, community modes | Needs a Steam game server login token |
| Team Fortress 2 | Casual community servers, MvM | Strong plugin ecosystem via SourceMod |
| Counter-Strike 1.6 | Nostalgia communities, classic modes | Tiny resource needs |
| Insurgency: Sandstorm | Tactical co-op and PvP | Mods via mod.io |
| Killing Floor 2 | Co-op wave defence | Workshop maps and mutators |
| SCP: Secret Laboratory | Social, chaotic rounds | Plugin frameworks for custom rules |

The catch is population. A competitive server needs ten people at once for a 5v5, and a public community server needs enough regulars that a newcomer finds a game in progress. Small groups are often better served by a private practice server used on scheduled evenings than by trying to keep a public server populated. [CS2 competitive match server config](https://www.renode.space/blog/cs2-competitive-match-server-config) covers the scrim setup.

#### Roleplay, simulation and social servers

**FiveM** roleplay is the most popular and the most demanding category. It needs a Cfx.re licence key, a framework, a database, scripts that cost money and time, and a staff team. It suits an organised group that wants to build a community as a project, not friends who want a quick evening. [Starting a roleplay server](https://www.renode.space/blog/starting-a-roleplay-server-community) is a realistic look at the work.

**Garry's Mod DarkRP** is roleplay at a fraction of the effort and cost, with a lower ceiling.

**Arma 3 and DayZ** suit milsim and hardcore survival groups who are happy to manage missions, mods and Steam Workshop downloads. Both need a Steam login for the server install.

**Driving and simulation** - Euro Truck Simulator 2 convoys, Assetto Corsa races, BeamMP sessions - suit groups that meet for organised drives and races. Servers are light; the work is in curating content, such as track and car lists, so everyone has the same files.

**Skyrim Together and RimWorld multiplayer** are niche but well loved by small groups who already play those games heavily, with mod parity as the main headache.

#### How much running each one takes

Effort varies far more than cost. A rough guide to the weekly administration time a game needs once it is set up:

| Effort | Games | What takes the time |
| --- | --- | --- |
| Minimal | Valheim, Terraria, Factorio, DST, CS 1.6 | Updates and an occasional backup check |
| Moderate | Minecraft (plugins), Palworld, Project Zomboid, 7 Days to Die, TF2 | Plugin or mod updates, tuning, moderation |
| Heavy | Modded Minecraft, Garry's Mod DarkRP, Arma 3, DayZ with mods | Mod compatibility, missions, economy files |
| Very heavy | FiveM roleplay | Scripts, database, staff, players' disputes |

Most of the heavy categories are heavy because of mods. A vanilla server in almost any game is a small job; it is the fortieth mod that turns it into a hobby of its own. Plan the mod list with the person who will maintain it.

#### What can rule a game out

A few practical constraints decide things before taste does.

- **Credentials the server needs.** CS2 and Unturned need a Steam game server token; FiveM needs a Cfx.re key; Don't Starve Together needs a Klei token; BeamMP needs an auth key; Arma 3, DayZ, Project Zomboid and 7 Days to Die need a Steam login to install. On RE:NODE these servers are created immediately and the install waits on the Setup tab for the credential. Use a spare Steam account for the ones that need a login.
- **Platforms.** A group with console players is limited to games with cross-play on dedicated servers.
- **Location and latency.** Shooters and racing games are sensitive to distance; building games are forgiving. A server in Germany suits players across Europe. [Choosing where your server lives](https://www.renode.space/blog/choosing-where-your-server-lives) covers the rest of the world.
- **Memory-hungry games on a small budget.** Palworld, Satisfactory, 7 Days to Die and The Isle start at higher tiers because their servers need several gigabytes even when empty.
- **Mod requirements on every client.** Fine for PC friends, a problem for public servers where newcomers will not install a pack to try you out.

#### Costs, compared honestly

Starting prices on RE:NODE at the time of writing range from $3 a month for Terraria and Counter-Strike 1.6 to around $20 for Palworld, Satisfactory, 7 Days to Die and Sons of the Forest. The difference is almost all memory: a Terraria world fits in half a gigabyte, while Satisfactory's smallest sensible server needs eight. [How much does a game server cost](https://www.renode.space/blog/how-much-does-a-game-server-cost) explains what drives the price and how longer terms change it.

Per player, the picture flattens. A $20 server shared by eight friends is $2.50 each; a $5 server for one person who invited nobody is $5. Choose the game the group will actually play, then pick the smallest plan that runs it well and grow when the graphs say so. Moving up a tier on RE:NODE changes the limits of the server you already have rather than rebuilding it, so starting small costs nothing later.

#### Try before committing

The cheapest test is the game itself. Play a session hosted from inside the game, or a co-op invite, before renting anything. If the group plays three evenings in a row, rent a server for a month; if they stop after one, you have saved the money. Monthly billing is more expensive per month than three, six or twelve-month terms, and it is the right choice until the group has proved it will keep playing.

#### FAQ

##### What is the best game for a server with a few friends?

For most small groups, Valheim or Terraria: cheap to run, easy to set up, worlds that last for months, and room for mods later. Factorio is the best choice for groups who play at different times, and Palworld or Satisfactory if the budget allows.

##### Which game is best for a large public community?

Minecraft, by a wide margin, because it supports almost any style of server and has mature tools for permissions, protection and moderation. Garry's Mod and Project Zomboid are good alternatives for communities built around game modes or survival.

##### Which games need the most server memory?

Among the games RE:NODE hosts, Palworld, Satisfactory, 7 Days to Die, Sons of the Forest and The Isle need several gigabytes even with few players, so they start at higher tiers. Modded Minecraft and FiveM roleplay also grow large with their mod and script lists.

##### Can I run more than one game on one server?

Each game server on a panel host is its own server with its own plan. If you want several games on one machine, a VDS with your own setup does that at the cost of doing the administration yourself; [multiple game servers on one VDS](https://www.renode.space/blog/multiple-game-servers-on-one-vds) covers the approach.

##### Is a server worth it for only two players?

Often not, if both of you always play together and one machine can host. A server pays off when you play at different times, when the host's computer struggles, or when the world should not depend on one person being online.

##### How do I choose between two games the group likes equally?

Pick the one with the lower administration effort and the lower memory needs, run it for a month, and see whether people keep logging in. The best server game is the one the group still plays in week six.

RE:NODE hosts 31 games on the same panel, from Terraria at $3 a month to Palworld and Satisfactory, with backup slots on every plan and servers created as soon as payment clears. Moving up a tier changes the limits on the server you already have, so you can start small.

[See game server plans](https://www.renode.space/game-servers)

---

### Conan Exiles server: settings, mods, purge

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/conan-exiles-dedicated-server

A Conan Exiles dedicated server is a free Windows application (Steam app `443030`) with its settings split across three files in `ConanSandbox/Saved/Config/WindowsServer/`: `ServerSettings.ini` for gameplay and admin, `Engine.ini` for the server name and password, and `Game.ini` for the player cap and RCON. It uses UDP `7777` and `7778` for the game and `27015` for the Steam query, keeps the whole world in one SQLite file (`game.db` for the Exiled Lands, `dlc_siptah.db` for the Isle of Siptah), and loads Workshop mods from `.pak` files listed in `ConanSandbox/Mods/modlist.txt`. Admin rights come from the `AdminPassword` and the in-game "make me admin" option. Plan for 6-10 GB of memory for a busy server. The rest of this guide covers each file, the settings that matter, mods, the purge, and the backups that keep a server alive.

#### How Conan Exiles servers work

The game can be played offline, in co-op hosted by a player, or on a dedicated server. A dedicated server keeps the world - buildings, thralls, pets, clans - running with nobody online, which is what makes decay, purges and raiding meaningful. Facts that shape the setup:

- **The server binary is Windows only.** Funcom ship `ConanSandboxServer.exe`. On Linux it runs under Wine or Proton; [Wine and Proton for Windows-only servers](https://www.renode.space/blog/wine-and-proton-for-windows-only-servers) covers the general approach.
- **Characters live on the server.** A character belongs to the server's database. Joining a new server means starting over.
- **The world is one database file.** `game.db` holds everything: every building piece, thrall, item and character. That makes it simple to back up and catastrophic to corrupt.
- **Two maps.** The Exiled Lands (the base game) and the Isle of Siptah (a DLC map). One server runs one map, with its own database.

Settings can be edited in the files, or from inside the game through the admin's Server Settings panel, which writes back to `ServerSettings.ini`. The panel is easier and avoids typos; the files are where you go when the server will not start or when you want to see every value at once.

#### Requirements

Memory in Conan Exiles grows with building pieces and thralls far more than with players. A server where every clan has a fortress and a hundred thralls uses much more than a fresh one at the same player count.

| Server | RAM | CPU | Disk |
| --- | --- | --- | --- |
| Up to 10 players, vanilla | 4-6 GB | 2 cores | 40 GB |
| 10-40 players, established | 6-10 GB | 2-3 cores | 50 GB |
| Heavy mods (large content packs) | add 2-4 GB | - | add 10-20 GB |

Clock speed matters more than core count; the simulation is limited by its main thread. Disk use is the install plus mods plus the database and its backups; a long-lived `game.db` can reach hundreds of megabytes. Before buying more of anything, find which resource is at its limit - [CPU vs RAM for game servers](https://www.renode.space/blog/cpu-vs-ram-for-game-servers) explains how.

#### Installing and first start

```bash
$ steamcmd +@sSteamCmdForcePlatformType windows \
    +force_install_dir /home/conan/server \
    +login anonymous +app_update 443030 validate +quit
```

Start the server once so it writes its config files, wait until it is accepting players, then stop it cleanly. A typical start line:

```text
ConanSandboxServer.exe -log -MaxPlayers=40 -Port=7777 -QueryPort=27015
```

To run the Isle of Siptah instead of the Exiled Lands, put the map path first on the start line:

```text
ConanSandboxServer.exe /Game/DLC_EXT/DLC_Siptah/Maps/DLC_Isle_of_Siptah -log -MaxPlayers=40
```

Siptah uses its own database file, so switching maps does not touch the Exiled Lands world. On a panel host the start line is built from fields on the Startup tab; the values are the same. [SteamCMD explained](https://www.renode.space/blog/steamcmd-explained) covers updating and validating the install.

#### The three config files

All three live in `ConanSandbox/Saved/Config/WindowsServer/`. Edit them only while the server is stopped; the server can rewrite them on shutdown.

Engine.ini:

```ini
[OnlineSubsystem]
ServerName=Longship Exiles
ServerPassword=herring42

[URL]
Port=7777
```

Game.ini:

```ini
[/Script/Engine.GameSession]
MaxPlayers=40

[RconPlugin]
RconEnabled=1
RconPassword=change-this-rcon-pass
RconPort=25575
RconMaxKarma=60
```

`ServerSettings.ini` holds nearly everything else, under one section:

ServerSettings.ini:

```ini
[ServerSettings]
AdminPassword=change-this-admin-pass
PVPEnabled=False
IsBattlEyeEnabled=True
MaxNudity=0
ServerCommunity=0
PlayerXPRateMultiplier=2.0
HarvestAmountMultiplier=2.0
ItemConvertionMultiplier=1.0
ThrallConversionMultiplier=1.5
ClanMaxSize=10
DropEquipmentOnDeath=True
EverybodyCanLootCorpse=False
DisableBuildingAbandonment=False
```

Command-line arguments such as `-MaxPlayers` override the files. If a change does not apply, check the start line for an argument that sets the same value.

#### ServerSettings.ini: the settings that matter

| Key | What it does |
| --- | --- |
| `AdminPassword` | Password for "make me admin" in game |
| `PVPEnabled` | Player-versus-player damage on or off |
| `CanDamagePlayerOwnedStructures` | Whether buildings can be damaged by players |
| `IsBattlEyeEnabled` | Anti-cheat; clients must match |
| `MaxNudity` | `0` none, `1` partial, `2` full - the ceiling players can choose |
| `ServerCommunity` | Tag for the browser (purist, relaxed, hardcore, role-playing) |
| `PlayerXPRateMultiplier` | Experience gain |
| `HarvestAmountMultiplier` | Resources per hit |
| `ItemConvertionMultiplier` | Crafting station speed (lower is faster) |
| `ResourceRespawnSpeedMultiplier` | How quickly nodes regrow |
| `NPCRespawnMultiplier` | How quickly NPCs respawn |
| `ThrallConversionMultiplier` | Wheel of Pain speed |
| `PlayerDamageMultiplier`, `NPCDamageMultiplier` | Damage dealt |
| `PlayerHealthMultiplier` | Player health |
| `DayCycleSpeedScale` | Speed of the day/night cycle |
| `DropEquipmentOnDeath` | Whether gear drops |
| `EverybodyCanLootCorpse` | Whether others can loot it |
| `ClanMaxSize` | Players per clan |
| `DisableBuildingAbandonment` | `True` stops abandoned buildings from decaying |

Note the spelling `ItemConvertionMultiplier`. It is misspelled in the game, and the correct English spelling does nothing. That is a fair summary of how Conan treats typos in general: a misspelled key is ignored without warning.

`DisableBuildingAbandonment` deserves a decision. Building decay exists so that a public server does not fill with the empty forts of people who stopped playing - each one is thousands of building pieces in the database, saved and loaded every time. On a private server for friends, turn decay off. On a public server, leave it on; it is the server's garbage collector.

The full list of keys is long and changes with updates. The admin Server Settings panel in game shows every setting your version supports with its current value, which is the easiest way to discover them.

#### PvP windows, raiding and the purge

On PvP servers, `RestrictPVPTime=True` with `PVPTimeWeekdayStart`, `PVPTimeWeekdayEnd`, `PVPTimeWeekendStart` and `PVPTimeWeekendEnd` limits fighting to set hours. `RestrictPVPBuildingDamageTime` and its matching start and end keys do the same for raiding buildings. Times are in a four-digit 24-hour format such as `1800` for six in the evening, and they follow the server's clock - often UTC on hosted machines, so check before announcing hours.

Raid windows are the main tool for making PvP bearable for players with jobs. A clan cannot lose its base while everyone in it is asleep, and the server gets a predictable peak instead of constant low-level griefing. `DynamicBuildingDamage` offers another approach, enabling building damage only for a period after an attack starts; check the in-game panel for its options on your version.

The **purge** sends waves of NPCs to attack a clan's base, based on activity. It is controlled by keys such as `EnablePurge`, `PurgeLevel` (how strong the waves are), `PurgePeriodicity`, `MinPurgeOnlinePlayers` (how many clan members must be online) and `RestrictPurgeTime` with weekday and weekend windows. The purge system has been reworked more than once since launch, and key names and behaviour have moved with it. Configure it from the in-game Server Settings panel where possible, which only shows options your version understands, then look at what it wrote to `ServerSettings.ini`.

Purges are server load as well as gameplay. A wave of attackers at a large base is a burst of pathfinding and combat. On a busy server with many bases, keep `MinPurgeOnlinePlayers` sensible so purges only hit clans who are present to defend - which is also fairer.

#### Ports and connecting

| Port | Protocol | Purpose |
| --- | --- | --- |
| `7777` | UDP | Game traffic |
| `7778` | UDP | Second game port (game port + 1) |
| `27015` | UDP | Steam query, used by the server browser |
| `25575` | TCP | RCON, when enabled |

The game uses the game port and the port after it, so open both. If the server runs but is not in the browser, the query port is the first suspect; [game server ports explained](https://www.renode.space/blog/game-server-ports-explained) covers why. Players can also use Direct Connect with the address and game port, which is faster than the browser and confirms whether a listing problem is really a networking one.

#### Admins and RCON

To become admin in game, open the Settings menu, go to Server Settings, and use the "make me admin" option with the `AdminPassword`; the console command `MakeMeAdmin <password>` does the same. Admins can open the admin panel to spawn items, teleport, fly, view building ownership and change server settings live. Every player who knows the password can do all of it, so share it sparingly and change it if someone leaves the admin team.

RCON lets you send commands without being in game - useful for scheduled broadcasts and for admin bots. Enable it in `Game.ini` as shown above, open the RCON port only to addresses that need it, and use a strong password. Commands such as `listplayers` and `broadcast <message>` are the common ones; the set supported over RCON is smaller than the in-game console's. [RCON safely](https://www.renode.space/blog/rcon-safely) explains how to keep it from becoming the easiest way into your server.

#### Mods from the Steam Workshop

Conan Exiles mods are Workshop items distributed as `.pak` files. A server loads mods from `ConanSandbox/Mods/`, in the order given by `modlist.txt` in the same folder, one file name per line:

ConanSandbox/Mods/modlist.txt:

```text
Pippi.pak
EEWA.pak
ExampleBuildingPack.pak
```

The server does not subscribe to Workshop items by itself in a vanilla setup. You download each mod - with a Steam client that owns the game, or with SteamCMD using the game's app id `440900` and `workshop_download_item` - copy the `.pak` into `ConanSandbox/Mods/`, and add its name to `modlist.txt`. [Steam Workshop mods on dedicated servers](https://www.renode.space/blog/steam-workshop-mods-on-dedicated-servers) covers the download step for Workshop games in general.

```bash
$ steamcmd +login your_steam_user \
    +workshop_download_item 440900 880454836 +quit
```

Players need the same mods at the same versions. The game's launcher checks the server's mod list when they join and prompts them to subscribe to anything missing. Order matters: mods that change the same thing override each other, and many large mods state where they must go in the list - typically framework and admin mods near the top, content mods below. [Mod load order explained](https://www.renode.space/blog/mod-load-order-explained) covers the general idea.

Removing a mod from a live server deletes everything it placed - building pieces, items, thralls - and can leave holes in bases. Back up `game.db` first, and give players notice. Every game update can break mods until their authors update them, so do not let a modded server update automatically on patch day; [what to do when a mod update breaks](https://www.renode.space/blog/what-to-do-when-a-mod-update-breaks) is the procedure.

#### Saves and backups

The world lives in `ConanSandbox/Saved/`: `game.db` for the Exiled Lands, `dlc_siptah.db` for Siptah. The server writes to the database continuously as things change, rather than dumping the world on a timer, and it keeps backup copies of the database next to it at startup.

- **Back up the database with the server stopped.** Copying a SQLite database while it is being written can produce a broken copy. A nightly stop, backup and start is the reliable routine.
- **Keep backups somewhere else.** The game's own copies are on the same disk. [Backups that actually restore](https://www.renode.space/blog/backups-that-actually-restore) explains why that matters.
- **Back up before every update and every mod change.** Updates have changed the database in the past, and a mod removal is irreversible without a backup.
- **Restore** by stopping the server, replacing `game.db` with the backup, and starting it.
- **Wipe** by stopping the server and moving `game.db` aside. The server creates a fresh world on the next start; characters, buildings and thralls are all gone.

On RE:NODE, `ConanSandbox/Saved` is reachable in the file manager and over SFTP, backup slots come with every game plan and restore with one button, and the Schedules tab can run the nightly stop-backup-start sequence as ordered tasks. Conan Exiles has no catalogue line of its own; see the [game server list](https://www.renode.space/game-servers) for what is offered.

> [!WARNING]
> A server that is killed rather than stopped - including one stopped by running out of memory - can leave `game.db` in a bad state. Size the server with headroom and always stop it cleanly before touching the database.

#### Troubleshooting

**Settings revert after a restart.** You edited the files while the server was running, or a start-line argument overrides them.

**A setting has no effect.** Check the spelling against the game's own spelling, including `ItemConvertionMultiplier`.

**Players cannot join after adding a mod.** They do not have it, or have a different version. The launcher should prompt them; if not, they must subscribe manually.

**The server crashes on start after an update.** A mod that has not been updated. Remove mods from `modlist.txt` one at a time until it starts.

**Not in the server browser.** Query port closed, or the browser is slow. Test with Direct Connect.

**Raid windows open at the wrong time.** The server clock is UTC.

#### FAQ

##### How many players can a Conan Exiles server hold?

The cap is set by `MaxPlayers`, commonly 40 on public servers. Higher is possible with matching memory and CPU, but building and thrall counts are what decide whether the server copes.

##### Do players need to download mods manually?

Usually not. The launcher compares mod lists when joining and prompts players to subscribe to what is missing. They need the same versions as the server.

##### Can I run the Isle of Siptah on a dedicated server?

Yes. Put the Siptah map path first on the start line. Siptah uses its own database, separate from the Exiled Lands.

##### How do I wipe a Conan Exiles server?

Stop it and move `game.db` (or `dlc_siptah.db`) out of `ConanSandbox/Saved`. The next start creates a fresh world.

##### Can I move a single-player world to a server?

Single-player and co-op worlds use the same database format, so a `game.db` can be copied to a server's `ConanSandbox/Saved`. Characters inside it come along. Back up the server's own database first.

Every RE:NODE game server has a Startup tab for launch arguments, an in-browser editor with syntax highlighting for ini files, SFTP for uploading mod paks, and backup slots stored off the machine they protect. Changing plan does not rebuild the server.

[Compare game server plans](https://www.renode.space/game-servers)

---

### Core Keeper dedicated server: setup and saves

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/core-keeper-dedicated-server

A Core Keeper dedicated server is a free SteamCMD download (the Core Keeper Dedicated Server tool, app id `1963720`) that runs one world, stored as a single file such as `0.world.gzip`. By default it needs no port forwarding at all: it registers with Steam's relay network and prints a Game ID - a long string of letters - that players type into Join Game. If you start it with `-port`, it switches to direct connect mode, where players join by address and port and you have to open that port yourself. Settings live in `ServerConfig.json` and in launch flags, with port and password only accepted on the command line. A small group runs comfortably in 2 to 4 GB of memory; it grows with how much of the underground has been dug out. This guide covers the install, every setting worth knowing, the two ways to connect, moving a world onto the server and keeping it safe.

#### What the dedicated server does

Core Keeper's multiplayer normally runs with one player as host: the world lives on their PC and exists only while they play. The dedicated server is a headless build of the game that holds the world on its own, so anyone in the group can play at any time and nobody's frame rate is everybody's simulation.

Some things that shape how you run it:

- **The world is server-side, characters are not.** Each player's character, inventory and skills live on their own PC and travel between worlds with them. The server holds the map, everything built and everything stored in chests. Someone can arrive with gear from another world, and nobody's character is lost if a server goes away.
- **One world per server process.** The config picks a world slot by number; changing worlds means changing that number and restarting.
- **It is a Unity server.** Expect a `-batchmode` launch, a log file rather than an interactive console, and behaviour that tracks the game's own updates closely - [Unity dedicated server basics](https://www.renode.space/blog/unity-dedicated-server-basics) covers the general pattern.
- **The client and server versions must match.** After a game update, update the server before anybody tries to join.

#### Requirements and resource usage

Core Keeper's world is generated as you explore, and the server's memory use follows the explored and built area rather than the player count. These are practical starting points, not official figures:

| Group | RAM | CPU | Notes |
| --- | --- | --- | --- |
| 1-4 players, new world | 2 GB | 1 core | Comfortable early on |
| 4-8 players, mid game | 3-4 GB | 1.5-2 cores | Several biomes open, automation running |
| 8+ players, large world | 6-8 GB | 2+ cores | Heavy automation and wide exploration |

- **CPU**: one dominant thread does the simulation. Automation - conveyor belts, drills, farms - runs whether anybody is near it or not, so a base full of machinery is the main CPU cost.
- **Disk**: the server is a few gigabytes; a world file is compressed and usually small, megabytes rather than gigabytes. Keep space for backups.
- **Network**: modest. Relay mode adds a hop; direct connect is usually a little quicker for players near the server.

If you are planning for a bigger community, [how many players fit on a server](https://www.renode.space/blog/how-many-players-fit-on-a-server) makes the general argument that game design runs out before hardware does.

#### Installing with SteamCMD

The server tool installs anonymously:

```bash
$ steamcmd +force_install_dir /home/corekeeper/server +login anonymous \
    +app_update 1963720 validate +quit
```

On Windows, the folder contains a `Launch.bat` that starts the server with sensible defaults. On Linux it contains a `_launch.sh` script. Older Linux builds needed a virtual display through Xvfb and a few extra libraries; the launch script handles the display, but if the server exits at once on a minimal Linux install, missing libraries are the first thing to check. [SteamCMD explained](https://www.renode.space/blog/steamcmd-explained) covers `validate`, updates and scripting the install.

Run it once. The first start creates the data folder with `ServerConfig.json`, a `worlds` folder, logs and a file containing the Game ID. On Linux the data folder is typically:

```text
~/.config/unity3d/Pugstorm/Core Keeper/DedicatedServer/
```

On Windows it is the equivalent under the user's `AppData\LocalLow\Pugstorm\Core Keeper\DedicatedServer\`. The `-datapath` flag moves it, which is what you want when you run more than one server on a machine or want the data next to the install.

#### ServerConfig.json

The file is written on first start. Edit it with the server stopped:

ServerConfig.json:

```json
{
  "gameId": "",
  "world": 0,
  "worldName": "The Core",
  "worldSeed": 0,
  "worldMode": 0,
  "seasonOverride": -1,
  "maxNumberPlayers": 8
}
```

| Key | What it does |
| --- | --- |
| `gameId` | The Game ID players join with. Empty means generate one |
| `world` | World slot to load: `0` loads `0.world.gzip`, `3` loads `3.world.gzip` |
| `worldName` | The name shown for the world |
| `worldSeed` | Seed for a new world. `0` is random |
| `worldMode` | `0` normal, `1` hard, `2` creative, `4` casual |
| `seasonOverride` | Forces a seasonal event or none; `-1` follows the calendar on builds that support it |
| `maxNumberPlayers` | Player limit |

A few notes from experience:

- **Set a fixed `gameId`** if you do not want the code to change. A custom ID has to meet the game's format rules - long, alphanumeric, and avoiding characters that are easily confused, such as `0` and `O`. If the server rejects yours, the log says so and generates one instead. Leaving it empty and reading the generated code from the data folder is fine for a private group.
- **`worldMode` matters at creation.** A creative world cannot be turned into a normal one or back, so choose before the first start of a new slot. Hard mode is a real difficulty increase and the game's achievements care about it.
- **`worldSeed` only matters for a new world.** Changing it on an existing slot does nothing.
- **Season values have changed between versions.** If you set `seasonOverride`, check the current list in the game's documentation rather than copying an old number.

New keys appear with updates. If yours has keys not shown here, they came with your build and the generated defaults are the safe starting point.

#### Launch flags

Most settings can also be passed as flags, and some only work that way:

| Flag | What it does |
| --- | --- |
| `-batchmode` | Runs headless. Always present |
| `-logfile` | Writes the log to a file |
| `-world` | Same as `world` |
| `-worldname` | Same as `worldName` |
| `-worldseed` | Same as `worldSeed` |
| `-worldmode` | Same as `worldMode` |
| `-gameid` | Same as `gameId` |
| `-maxplayers` | Same as `maxNumberPlayers` |
| `-datapath` | Where the data folder lives |
| `-port` | Enables direct connect on this port |
| `-ip` | Address to bind in direct connect mode |
| `-password` | Join password, used with direct connect |

Port, address and password are command-line only - putting them in `ServerConfig.json` does nothing. And when a flag and the file disagree, the flag wins, which is the usual reason an edit to the file appears to be ignored.

#### Game ID or direct connect

```diagram
title: Two ways into a Core Keeper server
player = Player | Join Game
relay = Steam relay | Game ID mode
server = Core Keeper server | one world
direct = Direct connect | -port, open UDP
world = Worlds folder | N.world.gzip
player -> relay : types Game ID
relay -> server
player -> direct : address and port
direct -> server
server -> world : autosave
```

**Game ID mode** is the default. The server connects out to Steam's relay network, so no inbound port needs to be open, and players type the ID in Join Game. It works behind home routers, behind carrier-grade NAT and on hosts that do not forward ports. The costs are a relay hop of extra latency and dependence on the relay service being up. The ID is printed to a file in the data folder and to the log; if it is not fixed in the config, it can change, so re-check it after a restart before telling people it is wrong.

**Direct connect** starts when you pass `-port`. Players connect to the server's address and port instead, so the port must be reachable - UDP, and several hosting guides advise opening the next port up as well. `-password` sets a join password for this mode. On recent builds direct connect is also how players on other PC stores reach a server, so if your group is not all on Steam, check the current patch notes for which mode supports crossplay. [Game server ports explained](https://www.renode.space/blog/game-server-ports-explained) covers testing that a port is actually open, and [NAT and CGNAT for game hosts](https://www.renode.space/blog/nat-and-cgnat-for-game-hosts) explains why relay modes exist at all.

For a group of friends where one person runs the server at home, Game ID mode is almost always the right choice. For a hosted server with a public address, direct connect gives slightly better latency and a stable address to hand out.

#### Worlds, slots and moving a save

Worlds are numbered files in the server's `worlds` folder: `0.world.gzip`, `1.world.gzip` and so on. The `world` setting picks one. A player's own worlds are in the same format on their PC:

```text
%USERPROFILE%\AppData\LocalLow\Pugstorm\Core Keeper\Steam\<SteamID64>\worlds\
```

To move a world you have been playing locally onto the server:

1. Close the game so the world file is fully written.
2. Stop the server.
3. Back up the server's `worlds` folder, even if you think it is empty.
4. Upload your world file into the server's `worlds` folder. Either give it the number of the slot the server already loads, replacing what is there, or give it a free number and change `world` (or `-world`) to match.
5. Start the server and check the log for the world loading by name rather than a new one being generated.

Characters do not need moving: they are on each player's PC and come with them. The world brings its map, buildings, chests and automation. Going the other way - taking a server world home - is the same in reverse: stop the server, download the numbered file, rename it to a free slot number locally, and it appears in the game's world list.

Slots double as save states. Before a risky boss attempt or a large rebuild, stop the server, copy the current world file to a spare number, and start again. If it goes wrong, point `world` at the copy. [Game server save files explained](https://www.renode.space/blog/game-server-save-files-explained) puts this layout next to other games'.

#### Backups, updates and restarts

The world is held in memory and written to its file periodically and on a clean shutdown. A killed process loses whatever happened since the last write. So:

- **Stop the server cleanly** before copying a world file, and before any update.
- **Back up the `worlds` folder on a schedule**, off the machine, while the group is active. The file is small, so daily copies cost nothing.
- **Take a manual backup before every game update.** Major updates have changed world content before; a world that loaded yesterday is worth keeping a copy of.
- **Restore once on purpose.** Load a backup into a spare slot, join and look at your base. [Backups that actually restore](https://www.renode.space/blog/backups-that-actually-restore) explains why this step is the one that counts.

Updates come through SteamCMD with the same `app_update` command. The game patches on its own schedule, and the client updates automatically, so a group will usually find out about a patch by failing to connect. Updating the server on restart avoids that, at the cost of occasionally picking up a patch before you have backed up - schedule a backup before the restart and you have both. [Restart schedules that help](https://www.renode.space/blog/restart-schedules-that-help) covers choosing the hour.

Core Keeper has official mod support through mod.io. Mods that change gameplay usually need to be present on the server as well as on every client, at the same versions; check each mod's page for dedicated server instructions rather than assuming. A world played with a mod can depend on it, so back up before adding or removing one - [what to do when a mod update breaks](https://www.renode.space/blog/what-to-do-when-a-mod-update-breaks) is the recovery order when that goes wrong.

#### Hosting it

Core Keeper is not in the RE:NODE game catalogue, so there is no Core Keeper plan or pre-built install. The server is a Linux-friendly SteamCMD app, though, and runs well on a general-purpose machine. A [dedicated server](https://www.renode.space/dedicated-servers) gives you root access to install SteamCMD, run `_launch.sh` under a service manager, and open a UDP port for direct connect if you want it; VDS plans are prepared by hand and delivered within 24 hours. If you have never set one up, [your first hour on a new VDS](https://www.renode.space/blog/first-hour-on-a-new-vds) covers the basics, and [systemd services for your apps](https://www.renode.space/blog/systemd-services-for-your-apps) shows how to keep a process like this running across reboots. For the games that do have catalogue lines, see [game servers](https://www.renode.space/game-servers).

#### Troubleshooting

**Players cannot find the server with the Game ID.** Copy the ID again from the current log or ID file - it changes if not fixed. Check that the server has finished starting, and that the client and server versions match.

**Direct connect times out.** The port is not open on UDP, `-port` was not passed, or players are using the relay ID instead of address and port.

**A new world appeared instead of my upload.** The file number does not match `world`, or a `-world` flag overrides the config. The uploaded file is still there.

**Settings in `ServerConfig.json` are ignored.** A launch flag sets the same value, or the setting is one of the command-line-only ones: port, IP and password.

**The server exits immediately on Linux.** Missing libraries or display support on a minimal install. Read the first lines of the log.

**Memory grows over days.** Exploration and automation add state. A daily restart keeps it predictable; steady growth to the limit within hours means the world has outgrown the machine.

#### FAQ

##### Do I need to open ports for a Core Keeper server?

Not in the default Game ID mode, which uses Steam's relay. Only direct connect mode, started with `-port`, needs the port open on UDP.

##### Where is the Core Keeper Game ID?

The server writes it to a file in its data folder and prints it in the log at startup. Set `gameId` in `ServerConfig.json` if you want it to stay the same.

##### Can I move my single-player world to a dedicated server?

Yes. Copy the numbered `.world.gzip` file from your local `worlds` folder into the server's `worlds` folder and set `world` to its number. Characters stay on each player's PC and come with them.

##### Do characters belong to the server?

No. Characters and their inventories are saved on each player's own PC. The server holds the world, buildings and chests.

##### Can I change a world from creative to normal?

No. The world mode is fixed when a world is created, and creative and non-creative worlds cannot be converted. Start a new slot with the mode you want.

##### How many players can join?

`maxNumberPlayers` sets the limit. The game is designed around small co-op groups, and performance depends more on automation and explored area than on the number of players.

Core Keeper has no RE:NODE game plan, but it runs well on a VDS with root access, where you control SteamCMD, the launch flags and the firewall. VDS plans are prepared by hand within 24 hours, include a backup slot, and sit on NVMe storage in Germany.

[See dedicated servers](https://www.renode.space/dedicated-servers)

## Rules for the assistant

- Never ask the user for a password, token, API key or `.env` contents, and tell them not to paste one into this chat. Describe where a secret goes instead.
- Secrets reach the server through the panel: `.env` is uploaded through the Files tab, startup variables are set on the Startup tab. `.env` never goes in the repository.
- An app server has exactly one reachable port. Read it from `SERVER_PORT` (also `PORT` when the panel starts a linked repository) and bind `0.0.0.0`; never hard-code a port.
- On every panel-managed server (everything except VDS and dedicated servers, which come with full root) only `/home/container` persists, and the process runs unprivileged: no root, `sudo`, `apt`, `systemd` or Docker.
- Memory is a hard limit; a process that reaches it is killed with no error message. Suggest a bigger plan only after ruling out a leak.
- Do not suggest changing the server's startup command or image to work around a code problem - fix the code or the repository.
- Prices and plans above were read when this file was generated. Send the user to the page linked at the top before quoting a price as current.
- For a specific server, the panel's Connect AI link (Console tab) gives the exact runtime, port, path and branch. Prefer it over these general rules when the user has one.
- If something here does not answer the question, the full deploy docs are at https://www.renode.space/llms-full.txt and support is at https://www.renode.space/contact.
