An Assetto Corsa dedicated server is acServer, a small headless program that ships with the game and is also a free SteamCMD download. It is configured by two text files, cfg/server_cfg.ini and cfg/entry_list.ini, it needs TCP and UDP on 9600 plus an HTTP port on 8081, and 2 GB of memory will run a full grid. It does not distribute content: every driver must already own or have installed the exact cars and track you configured, or they are rejected at the checksum.
That last point is the one that surprises people arriving from other games. There is no download-on-join. A mod car server means telling your drivers what to install and where to get it, and a version mismatch in a single file produces a kick with a message nobody finds helpful. Get that right and the rest is a pleasant afternoon of picking session lengths.
What the Assetto Corsa dedicated server is#
acServer is Kunos's own server binary. It holds the session structure, tracks lap times and positions, applies penalties, and relays car state between clients. Physics still run on each driver's machine; the server is the authority on who is where and what the session is doing.
Three properties define how you work with it:
- It is single-threaded in practice. The
NUM_THREADSsetting exists, but a full grid on one modern core is fine and adding cores does not make a server faster. - It serves content by reference, not by value.
TRACK=ks_nordschleifemeans "the track in everyone'scontent/tracks/ks_nordschleifefolder". The server has a copy so it can compute checksums; it never sends it to anyone. - The HTTP port is not optional. Lobby registration and the in-game server details panel both go through it. A server with
9600open and8081closed runs perfectly and appears to nobody.
Assetto Corsa is old enough that the ecosystem around it matters as much as the base server. Content Manager is what nearly everybody uses to edit these files and to launch and browse servers, and AssettoServer is a full replacement for acServer that most modern freeroam and traffic servers run. Both are covered below, but learn the vanilla files first: everything else is built on them.
Requirements and resource usage#
| Grid | RAM | vCPU | Notes |
|---|---|---|---|
| Up to 12 cars | 2 GB | 1 | Practice and small leagues |
| 16-24 cars | 2-3 GB | 1.5 | A normal race server |
| 24-32 cars | 3-4 GB | 2 | Limited by pit boxes more than by hardware |
| AssettoServer with AI traffic | 4-8 GB | 2-3 | The AI cars are simulated server-side |
- CPU: clock speed over cores, as above. The exception is AssettoServer running hundreds of AI traffic cars, which is a genuinely different workload and the one case where an Assetto Corsa server gets expensive.
- Disk: the server binary is tiny. Content is what fills a disk - a stock install is a couple of gigabytes, and a mod traffic server with fifty cars and a 100 km road network can reach tens of gigabytes.
- Network: every client's state is broadcast to every other client, so traffic grows roughly with the square of the grid size, multiplied by
CLIENT_SEND_INTERVAL_HZ. A 24-car server is a real, if modest, upstream load. Latency and jitter are what drivers feel; see latency, jitter and packet loss.
Installing the server#
The server folder is already in your game install at steamapps/common/assettocorsa/server/, containing acServer.exe and a Linux acServer binary. For a headless machine, pull it directly:
$ steamcmd +force_install_dir /home/ac/server +login anonymous \ +app_update 302550 validate +quit$ cd /home/ac/server$ ./acServerThe layout is:
acServercfg/server_cfg.inicfg/entry_list.inicontent/cars/content/tracks/Copy in the car and track folders you intend to use. For stock content you can take them from your game install; the server needs the data files for checksums, not the high-resolution textures, but copying the whole folder is simpler and disk is cheap. SteamCMD explained has the general pattern for scripted installs and updates, and SFTP and the file manager is the practical way to move a large content folder onto a hosted server.
server_cfg.ini: the settings that matter#
[SERVER]NAME=Thursday GT3 LeagueCARS=ks_ferrari_488_gt3;ks_mclaren_650_gt3;ks_porsche_911_gt3_r_2016CONFIG_TRACK=TRACK=ks_brands_hatchSUN_ANGLE=16PASSWORD=ADMIN_PASSWORD=change-thisMAX_CLIENTS=20UDP_PORT=9600TCP_PORT=9600HTTP_PORT=8081CLIENT_SEND_INTERVAL_HZ=18REGISTER_TO_LOBBY=1PICKUP_MODE_ENABLED=1LOCKED_ENTRY_LIST=0LOOP_MODE=1RACE_OVER_TIME=180RESULT_SCREEN_TIME=60ALLOWED_TYRES_OUT=2START_RULE=2DAMAGE_MULTIPLIER=50FUEL_RATE=100TYRE_WEAR_RATE=100ABS_ALLOWED=1TC_ALLOWED=1STABILITY_ALLOWED=0AUTOCLUTCH_ALLOWED=1TYRE_BLANKETS_ALLOWED=1FORCE_VIRTUAL_MIRROR=1MAX_CONTACTS_PER_KM=5KICK_QUORUM=85VOTING_QUORUM=80VOTE_DURATION=20BLACKLIST_MODE=1| Key | What it does |
|---|---|
NAME | The name in the lobby. Put the class and the day in it |
CARS | Semicolon-separated folder names from content/cars |
TRACK | Folder name from content/tracks |
CONFIG_TRACK | The layout, for tracks that have several. Empty for the default |
MAX_CLIENTS | Grid size. Cannot exceed the track's pit boxes |
ADMIN_PASSWORD | Typed in chat as /admin password to gain admin rights |
PASSWORD | Join password |
PICKUP_MODE_ENABLED | 1 lets drivers take any free slot. 0 is booking mode |
LOCKED_ENTRY_LIST | 1 restricts each slot to the GUID listed for it |
LOOP_MODE | 1 restarts the session sequence forever |
START_RULE | 0 locked until green, 1 teleport to pits, 2 drive-through |
ALLOWED_TYRES_OUT | Wheels allowed off track before a cut is counted. -1 disables |
DAMAGE_MULTIPLIER | Percentage. 0 is no damage, 100 is full |
FUEL_RATE, TYRE_WEAR_RATE | Percentages of the real consumption |
ABS_ALLOWED, TC_ALLOWED | 0 denied, 1 factory setting, 2 forced on |
STABILITY_ALLOWED | Stability control. 0 for anything competitive |
MAX_CONTACTS_PER_KM | Kicks drivers who keep hitting things. 0 disables |
KICK_QUORUM, VOTING_QUORUM | Percentage of drivers needed to pass a vote |
CLIENT_SEND_INTERVAL_HZ | Update rate to clients. 18 is the shipped value |
REGISTER_TO_LOBBY | 1 lists the server publicly |
Some notes that save an evening:
CARSandTRACKare folder names, not display names.ks_brands_hatch, not "Brands Hatch". Opencontent/tracksand copy what you see.CONFIG_TRACKis the layout subfolder. Brands Hatch has Indy and GP; Nordschleife has several. Leaving it empty on a track that has no default layout is a common reason the server exits at start.MAX_CLIENTSabove the track's pit box count does not give you more cars. It gives you a server that misbehaves at session start. Check the track before you set a grid size.CLIENT_SEND_INTERVAL_HZis the closest thing this game has to a tick rate setting. Raising it past the shipped value costs bandwidth for very little; if drivers report warping, look at packet loss first. What tick rate actually means is worth reading before you turn this dial.ADMIN_PASSWORDis entered in the in-game chat as/adminfollowed by the password, after which commands such as/kick,/ban,/next_sessionand/restart_sessionare available to you.
The timing keys decide how a public server behaves when nobody is organising it. LOOP_MODE=1 makes the session sequence repeat forever, which is what you want unless a person is present to restart it. RACE_OVER_TIME is how long stragglers get to finish after the winner crosses the line - 180 seconds is generous for a sprint and mean for an endurance race. RESULT_SCREEN_TIME is dead time at the end of every cycle, so on a busy pickup server keep it short.
The voting keys are worth setting deliberately rather than leaving at the defaults. KICK_QUORUM=85 means it takes 85 per cent of the grid to remove somebody, which on a six-car server means everybody. If your server is public and unattended, lower it; if it is a league, raise it to 100 or turn voting off entirely and rely on ADMIN_PASSWORD, because a vote kick is a tool people misuse when a race goes badly.
There is also a plugin interface - UDP_PLUGIN_LOCAL_PORT, UDP_PLUGIN_ADDRESS and AUTH_PLUGIN_ADDRESS - which is how external tools such as lap time trackers and rating systems attach to a server. If you are not running one, leave all three empty.
Sessions, the dynamic track and weather#
The session sequence is defined by which sections exist and in what order they are written. A server with only a [PRACTICE] section is an open practice server; add [QUALIFY] and [RACE] and you have a race weekend on a loop.
[PRACTICE]NAME=PracticeTIME=20IS_OPEN=1[QUALIFY]NAME=QualifyTIME=15IS_OPEN=1[RACE]NAME=RaceLAPS=12WAIT_TIME=60IS_OPEN=1[DYNAMIC_TRACK]SESSION_START=94RANDOMNESS=2LAP_GAIN=30SESSION_TRANSFER=80[WEATHER_0]GRAPHICS=3_clearBASE_TEMPERATURE_AMBIENT=20BASE_TEMPERATURE_ROAD=6VARIATION_AMBIENT=2VARIATION_ROAD=1WIND_BASE_SPEED_MIN=0WIND_BASE_SPEED_MAX=10WIND_BASE_DIRECTION=30WIND_VARIATION_DIRECTION=15TIME is minutes for practice and qualifying; a race uses LAPS instead, or TIME for a timed race. WAIT_TIME is the seconds on the grid before the lights go out. IS_OPEN controls whether latecomers may join a session in progress - set it to 0 on the race for a league and leave it at 1 for a public server, where refusing joins just means an empty server.
The dynamic track is grip as a percentage, and it is the most underused feature in the file. SESSION_START=94 begins slightly green, LAP_GAIN=30 means grip improves by one percent every thirty laps driven by the field, and SESSION_TRANSFER=80 carries eighty per cent of the gained grip into the next session. Set the start below 90 and your first practice session will feel broken to anyone used to hotlapping offline, so tell people.
Weather sections are numbered from zero, and the server picks between them. GRAPHICS is the weather preset id, which is a folder name in the game's weather content, so mod weather works if everyone has it. BASE_TEMPERATURE_ROAD is an offset above ambient, not an absolute value: ambient 20 with road 6 means a 26 degree track. Getting that wrong is why a server sometimes has bizarre tyre behaviour.
entry_list.ini and the grid#
Every slot on the grid is an entry. The number of entries must be at least MAX_CLIENTS, and neither may exceed the track's pit boxes.
[CAR_0]MODEL=ks_ferrari_488_gt3SKIN=rosso_corsaSPECTATOR_MODE=0DRIVERNAME=TEAM=GUID=BALLAST=0RESTRICTOR=0[CAR_1]MODEL=ks_mclaren_650_gt3SKIN=00_mclarenSPECTATOR_MODE=0DRIVERNAME=TEAM=GUID=76561198012345678BALLAST=20RESTRICTOR=0Four fields do the work:
MODELmust be one of the cars listed inCARS, andSKINa folder under that car'sskinsdirectory.- Leave
GUIDempty for an open slot. Fill it with a SteamID64 and, withLOCKED_ENTRY_LIST=1, that slot belongs to that driver alone - which is how a league guarantees everyone their number and livery. BALLASTin kilograms andRESTRICTORas a percentage are the per-driver balance tools. They are the honest way to keep a mixed-ability league close, applied per entry rather than per car.SPECTATOR_MODE=1marks an entry as a non-driving observer slot.
Editing this by hand for a 24-car grid is tedious, and this is where Content Manager earns its place: it generates both files, checks that models and skins exist, and can pack a content set for your drivers.
Ports, the lobby and connecting#
| Port | Protocol | Purpose |
|---|---|---|
9600 | UDP | Car state |
9600 | TCP | Connection and chat |
8081 | TCP | HTTP: lobby registration and server details |
All three need to be reachable from the internet. The classic failure is opening 9600 on both protocols, forgetting 8081, and then not understanding why a server that friends can join by direct connection never appears in the list. Game server ports explained covers why a game splits itself across ports like this.
Drivers join through the in-game list, through Content Manager's browser, or by direct connection to address:9600. A hostname works as well as an address - connecting a domain to a game server has the A record - and is worth setting up if you expect people to type it.
Mod content, AssettoServer and CSP#
Mod cars and tracks are why Assetto Corsa is still alive a decade on, and they are entirely a distribution problem. The rules:
- Install the mod on the server exactly as on a client: the car folder into
content/cars, the track folder intocontent/tracks. - Every driver needs the same version of the same mod. Assetto Corsa checksums key files, and a driver with a different build of the same car is rejected with a checksum error. There is no partial compatibility.
- Publish the exact download link and version for everything on your server, and keep that list with your config backups. Mod sites reissue files quietly, and "it worked last week" usually means somebody re-downloaded.
AssettoServer is an open-source replacement for acServer. It reads the same server_cfg.ini and entry_list.ini, adds its own extra_cfg.yml, and provides the things the vanilla server never had: server-side AI traffic, real-time weather and time progression synchronised through Custom Shaders Patch, a plugin system, and much better admin tooling. Nearly every freeroam and traffic server you have joined is running it.
The trade is that the interesting features need Custom Shaders Patch on the client, so a CSP-dependent server is not joinable by a plain install. For a league running fixed sessions on stock content, vanilla acServer is simpler and entirely sufficient. For anything freeroam, AssettoServer is what you want, and the AI traffic is the part that needs the extra memory and CPU in the sizing table above.
Troubleshooting#
"Checksum failed" when a driver joins. Their copy of a car or track differs from the server's. Same mod, different version, or a skin pack that overwrote a data file. Compare versions rather than reinstalling blindly.
The server runs and is not in the list. REGISTER_TO_LOBBY=1, then the HTTP port. It is almost always the HTTP port.
The server exits immediately at start. Read the output: it names the car or track folder it could not find. Usually a typo in CARS, a missing CONFIG_TRACK layout, or content copied to the wrong folder. Reading the console is about getting the answer out of that output quickly.
Cars spawn in odd places or the session breaks at the start. MAX_CLIENTS or the entry list is larger than the track's pit boxes.
Everyone gets a drive-through at the start. START_RULE=2 plus drivers who move before green. Either explain the rule or set it to 0.
Drivers warp or rubber-band. Packet loss between them and the server, not CLIENT_SEND_INTERVAL_HZ. Have them check their route before you change a server setting that affects everybody.
Lap times are not saved between sessions. The vanilla server writes results to its results folder and nothing else. Persistent standings come from a plugin on the UDP interface or from AssettoServer.
Back up cfg/, your content list and any plugin configuration. The content itself is re-downloadable; the configuration that took a league three weeks to agree on is not, and a backup you have never restored is a hypothesis - see backups that actually restore.
FAQ#
Do I need to own Assetto Corsa to run a server?
No. The dedicated server is a separate free application, app id 302550, and installs with an anonymous SteamCMD login. The copy in your game folder is the same thing.
How many cars can a server hold?
Up to the number of pit boxes on the track, which is usually between 18 and 32 for stock circuits. MAX_CLIENTS above that number causes problems rather than adding slots.
Does the server send mods to players?
No. There is no download-on-join. Every driver installs the same cars and tracks themselves, at the same versions, or they are rejected at the checksum.
What is the difference between acServer and AssettoServer?
acServer is Kunos's original server. AssettoServer is an open-source replacement that reads the same config files and adds AI traffic, dynamic weather and time through Custom Shaders Patch, and a plugin system. Freeroam servers run AssettoServer; fixed-session leagues often do not need it.
Why is my server missing from the lobby?
Nearly always the HTTP port, 8081 by default, being closed. Lobby registration goes through it, separately from the 9600 game ports.
How do I reserve a slot for a specific driver?
Put their SteamID64 in the GUID field of an entry in entry_list.ini and set LOCKED_ENTRY_LIST=1. That slot, car and skin is then theirs alone.




კომენტარები
სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.