Skip to content

Installation

This is the clean install, new world, no old database. If you are moving an existing server to another PC see Updating & database for the backup and import tools.

Your server-data folder ends up like this:

BeyondSurvival/
├── server.cfg # from server.cfg.example
├── server.private.cfg # from server.private.cfg.example, NEVER share this
├── resources/
│ ├── [beyond]/ # the framework, all bs_* resources
│ ├── [map]/ [standalone]/ [third-party]/
│ ├── [the_apocalypse_project]/ # the map
│ ├── oxmysql/
│ └── vMenu/ pma-voice/ ... # optional
└── tools/ # PowerShell helpers (Windows)

The artifacts (FXServer.exe) live somewhere else, like C:\FXServer. Don’t put them inside the server-data folder.

If you got the release package it already looks like this. To build one yourself from a dev copy:

Terminal window
powershell -ExecutionPolicy Bypass -File .\tools\Prepare-PortableRelease.ps1 -Destination D:\BeyondSurvival-Release

It leaves out server.private.cfg, cache/, db/, backups and logs on purpose.

Install MariaDB, then create an empty database and a user for it. On Windows the helper does both:

Terminal window
tools\setup-database.bat

Or by hand:

CREATE DATABASE beyondsurvival CHARACTER SET utf8mb4;
CREATE USER 'beyond'@'localhost' IDENTIFIED BY 'your-password';
GRANT ALL PRIVILEGES ON beyondsurvival.* TO 'beyond'@'localhost';
FLUSH PRIVILEGES;

Do not import any .sql file. bs_core runs its migrations on first boot (bs_core/sql/001_core_schema.sql up to 028_guard_log.sql) and records each one in the bs_migrations table, so they never run twice. database/full_schema.sql is only there if you want to look at the schema outside the server.

Copy server.private.cfg.example to server.private.cfg and fill it:

sv_licenseKey "your keymaster key"
set mysql_connection_string "mysql://beyond:[email protected]:3306/beyondsurvival?charset=utf8mb4"
set steam_webApiKey ""

server.cfg loads it on the first line with exec server.private.cfg. Keep it out of git and out of any zip you send to people.

Copy server.cfg.example to server.cfg. Change hostname, tags, sv_maxclients, and your staff principals at the bottom (see Admin & permissions).

The ensure order matters for some of them. oxmysql first, bs_core before every other bs_*, and the zombie stuff after the things it reads. This is the order the live server runs:

ensure oxmysql
ensure bs_loading
ensure bs_core
ensure bs_esx_bridge
ensure bs_multichar
ensure bs_admin
ensure bs_config
ensure bs_assets
ensure bs_ui
ensure bs_chat # replaces the stock chat, don't ensure both
ensure bs_radial
ensure bs_bodily
ensure bs_interactions
ensure bs_inventory
ensure bs_skills
ensure bs_economy
ensure bs_medical
ensure bs_emotes
ensure bs_scenes
ensure bs_weapons
ensure bs_vehicles
ensure bs_menu
ensure bs_vip
ensure bs_building
ensure bs_recycler # after bs_inventory + bs_interactions
ensure bs_mining
ensure bs_stash
ensure bs_extraction
ensure bs_factions
ensure bs_faction_bases
ensure bs_scoreboard
ensure bs_world
ensure nutria_crawl_anims # before bs_zombies, crawlers need the anim dict
ensure bs_zombiepeds
ensure bs_zombies
ensure bs_atlas # after bs_zombies, it calls its callbacks
ensure bs_traders # reads bs_zombies safe zones
ensure [the_apocalypse_project]
ensure chadada_apocalypse_cars
ensure nodes # sector map web panel
ensure bs_zombiesfx
ensure bs_boosters
ensure bs_gadgets
ensure bs_drugs # after bs_boosters
ensure bs_events
ensure bs_guard # after bs_core, bs_admin, bs_inventory, bs_config

Don’t ensure chat while bs_chat runs, you get two chat boxes and every message twice. And don’t ensure mapmanager/spawnmanager/sessionmanager unless you actually installed cfx-server-data, bs_core and bs_multichar do spawning themselves.

Terminal window
powershell -ExecutionPolicy Bypass -File .\tools\Test-Deployment.ps1

Don’t start until every check passes.

With txAdmin: run FXServer.exe, pick Existing Server Data and point it at your folder. Set OneSync in the txAdmin settings.

Without txAdmin:

Terminal window
C:\FXServer\FXServer.exe +exec "D:\BeyondSurvival-Release\server.cfg"

Watch the console. You want oxmysql, bs_core (it prints the migrations it applied on the first boot), bs_factions, bs_menu and the map starting with no red errors. Then join, make a character, open the inventory (I), open the faction menu, press F1 and F10 as staff to check permissions work.

The nodes resource prints a URL with an access key to the console on its first boot. That’s the sector map panel, copy it and bookmark it.