Euro Truck Simulator 2 Dedicated Server Setup: Convoy, Ports & Server Packages
An ETS2 dedicated server is more than a process listening on a port. The server reads a generated package manifest, advertises through the Convoy browser, and separates logical (virtual) ports from the physical ports your firewall and router must forward. If a session is visible but cannot be joined, start with the files and physical ports below.
Install the official dedicated-server tool
SCS publishes the tool as Steam app 1948160. It is free and can be downloaded with an anonymous SteamCMD login; owning the client game is not required just to launch the dedicated server:
steamcmd +force_install_dir /opt/ets2-dedicated \
+login anonymous +app_update 1948160 validate +quit
cd /opt/ets2-dedicated
./server_launch.sh
SteamCMD does not keep this tool updated automatically. Stop the service during a maintenance window, run app_update 1948160 validate, then start it again and check the first lines of the log for the new build.
Let the first launch create the configuration
The first successful launch creates server_config.sii in the server home directory. Keep that file and the log in a persistent path; do not edit a copy in the install directory while the service is reading another home directory. The launcher supports these useful options:
| Option | Use |
|---|---|
-server | Run the headless dedicated-server mode. |
-server_cfg <path> | Use an explicit server_config.sii when the service has a non-default home. |
-homedir <path> | Keep configuration, generated packages and logs in a known persistent directory. |
-nosingle | Prevent the process from falling back to the single-player client mode. |
On Linux, follow the SCS launcher layout rather than inventing a second wrapper. If the supplied script cannot find steamclient.so, install the matching Steam runtime or link the library where the script expects it before debugging gameplay settings.
Generate the package files the server actually loads
A server can start and still reject every driver when its package manifest is missing or stale. The server directory must contain:
| File | Why it matters |
|---|---|
server_config.sii | Convoy name, player limit, ports, token and server behaviour. |
server_packages.sii | Generated list of the game/DLC packages the server offers. |
server_packages.dat | Binary package data paired with the generated manifest. |
Generate the package files from the same ETS2 installation and DLC set that the convoy is meant to use. After a game update or DLC change, regenerate them and restart. The dedicated server cannot browse Steam Workshop content for players, so use the exact package set you can distribute and test yourself.
Forward physical ports, not virtual ports
ETS2 exposes a logical address to the browser and a physical listener to the network. Only the physical values are router/firewall targets. A simple starting configuration is:
| Config value | Example | Forward? |
|---|---|---|
connection_virtual_port | 27015 | No; this is the logical Convoy address. |
query_virtual_port | 27016 | No; this is the logical browser/query address. |
connection_dedicated_port | 27015 | Yes; forward TCP and UDP to the server. |
query_dedicated_port | 27016 | Yes; forward TCP and UDP to the server. |
If the query port is already occupied, choose another physical port in the documented LAN range (for example 27015-27020) and update the config and firewall together. A port that is open on the host but not forwarded at the router is still unreachable from the public browser.
Use a persistent game logon token
Anonymous SteamCMD is enough to install the files, but a persistent public server should use a game-server logon token generated in Steam's Manage Game Servers page. Create it for the ETS2 client game app 227300, then put the token in server_config.sii using the token field documented by SCS. Do not paste the token into a public issue, screenshot or repository; revoke it in Steam if it leaks.
Set the eight-player ceiling deliberately
SCS documents a hard maximum of eight players. Set a lower value when you want a private convoy with predictable CPU and bandwidth use:
max_players | Good fit |
|---|---|
4 | Small friends-only convoy. |
6 | Regular group with headroom for traffic and voice chat. |
8 | Supported maximum; test the package set and upload capacity before opening the door. |
Fast diagnosis
| Symptom | First check |
|---|---|
| Server exits before showing a name | Read the first config error and confirm server_config.sii is from the active -homedir. |
| Visible in LAN, absent publicly | Forward the physical connection/query ports over both TCP and UDP; virtual ports do not open a router. |
| Visible but join fails immediately | Regenerate server_packages.sii and .dat; check that every driver has the same DLC/content. |
| Server disappears after a game update | Stop it, run SteamCMD validation, regenerate packages, and restart all at the same build. |
| Token or authentication warning | Use a token made for app 227300, keep it private, and replace/revoke it if exposed. |
| Players hit the eight-slot limit | max_players cannot exceed eight; use a second convoy rather than an unsupported value. |
Sources
- SCS Modding Wiki: Dedicated Server documentation
- Steam: Manage Game Servers (logon tokens)
- SteamDB: ETS2 Dedicated Server app 1948160
Want the package files, port forwarding, updates and backups handled for you? Reserve a Euro Truck Simulator 2 server plan; the hosting page explains the current launch status and takes no payment before the door opens.