Euro Truck Simulator 2 Server Troubleshooting Guide
An ETS2 Convoy dedicated server has no game files, no mods and no interface, so when something breaks it only tells you through its log. This guide follows that log through the four ways a server goes wrong: it will not start, nobody can see it, nobody can join, or it drops mid-session. Every fix explains what the server is actually doing.
Usually a missing packages pair, a broken server_config.sii, wrong-build packages, or on Linux a missing steamclient.so.
The browser needs the dedicated ports reachable. If that path is blocked, the search ID in the log is the fallback.
After patches, build mismatch is the common cause. For larger convoys, both server and every player must raise g_max_convoy_size.
Read the last multiplayer lines in the log and any server.crash.txt. Steam disconnects and sleeping host machines are a known cause.
Start with the server log, not the browser
The dedicated server creates its home folder on first launch, then writes a default server_config.sii and server.log.txt. That home folder matters more than the executable folder, because the server reads server_config.sii, server_packages.sii and server_packages.dat from the home folder only, not from bin/linux_x64 or bin\win_x64. If you rent a server, a panel file manager usually shows the same home folder path; our guide to game server control panels explains the usual layout.
| Setup | Home folder | What to check first |
|---|---|---|
| Windows | Documents\Euro Truck Simulator 2 |
server.log.txt, then server_config.sii, then the packages pair |
| Linux | ~/.local/share/Euro Truck Simulator 2 |
Same files, plus exact lowercase names because Linux is case-sensitive |
| Hosted panel | Usually shown as .local/share/Euro Truck Simulator 2/ |
Panel console for launch errors, file manager for logs and uploaded packages |
The lines starting with [MP] are the multiplayer lines worth reading. They tell you where startup stopped, whether the server obtained a search ID, what player limit it is actually using, and why a session closed. That is far more useful than guessing from what the session browser does or does not show.
Use this order every time:
- Read
server.log.txtfrom the latest start. - Decide the stage: no start, invisible, visible but no joins, or closed mid-session.
- Change one thing that matches that stage, then restart and read the new log again.
- Keep the last working
server_config.siiand packages pair so you can roll back cleanly; proper game server backups save a lot of wasted time here.
Match your symptom to the files worth opening first.
| Problem | Server log | Server config | Package pair | Player config | Ports / host PC |
|---|---|---|---|---|---|
| Server will not start | Yes | Yes | Yes | No | No |
| Runs, but missing from the browser | Yes | Partly | No | Partly | Yes |
| Listed, but players cannot join | Yes | Partly | Yes | Partly | No |
| Search ID changes every restart | Yes | Yes | No | No | No |
| Drops mid-session | Yes | No | No | No | Yes |
If the server will not start
Server packages file not found
If the log shows this, the server has no map, DLC or mod description to referee against, so it cannot build a session at all:
<ERROR> [MP] Error: Server packages file not found. This is required to load proper map, DLCs and mods
This happens because the dedicated server does not hold game files or Workshop items. Its only knowledge of world content comes from the exported packages pair. If either file is missing, uploaded to the wrong folder, mixed from different exports, or named with the wrong case on Linux, startup fails.
- Start the game client on your PC and load into the world so the map is actually loaded.
- Enable the console in the game home folder
config.cfgwithuset g_console "1". - Open the console with the
~key. - Run
export_server_packages. - Take both
server_packages.siiandserver_packages.datfromDocuments\Euro Truck Simulator 2\. - Upload both as a matching pair into the server home folder, the same folder that contains
server_config.sii.
The pair rule matters. The .sii describes the content and the .dat is the data partner from that same export. Mixing files from different exports gives the server the wrong picture of your current setup. ETS2 and ATS packages are also different, so do not swap them between games.
If you moved the home folder, point the server there as well. On Windows that is -homedir "path"; on Linux use XDG_DATA_HOME. If you redirect the game home folder for exports but leave the server reading the default location, the files exist but the server still cannot see them.
Linux SteamAPI_Init failed
On Linux without a Steam client, this error means the server cannot find the Steam library it needs for server login:
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
The fix works because it supplies steamclient.so where the server expects it. Use the shipped launch script first, because it is there to start the server with the right environment. If you need the manual fix, create the link below:
ln -s steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
On Linux the executable is bin/linux_x64/eurotrucks2_server, but the issue is not the executable itself. It is the missing Steam runtime library next to it.
One broken line in server_config.sii
server_config.sii is plain text. A missing quote or a malformed line can stop startup before the server reaches multiplayer initialisation. That is why keeping a known-good copy matters: when the server fails after an edit, compare the current file to the last working version first.
Packages from the wrong build or the wrong game
Packages exported from an old build describe old content. Packages from the other game describe the wrong content entirely. In both cases the server is being asked to validate a world state that does not match the current ETS2 build, so startup or joining will fail until you export fresh ETS2 packages from the updated game client.
If the server runs but nobody can see it
The session browser is filled by Steam through the dedicated ports, not through the virtual ports. That means the browser path depends on public reachability, while the direct search ID can still work behind NAT because players search for the session explicitly instead of waiting for Steam to list it.
| Setting | Default | Forward it? | What it does |
|---|---|---|---|
connection_virtual_port |
100 |
No | Virtual connection port inside the game; allowed range 100-200 |
query_virtual_port |
101 |
No | Virtual query port inside the game; allowed range 100-200 |
connection_dedicated_port |
27015 |
Yes, TCP and UDP | Physical port used by the Steam game server API |
query_dedicated_port |
27016 |
Yes, TCP and UDP | Physical query port used for browser listing; for LAN it must be in the range 27015-27020 |
If you self-host, a public IP or working port forwarding is required for the browser listing. If you cannot forward ports, the server may run perfectly but remain absent from the public list because Steam cannot query it through those dedicated ports.
The direct fallback is the search ID printed at startup:
Session search id: 85568392925767505/101
Players search for the number before the slash in the Convoy browser. The /101 part is the query virtual port. If that line exists in the log, the server has reached multiplayer startup; the problem is then browser visibility, not basic startup.
Also check filters. The browser can hide the server if the player has a name filter, password filter, or the default mod filter excludes it. A server with mods_optioning: true is only found when the player allows optional-mod servers in the filter.
The diagram shows why a server can be perfectly joinable by search ID and still missing from the list.
27015 and 27016, TCP + UDP
forwarded ports
from the server log
85568392925767505/101
with no forwarding
query_virtual_port 101
never forwarded
If the search ID changes every restart
That happens when the server logs in with an anonymous Steam account. Anonymous login is enough to run the dedicated server, but not enough to keep a persistent server identity, so favourites break and the search ID changes after each restart.
The proper fix is a game server logon token in server_config.sii. The token must be created for the base game app ID 227300, not the dedicated server app ID 1948160, and the Steam account creating it must own the game.
- Open the Steam game server token management page while logged into a Steam account that owns ETS2.
- Create a token for app ID
227300. - Paste that token into
server_config.siiasserver_logon_token. - Restart the server and confirm in the new log that startup reaches the search ID line again.
A token for the wrong game makes Steam refuse the login. Tokens can also lose validity; if the token shows struck through on the Steam page, replace it. If you run more than one instance at the same time, each one needs its own ports and its own token so Steam can treat them as separate servers.
lobby_name: "My Convoy" password: "your_password" max_players: 8 connection_virtual_port: 100 query_virtual_port: 101 connection_dedicated_port: 27015 query_dedicated_port: 27016 server_logon_token: YOUR_TOKEN_HERE moderator_list: 1 moderator_list[0]: 7656119XXXXXXXXXX
If players see a red icon or cannot join after an update
After a patch, build lock is the first thing to suspect. The browser compares what the server advertises against the player’s game build and content state. A red icon means the player cannot join because the session is full, or the map or game version differs. Green means they can join. Orange means only mods are missing, which is a different problem.
Follow this order after every update so the server and packages describe the same build:
Skipping a step, or doing them out of order, is how you end up with a server on the new build advertising packages from the old one.
If you use SteamCMD, update manually. It does not auto-update the server:
steamcmd +login anonymous +app_update 1948160 validate +quit
You do not need to own the game for this, so anonymous login is fine. Many hosting panels update the server on restart when auto-update is switched on. Either way, the server files and the exported packages have to come from the same current build, which is why the export always comes last.
Branch mismatch also blocks joining. A player on the public beta cannot join a release server, and a player or server left on an older temporary branch cannot join the other side unless both are on that same branch. Map mods are the first things to break after major updates, so if your convoy depends on them, wait for those updates before exporting new packages.
Mod and DLC problems in one place
Keep this short rule in mind: orange icon means missing mods, not a version lock. The sync window handles that part, but only if the server’s package export actually matches the current mod set. When a Workshop mod updates on players’ PCs, the server still advertises the old version until you re-export and re-upload both package files, because the dedicated server cannot use the Steam client or access the Workshop itself.
DLC is similar but not identical. Players do not need DLC just to join Convoy, yet they cannot see or drive in DLC map areas they do not own. A mod that depends on a DLC effectively forces that DLC on every player because the mod cannot be activated without it. For the full load-order, sync-window and optional-mod process, use our guide to installing mods on an ETS2 server.
Bigger convoys, moderators, passwords and messages
More than 8 players cannot join
There are three settings to line up. The server advertises the limit in server_config.sii with max_players, the dedicated server itself must allow the larger convoy in config_ds.cfg with g_max_convoy_size, and every player must also set g_max_convoy_size in their own Documents\Euro Truck Simulator 2\config.cfg with the game closed, or in the console. Since 1.50, the limit can go up to 128.
This catches people because client and server both enforce convoy size. If the server advertises a larger lobby but a player’s own client still has the lower size, they may fail to find it or fail to join it even though the browser listing exists.
The log helps here too. Until the server-side config_ds.cfg is raised, it warns:
[MP] Warning: Proper player limit exceeded.
Once it is set correctly, the log reports the actual limit in use, for example:
[MP] Maximum number of players: 32
Moderators are assigned by Steam64 ID, then applied on restart
Because the dedicated server has no interface, you cannot promote moderators while it is running. Add Steam64 IDs in server_config.sii, make sure the count matches the number of entries, then restart. The server reads that list at startup and promotes those players automatically when they join.
Moderator commands are chat-based: /set_time HH:MM, /set_rain_factor 0-1 and /help.
Password and welcome message limits
lobby_name, description and password are limited to 63 characters, while welcome_message is limited to 127. If a change appears not to work, check both the edit itself and the required restart. Also note that friends_only and show_server are not used for dedicated servers, so changing them will not solve visibility problems.
If the server shuts down mid-session or crashes
When a running session closes, read the final lines of server.log.txt before anything else. This known pattern means the server lost its Steam connection:
[MP] Steam disconnected [MP] Session closure requested (reason - 33). [MP] Session closing
The fix works because it removes the interruption, not because of any game setting. If the host machine sleeps or the internet drops, the Steam link breaks and the session closes. Stopping the machine from sleeping, or moving the server to an always-on host, avoids that class of failure because the server process keeps its network presence continuously. If you are still weighing home hosting against renting, our guide to self-hosting a game server covers the practical trade-offs.
If the server actually crashes, use server.crash.txt together with the last lines of server.log.txt. One without the other often hides the real sequence.
Do not misread player performance as a server fault. Lower FPS in Convoy than in single-player is normal because the player’s PC has to render more player trucks. If someone reports poor framerate but the server stays up and the log is clean, the bottleneck is usually on the client side.
AI traffic is a session setting, not a crash fix. traffic: true keeps AI traffic on and traffic: false turns it off; SCS ships max_vehicles_total: 100, max_ai_vehicles_player: 50 and max_ai_vehicles_player_spawn: 50 as the defaults. Leave those alone while you are chasing a fault, so you are only ever changing one thing at a time.
ETS2 server problems: symptom, cause and first fix
Use this as a quick triage after you read the latest log. The decision flow below starts with the single most useful question: did startup reach the search ID line?
| Symptom | Likely cause | First fix |
|---|---|---|
| Server process stops during startup | Broken server_config.sii |
Restore the last working config and re-check your latest edit |
| Log shows packages file not found | Missing or misplaced packages pair | Export fresh packages and upload both files to the home folder |
| Linux startup fails before multiplayer | Missing steamclient.so |
Use server_launch.sh or create the Steam library link |
| No search ID line in the log | Startup never reached multiplayer initialisation | Fix the last error earlier in the log before looking at ports |
| Search ID exists but server is absent from browser | Dedicated ports not reachable | Forward 27015 and 27016 on TCP and UDP, or use direct search |
| Friends can join by ID but not find it normally | NAT or browser filter issue | Check port forwarding, then name, password and optional-mod filters |
| Search ID changes every restart | Anonymous Steam login | Add a valid server_logon_token made for app ID 227300 |
| Red icon after a patch | Server and players on different builds or branches | Update server, export fresh packages, and match the same branch on both sides |
| Orange icon | Missing mods | Use the sync window, then re-export packages if mods were updated |
| More than 8 players still cannot join | g_max_convoy_size not set everywhere |
Raise it in server config_ds.cfg and on every player’s client |
| Moderators not promoted | Wrong Steam64 IDs or list count mismatch | Fix the entries in server_config.sii and restart |
Session closes with reason - 33 |
Steam connection lost | Stop the host machine sleeping and check internet stability |
Fix it yourself or move to a host
If the problem is local file handling, updates or exports, fixing it yourself is usually straightforward. If the problem is sleep states, unreachable ports or keeping a Convoy available all day, hosting off your own PC removes the weak point. When you compare options, think about uptime first and server location and ping second, then check our ETS2 server hosting comparison if you want a short list.
| Situation | Best choice | Why |
|---|---|---|
| Home PC sleeps or is shut down often | Move to a host | An always-on machine avoids the Steam disconnect and session closure pattern |
| You cannot forward ports | Move to a host | The browser needs the dedicated ports reachable |
| You want a private convoy only on occasion | Keep self-hosting | The dedicated server is free and the log-driven fixes are manageable |
| You want a session available all day | Move to a host | The dedicated session keeps running with no players online, which suits permanent hosting |
| You run frequent mod changes | Either works | The real requirement is a clean update routine and fresh package exports |
| You need more than 8 players reliably | Either works, but be stricter with config | Player-side and server-side convoy size must both match every time |
If your logs keep pointing back to sleep states, unreachable dedicated ports or the hassle of keeping a Convoy online, compare managed options with clear file access and restart tools.
Compare the best ETS2 server hostsETS2 server troubleshooting FAQ
Why is my ETS2 dedicated server not showing in the session browser?
The most common cause is that the dedicated ports are not reachable, so Steam cannot query the server for the browser list. Check that connection_dedicated_port 27015 and query_dedicated_port 27016 are forwarded on both TCP and UDP if you self-host. If the log shows a search ID, friends can still try direct search even when the browser listing fails.
Why does my ETS2 server say server packages file not found?
The dedicated server has no game files, no DLC files and no Workshop access, so it relies entirely on server_packages.sii and server_packages.dat. Export both from the updated game client while the map is loaded, then upload the pair into the server home folder. On Linux, make sure the file names stay exactly lowercase.
Why does my ETS2 server’s search ID change every restart?
That happens when the server uses anonymous Steam login, which does not keep a persistent server identity. Add a valid server_logon_token created for app ID 227300 in server_config.sii. If the token is invalid or made for the wrong game, replace it.
Why can’t my friends join my ETS2 server after an update?
Usually the game build, server build and exported packages no longer match. Update the game client, update the dedicated server with SteamCMD, load into the updated game, export fresh packages, upload them and restart. If anyone is on a different branch, including the public beta, they still will not be able to join.
How do I get more than 8 players on an ETS2 Convoy server?
Raise max_players in server_config.sii, set g_max_convoy_size in the server’s config_ds.cfg, and make sure every player sets g_max_convoy_size on their own client as well. Since 1.50 the limit can go up to 128, but every side must agree. The server log will warn if the proper limit has not been applied on the server side yet.
More ETS2 server help
The host comparison, the mods guide and the hosting basics that matter most for a Convoy server.
File names, log messages and settings follow SCS Software’s dedicated server documentation and the server_config.sii defaults it ships, as of November 2026. Game updates can add settings or change defaults, and host panels label folders, ports and restart buttons in their own way, so follow your host’s current panel where it differs.
