VGKAMI
Advertise Get listed

Game Guides

How to Make a Core Keeper Server: Step-by-Step Setup Guide for Windows and Linux

October 26, 2026 12 min read

The most reliable way to make a Core Keeper server is to install the free dedicated-server package (Steam App ID 1963720), launch it once to generate a Game ID, and then choose either Steam relay play or a direct UDP connection. Leave -port unset for the simplest Game ID connection. Set a port, open it in the host firewall and router, and give players your public address when you need direct IP play or PC storefront cross-play.

This guide covers Windows and Linux installation, SteamCMD commands, Game ID sharing, firewall and router setup, world configuration, save migration, updates, backups, and the failure modes that most often prevent friends from joining.

What do I need before installing a Core Keeper dedicated server?

You need an always-on Windows or Linux computer, enough storage for the server and its data, SteamCMD, and a network path your players can reach. The server package is separate from the game client: download App ID 1963720, not the client’s App ID.

  • Host machine: use a computer that can remain online while people play. Memory usage can increase as the world becomes larger and more players explore.
  • Storage: one 2026 hosting estimate lists 5 GB of SSD space as a basic starting point and recommends NVMe storage. Those are practical third-party estimates, not official minimum requirements; leave additional room for worlds, logs, updates, and backups.
  • Operating system: Windows can run CoreKeeperServer.exe. Linux uses the native CoreKeeperServer.x86_64 executable and may need a virtual display wrapper.
  • Network choice: decide whether Steam relay/Game ID access is sufficient or whether you need direct IP access. Direct IP is the documented route for PC storefront cross-play.
  • Access control: keep the generated Game ID and any server password private. Do not post the code publicly.

A 2026 hosting FAQ describes support for up to eight simultaneous players. Treat that as a published hosting figure rather than a guarantee that every home computer will deliver the same performance.

How do I install the dedicated server with SteamCMD?

Install SteamCMD, point it at a separate server directory, and update App ID 1963720. The same workflow works for a first installation and later updates.

1. Install SteamCMD

On Windows, download SteamCMD, extract it to a folder, and run steamcmd.exe. On Ubuntu or Debian, install the distribution’s SteamCMD package and the 32-bit/runtime packages required by the Linux server build. Keep the server files in a directory you can back up and that your service account can write to.

2. Download the correct package

Run this command from a Windows command prompt or SteamCMD shell, changing the destination if you prefer another folder:

steamcmd +force_install_dir C:CoreKeeperServer +login anonymous +app_update 1963720 validate +quit

The dedicated server is a free download and supports anonymous SteamCMD login. If SteamCMD reports a missing configuration or license error, retry with a license request before the update:

steamcmd +force_install_dir C:CoreKeeperServer +login anonymous +app_license_request 1963720 +app_update 1963720 validate +quit

On Linux, use the same App ID and anonymous-login flow, but set +force_install_dir to the Linux directory you created. Let SteamCMD finish validation before launching the executable.

3. Confirm the files

The install directory should contain the Windows executable or the Linux CoreKeeperServer.x86_64 binary. If the executable is missing, rerun the command with validate and check that SteamCMD has write permission to the destination.

How do I start the server and get its Game ID?

Launch the server once without changing world settings. Its first run creates the data directories and a Game ID, which you can use for Steam relay connections.

Windows

  1. Open the installation directory.
  2. Run CoreKeeperServer.exe.
  3. Leave the PowerShell or command window open while people are playing.
  4. Read the generated code from GameID.txt or from the server log.

The Windows community setup instructions use Q in the server window to stop the process cleanly. Record the Game ID privately before inviting anyone.

Linux

  1. Change to the installation directory.
  2. Run ./CoreKeeperServer.x86_64.
  3. If the headless Unity build exits because it cannot create a display context, run it through a virtual framebuffer:
xvfb-run -a ./CoreKeeperServer.x86_64

Keep the terminal or service process running. A Game ID is generated on the first successful launch.

How should a Game ID be formatted?

Use the value the server generated; do not invent a replacement. The documented validator accepts 15–28 alphanumeric characters and excludes Y, y, x, 0, and O. If a code is rejected, copy it again from GameID.txt or the current log rather than editing it.

Should I use Game ID relay or a direct IP connection?

Use Game ID relay when all players are on Steam and you want the least network administration. Use direct IP when you need PC storefront cross-play or want players to connect to a specific address and port.

Connection method Launch setting Player connection Network work Best fit
Steam relay/Game ID Leave -port unset Players enter the generated Game ID Normally no router port forwarding Steam-only groups seeking the simplest setup
Direct IP Set -port to a UDP port Players use the public IP, port, and password Allow and forward the selected UDP port PC storefront cross-play or controlled network routing

