Short answer. You can host an OpenTTD server yourself for free: download the OpenTTD release from openttd.org, add a base graphics set such as OpenGFX (a dedicated server will not start without one), run ./openttd -D and open port 3979 for both TCP and UDP. Or rent an OpenTTD server and skip the networking.
Players open Multiplayer in OpenTTD, press Search internet to find a public server by name, or use Add server with an invite code that starts with + for an invite-only one.
Checked on 5 November 2026 against OpenTTD 15.3 (4 April 2026), the newest stable release. A 16.0 release candidate exists, and a server only accepts players on the same version.
This guide uses OpenTTD's own documentation and what we run on our own OpenTTD servers. To go straight to the rental route, see Option 2.
What you need
Operating system: Linux, Windows or macOS. OpenTTD publishes a generic 64-bit Linux build as a .tar.xz archive, which is what the steps below use.
Base graphics: OpenTTD needs graphics files to run. The free set is OpenGFX. If you own Transport Tycoon Deluxe, its original files work as well.
Network: the game port, 3979 by default, reachable from the internet over TCP and UDP.
The game: every player needs OpenTTD, which is open source and free on openttd.org, Steam, GOG and the Microsoft Store. Players must run the same version as the server.
The server software is free. You pay for the machine, power and bandwidth, not the software.
Option 1: host it yourself
This works on a spare PC, a home server or a cloud virtual machine. The server flags come from OpenTTD's multiplayer manual and source code, and the download steps mirror our own install script.
Linux (Debian or Ubuntu)
Install the tools to unpack the downloads.
sudo apt-get install curl ca-certificates tar xz-utils unzip
Download OpenTTD 15.3 into a folder of its own.
mkdir ~/openttd && cd ~/openttd
curl -fsSL -o /tmp/openttd.tar.xz "https://cdn.openttd.org/openttd-releases/15.3/openttd-15.3-linux-generic-amd64.tar.xz"
tar -xJf /tmp/openttd.tar.xz --strip-components=1
Add the OpenGFX graphics set to the baseset folder inside it.
Without a graphics set the server stops at start with "Failed to find a graphics set". The release archive contains only the metadata for the original Transport Tycoon Deluxe files, not the files themselves.
Start the server. The archive brings its own libraries in lib/, so point the loader at them.
-D starts a dedicated server with no window. On Linux, -f runs it in the background and writes output to openttd.log in ~/.local/share/openttd/. With no -g argument it generates a new map.
Set the name, visibility and password by typing into the server console, or in the config files in ~/.config/openttd/ (the name is kept in private.cfg, the password in secrets.cfg).
setting server_name "My OpenTTD Server"
setting server_game_type public
setting server_password "choose-a-password"
server_game_type takes public (listed), invite-only (joined with an invite code) or local (LAN only). OpenTTD's manual notes that a server must be public to appear in the server list.
Open the port. Allow port 3979 over TCP and UDP in the machine's firewall (with ufw: sudo ufw allow 3979/tcp and sudo ufw allow 3979/udp). Behind a router, forward the same port, again for both TCP and UDP.
Continue a game later. Saves are written to ~/.local/share/openttd/save/. Load one with -g, for example ./openttd -D 0.0.0.0:3979 -g save/mygame.sav. Settings you changed in the console are kept in the config files OpenTTD writes when it exits.
Check it from outside. From another network, open Multiplayer in OpenTTD and press Search internet. If your server is public and does not appear, read the network messages the server prints: -D already turns on the network debug output (-d net=4), and a registered server prints its invite code there.
Windows
Install OpenTTD from openttd.org (the Windows installer can optionally download the free graphics for you), then start the dedicated server from a Command Prompt with "C:\path\to\openttd.exe" -D. Set the name, visibility and password with the same console commands as above, and allow the game port, 3979 by default, over TCP and UDP in Windows Firewall.
Useful server commands
Remote console: on the server, set a password with rcon_pw. A player connected to the server then opens their console with the key left of 1 (the backquote key) and types rcon <password> "<command>", for example rcon <password> "kick 5".
Load a save from the console:ls lists files with numbers, cd <number> enters a folder and load <number> loads a file.
Clean up abandoned companies: turn on autoclean_companies, and a company that no player has been connected to for the number of in-game months in autoclean_protected (36 by default) is removed.
Restart the map automatically:restart_game_year starts a new map when that in-game year is reached, and restart_hours after that many hours of play. 0 turns either off.
Option 2: host it on PlayNHost
Renting removes the downloads, the graphics set, the firewall and the port forwarding. The port and the config are set up for you.
Pick a plan. Open the OpenTTD server hosting page and compare the plans (STEAM, DIESEL and MAGLEV at the time of writing). Press Create Server on STEAM or DIESEL, or Customize Plan on MAGLEV, and finish the order. Prices change, so check them on that page.
Wait for the install. You get an email saying your OpenTTD server is ready, and the server appears at panel.playnhost.com. The world is generated on the first start, so if you want a different map size or starting year, set them (step 3) before you press Start. On the Console tab, the panel counts the server as running when it prints PlayNHost: OpenTTD server ready.
Open Settings, then Game Settings. Each of these is written into the server's config when it starts:
Server name: the name players search for.
Join password: leave it empty for no password. Spaces, double quotes and backslashes are removed from both passwords, so do not use them.
Server listing: Listed for everyone, Unlisted, join by code (invite only) or Unlisted, join by address (local).
Company limit, Starting year and Map size (256x256, 512x512, 1024x1024 or 2048x2048). Map size and starting year only apply when a new world is generated: to start over with new ones, delete the saves in the save folder under Files and restart.
Autosave interval, Pause while empty and Remove abandoned companies.
RCON password: the remote console password, if you want one.
Player slots is shown read only.
Restart. When the panel shows "Saved. The server must restart before these take effect.", press Restart now and wait for the ready line.
Join. Open Multiplayer in OpenTTD, press Search internet and pick your server by name. For an invite-only listing, use Add server and enter the invite code, which always starts with +: the server prints it on the Console tab after Invite code:. Add server also takes the server address instead of a code.
Graphics and libraries. The install downloads OpenGFX 8.0 next to OpenTTD 15.3 and checks that the graphics set and the bundled libraries are there, so the server does not stop at first start with a missing graphics set.
Keys it rewrites at every start. The panel writes the port, player limit, company limit, listing, pause while empty, abandoned company cleanup, autosave interval, starting year and map size into openttd.cfg, so change them in Game Settings. Other keys you add to that file, such as a NewGRF section, are left alone. Edit it under Files with the server stopped, because OpenTTD writes the file again when it shuts down.
Name and passwords. OpenTTD keeps the server name and passwords outside openttd.cfg, so at each start the panel sets them through the game's own console script instead.
Ready line. The ready line is printed once the game is running, not when the network port opens, so the panel does not report the server up while the map is still being generated.
Your world continues. On each start the server loads the newest save it finds, from the exit save or the autosaves, and generates a new world only when there is none. To start over, you need to remove the saves.
Pause while empty. This setting is on by default. When it is on, the panel sets min_active_clients to 1, and to 0 when it is off.
Backups. If your plan includes backups, take one from Backups before editing the config by hand.
Self-hosting or renting: an honest comparison
Cost. Self-hosted: the software is free, and you pay for hardware, power and bandwidth, or a cloud virtual machine. Rented: a monthly fee set by plan. See the current plans.
Availability. Self-hosted: as reliable as your machine and home internet, and it has to stay on for a long-running game. Rented: runs on the host's hardware, not your PC.
Network exposure. Self-hosted: players connect to your public IP and you look after the firewall and router. Rented: your home IP is not involved.
Skill needed. Self-hosted: command line, port forwarding, graphics set, config editing and updates. A good way to learn. Rented: a web panel with form fields.
Updates. Self-hosted: you download new releases yourself, and players on a newer version cannot join until you do. Rented: the server runs the version our install sets, OpenTTD 15.3 at the time of writing, so players need that version.
Self-hosting suits you if a machine already runs all day and you are comfortable with networking. Renting suits you if you would rather not look after hardware.
Common problems and fixes
The server stops with "Failed to find a graphics set"
Cause: there is no base graphics set in baseset.
Fix: add OpenGFX as in step 3, then start again.
The server does not show in the server list
Cause:server_game_type is not public.
Fix: set it to public and restart. If it still does not show, read the network messages the dedicated server prints (-D turns on -d net=4) for its registration with OpenTTD's Game Coordinator.
A friend sees your server with a red or yellow dot
Cause: a red dot means a different OpenTTD version, a yellow dot means NewGRFs they do not have.
Fix: install the same version, or use NewGRF Settings and Find missing content online to fetch the NewGRFs, then join.
An invite-only server stays local (self-hosted)
Cause: the value was not written exactly as invite-only, with a hyphen (for example invite_only). A value OpenTTD does not recognise leaves the setting at its default, which is local.
Fix: write invite-only exactly. On PlayNHost, pick Unlisted, join by code in Server listing.
Your changes to the config file disappear (PlayNHost)
Cause: the key is one the panel writes at every start, or the file was edited while the server was running and OpenTTD wrote it again on shutdown.
Fix: change panel keys in Game Settings and restart. Edit other keys with the server stopped.
FAQ
Can I host an OpenTTD server for free?
Yes. OpenTTD is open source and the dedicated server is part of the same download. You still pay for the machine, power and internet, and it must stay on while people play.
Which port does an OpenTTD server use?
3979 by default, over TCP and UDP.
Do I need Transport Tycoon Deluxe?
No. The free OpenGFX set is enough for a server.
How do players find the server?
Public servers appear under Search internet in the Multiplayer menu. Invite-only servers are joined with an invite code that starts with +.
We use cookies to keep the site working, to understand how it is used, and to measure our marketing. You can accept all, accept essential cookies only, or choose per category.We use cookies to keep the site working, to understand how it is used, and to measure our marketing. They are on by default here. You can switch off anything you do not want.Read our privacy policy