Rust Dedicated Game Server - Docker Image and Helm chart
This Docker image provides a Rust dedicated game server. You will find here also a Helm Chart for running a Rust dedicated server on Kubernetes container orchestration system.
Facepunch releases an update for Rust monthly every first Thursday. Also, there are irregular updates every now and then. Each update requires players and servers to update their versions of the game.
Therefore, an automation checks the Rust release branch every
night. If a new release was published by Facepunch, a new Docker image will be built with this
new version. Just use the latest tag and you will always have an up-to-date Docker image.
Kudus to:
- @jonakoudijs for providing the Steamcmd Docker image which is used here
- @detiam for maintaining a working fork for the Steam websocket client
Docker Hub: https://hub.docker.com/r/pfeiffermax/rust-game-server
GitHub Repository: https://github.com/max-pfeiffer/rust-game-server-docker
IMPORTANT CHANGE SINCE V2.0.0 (build-21954779, 18.2.2026)
Since image version V2.0.0 the application is run with an unprivileged user and not with root user anymore. This was done to improve the security of this image. If you were persisting server identity with a Volume and start the Rust dedicated server using the new image (like in the docker compose examples), you will encounter problems starting your server. This happens because root user still owns the files in that Volume and the new unprivileged user doesn't have permissions to access these files.
If you are using docker compose you need to update your docker-compose.yaml with the
init-container from the example.
This init container will adjust the file permissions in your Volume.
First stop and remove the containers then recreate and start them:
docker compose up -d
If you are using Docker and a Volume, please adjust the file ownership
in your rust-server container manually with this command:
Please restart the Docker container afterwards. Your server should start up just fine.
If you are using the Helm chart for running the Rust dedicated server on Kubernetes, just upgrade your Helm release
using chart version v2.4.0 or newer. This version contains an init container which adjusts the Volumes file system
permissions and sets the correct fsGroup for the Pod security context.
Oxide
Since v1.1.0 I provide an Oxide variant of this image. The automation checks for a new Oxide release on GitHub every night and builds a new image based on the latest version of my Rust Docker image.
The tag of these images is prefixed with oxide-build. So look out for these
tags on Docker Hub if you want to run Rust with Oxide.
There is also a latest-oxide tag, so you can use this to always run an up-to-date Docker image with Oxide.
This image aims to be a solid base to run any plugin. So please drop me a line if you are missing any Debian package for a plugin.
Rust Websocket Rcon
If you want to connect to Rust server console or want to check on the server statistics, check out my Rust Websocket Rcon client companion project. I provide a Docker container with Facepunch's websocket Rcon client. This is already integrated in the docker compose examples.
Usage
Configuration
You can append all server configuration options as commands
when running RustDedicated binary. Use the regular syntax like +server.ip 0.0.0.0 or -logfile.
As the Rust server is running in the Docker container as a stateless application, you want to have all stateful server
data (map, config, blueprints, etc.) stored in a Docker Volume
which is persisted outside of the container. This can be configured with +server.identity: you can specify the
directory where this data is stored. You need to make sure that this directory is mounted on
a Docker Volume.
This is especially important because you need to update the Rust server Docker image every month when Facepunch
releases a new software update. When you use a Docker volume to store
the +server.identity, all the data is still intact.
Check out the docker compose and the docker compose production examples to learn about the details.
Docker Run
For testing purposes, you can fire up a Docker container like this:
Docker Compose
With docker compose you have your own Rust server up and running in no-time. For this, just clone this repo (or just copy and paste the compose.yaml file to your machine) and run the server with Docker compose like this:
cd rust-game-server-docker/examples/docker-compose
docker compose up
You can also run the Rust server in the background with option -d:
And show the logs, option -f follows the logs:
Rust Websocket Rcon
When spinning up the containers with Docker compose, an instance of the Rust Websocket RCon client is started as well.
If you want to connect to Rust server console or want to check on the server statistics, point your web browser to: http://localhost
Then enter the address of your server and the Rcon password in the web interface.
Production Deployment
If you want to deploy to a production (Linux) server, have a look at the docker compose production example documentation.
Helm chart
If you would like to run the Rust server in your Kubernetes cluster, I provide a Helm chart you could use: https://max-pfeiffer.github.io/rust-game-server-docker
There is also documentation available for that Helm chart.
If you want to run your Rust server on bare metal Kubernetes, check out my blog article on how to do that using kube-vip.