Workload · Hosting an ACC league

Host an ACC (Assetto Corsa Competizione) dedicated server for your league

Hosting your own ACC dedicated server means running Kunos's server program, accServer.exe, on a Windows machine whose port 9201 is open to the internet on both TCP and UDP, and you set it up by editing a few small JSON files. Below you install it with SteamCMD, choose between an open lobby and a password-protected league, and learn the chat commands that let you run a race.

The short version
  1. Windows only, Steam tool 1430110
  2. Port 9201, TCP and UDP
  3. A few JSON files, saved as UTF-16 LE
  4. Up to 30 cars on an open lobby

Will it run on the server you rent?

Yes, as long as the server runs Windows. Steam's record for the ACC server tool, app 1430110, names Windows as its only system and launches server\accServer.exe. The download is small: Steam lists the server depot at roughly 3.7 MB, and its public build dates from 3 May 2024, as we read the record on 31 October 2026.

Kunos explains the server in its ACC Server Admin Handbook. This guide works from version 1.1.2, which dates from the game's 2019 season content and is kept online by the community. Kunos has patched the server since then, so take each rule and key as written for that version, and when your build's own files or its log say otherwise, trust them. You will not find processor or memory figures in the handbook, but you will find one clear piece of advice. Kunos does not recommend hosting on a home PC, because forwarded ports open your own computer to the internet and home connections often have too little upload speed for a full grid. If you are after the original game instead, that server works differently; see our guide to the Assetto Corsa dedicated server.

Up and running in an evening

  1. Order the server with Windows Server and sign in over Remote Desktop as Administrator.
  2. Open PowerShell with Run as administrator and paste the install block below. It downloads SteamCMD, Valve's command-line download tool, then the ACC server.
  3. Start accServer.exe once from the server folder so it writes any JSON file that is missing, with default values, then close it.
  4. Edit the files, open the firewall, start it again and send your drivers the server name.
& {
  $ErrorActionPreference = 'Stop'
  $SteamUser = 'anonymous'   # your Steam name if this is refused
  $Live = 'C:\acc\server\cfg'
  $Copy = $null
  if (Test-Path "$Live\settings.json") {
    $Copy = 'C:\acc-saves\cfg-' + (Get-Date -Format 'yyyyMMdd-HHmmss')
    New-Item -ItemType Directory -Force -Path $Copy | Out-Null
    Copy-Item -Recurse "$Live\*" $Copy
    if (-not (Test-Path "$Copy\configuration.json")) { throw "STOP - the copy in $Copy is missing files" }
  }
  $Tool = 'C:\steamcmd\steamcmd.exe'
  if (-not (Test-Path $Tool)) {
    [Net.ServicePointManager]::SecurityProtocol = 'Tls12'
    New-Item -ItemType Directory -Force -Path C:\steamcmd | Out-Null
    Invoke-WebRequest -UseBasicParsing https://client-update.steamstatic.com/installer/steamcmd.zip -OutFile C:\steamcmd\s.zip
    Expand-Archive -Force C:\steamcmd\s.zip C:\steamcmd
  }
  & $Tool +force_install_dir C:\acc +login $SteamUser +app_update 1430110 validate +quit
  if ($LASTEXITCODE -ne 0) { throw "STOP - SteamCMD code $LASTEXITCODE. On a first run this is often just SteamCMD updating itself: paste the block again once; if it stops again, read the lines above." }
  if (-not (Test-Path C:\acc\server\accServer.exe)) { throw 'STOP - no accServer.exe' }
  if ($Copy) { Copy-Item -Recurse -Force "$Copy\*" $Live; "settings put back from $Copy" }
  'ACC server files are in place'
}

The block sets the install folder before it signs in, the order Valve's SteamCMD guide asks for. When your settings already exist, it copies them to a dated folder in C:\acc-saves and checks the copy before anything is downloaded, then puts them back afterwards, because the validate check may overwrite files that came with the download. That makes it your update step too. If it stops halfway, paste it again: every step is safe to repeat.

