Sign inSign up

hindenburg/hindenburg

By hindenburg

Updated about 4 years ago

A scalable Among Us server written in typescript and made using SkeldJS.

Image
0

2.7K

hindenburg/hindenburg repository overview

Hindenburg

Hindenburg is a completely customisable and scalable Among Us server, complete with advanced plugins and a sophisticated and configurable anti-cheat.

With unparalleled support for Reactor, it's perfect for developers and for private modded game servers.

It uses SkeldJS to interface with the Among Us protocol, as well as keeping state.

Check out the full documentation

Features

Server-As-A-Host

Hindenburg has complete authority, and does much more than a glorified relay network. It interacts directly with games, making sure everything runs smoothly and gives lots of power to plugins.

Highly Configurable

Hindenburg is completely customisable with a simple json file, giving you full control.

Plugins

Leveraging the power of SkeldJS, Hindenburg has full knowledge of running games, giving you the ability to write or easily install plugins to control the behaviour of the server.

Reactor Support

Hindenburg also natively supports clients using Reactor, allowing plugins to communicate directly with mods, and giving you the ability to leverage the full potential of the Reactor protocol.

Getting Started with Docker

Hindenburg now supports Docker deployments on multiple architectures (amd64, arm64v8, armV7, armV6) and can run on your server or your RaspberryPi as well as other SBCs where docker is supported.

Docker deployments are new and support on Raspberry Pi may be limited to small servers depending on your model, if you have any issues please let us know.

Basic Deployment

The following is the command to do a basic deployment of Hindenburg

Minimal (no access to config or plugins):

docker run -d --name hindenburg \
    -p 22023:22023/udp \
    hindenburg/hindenburg:latest

Basic (with access to config and plugins):

docker run -d --name Hindenburg \
    -p 22023:22023/udp \
    -v <PathToConfigDir>:/HConfig \
    -v <PathToPluginsDir>:/HPlugins \
    hindenburg/hindenburg:latest

Once you run the container the first time it will create a config.json file in the directory you specified. The plugins directory will be populated after the first run as well.

**The server does have an interactive cli. instead of docker run -d you could run docker run -it in screen or tmux so you can put it in the background. Here is a link of how to use tmux TMux Tutorial **

Configuration

If you choose to you may create a string of command line switches and feed it to your docker run statement as an environmental variable that will be used on startup by adding the following to your "docker run" statement

    -e HINDENBURG_CLI_ARGS="<switches>"
Example
docker run -d --name=Hindenburg \
    -p 22023:22023 \
    -e HINDENBURG_CLI_ARGS='--rooms.chatCommands false --logging.players.format ["id"]' \
    hindenburg/hindenburg:latest
