Pre-launch.NetCraftGames is not accepting customers yet. Launch happens only after its public checks pass.See launch statusJoin the waitlist

Unity Mirror

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.

By Charging Bull SoftwareLast updated:

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 transportProtocolTypical default portHosting note
KCPUDP7777Declare UDP; give a UDP health reply or a TCP/HTTP join probe on another port
TelepathyTCPset in the componentDeclare TCP; the example manifest uses TCP 7777 and an HTTP join probe on 8080
SimpleWeb (WebSocket)TCP, WebSocket7778Browser clients need wss://; see the browser WSS page

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), 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 serverIn 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 portSet 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 probeAnswer 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 canExpose 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 itCreate 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 clientAfter 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: 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