Steam names the game (app 805550) as the tool's parent without saying whether an anonymous download works, so you may have to sign in with an account that has bought ACC. If the anonymous sign-in is turned down, put that account's name in $SteamUser and paste the block again. It will then prompt for your password, plus a Steam Guard code on the first sign-in, so stay at the keyboard for it. Or take the handbook's route: move a copy of the server folder out of the ACC game you installed at home onto the machine.

Your settings live in a few small files

Everything about the server sits in JSON files in the cfg folder, and Kunos says they must be saved as UTF-16 LE. Notepad works well: when you save, look at the encoding in the Save As box and keep it on UTF-16 LE, the option older Notepad builds (Windows Server 2019 and before) label simply Unicode.

  • configuration.json holds the ports and whether the server shows up in the public list. You rarely touch it again.
  • settings.json holds the server name, the join, spectator and admin passwords, the safety rating needed to join and the number of car slots.
  • event.json describes the race weekend: the track, the weather and each practice, qualifying and race session, and it needs at least one practice or qualifying session.
  • eventRules.json sets pit rules such as mandatory stops, refuelling and driver stints. Open public lobbies ignore it.
  • entrylist.json is one you add yourself, to reserve places for named drivers by Steam ID.
  • Newer builds may add files that version 1.1.2 of the handbook does not cover, so look at what yours writes.

Made a mess? Delete the files and run the server one time; it puts clean defaults back. If it closes straight after starting, open the newest file in its log folder: Kunos says the server writes a fairly precise error message there before it exits.

Letting your drivers in

Drivers connect over TCP 9201 and then send their car positions over UDP 9201, which is also used for the ping you see in the server list. If your server appears but never shows a ping, the handbook's answer is that the UDP port is not reachable. A rented server has no home router to configure, so the only thing to change is the Windows firewall on the machine itself. The rules below are added once; pasting the block again changes nothing.

& {
  $ErrorActionPreference = 'Stop'
  $rules = @(
    @{ Name = 'ACC 9201 TCP (join)';     Protocol = 'TCP' },
    @{ Name = 'ACC 9201 UDP (driving)';  Protocol = 'UDP' }
  )
  foreach ($r in $rules) {
    if (-not (Get-NetFirewallRule -DisplayName $r.Name -ErrorAction SilentlyContinue)) {
      New-NetFirewallRule -DisplayName $r.Name -Direction Inbound -Action Allow -Protocol $r.Protocol -LocalPort 9201 | Out-Null
    }
  }
  Get-NetFirewallRule -DisplayName 'ACC 9201*' | Select-Object DisplayName, Enabled, Action
}

Then start accServer.exe again from Remote Desktop. When you are done, close the Remote Desktop window to disconnect; signing out would close the programs you started, the server included. After a reboot, including one from Windows Update, you have to start it again yourself, so schedule updates away from race night.

Open lobby or league night?

Leave the passwords empty and keep registerToLobby at 1, and you have a public server. Anyone can find it through Quickjoin and the server list, but Kunos applies a limited set of options to it: at most 30 cars, default pit rules and no forced entry list.

Give the server a join password in settings.json and keep registerToLobby at 1, and it becomes private but still listed: that is the usual choice for a league raced over the internet. Switching registerToLobby to 0 also makes it private, but then only machines on the same local network can find it, and only while lanDiscovery is 1, so keep that for LAN sessions. The pit rules from eventRules.json then apply, and forceEntryList set to 1 turns away anyone who is not on your entry list. Car slots follow maxCarSlots, up to the number of pit boxes the track has. In configuration.json, only lanDiscovery differs from the default for a league raced over the internet: the handbook says it can be turned off, set to 0, on a dedicated server. To reserve places, create entrylist.json in the cfg folder like this:

{
  "entries": [
    {
      "drivers": [ { "playerID": "S76561190000000000" } ],
      "raceNumber": 7,
      "forcedCarModel": -1,
      "overrideDriverInfo": 0,
      "isServerAdmin": 1
    }
  ],
  "forceEntryList": 0
}

