Skip to content

Server configuration

Options

Required Server Configuration

KeyDefaultDescription
PublicIp127.0.0.1This needs to the public IPv4 address of the server which you give to others to connect. You can find your IPv4 address on this website. Unless you are only planning to use Empostor privately, on your local network, you should change this to your public ip. It is also possible to use hostnames instead of IPv4 addresses, which will be resolved to IPv4 addresses.
PublicPort22023The public port of the server which you give to others to connect. (This is the external port you configure on your router when port forwarding.) Usually 22023.
ListenIp0.0.0.0The network interface to listen on. If you do not know what to put here, use 0.0.0.0. Since 1.2.2 it is also possible to use hostnames instead of IPv4 addresses, these must resolve to a valid IPv4 address.
ListenPort22023The listen port of the server, usually 22023. For port forwarding purposes: this is an UDP port

HttpServer

Empostor has an Http Server that is used by recent versions of Among Us to connect to. See the Http Server page for more details on how to set this up.

KeyDefaultDescription
EnabledtrueWhether the http server should be enabled.
ListenIp0.0.0.0The network interface to listen on. Use 127.0.0.1 if you use a reverse proxy or just run locally. Use 0.0.0.0 if you are directly exposing this server to the internet
ListenPort22023The listen port of this server. For port forwarding purposes, this is an TCP port.

AntiCheat

Empostor has an Anticheat that makes it possible to kick cheaters from games automatically. Note that the anticheat is tuned on the vanilla version of the game, so client-side modifications could trigger the Anticheat if you're playing with them.

KeyDefaultValue
EnabledtrueWhether the anticheat should be enabled.
BanIpFromGametrueWhen anticheat is enabled and a player is caught hacking, they will be kicked from the server. If this value is set to true, the player will be banned instead and will not be able to rejoin that specific game.
AllowCheatingHosts"Never"Configure whether hosts are allowed to cheat. "Never" forbids it, "Always" allows it. "IfRequested" allows hosts to cheat if they connect with the DisableServerAuthorityFlag set.
EnableGameFlowCheckstrueEnable checks that check if certain actions are done in the appropriate order or at the appropriate moment in the game. This includes changing cosmetics while in game or murdering too fast.
EnableInvalidObjectCheckstrueEnables checks that check if network objects are spawned properly. Disabling this option also implies disabling EnableRoleChecks.
EnableMustBeHostCheckstrueEnables checks that check if players are the host before they can do actions that require them to be host of the game. This includes starting the game and spawning objects.
EnableColorLimitCheckstrueEnables checks that checks if players request colors that are already in use.
EnableNameLimitCheckstrueEnables checks that checks if player names have a length that is possible to set using the user interface.
EnableOwnershipCheckstrueEnables checks that check if players are allowed to perform a certain action on themself or another player.
EnableRoleCheckstrueEnables checks that check if players have the correct role when performing certain role abilities like venting or murdering.
EnableTargetCheckstrueEnables checks that check if certain packets to everyone that should only have been sent to certain players or vice versa. This includes sending votes or network objects.
ForbidProtocolExtensionstrueIf disabled allows players to send network packets that go beyond the network packets sent by the vanilla game. This is necessary for most mods that need all players to install it.

Compatibility

Empostor has some compatibility options which allow some extra flexibility but may not work properly. Enabling any of these options is not recommended. When contacting support, please mention which of these options are enabled.

KeyDefaultValue
AllowFutureGameVersionsfalseWarning: Setting this option to true is unsupported and may cause issues when large updates to Among Us are released, but can be useful when a small patch is released. Allows future versions of Among Us to join your server.
AllowHostAuthorityfalseCertain Among Us mods allow disabling some server-authoritative features, which also changes some code paths in the client. These code paths have not undergone as much testing and contain bugs, which can't be fixed from the Empostor side. Use with caution.
AllowVersionMixingfalseAllows players using different game versions to play in one lobby that have not been marked by the Empostor developers as compatible.

Debug

The Debug configuration is used to enable the game recorder. This is mostly useful when developing Empostor.

KeyDefaultValue
GameRecorderEnabledfalseEnables the Game Recorder.
GameRecorderPathemptyPath where the recorded games will be saved.

Admin

The Admin configuration is used to set the admin password and plugin marketplace URL for server management.

KeyDefaultDescription
Password(empty — must be set)The admin password for the server, used for authentication. Set a strong, complex password. The server logs a warning at startup if this is left empty or set to a known default.
MarketplaceUrlhttps://raw.githubusercontent.com/Empostor/Empostor/main/marketplace/plugins.jsonA URL pointing to a plugins.json file. This file defines the list of plugins available in the plugin marketplace.

DiscordWebhook

Send game events to Discord channels via webhooks. Events are split into two categories: matchmaker (game lifecycle) and admin (moderation). See Discord Webhook for details.

Hot-editable: Settings changed via the Admin Panel are saved to Data/DiscordWebhookData.json. The config.json values below are only used as initial defaults.

KeyDefaultDescription
MatchmakerUrl""Discord webhook URL for matchmaker events (Game Created, Game Started, Game Ended, Player Joined). Leave empty to disable.
AdminUrl""Discord webhook URL for admin events (Player Banned, Player Reported). Leave empty to disable.

HPLP

Serve a public game list endpoint for Starlight client discovery. See HPLP for details.

Hot-editable: Settings changed via the Admin Panel are saved to Data/HplpData.json. The config.json values below are only used as initial defaults.