The relay path is generally the quickest way to host for Steam friends. Direct connections are the path documented for cross-play among Steam, Epic, Microsoft, and GOG PC storefront clients. A relay Game ID is not a substitute for the direct-IP configuration when those storefronts need to connect.

How do I configure the port, firewall, and router for direct IP play?

Choose a UDP port, pass it to the server with -port, allow the same port through the operating-system firewall, and forward it from the router to the host’s local IP address.

1. Pick and launch with a UDP port

Guides commonly use UDP ports 27015 and 27016 for a default setup. The launch reference also accepts a custom value such as 7778. The important rule is consistency: the port in the launch command must be the one allowed and forwarded on the network.

CoreKeeperServer.exe -port 7778

On Linux, append the same argument to the native executable or to the xvfb-run command:

./CoreKeeperServer.x86_64 -port 7778
xvfb-run -a ./CoreKeeperServer.x86_64 -port 7778

2. Allow the port in the host firewall

Create an inbound rule for the selected UDP port on Windows Defender Firewall or the Linux firewall in use. If you change from 27015 to 7778, update the firewall rule as well; opening a different port will not help.

3. Forward the port in the router

Give the server computer a stable local address, then forward the selected UDP port from the router to that address. Players outside your home network use the public IP address, the port, and the server password. Test from an external network rather than from the same LAN, because some routers do not support loopback connections.

4. Handle CGNAT or blocked inbound traffic

If your internet provider uses carrier-grade NAT or your router cannot accept inbound forwarding, a UDP tunneling service can expose the local server through a public endpoint. The tunnel replaces ordinary router forwarding, but you still maintain the game process, updates, and backups locally.

What belongs in ServerConfig.json, and what must be a launch argument?

Use ServerConfig.json for world and save settings. Use launch arguments for networking and access controls.

World and save settings

The configuration file supports the world name, save slot or data path, seed, mode, and related world settings where supported by the installed build. Set these before creating a long-term world so the initial generation matches your group’s plan.

  • Mode: the launch reference lists Normal, Hard, Creative, and Casual.
  • Seed: a seed affects initial world generation; record it if you want to reproduce the same starting layout.
  • Save location: use the configured slot or data path consistently so backups and migrations target the correct files.

Switching a world between Creative and a non-Creative mode after creation is unsupported. Choose the mode deliberately before the world is established.

Networking and access settings

Set the password, IP binding, and port through launch arguments. The documented reference says those flags are ignored when placed in ServerConfig.json, so changing the JSON alone will not open a port or change how the server binds.

Content bundles

Use -activatecontent or -activateallcontent to activate content bundles supported by the installed build. Activation is permanent for that world, so make a backup and decide before inviting players to a save you intend to keep.

How do I invite friends after the server is running?

Give Steam players the Game ID for relay play, or give direct-IP players the public address, UDP port, and password. Keep the server process running for the entire session.

For Game ID relay

  1. Launch without a -port argument.
  2. Copy the generated Game ID from GameID.txt or the log.
  3. Send it privately to the players who should join.
  4. Have them use the game’s dedicated-server or join flow to enter the code.

This route normally avoids manual router forwarding and is the lowest-maintenance option for Steam players.

For direct IP

  1. Launch with the chosen UDP port.
  2. Confirm the host firewall and router forward the same port.
  3. Give players the public IP address, port number, and password.
  4. Use this direct path when combining the PC storefronts documented for cross-play.

Do not send a private Game ID or server password in a public forum. If the public address changes, update the information given to players or use a stable address provided by your network arrangement.

How do I move an existing solo world to the dedicated server?

Stop the dedicated server, back up both world and player data, then copy the save into the dedicated-server data path. Never replace live files while the server process is running.

  1. Stop the server cleanly and wait for the process to exit.
  2. Make a separate backup of the solo world and player data.
  3. Locate the dedicated-server worlds directory on Windows: %APPDATA%..LocalLowPugstormCore KeeperDedicatedServerworlds.
  4. Copy the prepared world into that directory, preserving the folder and file structure expected by the server.
  5. Keep the adjacent configuration file so the intended world name, slot, and data path remain clear.
  6. Start the server and verify the world before deleting the backup.

Managed-server documentation follows the same safety rule: stop the instance and retain a copy before replacing world files. The backup is your recovery path if the imported save is not recognized or if player progress appears missing.

How do I keep a Core Keeper server online after a reboot?

Automate startup, schedule updates, and maintain backups instead of relying on an open terminal window.

Windows

Create a start script that launches CoreKeeperServer.exe with your chosen arguments, then call it from Task Scheduler at system startup. A community Windows setup uses a Launch.ps1 and Launch.bat pair for automatic restart. Keep copies of those scripts outside the install directory because an update can overwrite files in that directory.

Linux

