What acServer is and where it comes from
acServer is Kunos's own multiplayer server for the original Assetto Corsa. It is not a separate download from a vendor site: it sits in steamapps\common\assettocorsa\server inside your Steam library, beside acServerManager.exe, the tool that writes its configuration and packs track and car data for it. Kunos's changelogs describe it as a Go program (version 1.3 moved it to Go 1.5), and the 1.3.1 changelog says the game now includes the correct Linux acServer.
Valve's dedicated server list also names an Assetto Corsa Dedicated Server under SteamCMD app ID 302550, marked as not available through anonymous login. Kunos's manual describes the other route, which this page follows: pack on the PC that has the game, then upload the whole server folder to the remote machine.
This page covers the original Assetto Corsa. Assetto Corsa Competizione has a different server with its own configuration files and handbook; none of the settings below carry over to it.
Ports and the lobby
Three settings in server_cfg.ini decide what the firewall must pass. The values are Kunos's defaults from the manual's sample file; change them and the rules change with them.
| Setting | Default | Protocol | What the manual says |
|---|---|---|---|
| UDP_PORT | 9600 | UDP | Game traffic. Open it on the server's firewall. |
| TCP_PORT | 9600 | TCP | Game connection. Open it on the server's firewall. |
| HTTP_PORT | 8081 | TCP and UDP | Lobby port. The manual says to open it for both protocols. |
| REGISTER_TO_LOBBY | 1 | n/a | Leave it as shipped; the manual says it must not be touched. |
With REGISTER_TO_LOBBY=1 the server announces itself to the Kunos lobby, which is how it appears in the in-game list. Port forwarding is a home-router problem. On a rented machine with its own public IPv4 address there is no router of yours in the path, so the host firewall is the gate that decides.
Sizing: bandwidth before cores
Kunos publishes no CPU or memory figure for acServer. What the manual does warn about is the connection: a server on a link with low upload bandwidth should not be run with 24 slots, and acServerManager shows an approximate bandwidth figure for a given configuration. Read that estimate for your slot count before you pick the machine.
MAX_CLIENTSis capped by the track: it must not exceed the number of pits.CLIENT_SEND_INTERVAL_HZis the server's packet rate (the sample uses 15; 10 Hz is about 100 ms). Higher rates mean better multiplayer quality and more bandwidth; Kunos warns that very high values can cause connection problems.NUM_THREADSappears in the manual's sample as 4, with the comment "default is 2"; the manual does not explain it further.- Every additional server you run on the same host adds its own traffic on its own ports.
The port on every dedicated server of ours is unmetered, at 1 Gbps on most lines and 500 Mbps on the others, so upload is not the constraint the manual is warning home hosts about. Latency still is: host it in whichever city sits nearest the drivers.
Packing the content on the game PC
Content must match between server and clients, or drivers are kicked for a car or track mismatch. Kunos's manual says to repeat these steps every time Steam updates Assetto Corsa:
- Open the game folder (Steam, Assetto Corsa, Properties, Local Files, Browse).
- Run
server\acServerManager.exe, build the session (track, cars, sessions, weather) and save it. - Click Update Server Content. Without a window,
acServerManager.exe /pack /nomsgdoes the same. - Before uploading over a running server, back up
cfg/server_cfg.ini,cfg/entry_list.iniandblacklist.txt, then merge any new settings the fresh files carry into your own. - Upload the entire
serverfolder.
Installing it on Ubuntu
Give acServer an unprivileged account of its own, and enable ufw with SSH allowed before the server ever starts. Then copy the packed folder up from the Windows PC with its built-in scp (adjust the Steam path if your library lives elsewhere). In the installs we have seen, the Linux build is a file named acServer, with no extension, in the server folder; Kunos does not document the name, so check with ls -l after uploading and adjust the paths below if yours differs.
# on the server
sudo useradd -m -s /usr/sbin/nologin acserver
sudo ufw allow OpenSSH
sudo ufw allow 9600/udp
sudo ufw allow 9600/tcp
sudo ufw allow 8081/tcp
sudo ufw allow 8081/udp
sudo ufw enable
# on the Windows PC, PowerShell
scp -r "C:\Program Files (x86)\Steam\steamapps\common\assettocorsa\server" you@your-server:acserver-upload
# back on the server, as you
sudo mv ~/acserver-upload /home/acserver/server
sudo chown -R acserver:acserver /home/acserver/server
sudo chmod 640 /home/acserver/server/cfg/server_cfg.ini
sudo chmod 750 /home/acserver/server/acServer
The upload lands in your own home directory, not in /tmp, because the config file holds both passwords; the chmod 640 then closes it to other users. A copy made from Windows may arrive without the execute bit, which the last line restores. This block is for the first upload only; later uploads follow the update steps below.
A systemd unit instead of acServer.bat
On Windows, the manual recommends acServer.bat, which writes each run's log to a timestamped file so the session data (client GUIDs and the rest) survives for support. On Linux, systemd does the same job: it starts acServer from its folder, which is where the cfg paths resolve, and keeps the output in the journal.
# /etc/systemd/system/acserver.service
[Unit]
Description=Assetto Corsa dedicated server
Wants=network-online.target
After=network-online.target
[Service]
User=acserver
WorkingDirectory=/home/acserver/server
ExecStart=/home/acserver/server/acServer
Restart=on-failure
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
After sudo systemctl daemon-reload, the command sudo systemctl enable --now acserver starts acServer and enables it at boot; read the start-up messages with journalctl -u acserver -f. Kunos's advice to watch the server's own messages for errors applies here: a car in entry_list.ini that is not in CARS, more than one track in pickup mode, or a booking session added in pickup mode stops the server with an error.
After each game update, repack on the game PC, upload the folder to ~/acserver-upload as before, then on the server:
- Stop the unit:
sudo systemctl stop acserver. - Set your three files aside:
sudo mkdir -p /root/ac-keep && sudo cp -a /home/acserver/server/cfg/server_cfg.ini /home/acserver/server/cfg/entry_list.ini /home/acserver/server/blacklist.txt /root/ac-keep/. - Copy the new upload over the old folder rather than moving it (a second
mvwould nest the new folder inside the old one):sudo cp -r ~/acserver-upload/. /home/acserver/server/. - Put your files back:
sudo cp -a /root/ac-keep/server_cfg.ini /root/ac-keep/entry_list.ini /home/acserver/server/cfg/andsudo cp -a /root/ac-keep/blacklist.txt /home/acserver/server/, then compare them with the fresh copies (sudo diff /home/acserver/server/cfg/server_cfg.ini ~/acserver-upload/cfg/server_cfg.ini, and the same forentry_list.ini) and add any new settings to yours. If you changed the event in acServerManager on purpose for this upload, skip the restore and keep the uploaded files. - Run the
chownand bothchmodlines from the install block again. - Start it:
sudo systemctl start acserver. - Once it runs, delete the upload:
rm -rf ~/acserver-upload.
server_cfg.ini, entry_list.ini and the admin password
Two files define the session. server_cfg.ini names the server, the cars (CARS, folder names separated by semicolons), the track (TRACK plus CONFIG_TRACK for a layout), the sessions and the weather. entry_list.ini lists the grid: in pickup mode it needs at least as many [CAR_n] sections as MAX_CLIENTS, and each MODEL must be one of the allowed cars. Keep PICKUP_MODE_ENABLED=1: the manual says booking mode is not fully supported.
Administration runs through the in-game chat, and the manual makes ADMIN_PASSWORD mandatory. A driver who joins with that password is recognised as admin straight away; anyone can also type /admin plus the password. With it come /kick, /kick_id, /ban_id, /ballast, /restrictor, /next_session and /restart_session.
- Treat
ADMIN_PASSWORDas a secret, like a root password. The manual's sample value iskunos; never leave it. - Keep it out of screenshots, shared presets and public repositories; the join
PASSWORDis a separate secret. - If it leaks, set a new one and restart the service so acServer reads the new file.
BLACKLIST_MODE=2kicks a player and writes their Steam GUID toblacklist.txt; back that file up with the configs.LOCKED_ENTRY_LIST=1lets in only the GUIDs listed inentry_list.ini, with no join password needed.
Which of our machines fit
Our game server hosting on bare metal puts acServer on a whole physical machine: HPE enterprise hardware, root access, the operating system you choose, and technical support around the clock by phone, email and live chat. Choose from New York, Miami, San Francisco, Amsterdam and Bucharest; the data centre page compares the five so you can pick the one closest to your league.
Each dedicated server comes with an unmetered port and one IPv4 address. A Linux dedicated server is the natural host for the native acServer build, and a whole machine leaves room for several lobbies side by side. Kunos's manual requires different ports (UDP, TCP and HTTP) for each instance, and advises its own executable or its own copy of the server folder; on Linux, separate folders with one unit each is the simple way to follow both.
When a dedicated machine is the wrong call
A few friends racing once a week can run acServer on the game PC itself; the manual's own warning about low upload bandwidth is the limit to watch. A rented machine earns its place when the lobby must stay up while nobody is at the host's desk, when drivers are spread across regions, or when you run several servers at once. Keep one thing in mind whichever you choose: the packing step needs Windows and a copy of the game, so somebody in your group still runs acServerManager after every update.
Questions
Which ports does an Assetto Corsa server need?
With Kunos's defaults: UDP 9600, TCP 9600 and the lobby port 8081, which the manual says to open for both TCP and UDP. If you change UDP_PORT, TCP_PORT or HTTP_PORT in server_cfg.ini, open the new values instead.
Does acServer run natively on Linux?
Yes. Kunos's version 1.3.1 changelog says the game now includes the correct Linux acServer, so no compatibility layer is needed. In the installs we have seen it is a file named acServer in the server folder; confirm with ls -l after uploading. Configuration and content packing are still done with acServerManager on Windows.
Why are drivers kicked for a car or track mismatch?
The server's content no longer matches the players' game, usually after a Steam update. Run Update Server Content in acServerManager on the game PC and upload the server folder again, keeping your three configuration files.
Can one machine run several Assetto Corsa servers?
Yes. The manual requires each instance to use different ports (UDP, TCP and HTTP), and advises a separate executable or a separate copy of the server folder for each. On Linux, give each copy its own systemd unit and its own firewall rules.
What happens if ADMIN_PASSWORD is left empty?
Kunos's version 1.0 notes say an empty admin password disables the admin commands, and the current manual calls the setting mandatory. Set a long, unique value and keep it as private as the server's root login.