# Hosting a Unity Mirror dedicated server

> NetCraftGames is designed to host a Mirror server built as a Linux x64 Unity dedicated server, over TCP, UDP or WebSocket transports. It is not certified yet; a real client join remains the proof you still need.

*NetCraftGames (NCG) by Charging Bull Software. Last updated: 2026-10-03. Canonical page: https://netcraftgames.com/engines/unity-mirror/*

## Short answer

Yes, for the design. A Mirror game can run on NetCraftGames if you ship a **Linux x64 dedicated server build** that already starts headless, listens on the port your transport uses, and accepts a real Mirror client. NetCraftGames deploys it on an isolated machine, checks health and a join probe, and gives players the address. Today it is pre-launch and no Mirror game has been certified.

## What Mirror transports mean for hosting

Mirror lets you choose the transport, and the transport decides the protocol and port you declare. From the Mirror documentation: the KCP transport is UDP and defaults to port 7777, Telepathy is TCP, and the SimpleWeb transport carries WebSocket traffic for WebGL clients and defaults to port 7778.

| Mirror transport | Protocol | Typical default port | Hosting note |
| --- | --- | --- | --- |
| KCP | UDP | 7777 | Declare UDP; give a UDP health reply or a TCP/HTTP join probe on another port |
| Telepathy | TCP | set in the component | Declare TCP; the example manifest uses TCP 7777 and an HTTP join probe on 8080 |
| SimpleWeb (WebSocket) | TCP, WebSocket | 7778 | Browser clients need `wss://`; see the [browser WSS page](https://netcraftgames.com/engines/browser-websocket/) |

Declare only the port and protocol pairs your server really opens. A bare TCP connection does not prove a player can join, so provide a game-level join probe wherever you can.

## What you provide

- A Linux x64 dedicated server build (see [the Unity build guide](https://netcraftgames.com/guides/build-linux-dedicated-server-unity/)), packed as `.tar.gz`.
- The transport, the listen address `0.0.0.0` and the port, in your server code or `NetworkManager`.
- A health reply, ideally a join probe, and optionally a loopback player-count endpoint so idle shutdown works.
- No credentials inside the archive. Read secrets from the environment.

## Steps


1. **Build a Linux dedicated server.** In Unity open File > Build Profiles, add a Linux Server profile (Dedicated Server), switch to it and build. The result is a headless executable with no graphical interface.
2. **Bind to all interfaces on a fixed port.** Set your Mirror transport to listen on `0.0.0.0` and the port you will declare, for example UDP 7777 for KCP. Do not bind to `127.0.0.1`.
3. **Add a health reply and join probe.** Answer a health request on a declared port and add a game-level join probe that returns a known response, so we can prove a player could join rather than just that a port is open.
4. **Report player counts if you can.** Expose a loopback JSON endpoint such as `/players` returning a bounded count. Without it, idle shutdown cannot be confirmed and the server must be put to sleep explicitly.
5. **Pack and declare it.** Create a clean `.tar.gz` with no links or secrets, then declare the engine as Unity Mirror, the transport and the ports in the manifest.
6. **Submit and test with a real client.** After launch, submit the build, apply the proposed connection config to your client and join from a separate machine before telling players.


## Honest gaps

- **Not certified.** Real Unity and Mirror versions, with separate clients, are still to be tested: install, concurrent join, state replication, reconnect and shutdown.
- **Transport plugin compatibility** (for third-party Mirror transports) is not verified by a manifest check.
- **WebGL clients** need SimpleWeb over TLS and are covered by the browser WSS lane, not by a UDP lane.
- **Windows and macOS server builds** are not hosted.
- **No anti-cheat.** Mirror's authority model is yours to get right.
- **Not every Unity networking game is a Mirror game.** If your Linux build's `Managed/` folder holds no Mirror, Telepathy or kcp2k assembly because the server is written on plain sockets, declaring Mirror is wrong. The code reading says so in a non-blocking advisory, and the right choice is Custom native TCP/UDP (direct) on the [engines page](https://netcraftgames.com/engines/): configuration and deployment only, direct to the server's public IP and port with no gateway, and you supply the join probe.

## Frequently asked questions


### Which Mirror transport should I use for hosting?

Use the transport your game already works with. KCP is UDP and suits most native clients; Telepathy is TCP; SimpleWeb carries WebSocket traffic for WebGL. NetCraftGames does not change your transport. Declare exactly the port and protocol pairs your server opens, and provide a join probe so a player join can be proven.

### Can NetCraftGames host a Mirror host-client game, not a dedicated server?

No. NetCraftGames runs dedicated server builds on Linux x64, not player-hosted sessions. If your game only supports a listen server inside the client, you first need a headless dedicated server build. The Unity build guide explains how to produce one from the Linux Server platform.

## Sources

- [Mirror documentation: Transports](https://mirror-networking.gitbook.io/docs/manual/transports), accessed 2026-10-03
- [Mirror documentation: KCP Transport](https://mirror-networking.gitbook.io/docs/manual/transports/kcp-transport), accessed 2026-10-03
- [Unity Manual: Build a Dedicated Server](https://docs.unity3d.com/6000.0/Documentation/Manual/dedicated-server-build.html), accessed 2026-10-03

## Related pages

- [Mirror server on the cloud: ports and firewall checklist](https://netcraftgames.com/guides/mirror-server-ports-firewall-checklist/): A practical ports and firewall checklist for running a Mirror dedicated server on a cloud machine: KCP, Telepathy and SimpleWeb ports, binding and testing.
- [How to build a Linux dedicated server from Unity](https://netcraftgames.com/guides/build-linux-dedicated-server-unity/): Step by step: build a headless Linux dedicated server from Unity 6 with Build Profiles, bind it correctly, test it and pack it for hosting.
- [What a connection config file must contain](https://netcraftgames.com/guides/connection-config-file-contents/): What a deployment manifest and a player connection config must contain for a hosted multiplayer server, with a real example and the rules that cause rejections.
