-
Notifications
You must be signed in to change notification settings - Fork 56
Description
This is a dupe of this issue: GameServerManagers/LinuxGSM#4816
I switched to generic LinuxGSM after having the same problem with this image. I figured I'd duplicate it here in case someone here knows anything.
Further information
I am attempting to run 7 days to die on my server, but clients on the LAN are unable to connect (I haven't tried internet clients yet). What's weird is that I can successfully connect to the telnet and web server for the game from clients on the LAN, and the first time that a game client tries to connect I can see UDP packets flowing on the game port - but ultimately the client fails with "unable to retrieve server information". I do not have a firewall on the server whatsoever - and I've had 7days to die running on this server (same ports) successfully in the past with an older docker image. I also have many other game servers running successfully. The server is a 32 core AMD EPYC 7502P with 128GB of RAM. The server has plenty of resources, it's just a server for my home that runs various daemons and game servers for my kids and their friends.
Here's the docker compose:
7dtdserver:
image: gameservermanagers/gameserver:sdtd
environment:
- UID=${SEVEN_DAYS_TO_DIE_UID}
- GID=${SEVEN_DAYS_TO_DIE_GID}
- STEAM_USERID=${SEVEN_DAYS_TO_DIE_UID}
- STEAM_GROUPID=${SEVEN_DAYS_TO_DIE_GID}
- USERID=${SEVEN_DAYS_TO_DIE_UID}
- GROUPID=${SEVEN_DAYS_TO_DIE_GID}
- SERVER_IP=0.0.0.0
- SERVER_PORT=26900
- GAME_PORT=26900
- QUERY_PORT=26900
volumes:
- /storage/docker/7dtdserver:/data # 7 Days To Die world saves
ports:
- ${SEVEN_DAYS_TO_DIE_IP}:26900:26900/tcp # Default game ports
- ${SEVEN_DAYS_TO_DIE_IP}:26900:26900/udp # Default game ports
- ${SEVEN_DAYS_TO_DIE_IP}:26901:26901/udp # Default game ports
- ${SEVEN_DAYS_TO_DIE_IP}:26902:26902/udp # Default game ports
- ${SEVEN_DAYS_TO_DIE_IP}:8080:8080/tcp # OPTIONAL - WEBADMIN
- ${SEVEN_DAYS_TO_DIE_IP}:8081:8081/tcp # OPTIONAL - TELNET
- ${SEVEN_DAYS_TO_DIE_IP}:8082:8082/tcp # OPTIONAL - WEBSERVER https://7dtd.illy.bz/wiki/Server%20fixes
restart: unless-stopped # INFO - NEVER USE WITH START_MODE=4 or START_MODE=0
Here's my network config:
network:
version: 2
renderer: networkd
ethernets:
enp65s0f1:
dhcp4: false
dhcp6: false
addresses:
- 192.168.86.20/24
- 192.168.86.21/24
- 192.168.86.22/24
- 192.168.86.23/24
- 192.168.86.24/24
- 192.168.86.25/24
- 192.168.86.26/24
- 192.168.86.27/24
- 192.168.86.28/24
- 192.168.86.29/24
- 192.168.86.30/24
- 192.168.86.31/24
- 192.168.86.32/24
- 192.168.86.33/24
- 192.168.86.34/24
- 192.168.86.35/24
- 192.168.86.36/24
- 192.168.86.37/24
- 192.168.86.38/24
routes:
- to: default
via: 192.168.86.1
nameservers:
addresses: [192.168.86.1]
optional: true
And the server config xml:
<?xml version="1.0"?>
<ServerSettings>
<!-- GENERAL SERVER SETTINGS -->
<!-- Server representation -->
<property name="ServerName" value="7 days to die server"/> <!-- Whatever you want the name of the server to be. -->
<property name="ServerDescription" value="Hello frienz"/> <!-- Whatever you want the server description to be, will be shown in the server browser. -->
<property name="ServerWebsiteURL" value=""/> <!-- Website URL for the server, will be shown in the server browser as a clickable link -->
<property name="ServerPassword" value=""/> <!-- Password to gain entry to the server -->
<property name="ServerLoginConfirmationText" value=""/> <!-- If set the user will see the message during joining the server and has to confirm it before continuing. For more complex changes to this window you can change the "serverjoinrulesdialog" window in XUi -->
<property name="Region" value="NorthAmericaWest"/> <!-- The region this server is in. Values: NorthAmericaEast, NorthAmericaWest, CentralAmerica, SouthAmerica, Europe, Russia, Asia, MiddleEast, Africa, Oceania -->
<property name="Language" value="English"/> <!-- Primary language for players on this server. Values: Use any language name that you would users expect to search for. Should be the English name of the language, e.g. not "Deutsch" but "German" -->
<!-- Networking -->
<property name="ServerPort" value="26900"/> <!-- Port you want the server to listen on. Keep it in the ranges 26900 to 26905 or 27015 to 27020 if you want PCs on the same LAN to find it as a LAN server. -->
<property name="ServerVisibility" value="2"/> <!-- Visibility of this server: 2 = public, 1 = only shown to friends, 0 = not listed. As you are never friend of a dedicated server setting this to "1" will only work when the first player connects manually by IP. -->
<property name="ServerDisabledNetworkProtocols" value="SteamNetworking"/> <!-- Networking protocols that should not be used. Separated by comma. Possible values: LiteNetLib, SteamNetworking. Dedicated servers should disable SteamNetworking if there is no NAT router in between your users and the server or when port-forwarding is set up correctly -->
<property name="ServerMaxWorldTransferSpeedKiBs" value="512"/> <!-- Maximum (!) speed in kiB/s the world is transferred at to a client on first connect if it does not have the world yet. Maximum is about 1300 kiB/s, even if you set a higher value. -->
<!-- Slots -->
<property name="ServerMaxPlayerCount" value="8"/> <!-- Maximum Concurrent Players -->
<property name="ServerReservedSlots" value="0"/> <!-- Out of the MaxPlayerCount this many slots can only be used by players with a specific permission level -->
<property name="ServerReservedSlotsPermission" value="100"/> <!-- Required permission level to use reserved slots above -->
<property name="ServerAdminSlots" value="0"/> <!-- This many admins can still join even if the server has reached MaxPlayerCount -->
<property name="ServerAdminSlotsPermission" value="0"/> <!-- Required permission level to use the admin slots above -->
<!-- Admin interfaces -->
<property name="WebDashboardEnabled" value="true"/> <!-- Enable/disable the web dashboard -->
<property name="WebDashboardPort" value="8080"/> <!-- Port of the web dashboard -->
<property name="WebDashboardUrl" value=""/> <!-- External URL to the web dashboard if not just using the public IP of the server, e.g. if the web dashboard is behind a reverse proxy. Needs to be the full URL, like "https://domainOfReverseProxy.tld:1234/". Can be left empty if directly using the public IP and dashboard port -->
<property name="EnableMapRendering" value="false"/> <!-- Enable/disable rendering of the map to tile images while exploring it. This is used e.g. by the web dashboard to display a view of the map. -->
<property name="TelnetEnabled" value="true"/> <!-- Enable/Disable the telnet -->
<property name="TelnetPort" value="8081"/> <!-- Port of the telnet server -->
<property name="TelnetPassword" value="XXX"/> <!-- Password to gain entry to telnet interface. If no password is set the server will only listen on the local loopback interface -->
<property name="TelnetFailedLoginLimit" value="10"/> <!-- After this many wrong passwords from a single remote client the client will be blocked from connecting to the Telnet interface -->
<property name="TelnetFailedLoginsBlocktime" value="10"/> <!-- How long will the block persist (in seconds) -->
<property name="TerminalWindowEnabled" value="true"/> <!-- Show a terminal window for log output / command input (Windows only) -->
<!-- Folder and file locations -->
<property name="AdminFileName" value="serveradmin.xml"/> <!-- Server admin file name. Path relative to UserDataFolder/Saves -->
<!-- <property name="UserDataFolder" value="absolute_path"/> --> <!-- Use this to override where the server stores all user data, including RWG generated worlds and saves. Do not forget to uncomment the entry! -->
<!-- Other technical settings -->
<property name="ServerAllowCrossplay" value="false"/> <!-- Enables/Disables crossplay, crossplay servers will only be found in searches and joinable if sanctions are not ignored, and have a default or fewer player slot count -->
<property name="EACEnabled" value="true"/> <!-- Enables/Disables EasyAntiCheat -->
<property name="IgnoreEOSSanctions" value="false"/> <!-- Ignore EOS sanctions when allowing players to join -->
<property name="HideCommandExecutionLog" value="0"/> <!-- Hide logging of command execution. 0 = show everything, 1 = hide only from Telnet/ControlPanel, 2 = also hide from remote game clients, 3 = hide everything -->
<property name="MaxUncoveredMapChunksPerPlayer" value="131072"/> <!-- Override how many chunks can be uncovered on the in-game map by each player. Resulting max map file size limit per player is (x * 512 Bytes), uncovered area is (x * 256 m²). Default 131072 means max 32 km² can be uncovered at any time -->
<property name="PersistentPlayerProfiles" value="false"/> <!-- If disabled a player can join with any selected profile. If true they will join with the last profile they joined with -->
<property name="MaxChunkAge" value="-1"/> <!-- The number of in-game days which must pass since visiting a chunk before it will reset to its original state if not revisited or protected (e.g. by a land claim or bedroll being in close proximity). -->
<property name="SaveDataLimit" value="-1"/> <!-- The maximum disk space allowance for each saved game in megabytes (MB). Saved chunks may be forcibly reset to their original states to free up space when this limit is reached. Negative values disable the limit. -->
<!-- GAMEPLAY -->
<!-- World -->
<property name="GameWorld" value="Navezgane"/> <!-- "RWG" (see WorldGenSeed and WorldGenSize options below) or any already existing world name in the Worlds folder (currently shipping with e.g. "Navezgane", "Pregen06k01", "Pregen06k02", "Pregen08k01", "Pregen08k02", ...) -->
<property name="WorldGenSeed" value="7Daysw00t"/> <!-- If RWG this is the seed for the generation of the new world. If a world with the resulting name already exists it will simply load it -->
<property name="WorldGenSize" value="6144"/> <!-- If RWG, this controls the width and height of the created world. Officially supported sizes are between 6144 and 10240 and must be a multiple of 2048, e.g. 6144, 8192, 10240. -->
<property name="GameName" value="MyGame"/> <!-- Whatever you want the game name to be (allowed [A-Za-z0-9_-. ]). This affects the save game name as well as the seed used when placing decoration (trees etc.) in the world. It does not control the generic layout of the world if creating an RWG world -->
<property name="GameMode" value="GameModeSurvival"/> <!-- GameModeSurvival -->
<!-- Difficulty -->
<property name="GameDifficulty" value="1"/> <!-- 0 - 5, 0=easiest, 5=hardest -->
<property name="BlockDamagePlayer" value="100"/> <!-- How much damage do players to blocks (percentage in whole numbers) -->
<property name="BlockDamageAI" value="100"/> <!-- How much damage do AIs to blocks (percentage in whole numbers) -->
<property name="BlockDamageAIBM" value="100"/> <!-- How much damage do AIs during blood moons to blocks (percentage in whole numbers) -->
<property name="XPMultiplier" value="100"/> <!-- XP gain multiplier (percentage in whole numbers) -->
<property name="PlayerSafeZoneLevel" value="5"/> <!-- If a player is less or equal this level he will create a safe zone (no enemies) when spawned -->
<property name="PlayerSafeZoneHours" value="5"/> <!-- Hours in world time this safe zone exists -->
<!-- Game Rules -->
<property name="BuildCreate" value="false"/> <!-- cheat mode on/off -->
<property name="DayNightLength" value="60"/> <!-- real time minutes per in game day: 60 minutes -->
<property name="DayLightLength" value="18"/> <!-- in game hours the sun shines per day: 18 hours day light per in game day -->
<property name="BiomeProgression" value="true"/> <!-- Enables biome hazards and loot stage caps to promote biome progression. Loot stage caps are increased by completing biome challenges. -->
<property name="StormFreq" value="100"/> <!-- Adjusts the frequency of storms. 0% turns them off. Vanilla values: 0, 50, 100, 150, 200, 300, 400, 500 -->
<property name="DeathPenalty" value="1"/> <!-- Penalty after dying. 0 = Nothing. 1 = Default: Classic XP Penalty. 2 = Injured: You keep most of your de-buffs. Food and Water is set to 50% on respawn. 3 = Permanent Death: Your character is completely reset. You will respawn with a fresh start within the saved game. -->
<property name="DropOnDeath" value="1"/> <!-- 0 = nothing, 1 = everything, 2 = toolbelt only, 3 = backpack only, 4 = delete all -->
<property name="DropOnQuit" value="0"/> <!-- 0 = nothing, 1 = everything, 2 = toolbelt only, 3 = backpack only -->
<property name="BedrollDeadZoneSize" value="15"/> <!-- Size (box "radius", so a box with 2 times the given value for each side's length) of bedroll dead zone, no zombies will spawn inside this area, and any cleared sleeper volumes that touch a bedroll deadzone will not spawn after they've been cleared. -->
<property name="BedrollExpiryTime" value="45"/> <!-- Number of real world days a bedroll stays active after owner was last online -->
<property name="AllowSpawnNearFriend" value="2"/> <!-- Can new players joining the server for the first time select to join near any friend playing at the same time? 0 = Disabled, 1 = Always, 2 = Only near friends in forest biome -->
<!-- Performance related -->
<property name="MaxSpawnedZombies" value="64" /> <!-- This setting covers the entire map. There can only be this many zombies on the entire map at one time. Changing this setting has a huge impact on performance. -->
<property name="MaxSpawnedAnimals" value="50" /> <!-- If your server has a large number of players you can increase this limit to add more wildlife. Animals don't consume as much CPU as zombies. NOTE: That this doesn't cause more animals to spawn arbitrarily: The biome spawning system only spawns a certain number of animals in a given area, but if you have lots of players that are all spread out then you may be hitting the limit and can increase it. -->
<property name="ServerMaxAllowedViewDistance" value="12" /> <!-- Max view distance a client may request (6 - 12). High impact on memory usage and performance. -->
<property name="MaxQueuedMeshLayers" value="1000" /> <!-- Maximum amount of Chunk mesh layers that can be enqueued during mesh generation. Reducing this will improve memory usage but may increase Chunk generation time -->
<!-- Zombie settings -->
<property name="EnemySpawnMode" value="true"/> <!-- Enable/Disable enemy spawning -->
<property name="EnemyDifficulty" value="0"/> <!-- 0 = Normal, 1 = Feral -->
<property name="ZombieFeralSense" value="0"/> <!-- 0-3 (Off, Day, Night, All) -->
<property name="ZombieMove" value="0"/> <!-- 0-4 (walk, jog, run, sprint, nightmare) -->
<property name="ZombieMoveNight" value="3"/> <!-- 0-4 (walk, jog, run, sprint, nightmare) -->
<property name="ZombieFeralMove" value="3"/> <!-- 0-4 (walk, jog, run, sprint, nightmare) -->
<property name="ZombieBMMove" value="3"/> <!-- 0-4 (walk, jog, run, sprint, nightmare) -->
<property name="BloodMoonFrequency" value="7"/> <!-- What frequency (in days) should a blood moon take place. Set to "0" for no blood moons -->
<property name="BloodMoonRange" value="0"/> <!-- How many days can the actual blood moon day randomly deviate from the above setting. Setting this to 0 makes blood moons happen exactly each Nth day as specified in BloodMoonFrequency -->
<property name="BloodMoonWarning" value="8"/> <!-- The Hour number that the red day number begins on a blood moon day. Setting this to -1 makes the red never show. -->
<property name="BloodMoonEnemyCount" value="8"/> <!-- This is the number of zombies that can be alive (spawned at the same time) at any time PER PLAYER during a blood moon horde, however, MaxSpawnedZombies overrides this number in multiplayer games. Also note that your game stage sets the max number of zombies PER PARTY. Low game stage values can result in lower number of zombies than the BloodMoonEnemyCount setting. Changing this setting has a huge impact on performance. -->
<!-- Loot -->
<property name="LootAbundance" value="200"/> <!-- percentage in whole numbers -->
<property name="LootRespawnDays" value="3"/> <!-- days in whole numbers -->
<property name="AirDropFrequency" value="72"/> <!-- How often airdrop occur in game-hours, 0 == never -->
<property name="AirDropMarker" value="true"/> <!-- Sets if a marker is added to map/compass for air drops. -->
<!-- Multiplayer -->
<property name="PartySharedKillRange" value="100"/> <!-- The distance you must be within to receive party shared kill XP and quest party kill objective credit. -->
<property name="PlayerKillingMode" value="3"/> <!-- Player Killing Settings (0 = No Killing, 1 = Kill Allies Only, 2 = Kill Strangers Only, 3 = Kill Everyone) -->
<!-- Land claim options -->
<property name="LandClaimCount" value="5"/> <!-- Maximum allowed land claims per player. -->
<property name="LandClaimSize" value="41"/> <!-- Size in blocks that is protected by a keystone -->
<property name="LandClaimDeadZone" value="30"/> <!-- Keystones must be this many blocks apart (unless you are friends with the other player) -->
<property name="LandClaimExpiryTime" value="7"/> <!-- The number of real world days a player can be offline before their claims expire and are no longer protected -->
<property name="LandClaimDecayMode" value="0"/> <!-- Controls how offline players land claims decay. 0=Slow (Linear) , 1=Fast (Exponential), 2=None (Full protection until claim is expired). -->
<property name="LandClaimOnlineDurabilityModifier" value="4"/> <!-- How much protected claim area block hardness is increased when a player is online. 0 means infinite (no damage will ever be taken). Default is 4x -->
<property name="LandClaimOfflineDurabilityModifier" value="4"/> <!-- How much protected claim area block hardness is increased when a player is offline. 0 means infinite (no damage will ever be taken). Default is 4x -->
<property name="LandClaimOfflineDelay" value="0"/> <!-- The number of minutes after a player logs out that the land claim area hardness transitions from online to offline. Default is 0 -->
<property name="DynamicMeshEnabled" value="true"/> <!-- Is Dynamic Mesh system enabled -->
<property name="DynamicMeshLandClaimOnly" value="true"/> <!-- Is Dynamic Mesh system only active in player LCB areas -->
<property name="DynamicMeshLandClaimBuffer" value="3"/> <!-- Dynamic Mesh LCB chunk radius -->
<property name="DynamicMeshMaxItemCache" value="3"/> <!-- How many items can be processed concurrently, higher values use more RAM -->
<property name="TwitchServerPermission" value="90"/> <!-- Required permission level to use twitch integration on the server -->
<property name="TwitchBloodMoonAllowed" value="false"/> <!-- If the server allows twitch actions during a blood moon. This could cause server lag with extra zombies being spawned during blood moon. -->
<property name="QuestProgressionDailyLimit" value="4"/> <!-- Limits the number of quests that contribute to quest tier progression a player can complete each day. Quests after the limit can still be completed for rewards. -->
<!-- There are several game settings that you cannot change when starting a new game. -->
<!-- You can use console commands to change at least some of them in-game. -->
<!-- setgamepref BedrollDeadZoneSize 30 -->
</ServerSettings>
And my sdtdserver.cfg:
##################################
####### Instance Settings ########
##################################
# PLACE INSTANCE SETTINGS HERE
## These settings will apply to a specific instance.
ip="0.0.0.0"
querymode="2"
querytype="sdtd"
queryport="26900"
Relevant log output
for Update sdtdserver
=================================
[ .... ] Updating sdtdserver:
Installing Gamedig
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 746 100 746 0 0 13005 0 --:--:-- --:--:-- --:--:-- 13087
npm warn deprecated event-to-promise@0.7.0: Use promise-toolbox/fromEvent instead
npm warn deprecated mvdan-sh@0.10.1: See https://github.com/mvdan/sh/issues/1145
added 60 packages, and audited 61 packages in 1s
18 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
[ OK ] Updating sdtdserver: Checking for update: SteamCMD
No update available
* Local build: 19449443
* Remote build: 19449443
* Branch: public
https://steamdb.info/app/294420/history
Starting sdtdserver
=================================
[ OK ] Starting sdtdserver: 7 days to Die
Distro Details
================================================================================
Date: Sun Aug 31 01:35:23 AM UTC 2025
Distro: Ubuntu 24.04.2 LTS
Arch: x86_64
Kernel: 5.15.0-139-generic
Hostname: ef6d2aea488a
Environment: docker
Uptime: 120d, 20h, 2m
tmux: 3.4
glibc: 2.39
Server Resource
================================================================================
CPU
Model: AMD EPYC 7502P 32-Core Processor
Cores: 64
Frequency: 2200.000MHz
Avg Load: 4.12, 2.74, 2.47
Memory
Mem: total used free cached available
Physical: 126GB 14GB 112GB 106GB 112GB
Swap: 0B 0B 0B
Storage
Filesystem: overlay
Total: 953G
Used: 317G
Available: 636G
Network
IP: 0.0.0.0
Internet IP: 99.6.8.35
7 Days To Die Resource Usage
================================================================================
CPU Used: 92.1%
Mem Used: 0.5% 649MB
Storage
Total: 20M
Serverfiles: 15G
7 Days To Die Server Details
================================================================================
Server name: 7 days to Die
App ID: 294420
Server IP: 0.0.0.0:26900
Internet IP: 99.6.8.35:26900
Server password: penis
Maxplayers: 8
Game mode: GameModeSurvival
Master server: not listed
Status: STARTED
Query Check: https://ismygameserver.online/sdtd/99.6.8.35:26900
sdtdserver Script Details
================================================================================
Script name: sdtdserver
LinuxGSM version: v25.1.6
glibc required: 2.27
IFTTT alert: off
Update on start: off
User: linuxgsm
Location: /app
Config file: /data/serverfiles/sdtdserver.xml
Backups
================================================================================
No Backups created
Command-line Parameters
================================================================================
./7DaysToDieServer.x86_64 -quit -batchmode -nographics -dedicated -configfile=/data/serverfiles/sdtdserver.xml
Ports
================================================================================
Change ports by editing the parameters in:
/data/serverfiles/sdtdserver.xml
Useful port diagnostic command:
ss -tuplwn | grep 7DaysToDieServe
DESCRIPTION PORT PROTOCOL LISTEN
Game 26900 udp 0
Game+2 26902 udp 2
Query 26900 tcp 0
Web Interface 0 tcp 2
Telnet 8081 tcp 1
7 Days To Die Web Interface
================================================================================
Web Interface enabled: NOT SET
Web Interface url: http://172.23.0.10:0/index.html
Web Interface password: NOT SET
7 Days To Die Telnet
================================================================================
Telnet enabled: true
Telnet address: 127.0.0.1 8081
Telnet password:
Status: STARTED
Steps to reproduce
No response