ServerInfo

v2.2.7·Updated 2026-09-12

Exposes a small HTTP JSON API with a Valheim server's world name, connected players (with Steam avatars), and installed mods - built for live status pages that read it directly from the browser.

About this mod Author’s original text

Server Info

A BepInEx plugin for Valheim dedicated servers. Exposes a small HTTP API

with the world name, connected players, and installed mods (enriched with

each mod's manifest.json when it has one) — used by the project's

status page to show live server state.

Installing

Copy ServerInfo.dll into the server's BepInEx/plugins/ folder and

restart the server process — that's it. BepInEx generates

BepInEx/config/Odin_Sons.ServerInfo.cfg on first run with every setting

below at its default, so there's nothing else to set up before it works.

Network setup

The plugin runs its own HTTP server; it doesn't need nginx or any other

reverse proxy in front of it. Two things to check on a fresh server:

  • Firewall / port forwarding. Whatever port you configure (8880 by

default) needs to be reachable from wherever your status page or

browser calls it from — open it in your firewall, and forward it on

your router if the server is behind NAT.

  • Windows: URL reservation. HttpListener needs an admin-granted

reservation before a non-admin process can bind a port for all hosts.

This only controls which local Windows accounts may bind that port —

it has no effect on network access, which is what the firewall step

above is for. If the log shows an access error on startup, find the

account actually running the server (whoami) and run once as

administrator (replace 8880 and YOUR_USERNAME):

netsh http add urlacl url= user=YOUR_USERNAME

If you're not sure which account will run it (e.g. a service manager

that may change this), user=Everyone always works but lets any

local account on the machine claim that reservation too — fine on a

single-user machine, worth avoiding on a shared one.

Cross-origin requests are controlled by two settings, both under [Server]:

  • Domain — the public domain or IP this server is reachable at.

Empty by default. It isn't used by the plugin for anything except

gating the next setting — think of it as "this server is ready to be

public" rather than an address the plugin acts on.

  • AllowedOrigin — who's allowed to read the response from a

browser. Defaults to * (any site), but is only actually sent once

Domain is set — so a fresh install doesn't advertise a CORS policy

for a server that isn't publicly reachable yet.

If your status page reads this endpoint directly from the browser, set

Domain to this server's real address and, if you want to restrict who

can read the response, set AllowedOrigin to the status page's exact

origin (scheme+host+port, e.g. — the

browser requires an exact match, so a domain that merely points at the

same server doesn't count as the same origin).

Configuration

Set via BepInEx/config/Odin_Sons.ServerInfo.cfg. Numeric settings

declare an acceptable range — BepInEx clamps an out-of-range value in

the file to the nearest bound instead of accepting it as-is, and any

BepInEx config-editor mod (e.g. Configuration Manager) renders them as a

bounded slider rather than free text.

[Server]

| Key | Type | Default | Range | Meaning |

|---|---|---|---|---|

| Port | Int32 | 8880 | 1–65535 | HTTP port for the web server. |

| ServerInfoPath | String | /serverinfo | — | URL path the server info endpoint is served on. |

| Domain | String | (empty) | — | This server's public domain or IP. Gates AllowedOrigin — see below. |

| AllowedOrigin | String | * | — | Value sent as Access-Control-Allow-Origin, only once Domain is set. |

| RequestTimeoutSeconds | Int32 | 5 | 1–60 | How long a request waits for the game's main thread before timing out. |

[Cache]

| Key | Type | Default | Range | Meaning |

|---|---|---|---|---|

| CacheIntervalSeconds | Int32 | 5 | 1–3600 | How often the server/player list is recomputed. |

| AvatarCacheMinutes | Int32 | 60 | 1–1440 | How long a fetched avatar URL is reused, and how long an inactive player's entry is kept. |

[Steam]

| Key | Type | Default | Meaning |

|---|---|---|---|

| SteamApiKey | String | (empty) | Optional; w

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file. In multiplayer, the host and every client need the same mods installed.

Dependencies

Install these first, or the mod will not work:

denikson-BepInExPack_ValheimValheimModding-JsonDotNET

File & checksum

Filename
ServerInfo-2.2.7.zip
File size
135.0 KiB