The reliable way to host Core Keeper on Linux is to install its separate SteamCMD server package (AppID 1963720), keep the server and world data on persistent storage, and start with Steam Datagram Relay (SDR) networking by leaving the port unset. Use the native launcher under a headless X server, or use Docker if you want the runtime and storage layout packaged for you. A generated GameID.txt is the join credential for relay-style play; direct-connect hosting requires deliberate UDP port forwarding.
Playing with friends? Godlike.Host runs hosted Core Keeper servers from 10 data-center locations, with free DDoS protection.
What the Core Keeper dedicated server is
Core Keeper’s dedicated server is a separate, free SteamCMD download. It is not the same process as running the game client, and it does not require a Steam account for the anonymous download. The current package uses Steam AppID 1963720. You can run it on a Linux machine without a desktop session, provided the launcher has the headless display support it expects.
As an Amazon Associate I earn from qualifying purchases.
There are two practical deployment paths:
- Native Linux: SteamCMD downloads the files directly onto the host. You control updates, service management, filesystem permissions and the Linux runtime yourself. The supplied Linux launcher may need Xvfb for a headless machine.
- Docker: The maintained image packages the runtime and documents a predictable server-files/server-data layout. Docker Compose makes recreation and upgrades easier, but persistence depends entirely on correctly mounted host directories.
For a first deployment, start with SDR relay networking. It avoids inbound router and firewall forwarding while outbound Steam access is allowed. Move to Direct Connect only when you specifically need a forwarded UDP port or a directly reachable public endpoint.
Native Linux or Docker?
| Consideration | Native SteamCMD installation | Docker Compose |
|---|---|---|
| Runtime setup | You install SteamCMD and use the package’s Linux launcher; a headless host may need Xvfb. | The image packages the runtime and its startup conventions. |
| Updates | Run SteamCMD and +app_update 1963720 validate when you choose. |
Image startup and image updates manage the container runtime; server files can be mounted separately. |
| Persistence | Keep the installation and configured data path under a directory owned by the server account. | Mount server-data for saves; mount server-files if you want the downloaded files outside the container. |
| Headless operation | Use Xvfb as required by the Linux launcher. The -batchmode flag may not work directly on Linux. |
The image handles the container’s runtime environment. |
| CPU architecture | Use a Linux host supported by the downloaded package. | The image documents x86-64 and ARM64 variants, including generic ARM64 devices, Raspberry Pi 5, M1 and Ampere Altra. |
| Default networking approach | Omit -port for relay-style hosting; setting it enables Direct Connect. |
Leave SERVER_PORT empty or unset for relay-style hosting; set it for Direct Connect. |
The reviewed documentation does not provide an independent player-capacity, thermal or performance benchmark for any CPU, Raspberry Pi model or ARM64 board. Treat the Docker README’s “1–8 players” wording as a product description, not a measured Linux capacity guarantee.
#1 Best Overall
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
Prepare the Linux host
Create a non-root service account
Do not run the game server as root. Create a dedicated Linux account and use it for SteamCMD, the server process and the files it creates. A simple layout is a directory named corekeeper-server in that account’s home directory. Keep ownership consistent so the launcher can create logs, the Game ID file and world saves without permission errors.
- Use a supported Linux distribution and its supported SteamCMD package method.
- Give the account a stable home directory and enough disk space for the installation, logs and growing world data.
- If you plan to use a system service, make the service run as the same account that owns the files.
- Decide where backups will live before the first world is created; a second disk or another host is safer than a second folder on the same disk.
Choose the data location
The server has executable files and a data area that contains world saves. With a native installation, keep both under a path you can back up. With Docker, the documented split is a host directory for server files and a separate host directory for server data. The worlds directory may not appear until the first save, roughly after a player joins, so do not conclude that persistence is broken merely because it is absent immediately after installation.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteInstall and update the native server with SteamCMD
- Install SteamCMD. Use the package and repository method supported by your Linux distribution. Confirm that the
steamcmdcommand starts as the dedicated service account. - Create and enter the server directory. For example, use
~/corekeeper-serverand make sure that directory is owned by the service account. - Download the current package anonymously. The current reference sequence is:
steamcmd +login anonymous +app_license_request 1963720 +app_update 1963720 validate +quit - Let validation finish. The
+app_update ... validatestep both downloads missing files and checks the installation. Run the same sequence later when you intentionally update the server. - Locate the supplied Linux launcher. Use the launcher or
CoreKeeperServerexecutable included in the package rather than copying an old community command. The Linux reference warns that-batchmodemay not work directly on Linux. - Provide a headless display when needed. On a machine without a desktop session, run the project’s tested launcher invocation through Xvfb. Xvfb supplies the virtual display that the server runtime expects; follow the launcher’s current arguments rather than assuming that a Windows-style headless flag is equivalent.
- Wait for startup. Keep the process attached for the first run so you can see errors. After successful initialization, the server writes
GameID.txtbeside the executable. - Record the join credential. Open
GameID.txtand give the code only to the people who should join. If the file is not created, inspectCoreKeeperServerLog.txtbefore changing launch arguments.
Start without -port unless you have chosen Direct Connect. Omitting that argument keeps the server on the relay-style path and avoids an unnecessary inbound firewall rule.
Run the server with Docker Compose
Docker is often the simpler option when you do not want to assemble a headless Linux runtime yourself. The documented image is escaping/core-keeper-dedicated:latest. Create a Compose file such as the following, replacing the host paths with directories on your machine:
services:
core-keeper:
image: escaping/core-keeper-dedicated:latest
container_name: core-keeper-dedicated
restart: unless-stopped
stop_grace_period: 2m
volumes:
- /srv/corekeeper/server-files:/home/steam/core-keeper-dedicated
- /srv/corekeeper/server-data:/home/steam/core-keeper-data
env_file:
- path: core.env
required: false
Deploy the container
- Create the host directories used in the two volume mappings and make sure Docker can write to them.
- Save the Compose definition and, if you need custom settings, create the optional
core.envfile beside it. - Start the service with
docker compose up -d. - Follow startup output with
docker logs -f core-keeper-dedicatedordocker compose logs -f. - Read the generated Game ID with:
docker exec -it core-keeper-dedicated cat /home/steam/core-keeper-dedicated/GameID.txt
The image documentation makes the server-data mount mandatory for persistence. The server-files mount is optional, but mounting it gives you direct control over the downloaded server files and makes their location obvious during upgrades. If you omit the data mount, recreating or replacing the container can leave you with a new, empty data directory instead of your existing worlds.
Rank #2
- Includes Raspberry Pi 5 16GB with 2.4Ghz 64-bit quad-core CPU (16GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
Use environment variables for repeatable settings
The image documents environment controls for world and connection settings, including:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
WORLD_INDEXWORLD_NAMEWORLD_SEEDWORLD_MODEGAME_IDMAX_PLAYERSSERVER_IPSERVER_PORTPASSWORD
Keep these values in the environment file rather than editing the image or entering one-off commands. Leave SERVER_PORT empty for SDR. Set it only when you have decided to expose a Direct Connect endpoint and have matched the firewall and router configuration to it.
Choose relay networking or Direct Connect
| Mode | How to select it | What players need | Network work for the operator |
|---|---|---|---|
| Steam Datagram Relay (SDR) | Native: omit -port. Docker: leave SERVER_PORT empty or unset. |
The generated Game ID from GameID.txt. |
No inbound router or firewall forwarding is required while outbound Steam access is allowed. |
| Direct Connect | Native: set -port and, when needed, -ip. Docker: set SERVER_PORT and the relevant server IP setting. |
The server’s reachable address and selected UDP port, using the game’s connection flow. | Allow the same UDP port in the host firewall and forward it on the router. The server’s public IP is exposed to connecting players. |
SDR is the safer starting point
Relay mode minimizes networking decisions. Steam relay infrastructure carries the traffic, so the host does not need an inbound port opened on the router or firewall. Outbound access to Steam still has to work; a restrictive corporate, VPS or home firewall can block the connection even when no inbound rule is needed.
When Direct Connect makes sense
Use Direct Connect when you deliberately need a forwarded UDP endpoint, such as a network where relay connectivity is unsuitable or a local setup that requires direct addressing. Select a port, set the server IP as needed, allow that UDP port through the host firewall and forward the identical port from the router to the Linux host. The Codex reference uses UDP port 27015 as a same-LAN example, not as a mandatory Internet-wide choice. Confirm the image’s current port mapping before publishing a Docker command, and do not assume that a different external port will map automatically.
Configure worlds, access and player limits
The current server reference documents these launch controls. Native installations use the corresponding command-line arguments; Docker users use the image’s environment names where documented.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Rank #3
- CanaKit Raspberry Pi 5 Essentials Starter Kit
| Setting | Native argument | Purpose and constraints |
|---|---|---|
| World name | -worldname |
Selects the world name used by the server. |
| World seed | -worldseed |
Sets the seed for world generation. |
| World mode | -worldmode |
Supported values documented in the current package are Normal, Hard, Creative and Casual. |
| Data path | -datapath |
Points the server at the directory where its persistent data and worlds should live. |
| Game ID | -gameid |
Uses a manually supplied join code instead of relying only on a generated one. |
| Password | -password |
Adds a password requirement for the server. |
| IP address | -ip |
Specifies the address used with a deliberate Direct Connect configuration. |
| Port | -port |
Enables Direct Connect when set; omitting it keeps the relay-style default. |
| Maximum players | -maxplayers |
The current package defaults to 8 when no value is supplied. |
Use the current package’s argument reference when combining options. Old community examples can omit newer requirements or use flags that changed behavior, particularly around Linux headless startup and SteamCMD licensing.
Manually supplied Game IDs
If you set -gameid yourself, the current reference requires 15–28 alphanumeric characters and disallows Y, y, x, 0 and O. Those exclusions reduce visual confusion when players type a code. A generated or manually chosen Game ID is a credential: do not post it publicly unless you intend to let anyone who sees it attempt to join. Make a backup before sharing a code in a public channel.
Protect and back up world data
Native installations
Back up the configured data path, including the worlds directory, while the server is stopped or after a clean shutdown. Keep the backup outside the live installation so an update or accidental deletion cannot remove both the executable and the only copy of the save. If you move the installation, update -datapath deliberately and verify that the process can read and write the destination.
Docker installations
Back up the host directory mapped to /home/steam/core-keeper-data. The worlds folder can be created only after the first save, so check again after a player has joined and the world has changed. Before updating an image or recreating a container, confirm that the host mount is still present and points to the same directory. A container can start normally while showing no worlds if it is pointed at a newly created, empty host path.
Passwords and codes
Store PASSWORD and any manually supplied Game ID in a private environment file or restricted service configuration. Do not place secrets in a public Compose repository. A password helps limit access, but it does not make a publicly posted Game ID harmless; share both only with the intended group.
Rank #4
- All-in-One Complete Kit: This SANOOV RPi 5 bundle comes with Raspberry Pi 5 4GB RAM single board, active cooler, durable ABS case and screwdriver. No extra parts needed, ready to use right out of the box for beginners and hobbyists
- Powerful Single Board Computer: Equipped with 4GB RAM and high-performance processor, delivers fast running speed for 4K playback, AI projects, programming and daily computing tasks. SANOOV for raspberry pi 5 4GB is equipped with broadcom 64 quad-core Arm Cortex A76 processor with gigabit ethernet and upgraded with IEEE 802.11ac Wi-Fi, Bluetooth 5.0 dual-band 2.4Ghz and 5Ghz and Power Over Ethernet (POE). Upgrading delivers 2-3 x speed vs Pi 4, redefining the experience
- Efficient Active Cooler: Effectively lowers operating temperature and prevents performance throttling. Runs quietly even under long-time heavy load, ensures stable operation all day long. SANOOV RPi 5 4GB kit offer an active cooler, which combines an aluminium heatsink with a high-performance PWM fan. Active cooler is fully compatible with the Pi OS, which can effectively reduce the temperature of RPi5 and ensure its good performance during long-term high load operation
- Sturdy ABS Protective Case: Well-fitted for Raspberry Pi 5 board, can be secured with 4 screws to effectively protect the Pi 5 motherboard from damage, reserves full access to all ports and buttons. SANOOV uses ABS material to produce the case, which has a softer texture and feel. Meanwhile, SANOOV case adopts a layered design for easy disassembly and installation. (Tip: The Case cannot install M.2 HAT Add on Board and Solid State Drive!)
- Wide Application & Full Compatibility: Seamlessly compatible with official OS and mainstream peripheral accessories for Raspberry Pi 5. Whether you are a beginner, student, electronics hobbyist or professional developer, this all-in-one kit meets your diverse needs. It excels in IoT projects, robotics design, retro gaming devices, home media servers and other DIY creations. Backed by a large global community, you can easily find guides, technical support and shared projects online
Make the server survive reboots and updates
For native hosting, run the launcher under a service manager such as your distribution’s system-service facility, using the dedicated account and the same working directory every time. Include the Xvfb setup required by the launcher, and send stdout and stderr to a log location you monitor. Test a stop and restart before inviting players.
For Docker, restart: unless-stopped brings the container back after an ordinary host restart. The two-minute stop_grace_period gives the server time to flush data during a controlled stop. Do not treat automatic restart as a backup strategy: retain independent copies of the data directory and verify that a restored copy actually contains the expected worlds.
Update native files with the SteamCMD command, then stop and restart the server cleanly. For Docker, decide whether to update the image, the mounted server files, or both according to the image’s documented startup behavior. After every update, check the logs, verify the Game ID path and confirm that the expected world is visible before players connect.
Troubleshoot the common failures
SteamCMD cannot download the server
Use the current anonymous sequence, including +app_license_request 1963720, before +app_update:
steamcmd +login anonymous +app_license_request 1963720 +app_update 1963720 validate +quit
Older examples that omit the license request can fail or become stale as the package workflow changes. Also confirm that SteamCMD is running as the account that owns the target directory.
Best Value
- 【What you Get】You will get 1*Pi 5 8GB Single Board,1*RasTech Case,1*Active Cooler,1*Screwdriver,1*Installation instructions,12-month free warranty, lifetime service, 24-hour prompt and friendly response.
- 【More Connectors】There are two USB 3.0 ports(5Gbps simultaneously) and two USB 2.0 ports, which triple total bandwidth ,support any combination of up to two cameras or displays. Peak SD card performance is doubled through support for the SDR104 high-speed mode. It provides a smooth desktop experience for you. Offer Gigabit Ethernet and a PCIe interface, along with dual-band Wi-Fi and Bluetooth 5.0/BLE wireless capability. The RasTech Pi 5 Kit use the new 27W 5.1V 5A USB-C power connector.
- 【 Support Dual 4Kp60 Display 】Each of the two microHDMI sockets can control a 4K display at 60 Hertz, now support HDR, offering super HD video for media streaming projects. RPi 5 is the first RPi model that comes with a PCI Express port (PCIe 2.0 x1 with 500 MB/s) to attach SSDs (requires separate M.2 HAT).
- 【 Excellent Chips And Applications】Pi 5 is a full-size Pi computer using silicon built in-house at Pi. The RP1 “southbridge” provides the bulk of the I/O capabilities for Pi 5. Pi 5 is more friendly and convenient in the development of Internet of Things, Web development, machine identification, automatic control and other electronic equipment applications and network.
- 【 Faster CPU, Better GPU 】 Pi 5 features a Broadcom BCM2712 64-bit quad-core Arm Cortex-A76 processor running at 2.4GHz, it delivers a 2–3× increase in CPU performance relative to RaspberryPi 4. The 800MHz VideoCore VII GPU is compatible to OpenGL ES 3.1 and Vulkan 1.2, substantial uplift in graphics performance. Pi 5 Offers lightning-fast CPU speed, a PCI Express interface, a Real Time Clock (RTC) and a power button and runs significantly cooler than Pi 4.
No GameID.txt appears
Do not invent a Game ID or repeatedly restart without reading the error. For native hosting, inspect CoreKeeperServerLog.txt beside the executable. For Docker, run docker logs core-keeper-dedicated or docker compose logs. Check the working directory, write permissions, data path and whether the process exited during initialization. A container can also be writing the file inside the container while you look in an unrelated host directory; use the documented docker exec command to read the actual path.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Players cannot connect in Direct Connect mode
- Verify that you intentionally set
-portorSERVER_PORT; relay mode does not require the same forwarding steps. - Confirm that the host firewall allows the selected UDP port.
- Forward that exact UDP port from the router to the Linux host’s current private address.
- Check that the configured IP is the correct interface and that the public address has not changed.
- Make sure players are using the current endpoint and that the server process is still listening after a restart.
Worlds disappear after a container update
Check the Compose volume first. The host directory must be mounted to /home/steam/core-keeper-data, and it must be the same directory used before the update. Look for a newly created empty directory caused by a path typo or changed working location. Restore the backed-up worlds only after stopping the container, then start it again and inspect the logs.
An ARM64 deployment behaves unexpectedly
Confirm that the image variant matches the device selected through its documented ARM64_DEVICE setting. The image lists generic ARM64, Raspberry Pi 5, M1 and Ampere Altra variants, but the available material supplies no independent load, player-capacity, thermal or storage-endurance measurements. Keep player expectations conservative, use reliable storage, monitor memory and CPU usage, and test the exact world and mod configuration you plan to run.
A practical first-run checklist
- Create a non-root account and a persistent server directory.
- Install SteamCMD through the distribution-supported method.
- Download AppID
1963720with the current anonymous license-request and update sequence. - Choose native plus Xvfb or Docker Compose.
- Mount or back up the data directory before the first world is valuable.
- Start without a port to use SDR.
- Read
GameID.txtfrom the executable directory or the container path. - Join once, confirm that the world saves, and verify that the worlds directory now exists.
- Only then decide whether Direct Connect, a password, a custom Game ID or a custom player limit is needed.
- Test a clean stop, restart and restore procedure before relying on the server for a long-running group world.
Bottom line
For most Linux hosts, install the free AppID 1963720 package with SteamCMD, run the Linux launcher through Xvfb when the machine is headless, and leave the port unset so Steam Datagram Relay handles connectivity. Docker is the lower-maintenance alternative when you want the runtime packaged, but its server-data volume is non-negotiable. In either deployment, the operational essentials are the same: preserve the data and worlds directories, read the generated Game ID from the correct location, use current launch arguments, and configure UDP forwarding only when you intentionally switch to Direct Connect.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Free tools Windows power users keep installed
One-click scans. No signup required.




