---
title: "Building Dedicated Servers with Fish-Networking for Scalable Browser IO and Fat Games"
description: "Ship stripped Linux dedicated servers with Fish-Net for browser IO and fat games. Cover headless auto-start, Pro code stripping, logging, and WebGL client pairing."
url: "https://news.bigfatgames.com/fishnet-dedicated-server-browser-io-fat-games"
category: "Fish-Net Multiplayer"
date_published: 2026-09-07
reading_time_minutes: 11
word_count: 2525
---

# Building Dedicated Servers with Fish-Networking for Scalable Browser IO and Fat Games

*An ops-first migration from WebGL listen hosts to stripped Linux headless Fish-Net servers*

![Building Dedicated Servers with Fish-Networking for Scalable Browser IO and Fat Games](https://pub-07fb5e4955ba485b822d6b388be96d9a.r2.dev/627e11da-a23a-494d-9964-843e8f31c507/fishnet-dedicated-server-browser-io-fat-games/hero-1c8dcd6c-00c1-464b-9c0a-d7f74013c87b.jpg)

**TL;DR:**

- Install Linux Dedicated Server Build Support and switch to that target so Unity can strip graphics-heavy assets from the headless binary.
- Fish-Net auto-starts the server on dedicated builds when NetworkManager loads; override Start on Headless or use UNITY_SERVER for bind and port.
- Enable Tugboat Reuse Address, prefer command-line port and bind, and use Bayou or another WebSocket transport for WebGL clients.
- Turn on Dedicated Server Optimizations plus Fish-Net Pro stripping so shaders, fonts, and server-only RPC bodies leave the wrong builds.
- Log at Common with timestamps and ticks, exclude client assemblies, and keep URP WebGL clients as a thin presentation layer.

## Why Listen Servers Can't Carry Browser IO and Fat Games

## Install Linux Dedicated Server Support Before You Hit Build

## Auto-Start the Headless Server, Then Bind Port From the Command Line

## Bind Tugboat and Bayou So WebGL Clients Can Reach You

## Strip the Headless Binary: Shaders, Client Code, and Server RPCs

## Headless Logging: Surface Ticks, Joins, and Failures

## Shared Bootstrap, Thin URP Clients, and the Hosting Handoff

## Conclusion

- Dedicated over listen — Listen servers couple simulation to a player graphics stack and cannot carry high-entity browser IO or fat games; a headless Fish-Net process that owns authority is what lets interest management and Network LOD pay off.
- Install Linux Dedicated Server Support first — Put the Linux dedicated module beside WebGL in the same project before you hit Build so Unity strips unused graphics and the server binary drops CPU, memory, and disk versus a full player build.
- Auto-start, then bind from the command line — Fish-Net starts the server when NetworkManager loads on headless; parse port and bind address from args so containers assign sockets without a rebuild, and guard editor paths so play mode still works.
- Tugboat plus Bayou for WebGL — Enable Reuse Address, set Port and Server Bind Address from the command line, and give browsers a WebSocket path; firewall and reverse-proxy misbinds are the typical first-deploy failure.
- Strip shaders, client code, and the wrong-side RPCs — Dedicated Server Optimizations, UNITY_SERVER assembly definitions, and Fish-Net Pro stripping with Strip Release Builds on keep URP and UI out of the server and server-only callbacks out of WebGL — anti-cheat and RAM budget, not polish.
- Log the process and hand off a thin client — Common-level Headless Logging to stdout and rotating files surfaces ticks, joins, and stalls; share one bootstrap, keep URP clients thin with SRP Batcher and Network LOD, and pass hosters port env, start args, and health logs.

Stand up a stripped Linux headless Fish-Net server next to your thin WebGL clients and take browser IO and fat games past listen-host limits.

## Frequently Asked Questions

### Why move IO and fat games off a WebGL listen host?

A listen host ties authority to one player's browser session. A dedicated Fish-Net build runs without graphics and focuses on network logic — the recommended way to host multiplayer at scale — so one Linux instance can simulate high player and entity counts while clients stay thin.

### Which Unity module do I need for a headless Fish-Net server?

Install Dedicated Server Build Support for the server OS before you build. That is usually Linux, though Windows or macOS are possible if you must host there.

### Does Fish-Net start automatically on a dedicated build?

With default settings it detects a dedicated or headless build and starts the server as soon as NetworkManager loads. Control that with ServerManager Start on Headless, or write UNITY_SERVER bind and port logic driven by command-line args such as -port.

### How do WebGL clients connect to a Linux dedicated server?

Pair the Linux dedicated server with a WebSocket-capable transport such as Bayou. Keep the client on URP so the browser stays performant across devices; the server never renders.

### What should I strip from server versus client builds?

Enable Dedicated Server Optimizations in Player Settings so shaders and fonts leave the headless binary. Use UNITY_SERVER and assembly definitions, and Fish-Net Pro code stripping so ServerRpc bodies and server-only callbacks never ship to players.

### What logging belongs on a production headless IO server?

Set Headless Logging to Common on a Level Logging Configuration asset. You then get connection events, server start, timestamps, and local tick — the diagnostics you actually need when there is no editor window.

## Sources

- [https://fish-networking.gitbook.io/docs/tutorials/simple/building-a-dedicated-server](https://fish-networking.gitbook.io/docs/tutorials/simple/building-a-dedicated-server)
- [https://docs.unity3d.com/Manual/dedicated-server-introduction.html](https://docs.unity3d.com/Manual/dedicated-server-introduction.html)
- [https://fish-networking.gitbook.io/docs/guides/features/code-stripping](https://fish-networking.gitbook.io/docs/guides/features/code-stripping)
- [https://fish-networking.gitbook.io/docs/overview/readme/features](https://fish-networking.gitbook.io/docs/overview/readme/features)
- [https://www.reddit.com/r/edgegap/comments/1dl6q5c/fishnetworking_plugin_automated_game_server/](https://www.reddit.com/r/edgegap/comments/1dl6q5c/fishnetworking_plugin_automated_game_server/)
- [https://unity.com/how-to/profile-optimize-web-build](https://unity.com/how-to/profile-optimize-web-build)