The playerID is the driver's Steam64 number, prefixed with a capital S; the number above is a placeholder. Set isServerAdmin to 1 on an entry and that driver becomes admin on joining. Listed drivers also skip the rating requirements and still get in when the server is full, provided there are free pit boxes.

Running race control from the chat

Anyone who knows the admin password can type /admin followed by it in the chat, even as a spectator. After that you can use the commands Kunos lists:

  • /next moves on to the next session; /restart starts the current one over, but not during the preparation phase.
  • /kick plus a race number throws a driver out until the race weekend starts over, and /ban keeps them out until the server itself restarts.
  • /tp5 and /tp15 add time penalties, /dt gives a drive-through, /dq disqualifies and /clear cancels pending penalties.
  • /manual entrylist saves the drivers who are connected right now as an entry list, a quick way to start your league's grid.

Want results for your standings? Set dumpLeaderboards to 1 in settings.json and create a results folder next to accServer.exe. Each finished session then writes a JSON file named after the date, the time and the kind of session, holding the leaderboard, every lap and the penalties.

The server that fits

Kunos's handbook gives no hardware list, so pick a processor with a quick single core and test a full grid before your first league night. Our game servers page ranks only the processors we sell that score 2,000 or higher in PassMark's single-thread benchmark, fastest first, and shows the cities where each one is sold.

  • Windows Server is chosen at checkout and its licence is added on the order form. It is counted per core: flat up to eight cores, then per core above that.
  • Take a machine that is already racked and expect it roughly 30 minutes once your order is approved. Hourly billing, useful for a one-off event, covers only a racked machine ordered exactly as it stands; ask us on chat whether Windows can be added to an hourly order. Building one to your own spec is billed monthly; it needs 4 to 24 hours when we hold the parts, longer when a component must be ordered in.
  • Your port is unmetered and not shared with another customer at the access switch, in any of our five cities. Ping each one from our data center page first.
  • Rack servers, blades and two cartridge models, the m510 and m710x, also give you a browser console, which still works when Remote Desktop does not.

One machine can host several ACC servers, one per series, provided each one runs out of its own duplicated server directory with a separate tcpPort and udpPort and matching firewall rules. Point centralEntryListPath in each server's settings.json at one folder, written with forward slashes such as C:/acc-league/ (Kunos says backslashes do not work), and they all read the same entry list. For other racing games, see our pages on the Wreckfest dedicated server and BeamMP server hosting.

Keeping your season safe

Your setup and your results are the two things worth keeping. To update, close the server window first, then run the install block one more time: a dated copy of cfg is saved before SteamCMD updates and checks the files, and copied back once it is done. Every so often, copy results and the saved folders in C:\acc-saves to your own computer, because a copy that lives only on the server is lost with the server. Keep those copies private too, since settings.json holds your passwords as plain text.

Questions people ask

Do I need a Windows server for ACC?
Yes. Steam lists the ACC server tool for Windows only, and Kunos's handbook is written for Windows. Choose Windows Server when you order, and the licence is added to the same order.
What ports should I open?
Port 9201 on both TCP and UDP, unless you changed tcpPort and udpPort in configuration.json. TCP is used to join and UDP carries the driving and the ping test. If you run a second server on the same machine, give it two other ports and open those too.
How many cars can join?
An open public server takes at most 30 cars. A private one follows maxCarSlots, but never more than the track's pit boxes. Spectators do not use a car slot, though they still count towards maxConnections.
Why does my server close right after it opens?
Kunos says it shuts down straight away when it finds a setting it cannot accept, and the newest log in the log folder explains why. Look for a typing mistake in the JSON, a file saved in another encoding, or a misspelt track name; for the last one, the log lists the valid names.
Can my co-admins use race control too?
Yes. Give them the admin password to type after /admin in chat, or add each of them to entrylist.json with isServerAdmin set to 1 so they get admin rights whenever they join.

Start your ACC league

A whole Windows machine for your grid, an unmetered port and no contract, with a person on chat whenever you want one.

Find your game server

Read next