KeyDefaultDescription
EnabledfalseWhether the HPLP endpoint (GET /x-api/games) is enabled.
RegionId"default"Region identifier reported to Starlight clients.
RegionName"Empostor Server"Human-readable region name displayed in Starlight.
PublicUrl""Public URL for Starlight clients. Auto-generated if empty.

PlayerStats

Track per-player game statistics viewable in the admin panel and via /stat command. See Statistics for details.

KeyDefaultDescription
EnabledfalseWhether player statistics tracking is enabled.
PersistToFiletrueWhether to save statistics to player_stats.json on disk.

ChatFilter

Filter in-game chat for blocked words and rate-limit spam. See Chat Filter for details.

Hot-editable: Settings changed via the Admin Panel are saved to Data/ChatFilterData.json. The config.json values below are only used as initial defaults.

KeyDefaultDescription
EnabledfalseWhether chat filtering is enabled.
BlockedWords[]List of words to block (case-insensitive substring match).
BlockMessagetrueWhether to actually block filtered messages. When false, messages pass through and only a warning is logged.
SpamThreshold5Messages allowed within the spam window before rate limiting.
SpamWindowSeconds10Sliding time window in seconds for spam detection.

Serilog (Logging)

Empostor's log framework, Serilog, can be configured in the config file. You can change its default log level and you can add additional sinks.

KeyDefaultValue
MinimumLevelInformationMinimum log level for a message to be printed. If a log entry is as severe or more severe than this level, it will be printed. From most severe to least severe: Fatal,Error, Warning, Information, Debug, Verbose
Using[]List of additional Serilog Sinks assemblies to load.
WriteTo[]Additional logging sinks. See the Serilog documentation or the example in this section. Serilog

For more information, check the Serilog.Settings.Configuration documentation.

For example, to add logging to a file, you should add the following snippet to your configuration:

json
"Serilog": {
  "Using": [
    "Serilog.Sinks.File"
  ],
  "WriteTo": [
    {
      "Name": "File",
      "Args": {
        "path": "logs/log.txt",
        "rollingInterval": "Day"
      }
    }
  ]
}

Next to that, you also need to copy over Serilog.Sinks.File.dll from NuGet. See the Serilog.Sinks.File documentation for a list of parameters that can be configured.

Other Serilog sinks are also supported, but are out of scope for this documentation.

PortPool

Dynamic delta ports are used for player authentication. See Firewall & Dynamic Ports for details.

KeyDefaultDescription
Start22024First port in the auth port pool (inclusive)
End22124Last port in the auth port pool (inclusive)

ServerConfig (Firewall)

KeyDefaultDescription
UseUfwfalseAuto-manage ufw rules for delta ports (Linux only)
UseFirewalldfalseAuto-manage firewalld rules for delta ports (Linux only)

On Windows, keep both false. See Firewall & Dynamic Ports.

IP Geolocation

Empostor automatically resolves player IPs to geographic locations using ip-api.com. No API key required. Results are shown in connection logs and the admin panel client detail modal. Private/reserved IPs are skipped.

KeyDefaultDescription
(no configuration)Always enabled; requires outbound HTTP

Config providers

File

The config.json file contains all the configurable options.

Environment variables

If you're unable to edit the config.json file, you can instead set Environment variables to configure Empostor. The general pattern for each variable is EMPOSTOR_SectionName__VariableName. For example, to disable the anticheat, you can set the environment variable EMPOSTOR_AntiCheat__Enabled=false. Here are some more examples:

EMPOSTOR_Server__PublicIp=127.0.0.1
EMPOSTOR_Server__PublicPort=22023
EMPOSTOR_Server__ListenIp=0.0.0.0
EMPOSTOR_Server__ListenPort=22023
EMPOSTOR_AntiCheat__Enabled=true
EMPOSTOR_AntiCheat__BanIpFromGame=true

systemd

Linux users will likely want to create a systemd service definition to manage running the Empostor application. Benefits to using a systemd service include the following:

  • The server process can automatically restart if the process dies
  • Empostor can be set to start on boot (handy if you do system updates regularly)
  • You can use systemd targets to ensure the process doesn't start until the system dependencies are met

Using your favorite text editor, create the following service file:

sudoedit /etc/systemd/system/empostor.service

Modify the following template to your needs and populate the service file.

[Unit]
Description=Empostor private Among Us server - https://github.com/Empostor/Empostor

[Service]
# Directory where Empostor is installed
WorkingDirectory=/opt/Empostor
# Path to Empostor binary
ExecStart=/opt/Empostor/EMPOSTOR.Server
Restart=always
# Restart service after 10 seconds if the dotnet service crashes
RestartSec=10
KillSignal=SIGTERM
SyslogIdentifier=empostor

# User and group that will run the Empostor server process -- ensure that user is allowed to execute the binary
User=empostor
Group=empostor
TimeoutStopSec=10

[Install]
# Wait until most system services have started before starting Empostor
After=multi-user.target
WantedBy=multi-user.target

Reload all systemd unit files to source in the new file you've created.

sudo systemctl daemon-reload

Start the service.

sudo systemctl start empostor.service

Check the log for the service and verify it has started correctly -- Hint: Use the Q key to quit out of journalctl.

sudo journalctl -u empostor.service

If everything has started correctly, ensure the service is set to start on boot.

sudo systemctl enable empostor.service