Available Switches
SwitchDescriptionDefaultOptions
--defaultLanguageDefault language to localise disconnect messages to.enRefer to Locales table below
AntiCheat SettingsAdvanced options for HACS, Hindenburg's Anti-Cheat System.------------------------
--anticheat.penalty.actionThe action that should be applied on this user for breaking this rule.disconnectdisconnect, ban, ignore
--anticheat.penalty.strikesThe number of strikes that this user has before they are penalised.2any number
--anticheat.penalty.banAfterXDisconnectsThe number of general disconnects the player should have to have had for breaking this rule until they are banned.3any number
--anticheat.penalty.banDurationThe length, in seconds, of how long to ban a player for breaking this rule.3600any number
--anticheat.penalty.disconnectMessageThe message to give this player when disconnecting or banning this player."You have been banned for $duration."any string, must be surrounded by quotes
Logging Settings------------------------------------
--logging.hideSensitiveInfoWhether to hide sensitive information from logging, such as ip addresses.falsetrue, false
--logging.connections.formatCustom formatting for the extra information provided when logging client connections. (The part in parenthesis after their username.)["id","ip","ping","room"]Must be in square brackets and each item in quotes. id, ip, ping, room, language
--logging.rooms.formatCustom formatting for the extra information provided when rooms are logged. (The part in parenthesis after the game code.)["players","map"]Must be in square brackets and each item in quotes. players, map, saah
--logging.players.formatCustom formatting for the extra information provided when players are logged. (The part in parenthesis after the player's name.)["id","ping","ishost"]Must be in square brackets and each item in quotes. id, ping, ishost
Reactor SettingsOptions for Hindenburg's reactor integration.------------------------
--reactor.blockClientSideOnlyWhether to block reactor RPCs from mods that are declared as being client-side-only.truetrue, false
--reactor.allowExtraModsWhether to allow extra mods aside from those in 'mods' which would still be used to enforce certain version of mods, and to require certain mods.truetrue, false
--reactor.allowNormalClientsWhether to allow normal clients to connect.truetrue, false
--reactor.requireHostModsWhether or not to require joining clients to have the same mods as the host.truetrue, false
Reactor Mod Controlsthe ["<modname>"] Must be spefied in square brackets and quotes in the cli arg------------------------
--reactor.mods.["<modname>"].optionalWhether this mod is optional, and clients can connect without it.Not Settrue, false
--reactor.mods.["<modname>"].bannedWhether clients with this mod cannot connect.Not Settrue, false
--reactor.mods.["<modname>"].versionEnforce a specific version glob for this mod.Not Settrue, false
--reactor.mods.["<modname>"].doNetworkingWhether to broadcast messages sent by this mod.Not Settrue, false
Room Settings------------------------------------
--rooms.chatCommandsAllow use of chat commandstruetrue, false
--rooms.gameCodesThe type of game code to generate for rooms, "v1\ for a 4-letter code and "v2" for a 6-letter code.v2v1, v2
--rooms.plugins.loadDirectoryWhether to load all plugins in the plugin directory.truetrue, false
--rooms.serverAsHostWhether the server should act as the host of the room.falsetrue, false
--rooms.serverPlayer.nameThe name of the player for a message sent by the server in game chat<color=yellow>[Server]</color>Any string. can be surrounded by <color=colorname>name</color> tags
--rooms.serverPlayer.colorThe color of the player for a message sent by the server in game chatYellowRefer to ServerPlayer table
--rooms.serverPlayer.hatThe hat of the player for a message sent by the server in game chatNoneRefer to ServerPlayer table
--rooms.serverPlayer.skinThe skin of the player for a message sent by the server in game chatNoneRefer to ServerPlayer table
--rooms.createTimeoutThe timeout in seconds to wait for a player joins before considering the room empty and destroying it.10Any Number
Locales Table
LocaleLanguage
enEnglish
es_USSpanish (United States)
pt_BRPortuguese (Brazil)
ptPortuguese
koKorean
ruRussian
nlDutch
filFilipino
frFrench
deGerman
itItalian
jaJapanese
es_ESSpanish (Spain)
zhChinese
gaIrish
ServerPlayer table
ColorsSkinsHatsHatsHats
RedNoneNoneTenGallonHatBirdNest
BlueAstronautAstronautThirdEyeBlackBelt
GreenCaptainBaseballCapToiletPaperCautionSign
PinkMechanicBrainSlugToppatClanLeaderChefHat
OrangeMilitaryBushHatBlackFedoraCopHat
YellowPoliceCaptainHatSkiGogglesDoRag
BlackScientistDoubleTopHatHearingProtectionDumSticker
WhiteSuitBlackFlowerpotHazmatMaskFez
PurpleSuitWhiteGogglesFaceMaskGeneralHat
BrownWallGuardHardHatSecurityHatGlassesPompadourHair
CyanHazmatMilitaryHatSafariHatHunterHat
LightGreenSecurityGuardPaperHatBananaJungleHat
MaroonTarmacPartyHatBeanieMiniCrewmate
RoseMinerPoliceHatBearEarsNinjaMask
BananaWinterStethoscopeCheeseRamHorns
GrayArchaeologistTopHatCherryMiniCrewmateSnowman
TanPrisonerTowelWizardEggGeoffKeighleyMask
SunsetCCCUshankaGreenFedoraDavePandaCap
------------RightHandManRebornVikingFlamingoEllieRoseHair
------------------------WallGuardCapFlowerSvenSvenssonHat
------------------------SnowmanKnightHelmetBurtCurtisHat
------------------------ReindeerAntlersPlantEllryMohawk
------------------------ChristmasLightsBatEyesThomasChestershireMonocles
------------------------SantaHatBatWingsWizardhat
------------------------ChristmasTreeHornsFrederickMuensterHat
------------------------ChristmasPresentMohawkMrMacbethhat
------------------------CandyCanesPumpkinToppatHenryStickminHat
------------------------ElfHatScaryPaperBagToppatEllieRoseHat
------------------------NewYears2018WitchHatGeoffreyPlumbHat
------------------------WhiteHatWolfEarsAngryEyebrows
------------------------CrownPirateHatChocolateIceCream
------------------------EyebrowsPlagueDoctorHeartPin
------------------------HaloMachetePonytail
------------------------HeroCapHockeyMaskRubberGlove
------------------------PipCapMinerHelmetUnicornHat
------------------------PlungerWinterCapZipper
------------------------ScubaMaskArchaeologistHatRightHandManHat
------------------------HenryStickminAntenna------------
------------------------StrawHatBalloon------------

Issues

For issues regarding bugs that you encounter while using Hindenburg, please create an issue on the github issues page.

For help setting Hindenburg up, writing plugins or just general questions, please check out the Discord server

Notes

Hindenburg is licensed under the GNU General Public License v3.0, meaning I am not responsible for anything you do with this library.

Tag summary

Content type

Image

Digest

Size

210.1 MB

Last updated

about 4 years ago

docker pull hindenburg/hindenburg