Use a systemd service or an equivalent process supervisor to start the native executable after boot, restart it if it exits, and write logs to a location included in your backup plan. If the build needs a display context, put xvfb-run -a in the service’s start command.

Updates and backups

  1. Stop the server before a major update.
  2. Back up the worlds/ directory and player data.
  3. Run SteamCMD with App ID 1963720 and app_update to install the new build.
  4. Start the server and check that the expected world and settings load.
  5. Retain the pre-update backup until players have confirmed their characters and world are intact.

Back up before file imports, configuration changes that affect world creation, and every major update. A persistent server is only as safe as the last usable copy of its world and player data.

What should I do when players cannot connect?

Check the connection method first, then verify the exact code or address, process status, and network rules. The symptom usually identifies which layer is wrong.

SteamCMD reports “Missing configuration” or a license error

Run the install command again with +app_license_request 1963720 before +app_update. Confirm you used the dedicated-server App ID and that SteamCMD can write to the install directory.

The Game ID is rejected

Copy the generated value from GameID.txt or the current log. Check the documented 15–28-character range and excluded characters, and do not substitute a hand-made code.

Friends cannot connect by IP

Confirm that the server was launched with -port, that the host firewall allows that UDP port, and that the router forwards it to the correct local address. Recheck the public IP, port number, and password. Guides commonly use UDP 27015 and 27016; a custom port such as 7778 is valid only when every layer uses that value.

Cross-play fails between PC storefronts

Use the direct-IP path with -port. Relay/Game ID mode is the simpler Steam route, while the documented cross-play setup requires the configured UDP port to be reachable from the internet.

The Linux process exits immediately

Install the SteamCMD, 32-bit, and runtime packages required by the Linux guide, then retry with xvfb-run -a if the headless Unity build needs a display context. Check the terminal output for the missing library or display error before changing world files.

The server slows down after long uptime

One self-hosting guide reports that memory can rise as players connect and recommends restarting the server process as an operational workaround. That observation is not an official diagnosis of a game bug. Schedule controlled restarts during quiet periods and preserve a current backup before restarting.

Is self-hosting better than a managed server?

Self-hosting gives the most control and the lowest provider dependency, but you must handle networking, updates, backups, and uptime. A managed service trades some file and configuration control for an exposed connection and administration handled by the provider.

Option Control Network work Ongoing work Best fit
Manual self-hosting Highest; direct access to files and launch arguments Port forwarding for direct IP You handle updates, backups, and restarts Technical users with an always-on machine
UDP tunnel plus self-hosting Local files and process remain under your control Tunnel replaces ordinary router forwarding You still maintain the server Hosts behind CGNAT or restrictive routers
Managed hosting Panel-based control with provider limits Provider exposes the connection Provider commonly handles backups and updates; monthly or term cost applies Groups wanting a persistent world without server administration
Graphical server manager GUI configuration, monitoring, backups, and save conversion Public-address routing may be included Depends on the manager’s maturity and release status Owners who prefer a local graphical tool

Compare the choices on monthly cost, file control, cross-play requirements, port-forwarding or CGNAT limits, backup responsibility, geographic latency, and whether the host must stay online. If your group is Steam-only and can leave a computer running, Game ID relay plus manual hosting is usually the shortest path. If players need direct cross-play and your router accepts inbound UDP, self-hosting with a forwarded port is more flexible.

What is the safest first setup?

  1. Install App ID 1963720 with SteamCMD.
  2. Launch once and save the generated Game ID.
  3. Start without -port for Steam relay play, or choose a UDP port for direct IP.
  4. Set world mode, seed, save location, and any permanent content activation before creating the long-term world.
  5. Back up world and player data before importing saves or applying major updates.
  6. Add a startup service or scheduled task only after the manual launch works.

This sequence isolates installation, world creation, and networking problems instead of changing several variables at once.

Frequently Asked Questions

How many players can join a Core Keeper dedicated server?

A 2026 hosting FAQ states that Core Keeper supports up to eight simultaneous players. That figure comes from a hosting provider’s published FAQ, so actual stability still depends on the host machine, world size, and network conditions.

Is 5 GB of storage an official Core Keeper server requirement?

No. The 5 GB SSD figure is a third-party practical estimate, and the same guidance recommends NVMe storage. Your real footprint can grow as worlds, logs, backups, and update files accumulate, so treat 5 GB as a starting allowance rather than a ceiling.

Can I use a custom UDP port instead of 27015 or 27016?

Yes. The launch reference accepts custom values such as 7778. Use the same number in the server command, operating-system firewall rule, router forward, and connection details sent to players.

What should I do if my router uses CGNAT?

Ordinary port forwarding may not work because inbound traffic never reaches your router. A UDP tunneling service can provide a public endpoint mapped to the local server, while you continue to run, update, and back up the server yourself.