fix(satisfactory): run the official SteamCMD server instead of wolveix/satisfactory-server
The wolveix image keeps its game files and saves in /config and /home/steam, outside the server volume, so they were lost on every start and the weekly boot test failed. Now: cm2network/steamcmd with Steam app 1690800, HOME=/server, ports 7777/udp+tcp and 8888/tcp, MaxPlayers in Game.ini, -ExternalReliablePort for the public reliable port. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MZxvxViV6QwAtVWT3saGvs
This commit is contained in:
1 parent
1fcf05cc27
commit
b9d445c57d
1 file changed
+48
-166
@@ -1,165 +1,62 @@
|
|||||||
# yaml-language-server: $schema=../../schema/game.schema.json
|
# yaml-language-server: $schema=../../schema/game.schema.json
|
||||||
|
# The official dedicated server (Steam app 1690800), installed by the node with anonymous SteamCMD.
|
||||||
|
# Satisfactory keeps its saves under $HOME/.config/Epic/FactoryGame, so HOME is pointed at the server
|
||||||
|
# volume; otherwise they would land in /home/steam and be lost on the next start.
|
||||||
id: satisfactory-vanilla-stable
|
id: satisfactory-vanilla-stable
|
||||||
name: Satisfactory (Vanilla Stable)
|
name: Satisfactory
|
||||||
defaultDockerImage: wolveix/satisfactory-server:latest
|
defaultDockerImage: cm2network/steamcmd
|
||||||
|
defaultStartupCommand: >-
|
||||||
|
export HOME=/server;
|
||||||
|
mkdir -p "$HOME/.steam/sdk64";
|
||||||
|
cp -f /home/steam/steamcmd/linux64/steamclient.so "$HOME/.steam/sdk64/" 2>/dev/null;
|
||||||
|
exec ./FactoryServer.sh -Port=7777 -ReliablePort=8888 -ExternalReliablePort="${EXTERNAL_RELIABLE_PORT:-8888}" -log -unattended
|
||||||
requiredMemoryMb: 8192
|
requiredMemoryMb: 8192
|
||||||
requiredDiskMb: 16384
|
requiredDiskMb: 20480
|
||||||
defaultPorts:
|
defaultPorts:
|
||||||
- 7777/tcp
|
|
||||||
- 7777/udp
|
- 7777/udp
|
||||||
|
- 7777/tcp
|
||||||
- 8888/tcp
|
- 8888/tcp
|
||||||
installMethod: NONE
|
installMethod: STEAMCMD
|
||||||
|
installConfig:
|
||||||
|
appId: "1690800"
|
||||||
defaultConfig:
|
defaultConfig:
|
||||||
AUTOSAVENUM: 5
|
MaxPlayers: 4
|
||||||
DEBUG: false
|
ExternalReliablePort: '{PUBLIC_PORT_8888}'
|
||||||
DISABLESEASONALEVENTS: false
|
|
||||||
LOG: false
|
|
||||||
MAXOBJECTS: 2162688
|
|
||||||
MAXPLAYERS: 4
|
|
||||||
MAXTICKRATE: 30
|
|
||||||
MULTIHOME: '::'
|
|
||||||
PGID: 1000
|
|
||||||
PUID: 1000
|
|
||||||
SERVERGAMEPORT: 7777
|
|
||||||
SERVERMESSAGINGPORT: 8888
|
|
||||||
SERVERSTREAMING: true
|
|
||||||
SKIPUPDATE: false
|
|
||||||
STEAMBETA: false
|
|
||||||
STEAMBETAID: ""
|
|
||||||
STEAMBETAKEY: ""
|
|
||||||
TIMEOUT: 30
|
|
||||||
VMOVERRIDE: false
|
|
||||||
configSchema:
|
configSchema:
|
||||||
$schema: http://json-schema.org/draft-07/schema#
|
$schema: http://json-schema.org/draft-07/schema#
|
||||||
properties:
|
|
||||||
AUTOSAVENUM:
|
|
||||||
category: World & Environment
|
|
||||||
default: 5
|
|
||||||
description: The number of rotating autosave files to keep in the save folder.
|
|
||||||
title: Autosave Rotation Count
|
|
||||||
type: integer
|
|
||||||
DEBUG:
|
|
||||||
category: System & General
|
|
||||||
default: false
|
|
||||||
description: Prints diagnostic environment and system details on startup, then stops.
|
|
||||||
title: Debug Mode
|
|
||||||
type: boolean
|
|
||||||
DISABLESEASONALEVENTS:
|
|
||||||
category: Gameplay & Rules
|
|
||||||
default: false
|
|
||||||
description: Disables seasonal in-game events such as FICSMAS holiday events.
|
|
||||||
title: Disable Seasonal Events
|
|
||||||
type: boolean
|
|
||||||
LOG:
|
|
||||||
category: System & General
|
|
||||||
default: false
|
|
||||||
description: Disables automatic pruning of previous Satisfactory server log files on container startup.
|
|
||||||
title: Retain Old Logs
|
|
||||||
type: boolean
|
|
||||||
MAXOBJECTS:
|
|
||||||
category: World & Environment
|
|
||||||
default: 2162688
|
|
||||||
description: Unreal Engine garbage collector UObject limit to support large late-game factories.
|
|
||||||
title: Max Objects Limit
|
|
||||||
type: integer
|
|
||||||
MAXPLAYERS:
|
|
||||||
category: System & General
|
|
||||||
default: 4
|
|
||||||
description: Sets the maximum number of concurrent players allowed on the server.
|
|
||||||
title: Max Players
|
|
||||||
type: integer
|
|
||||||
MAXTICKRATE:
|
|
||||||
category: System & General
|
|
||||||
default: 30
|
|
||||||
description: Sets the maximum simulation tick rate for the server in Hz.
|
|
||||||
title: Max Tick Rate
|
|
||||||
type: integer
|
|
||||||
MULTIHOME:
|
|
||||||
category: System & General
|
|
||||||
default: '::'
|
|
||||||
description: 'Network interface binding IP address (defaults to :: for dual-stack IPv4/IPv6).'
|
|
||||||
title: Multihome Address
|
|
||||||
type: string
|
|
||||||
PGID:
|
|
||||||
category: System & General
|
|
||||||
default: 1000
|
|
||||||
description: Sets the Linux group ID under which the dedicated server process runs.
|
|
||||||
title: Process Group ID
|
|
||||||
type: integer
|
|
||||||
PUID:
|
|
||||||
category: System & General
|
|
||||||
default: 1000
|
|
||||||
description: Sets the Linux user ID under which the dedicated server process runs.
|
|
||||||
title: Process User ID
|
|
||||||
type: integer
|
|
||||||
SERVERGAMEPORT:
|
|
||||||
category: System & General
|
|
||||||
default: 7777
|
|
||||||
description: Primary game port for UDP and TCP network communication.
|
|
||||||
title: Server Game Port
|
|
||||||
type: integer
|
|
||||||
SERVERMESSAGINGPORT:
|
|
||||||
category: System & General
|
|
||||||
default: 8888
|
|
||||||
description: Port used for reliable server messaging and beacon network traffic.
|
|
||||||
title: Server Messaging Port
|
|
||||||
type: integer
|
|
||||||
SERVERSTREAMING:
|
|
||||||
category: System & General
|
|
||||||
default: true
|
|
||||||
description: Toggles whether the game server utilizes Unreal Engine World Partition asset streaming.
|
|
||||||
title: Server Streaming
|
|
||||||
type: boolean
|
|
||||||
SKIPUPDATE:
|
|
||||||
category: System & General
|
|
||||||
default: false
|
|
||||||
description: Skips automatic SteamCMD game file update checks on container startup.
|
|
||||||
title: Skip Update
|
|
||||||
type: boolean
|
|
||||||
STEAMBETA:
|
|
||||||
category: System & General
|
|
||||||
default: false
|
|
||||||
description: When enabled, updates and runs the Experimental branch instead of the stable release.
|
|
||||||
title: Steam Beta Branch
|
|
||||||
type: boolean
|
|
||||||
STEAMBETAID:
|
|
||||||
category: System & General
|
|
||||||
default: ""
|
|
||||||
description: Specific beta branch identifier to download via SteamCMD.
|
|
||||||
title: Steam Beta Branch Name
|
|
||||||
type: string
|
|
||||||
STEAMBETAKEY:
|
|
||||||
category: Security & Access
|
|
||||||
default: ""
|
|
||||||
description: Password required to access a private Steam beta branch.
|
|
||||||
title: Steam Beta Password
|
|
||||||
type: string
|
|
||||||
TIMEOUT:
|
|
||||||
category: System & General
|
|
||||||
default: 30
|
|
||||||
description: Client network connection timeout threshold in seconds.
|
|
||||||
title: Connection Timeout
|
|
||||||
type: integer
|
|
||||||
VMOVERRIDE:
|
|
||||||
category: System & General
|
|
||||||
default: false
|
|
||||||
description: Skips CPU model checking on hypervisors to prevent crash warnings on KVM/QEMU hosts.
|
|
||||||
title: VM CPU Check Override
|
|
||||||
type: boolean
|
|
||||||
required: []
|
|
||||||
type: object
|
type: object
|
||||||
configFileFormat: INI
|
properties:
|
||||||
|
MaxPlayers:
|
||||||
|
title: Max Players
|
||||||
|
description: How many players can be on the server at once. Set by your plan.
|
||||||
|
type: integer
|
||||||
|
category: Gameplay & Rules
|
||||||
|
default: 4
|
||||||
|
ExternalReliablePort:
|
||||||
|
title: Reliable Messaging Port (public)
|
||||||
|
description: The port players' games use for reliable messaging. Filled in for you; only change it if you know you need to.
|
||||||
|
type: string
|
||||||
|
category: System & General
|
||||||
|
default: '{PUBLIC_PORT_8888}'
|
||||||
|
required: []
|
||||||
|
configFilePath: FactoryGame/Saved/Config/LinuxServer/Game.ini
|
||||||
|
configFileFormat: STANDARD
|
||||||
configFormatOptions:
|
configFormatOptions:
|
||||||
assignment: =
|
header: |
|
||||||
falseValue: "false"
|
[/Script/Engine.GameSession]
|
||||||
footer: ""
|
footer: "\n"
|
||||||
header: ""
|
|
||||||
quoteStrings: false
|
|
||||||
separator: "\n"
|
separator: "\n"
|
||||||
trueValue: "true"
|
assignment: '='
|
||||||
unquotedKeys: []
|
quoteStrings: false
|
||||||
|
trueValue: "True"
|
||||||
|
falseValue: "False"
|
||||||
uppercaseKeys: false
|
uppercaseKeys: false
|
||||||
|
maxPlayersConfigKey: MaxPlayers
|
||||||
|
logFilePath: FactoryGame/Saved/Logs/FactoryGame.log
|
||||||
agnosticCommandConfig:
|
agnosticCommandConfig:
|
||||||
|
queryType: LOG_ONLY
|
||||||
|
playerJoinRegex: 'LogNet: Join succeeded: ([^\r\n]+)'
|
||||||
|
playerLeaveRegex: 'UNetConnection::Close:.*?\[PlayerName:\s*([^\]]+)\]'
|
||||||
actions:
|
actions:
|
||||||
Ban:
|
Ban:
|
||||||
type: UNSUPPORTED
|
type: UNSUPPORTED
|
||||||
@@ -169,22 +66,7 @@ agnosticCommandConfig:
|
|||||||
type: UNSUPPORTED
|
type: UNSUPPORTED
|
||||||
Save:
|
Save:
|
||||||
type: UNSUPPORTED
|
type: UNSUPPORTED
|
||||||
pingPort: null
|
|
||||||
pingPortKey: null
|
|
||||||
playerJoinRegex: '.*Join succeeded: (\S+).*'
|
|
||||||
playerLeaveRegex: .*UNetConnection::Close:.*?\[PlayerName:\s*([^\]]+)\].*
|
|
||||||
playersCommand: null
|
|
||||||
playersFormat: null
|
|
||||||
playersRegex: null
|
|
||||||
queryPortKey: null
|
|
||||||
queryType: LOG_ONLY
|
|
||||||
rconPasswordKey: null
|
|
||||||
rconPortKey: null
|
|
||||||
restEndpoint: null
|
|
||||||
restPasswordKey: null
|
|
||||||
restPortKey: null
|
|
||||||
restUser: null
|
|
||||||
backupPaths:
|
backupPaths:
|
||||||
- saved
|
- .config/Epic/FactoryGame/Saved/SaveGames
|
||||||
maxBackupSizeMb: 1024
|
- FactoryGame/Saved/Config
|
||||||
maxPlayersConfigKey: MAXPLAYERS
|
maxBackupSizeMb: 2048
|
||||||
Reference in new issue
Block a user