⚠️ Action required
Team Fortress 2 now uses the 64-bit server
tf2server starts ./srcds_run_64 by default, with -norestart added to startparameters so a graceful stop completes (#5059).
- Custom
startparameters: if your own config setsstartparameters, add-norestartyourself. Without it, stop still works but falls back to killing the session after 60 seconds. - SourceMod servers stay on 32-bit until you opt in, because DHooks and many extensions have no 64-bit Linux build yet. To switch, set
executable="./srcds_run_64"in your instance config.
SCP: Secret Laboratory ServerMod (scpslsm) removed
Steam has retired app 786920, so ServerMod can no longer be installed or updated by anyone (#5038). Existing installs keep running on their current files, but update-lgsm now fails for them. For a modded server, install scpslserver and use LabAPI or EXILED.
Highlights
- Steam Workshop downloads for games that can't fetch Workshop content themselves: Arma 3, DayZ, Squad, Squad 44, Operation: Harsh Doorstop, Starbound, Barotrauma, Stationeers, Colony Survival, Left 4 Dead 2, Hurtworld and Soldat. Add item or collection IDs to
workshopmodsand runworkshop-update(wu), or letupdatehandle it. Mods are installed, kept up to date and added to the start parameters (#5008, #5009, #5012, #5014, #5016, #5017, #5018, #5019, #5020). - In-game player warnings before a stop, restart or update. Set
warnplayerstimerto the number of minutes to warn for (off by default). Works on servers whose console accepts chat commands (#5025, #5033). - Postponed updates and backups: with
stoponlyifnoplayers="on", an update or backup that finds players online is postponed, andmonitorruns it once the server is empty. Abackup-postponedalert is sent if a backup has waited over 24 hours (#5025, #5029). - Missing dependencies in
detailsandpost-details, so they are included in support links.detailsno longer tries to install packages (#5041). - Downloads over HTTPS: SteamCMD, MTA and every
linuxgsm.downloadfile, and an HTTPS download can no longer be redirected to HTTP (#4954, #5054, #5070). - Docker images on Ubuntu 26.04: 134 game server images move to Ubuntu 26.04. Existing
/datavolumes, game files and configs are kept (#5028).
Changes to existing behaviour
stoponlyifnoplayersnow works forupdate,backupandworkshop-update. Before, a prevented stop could leave the server stopped and not updated. Abackupwithstoponbackup="on"is now postponed while players are online instead of stopping the server (#5025, #5029).- Failed updates are reported as failures. A failed download now exits non-zero, sends the
update-failedalert and starts the server again, instead of being reported as a successful update (#5060). updateonstartnow starts the server after applying an update (#5056).- SteamCMD progress is shown as it happens, and a SteamCMD failure is detected and retried (#5055).
- Prompts without a terminal (cron, piped input, containers without
-it) now exit with an error (code 2) instead of looping forever. Scripted answers such asyes | ./gameserver ...still work (#5042). - Monitor no longer restarts a server while a backup or update is running (#5025, #5029, #5057).
- Monitor detects running commands when the script is run by its full path (#5011, #5015).
- Permissions check accepts files the server user can reach through groups or ACLs, rather than requiring ownership (#5067).
- Console timestamp logging works again (#5073).
New servers
Newer distros
- Call of Duty, Call of Duty 2, Call of Duty: United Offensive and Medal of Honor: Allied Assault run on Debian 13, Ubuntu 26.04 and RHEL 9 (#5069).
- Battlefield 1942 and Battlefield: Vietnam run on Ubuntu 24.04 and later (#5043).
- Minecraft and PaperMC use Java 25 on Ubuntu 22.04 (#5079).
- Minecraft and PaperMC check that the installed Java is new enough for the server version (#5075).
- Rocky Linux 9 dependency lists are fixed (#5077).
Game server fixes
- IOSoccer: uses the new 64-bit server, which replaced the 32-bit one in the 7 October update (#5024).
- IOSoccer: no longer gets stuck in a map reload loop (#5024).
- The Isle: EOS credentials are passed as launch arguments, because the game deletes
Engine.inion every stop (#5061). - 7 Days to Die and Soulmask: the graceful telnet stop no longer needs
expect(#5051). - Soulmask: saves the world before stopping (#5051).
- Rust: stops with
quit, which saves the world (#5022). - Stationeers, Natural Selection 2 and NS2: Combat: stop with CTRL+c, as their consoles don't act on commands (#5022).
- Left 4 Dead: stops with
quit, the same as Left 4 Dead 2 (#5022). - SCP: Secret Laboratory: the EULA is accepted, so fresh installs start (#5022).
- Core Keeper: multiple instances can run at once (#5074).
- Vintage Story: old assets are removed before an update (#5032).
- Rising World: stops gracefully with
shutdown(#5031). - Unreal Tournament 3: default configs are installed, with the web admin enabled (#5062).
- Unreal Tournament 3:
detailsreads the web admin setting and port fromUTWeb.ini(#5044). - Unreal Tournament 99: patch 469f and later are supported (#5034).
- Unreal Tournament 99: update checks validate and retry release API responses (#5089).
- Nuclear Dawn: downloads its game content again (#5040).
- Barotrauma: server name, max players and tick rate are read from both config forms (#5072).
- Just Cause 3: adds the missing libatomic dependency (#5053).
- Sven Co-op: drops the libssl3:i386 dependency on Debian 12 and 13 (#5058).
- Source servers: Steam ports are shown in
details(#5046). - GoldSrc servers: FastDL collects content with the GoldSrc file layout (#5045).
Other fixes
detailsreports CPU cores and frequency accurately (#5076).- A failed virtualisation check no longer stops installs (#5086).
What's Changed
- feat(workshop): download Steam Workshop mods for Arma 3 and DayZ by @dgibbs64 in #5008
- feat(workshop): add Steam Workshop downloads for Squad and Starbound by @dgibbs64 in #5009
- feat(workshop): add Steam Workshop downloads for Squad 44 and Operation: Harsh Doorstop by @dgibbs64 in #5012
- feat(workshop): add Steam Workshop downloads for Barotrauma and Stationeers by @dgibbs64 in #5014
- refactor(workshop): edit Barotrauma config_player.xml with sed instead of Python by @dgibbs64 in #5017
- feat(workshop): add Steam Workshop downloads for Colony Survival by @dgibbs64 in #5016
- feat(workshop): add Steam Workshop downloads for Left 4 Dead 2 by @dgibbs64 in #5018
- feat(workshop): add Steam Workshop downloads for Hurtworld by @dgibbs64 in #5019
- feat(workshop): add Steam Workshop downloads for Soldat by @dgibbs64 in #5020
- fix(monitor): log the start and stop checks under their own name by @borzaka in #5011
- fix(monitor): detect running commands when the script is run by its full path by @borzaka in #5015
- feat(newserver): add Running With Rifles server by @dgibbs64 in #5021
- fix(config): correct console interaction, stop modes and SCP:SL EULA by @dgibbs64 in #5022
- fix(ios): use 64-bit server and stop map reload loop by @dgibbs64 in #5024
- feat(stop): warn players in-game before stop, restart and update, and retry postponed updates by @dgibbs64 in #5025
- feat(backup): run backups postponed by players once the server is empty by @dgibbs64 in #5029
- fix(modules): make info_messages.sh executable by @dgibbs64 in #5030
- fix(vints): remove old assets before extracting an update by @dgibbs64 in #5032
- fix(rwserver): stop Rising World gracefully with shutdown by @dgibbs64 in #5031
- feat(stop): add warning chat commands for Avorion, Craftopia, MTA, Necesse and Rising World by @dgibbs64 in #5033
- fix(ut99): use System directory for patch 469f and later by @dgibbs64 in #5034
- fix(postdetails): remove shared temporary status file by @dgibbs64 in #5035
- feat(docker): move game server images to Ubuntu 26.04 by @dgibbs64 in #5028
- fix(ndserver): download Nuclear Dawn game content from app 17710 by @dgibbs64 in #5040
- feat: remove SCP: Secret Laboratory ServerMod (scpslsm) by @dgibbs64 in #5038
- fix(bf1942,bfv): run on Ubuntu 24.04+ by providing 32-bit ncurses 5 by @dgibbs64 in #5043
- fix(ut3server): read web admin enabled flag and port from UTWeb.ini by @dgibbs64 in #5044
- fix(fastdl): collect GoldSrc content with the GoldSrc file layout by @dgibbs64 in #5045
- fix(core): stop prompts looping forever when no input is available by @dgibbs64 in #5042
- feat(jk3server): add Jedi Academy with OpenJK by @AlexCS1337 in #3891
- fix(details): detect and display Source Steam ports by @dgibbs64 in #5046
- fix(deps): sudo handling and messages when auto-install cannot prompt by @dgibbs64 in #5050
- fix(info): stop shell-expanding parsed config values by @dgibbs64 in #5052
- refactor(stop): use bash /dev/tcp for telnet shutdown, drop expect by @dgibbs64 in #5051
- fix(jc3server): add libatomic dependency by @dgibbs64 in #5053
- fix(security): download SteamCMD and MTA files over HTTPS by @dgibbs64 in #5054
- fix(update): continue starting the server after updateonstart applies an update by @dgibbs64 in #5056
- fix(sven): drop libssl3:i386 dependency on Debian 12 and 13 by @dgibbs64 in #5058
- feat(details): show missing dependencies in details and post-details by @dgibbs64 in #5041
- feat(tf2): use 64-bit server by default by @dgibbs64 in #5059
- fix(ut3): install default configs from Game-Server-Configs by @dgibbs64 in #5062
- fix(ti): pass EOS credentials as launch arguments by @dgibbs64 in #5061
- fix(update): report failed updates instead of treating them as success by @dgibbs64 in #5060
- fix(monitor): recheck backup and update before restarting the server by @dgibbs64 in #5057
- fix(triage): parse SteamCMD app_info and respect manual Linux labels by @dgibbs64 in #5063
- fix(triage): parse SteamCMD app_info and respect manual Linux labels (master) by @dgibbs64 in #5064
- fix(triage): match Linux check verdict to a maintainer-set label by @dgibbs64 in #5065
- fix(triage): match Linux check verdict to a maintainer-set label (master) by @dgibbs64 in #5066
- fix(permissions): accept files accessible through groups or ACLs by @dgibbs64 in #5067
- fix(security): download linuxgsm.download files over HTTPS by @dgibbs64 in #5070
- fix(deps): fix bmdm on Debian 13 and hyt on older distros by @dgibbs64 in #5071
- fix(cod,cod2,coduo,mohaa): provide 32-bit libstdc++5 on newer distros by @dgibbs64 in #5069
- fix(bt): read server name, max players and tick rate in both config forms by @dgibbs64 in #5072
- fix(check-deps): validate Minecraft Java runtime by @dgibbs64 in #5075
- fix: report CPU topology and frequency accurately by @dgibbs64 in #5076
- fix: restore executable bit on check_deps.sh and info_messages.sh by @dgibbs64 in #5081
- chore: automate milestones and release closing for linked issues by @dgibbs64 in #5080
- chore: enforce PR template and tidy its sections by @dgibbs64 in #5078
- chore(sync): synced file(s) with dgibbs64/repo-sync by @dgibbs64 in #5082
- fix(ci): skip PR body check for repo-sync PRs by @dgibbs64 in #5083
- ci: add milestone, release issue workflows and PR template to master by @dgibbs64 in #5085
- chore(sync): synced file(s) with dgibbs64/repo-sync by @dgibbs64 in #5084
- fix(ck): allocate Xvfb displays automatically by @dgibbs64 in #5074
- fix(deps): use Java 25 for mc and pmc on Ubuntu 22.04 by @dgibbs64 in #5079
- fix(deps): fix RHEL family dependency lists for Rocky Linux 9 by @dgibbs64 in #5077
- fix: repair console timestamp logging by @dgibbs64 in #5073
- fix(steamcmd): stream progress output and propagate SteamCMD exit code by @dgibbs64 in #5055
- feat(ceserver): add Conan Exiles server by @dgibbs64 in #5068
- fix: handle virtualization detection failures by @dgibbs64 in #5086
- fix(ut99): validate and retry release API responses by @dgibbs64 in #5089
- fix(ci): activate Java 25 for Minecraft update checks by @dgibbs64 in #5090
- fix(ci): leave milestone assignment to maintainers by @dgibbs64 in #5091
- fix(install): download SteamCMD games without fn_update_apply by @dgibbs64 in #5093
- Release v26.4.0 by @dgibbs64 in #5092
New Contributors
- @AlexCS1337 made their first contribution in #3891
Full Changelog: v26.3.0...v26.4.0