This article is still under development, I will update as I investigate further, as well as tidy it up and put in extra screenshots. Just wanted to put something out ASAP.
SCS Software has released their Dedicated Server tool for ETS2 and ATS. As the games have a native Linux port, the Dedicated Servers tool is also available for Linux. This means that you should be able to set up a cheap VM (local if you have an x86/64 host, or any cloud service) and run this for your convoy needs.
You will need to download and install SteamCMD. This is in the install repositories for most distributions.
Probably best to create a SteamCMD user. When testing this on my Linux desktop (Dell Mini PC, so only iGPU) I did not.
Follow the instructions to install SteamCMD for your distro.
The ETS2/ATS Dedicated Server software is available in the anonymous repository, so we do not have to worry about logging into any Steam account to download it.
Start SteamCMD and run the following commands.
Once the game server has installed, change directory to the install directory. (on mine it installed to ~/.local/share/Steam/steamapps/common/Euro Truck Simulator 2 Dedicated Server. When looking at a proper dedicated server, I'll create a folder for it not in the user profile.)
On your gaming machine, open up your ETS2 game and go driving. Open the Developer console with ~ (you'll have needed to enable the console function in config.cfg)
Enter this command.
That will generate the files server_packages.dat & server_packages.sii in the game server's home folder (On Windows it is usually in the Documents folder). I hope that in future SCS will make this easier to generate for unattended use with Steam mods.
Upload server_packages.dat & server_packages.sii to the home folder for the game install. (on mine I left it default, so it was ~/.local/share/Euro Truck Simulator 2)
You'll also need a valid steamclient.so file in the game server's home folder (or it also accepts it from a local install of Steam if you have that like I did, a dedicated server host probably wont).
Generate a Login Token for the game IDs (not the server IDs).
Edit the file server_config.sii on the following lines
- lobby_name - Whatever you want to call your lobby
- description - Whatever you want users to see in your description, i.e. Twitch channel or Discord link
- password - if you want to secure your server to users you have interacted with and provided the password, enter it here. This field is plain text.
- server_logon_token - the value that you just generated above
- moderatorlist - change this to 1
- Add a new line - moderator_list: your Steam ID
- If you want multiple mods, enter extra lines with incremented numbers
- Change any of the other values as you prefer for ghosts, optional mods, etc.
Save the file.
Then run the binary to launch the server.
The server is now started. For it to show in a search, you need to Port Forward. by default for a single server, you need 100-101 and 27015-27016, but that is set in the server_config.sii file.
If you don't or can't Port Forward, you can still use the server, you just need to search the Server ID. This does not look like it changes between executions of the server. This will appear in the output of the application while it is running.
The application uses very little CPU (never saw it over 1%, but have only had myself connected so far) and 150MB of RAM (again, only 1 connected, but it didn't seem to increase RAM usage between idle and when I connected). Therefore, if this stays like this with 8 users, you could get away with a 1GB RAM VM (probably wouldn't go to 512MB).
If you are using mods, you do not have to download them or have Steam sync them, it is all a client side check. However, every time someone updates one of your mods, you'll have to export the server packages again from your game and import them into the server. If you only keep it open when you are using it, this won't be much of an issue, and I'll look into any way it can be scripted. There are ways to automate SteamCMD so that we can run it to update ETS2/ATS. I will also be looking into this.
We have also found that after 4 hours, the game starts to lag a bit when hosting the server and playing (the original method before now), so it will be interesting if this resolves this.
In order to keep the game up to date, you should create a cron job to update the game, since SteamCMD won't do this automatically like the full game client does. I am not sure if the application needs to be terminated for it to update or if it will just continue until the process is terminated. I have not left the application running as an always on process yet.
Then when inside the cron file add the following line for ETS2 (use ATS code if you have that set up instead): (Manjaro uses vi, not sure if others are different, so you need to use the shortcuts to edit and save).
0 2 * * * steamcmd +login anonymous +app_update 1948160 +quit
UPDATE 26/12/2022: SCS has added a wiki with important details that were not available when I first wrote this article. Also, thanks to Kelviv in comments, fixed an error with where to find the start script. Added the cron job section.