Short answer. You can host a Puck server yourself for free: install the Puck Dedicated Server (Steam app 3481440) with SteamCMD using an anonymous login, write a server_config.json with your server name, password and player limit, start it with start_server.sh, and open game port 7777. Or rent a Puck server and skip the networking.
Players join from Puck's in-game server browser while the server is public, or with Direct Connect using your address and port.
Checked on 5 November 2026 against build B1235 (14 August 2026), the newest developer announcement on Steam. Check for a newer one before you rely on a detail.
This guide uses the developer's Steam announcements and what we saw when we installed and booted the server ourselves. The developer documents the server mainly through those announcements, so where something is only known from our install, the guide says so. To go straight to the rental route, see Option 2.
What you need
Operating system: a 64-bit Linux machine (the Linux dedicated server needs start_server.sh) or Windows (the developer added a Windows dedicated server build in Build 174.2).
Hardware: the developer does not publish dedicated server requirements. The Steam page lists only what the game client needs.
Network: the game port, 7777 in the sample config below, reachable from the internet. In our tests the server logged its game listener as UDP on that port. Since B897 the developer says the server browser pings servers and reads their state over TCP, without naming the port.
Steam account: not needed to download the server. Our install command uses +login anonymous.
The game: Puck is free to play on Steam for Windows, macOS and Linux, so friends join without buying anything.
The server software is free. You pay for the machine, power and bandwidth, not the software.
Option 1: host it yourself
There are two ways to run your own server. The quick one is built into the game: since Build 174.2 the New Server menu has a SELF HOSTED tab that hosts a server on your own PC, and Puck tries to forward the ports with uPnP, which some routers and internet providers do not allow. For a server that keeps running, use the dedicated server below.
Linux (Debian or Ubuntu)
Install the library SteamCMD needs, and curl for the next step.
The first line lets a fresh SteamCMD update itself before the real download. Our install script does the same and then retries up to three times, because Steam sometimes answers "Failed to install app (Missing configuration)" and SteamCMD still ends with "success". Check that /home/steam/puck/steamapps/appmanifest_3481440.acf exists. If it does not, run the download again.
Write a config file called server_config.json in /home/steam/puck. This is the file the server read on boot in our tests (its log says Deserializing server config from file (./server_config.json)), and the one our install creates:
An empty password means anyone with the address can join. Set isPublic to false to keep the server out of the server browser: since Build 174 the browser respects that switch.
Start the server with the launcher, not the old executable. Since Build 202 the Linux server needs start_server.sh so the Steam API library loads. It passes any arguments on to Puck.
cd /home/steam/puck
chmod +x start_server.sh
./start_server.sh
If your build does not pick up the file from this folder, the developer says the config path can be set with the --serverConfigurationPath launch argument (Build 174), and the ban list path with --bannedSteamIdsPath.
Open the ports. Allow your game port on the machine's firewall (with ufw: sudo ufw allow 7777, which opens it for TCP and UDP), then forward it on your router to this machine. The game itself listens on UDP. The developer says the server browser reaches servers over TCP but does not say on which port, so if Direct Connect works and the browser does not list your server, that connection is the part to check.
Check it. Find your server name in Puck's server browser, or use Direct Connect with your public IP and port. The developer made Direct Connect a native button in Build 1153, so it no longer needs the F5 debug tools.
Windows
Install SteamCMD from https://client-update.steamstatic.com/installer/steamcmd.zip into a folder such as C:\steamcmd.
Download the server. Steam app 3481440 has a Windows build as well as the Linux one (the developer added it in Build 174.2), so the same SteamCMD download works with a Windows folder:
Create server_config.json in C:\puck as in the Linux step 4 and start Puck.exe, the Windows program Steam lists for this app. We run and checked the Linux server, not the Windows one, so if it does not pick up the file, pass its path with --serverConfigurationPath. Allow your game port inbound in Windows Firewall and forward it on your router.
Mods
Since Build 202 a server can load Steam Workshop mods through a mods list in its config. Each entry has the Workshop item id, enabled, and clientRequired (true makes players download the mod when they connect, false is for server-side mods). The developer's example:
Dedicated server admins have chat commands, according to the developer's announcements: /kick, /pause and /resume (Build 171), /ban and /unban by SteamID64 (Build 1153). Server admins cannot be votekicked and can join a full server.
Option 2: host it on PlayNHost
Renting removes the firewall, port forwarding and update routine. The port and the config file are set up for you.
Pick a plan. Open the Puck server hosting page and compare the plans (FACEOFF, SLAPSHOT and OVERTIME at the time of writing, for 12, 16 and 24 players). Press Create Server on FACEOFF or SLAPSHOT, or Customize Plan on OVERTIME, and finish the order.
Wait for the install. You get a "server ready" email and the server appears at panel.playnhost.com. On the Console tab, the panel counts the server as running when the log prints a line containing is ready to accept clients on.
Open Settings, then Game Settings. These fields are written into server_config.json each time the server starts:
Server Name: the name in the server browser.
Server Password: the join password. It starts empty, so set one if you want to keep the rink to your own group.
Max Players: starts at your plan's player count and cannot go above it.
Restart. When the panel shows "Saved. The server must restart before these take effect.", press Restart now and wait for the ready line.
Join. Find your server name in Puck's in-game server browser, or use Direct Connect with the server's address and port from the panel. Enter the password if you set one.
What our setup does for you
Keys written at every start. The panel writes name, password, maxPlayers and port into server_config.json before the server boots. Hand edits to those four keys are replaced at the next start, so change them in Game Settings.
Other keys stay yours. Our install seeds the file with tickRate 200, isPublic true, useVoip false and useWhitelist false, and the panel does not touch them. Change them on the Settings page, where server_config.json has its own entry, or edit the file under Files with the server stopped, then start it again.
The right config file. Some community guides and templates name the file server_configuration.json. In our tests the server read server_config.json, as its own log line shows, so that is the file the panel fills in and the one to edit.
Install checks. The install script tries SteamCMD up to three times and treats the app manifest, not SteamCMD's exit code, as proof the game downloaded.
Updates on restart. Each start checks Steam for a newer server build and installs it before Puck boots, so a restart after a Puck patch brings the server up to date.
Mods list. The Workshop page is how mods are meant to reach the mods list on PlayNHost. We have not yet confirmed on a live server that mods added this way load, so ask support before you rely on one or edit mods by hand.
Console. The Console tab shows the server log. We know of no remote console (RCON) for Puck: admin commands are typed in the in-game chat, and commands typed in the panel's console box do not reach the game, so a settings change and a restart are your remote control.
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 when your friends play. 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 and JSON editing. Very doable, and a good way to learn. Rented: a web panel with form fields.
Updates. Self-hosted: stop the server, run the SteamCMD command again, start it. Rented: there is no SteamCMD routine for you to run, because each start checks Steam for a newer server build. After a Puck patch, restart the server.
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. If you want a rink for your group, see the Puck plans.
Common problems and fixes
The download finishes but there are no server files
Cause: SteamCMD printed "Missing configuration" and still ended with "success". We have seen this on our own installs.
Fix: check for steamapps/appmanifest_3481440.acf. If it is missing, run +app_update 3481440 validate again.
The server does not show in the server browser
Cause:isPublic is false, or the server is not reachable from outside. The browser reaches servers over TCP, so a firewall that lets only UDP through can hide a server that Direct Connect still reaches.
Fix: set isPublic to true, open and forward your game port, and try Direct Connect from a computer outside your network.
My config changes do not apply
Cause: the file was edited while the server was running, or you edited a key the panel rewrites (PlayNHost).
Fix: stop the server, edit, start it. On PlayNHost change the name, password, player limit and port in Game Settings.
FAQ
Can I host a Puck server for free?
Yes. The dedicated server is on Steam and downloads with an anonymous login. You still pay for the machine, power and internet, and it must stay on while people play.
Do I need to own the game?
No. Puck is free to play on Steam, so everyone who joins can download it without paying.
How many players can join?
You set maxPlayers in the config. In Build 19 (September 2024), before the dedicated server was released, the developer limited its own hosted servers to 10 players; it has not published a cap for dedicated servers since. Our plans are 12, 16 and 24 players.
Which port does a Puck server use?
The game port is whatever port says in server_config.json, 7777 in the sample. In our tests the game listened on UDP. Since B897 the server browser pings servers over TCP, and the developer does not name that port.
Can I add Steam Workshop mods?
Yes, since Build 202, through the mods list shown above. Players download any mod marked clientRequired automatically when they connect, and since B897 a popup lists the required mods first.
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