Docker container for hosting a dedicated server for StarRupture. Currently the game server requires an internet connection.
The container has been updated to mitigate a vulnerability in the server manager.
Accessing the in-game server manager is no longer possible. You will need to create or autoload your save games via DSSettings.txt. See Quick Start below.
See https://wiki.starrupture-utilities.com/en/dedicated-server/Vulnerability-Announcement
You can use AlienX's port checker to confirm that your container is safe.
Initial container start -> "data" volume is empty, new files are created in live "server" volume.
:Loop Container shutdown -> Live data is copied to the "data" volume, backup is also created if BACKUP_SETTINGS is 1 Container start (subsequent launches) -> Files in "data" volume folder is copied to live "server" volume (overwriting existing). Goto Loop
If you modify "data" files (Specifically the files mentioned in the Directory Structure diagram below) in the "server" volume, they will be overwritten the next time the server starts.
.
├── data # Volume bind mount
│ ├── Backup # Timestamped snapshots of DSSettings.txt, password files and saves.
│ ├── Config # Synced with server folder on container start / shutdown
│ ├── Logs # Synced with server folder on container start / shutdown
│ ├── SaveGames # Synced with server folder on container start / shutdown
│ ├── DSSettings.txt # Synced with server folder on container start / shutdown
│ ├── Password.json # Synced with server folder on container start / shutdown
│ └── PlayerPassword.json # Synced with server folder on container start / shutdown
└── server # Volume bind mount, populated via SteamCMD with server files.
├── Engine
├── StarRupture
│ └── Saved # Contents synced with data folder on container start & shutdown
│ ├── Config
│ ├── Logs
│ └── SaveGames
├── steamapps
├── DSSettings.txt # Synced with data folder on container start / shutdown
├── Password.json # Synced with data folder on container start / shutdown
└── Playerpassword.json # Synced with data folder on container start / shutdown
- Create a
docker-compose.ymlfile from the example below. - Start the container using
docker compose up -dand then monitor the output usingdocker compose logs -f. - Forward ports on your router/firewall (see
GAME_PORT). Forward UDP only. - The initial
DSSettings.txtis set up to create a new game. If you wish to change the Savegame name from the container default of "MySaveGame", then down the container and modify the newDSSettings.txtand bring the container up again.
See https://wiki.starrupture-utilities.com/en/dedicated-server/configuration
- Launch the StarRupture game client.
- Join your server with your WAN IP (Your WAN ip should be reported in the container logs, assuming api.ipify.org is not blocked by your network level ad blocking system if you have one, like adguard or pihole)
- Press ESC and click the Save button in the menu. This will notify the server to write the save file.
- Disconnect from the server.
- Down the container, then modify
DSSettings.txtlocated in your data volume and change: FROM:
"StartNewGame": "true",
"LoadSavedGame": "false"
TO:
"StartNewGame": "false",
"LoadSavedGame": "true"
- Bring up the container and play your game.
You can set admin and/or player passwords using environment variables in docker-compose.yml.
- On first run, provided the variables
ADMIN_PASSWORDand/orPLAYER_PASSWORDare set, the container will create:Password.json(admin)PlayerPassword.json(players)
- The password variables are only used to create these files unless you force a change. You can remove the variables once your files exist.
- To change passwords for an existing setup:
- Set
ADMIN_PASSWORDand/orPLAYER_PASSWORD - Set the corresponding
FORCE_CHANGE_ADMIN=1and/orFORCE_CHANGE_PLAYER=1, or delete the corresponding json files. - After the files are updated, remove the
ADMIN_PASSWORDandPLAYER_PASSWORDvariables, along with theFORCE_CHANGE_*variables.
- Set
This feature requires internet access - it calls AlienX’s password API at https://starrupture-utilities.com/passwords/. You can also manually create these files via the above link if you prefer.
This container includes DSSettings.txt. Read about it here:
StarRupture Unofficial Wiki
- On initial startup, the container copies a fresh
DSSettings.txtinto/home/steam/starrupture/server. The file will then be copied back to thedatavolume folder on server shutdown.
You can also create the file yourself first in the data volume folder, this file will be copied to the container instead of the fresh copy.
The only way to create a new game now is via the DSSettings.txt. See the Quick Start.
The initial contents are as follows:
{
"SessionName": "MySaveGame",
"SaveGameInterval": "300",
"StartNewGame": "true",
"LoadSavedGame": "false",
"SaveGameName": "AutoSave0.sav"
}{
"SessionName": "SessionNameYouChose",
"SaveGameInterval": "300",
"StartNewGame": "false",
"LoadSavedGame": "true",
"SaveGameName": "AutoSave0.sav"
}If you pull an updated image and SteamCMD loops downloading/verifying the server files, down the container, then:
Option A (recommended): temporary wipe/reinstall via env var
- Set
REMOVE_SERVER_FILES=1in thedocker-compose.ymlfor one launch - Then set it back to
0for the next launch (unless you enjoy reinstalling the server files every time)
Your settings files (DSSettings.txt, Password.json, PlayerPassword.json) and saves are backed up into your settings backup folder.
Option B (manual): manually delete the contents of the server volume.
In the server folder, delete everything. Existing settings will be copied from your data volume.
Start the container again.
If you lost the *Password.json password files:
- Recreate them using the environment variables
ADMIN_PASSWORD,PLAYER_PASSWORD+FORCE_CHANGE_*indocker-compose.yml, or use https://starrupture-utilities.com/passwords/
| Variable | Description | Default |
|---|---|---|
| TZ | Timezone | "UTC" |
| PUID | Numeric user id | "1000" |
| PGID | Numeric group id | "1000" |
| SKIP_UPDATE | Skip updating server files - the update check can take a while and may make container start up much slower. | "0" |
| ENABLE_LOG | Enable server logging | "1" |
| GAME_PORT | Game port (adjust port mapping if needed) | "7777" |
| REMOVE_PDB | Remove large debug symbol file (.pdb > 2GB) |
"1" |
| ADMIN_PASSWORD | Admin/server manager password (first run, or when forced) | "" |
| PLAYER_PASSWORD | Player join password (first run, or when forced) | "" |
| FORCE_CHANGE_ADMIN | Force admin password update (ADMIN_PASSWORD required) |
"0" |
| FORCE_CHANGE_PLAYER | Force player password update (PLAYER_PASSWORD required) |
"0" |
| REMOVE_SERVER_FILES | Wipe server files to recover from update issues | "0" |
| BACKUP_SETTINGS | Backup settings and saved games on shutdown | "1" |
services:
starrupture:
image: rhavinx/starrupture:latest
#image: ghcr.io/rhavinx/starrupture:latest # Alternate location
container_name: starrupture
environment:
TZ: "UTC"
SKIP_UPDATE: "0"
ENABLE_LOG: "1"
GAME_PORT: "7777"
# ADMIN_PASSWORD: ""
# PLAYER_PASSWORD: ""
# FORCE_CHANGE_ADMIN: "0"
# FORCE_CHANGE_PLAYER: "0"
# REMOVE_SERVER_FILES: "0"
# BACKUP_SETTINGS: "1"
volumes:
- /path/to/server:/home/steam/starrupture/server
- /path/to/data:/home/steam/starrupture/data
ports:
- "7777:7777/udp"
# - "7777:7777/tcp" # Removed to mitigate vulnerability
restart: unless-stopped-
14 Feb 2026:
- Remove old warnings from readme and start.sh
-
8 Feb 2026:
- Changes to mitigate: https://wiki.starrupture-utilities.com/en/dedicated-server/Vulnerability-Announcement
- The in-game server manager is now disabled. All configuration must be done via DSSettings.txt.
-
19 Jan 2026:
- Fixed issue with settings backup.
- Fixed issue with server updating via steamcmd. 🤦♂️
- Fix Saved folder ownership in case it changes to root.
-
18 Jan 2026:
- Change ownership of backup directory.
- Re-arrange image sources, using teejo75/steamcmd-wine as base.
- Automate image build and publish to both docker and github (ghcr.io).
- Image will update automatically on the 1st of every month to account for security updates.
- Sorry about all the major changes that have messed with paths and such. The paths and container structure should remain stable for the foreseeable future.
-
17 Jan 2026:
- Refactor the container structure.
- Settings and saves now live in the data folder and will be transferred to the correct locations within the container on startup and synced back on server shutdown.
- Change wine64 call to wine as it is no longer required due to the release of Wine 11 stable.
- Changed DSSettings.txt for better first time use and added info to README.
-
10 Jan 2026:
- Changed base container from official SteamCMD to a custom image
- Added support for creating/changing Password.json and PlayerPassword.json via AlienX’s API
- Added option to remove server files if SteamCMD fails to update
- Added server settings backup on shutdown (enabled by default)
- Improved script output