Bedrock Server Manager
A web-based management interface for Minecraft Bedrock Dedicated Servers, featuring automated updates, world management, and server property configuration.
Just so you know: This is a fan-made tool! It’s not officially linked to or endorsed by Mojang, Minecraft, or Microsoft.
What’s Inside?
- Prerequisites
- HTTP API Documentation
- Node.js Installation
- Application Setup
- Starting the Application
- Testing
- Basic Usage
- Running Multiple Server Managers
1. Prerequisites
- Node.js and npm: The application runs on Node.js.
npm(Node Package Manager) is included with Node.js. - Minecraft Bedrock Dedicated Server Software: You should have the server software from Mojang. The manager can download it for you if it’s not present in the configured server directory during the first update check.
- System Utilities:
- Linux:
unzipis required for extracting server files. Install viasudo apt-get install unzip(Debian/Ubuntu) orsudo yum install unzip(CentOS/RHEL). - Windows: PowerShell (typically version 5.1+) is required for server extraction. This is usually available by default on modern Windows systems.
- Linux:
HTTP API Documentation
Detailed information about the HTTP API endpoints can be found in API.html.
2. Node.js Installation
Node.js for Windows
- Download: Go to https://nodejs.org/ and download the Windows Installer (.msi) for the latest LTS version.
- Install: Run the installer, accepting default options.
- Verify: Open Command Prompt or PowerShell and type
node -vandnpm -v. You should see their versions.
Node.js for Linux
Using Node Version Manager (nvm) is recommended:
- Install
nvm:
(Check thecurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashnvmGitHub page for the latest version number). Close and reopen your terminal, or runsource ~/.bashrc(or~/.zshrc). - Install Node.js LTS:
nvm install --lts nvm use --lts - Verify: Type
node -vandnpm -v.
3. Application Setup
-
Get the Application Files: Clone this repository or download and extract the ZIP file.
git clone <repository-url> cd minecraft-bedrock-server-manager -
Install Dependencies: Navigate to the application directory in your terminal and run:
npm install -
Configuration (
config.json): The primary way to configure the server manager is through theconfig.jsonfile located in the application’s root directory. If this file is missing, a default one will be created when you first run the application.Here’s an overview of the
config.jsonstructure and fields:{ "serverName": "Default Minecraft Server", "serverPortIPv4": 19132, "serverPortIPv6": 19133, "serverDirectory": "./server_data/default_server", "tempDirectory": "./server_data/temp/default_server", "backupDirectory": "./server_data/backup/default_server", "worldName": "Bedrock level", "autoStart": false, "autoUpdateEnabled": true, "autoUpdateIntervalMinutes": 60, "logLevel": "INFO" }serverName: A friendly name for your server (displayed in the UI).serverPortIPv4: The IPv4 port for the Minecraft server (must matchserver-portinserver.properties).serverPortIPv6: The IPv6 port for the Minecraft server (must matchserver-portv6inserver.properties).serverDirectory: Path to your Minecraft server files.- If relative (e.g., starts with
./or../), it’s resolved relative to the application’s root directory. - If absolute, it’s used as is.
- If relative (e.g., starts with
tempDirectory: Path for temporary downloads (e.g., server updates). Resolved likeserverDirectory.backupDirectory: Path to store server backups. Resolved likeserverDirectory.worldName: The default world name to set inserver.propertiesif not already set.autoStart: (boolean) Iftrue, the manager will attempt to start the Minecraft server when the manager itself starts.autoUpdateEnabled: (boolean) Iftrue, enables automatic checking and installation of server updates.autoUpdateIntervalMinutes: (number) How often (in minutes) to check for updates if auto-update is enabled.logLevel: (string) Controls log verbosity. Options: “DEBUG”, “INFO”, “WARNING”, “ERROR”, “FATAL”. Defaults to “INFO”.
-
Command-Line Overrides: You can override settings from
config.jsonat runtime using command-line arguments when starting the application (e.g.,node app.js --serverPortIPv4 19134 --autoStart true).Supported overrides:
--serverName <name>--serverPortIPv4 <port>--serverPortIPv6 <port>--serverDirectory <path>--tempDirectory <path>--backupDirectory <path>--worldName <name>--autoStartor--autoStart true/--autoStart false(or--no-autoStart)--autoUpdateEnabledor--autoUpdateEnabled true/--autoUpdateEnabled false(or--no-autoUpdateEnabled)--logLevel <level>(e.g., DEBUG, INFO)
-
First-Time Server Setup: If the directory specified in
serverDirectoryis empty or doesn’t contain server files, use the “Check & Install Update” button in the web interface. This will download and set up the latest official Bedrock server software.
4. Starting the Application
- Navigate to the application directory in your terminal.
- Run the application:
For example:node app.js [cli-overrides]node app.js --serverPortIPv4 19134 - Open your web browser and go to
http://localhost:3000(or the port specified ifPORTinapp.jswas changed).
5. Testing
This project uses Jest for testing. The tests cover the main API endpoints and server logic.
To run the tests:
- Install Dependencies:
If you haven’t already, make sure all dependencies, including development dependencies, are installed.
npm install - Run the Test Suite:
Execute the test script defined in
package.json.
This will run all test files located in thenpm testtest/directory.
6. Basic Usage
The web interface provides several sections for managing your server:
Server Information
At the top of the page, you’ll see details about the configured Minecraft server, such as its name, directory, and ports, as read from config.json and CLI overrides.
Server Controls
- Server Status: Indicates if the Minecraft server is
RUNNINGorSTOPPED. - Start Server: Starts the Minecraft server.
- Stop Server: Stops the Minecraft server.
- Restart Server: Restarts the Minecraft server.
- Check & Install Update:
- Checks the official Minecraft website for the latest server version.
- If a new version is found:
- Stops the current server (if running).
- Backs up existing server data (worlds,
server.properties,permissions.json,whitelist.json). - Downloads and extracts the new server files.
- Restores the backed-up data into the new server directory.
- Starts the updated server.
Auto-Update Settings
- Enable Automatic Updates: Check this box to have the manager automatically check for and install updates.
- Update Check Interval (minutes): Set how often (in minutes) to check for new server versions.
- Save Auto-Update Settings: Click to apply your auto-update preferences.
World Management
- Displays a list of world folders found in your server’s
worldsdirectory. - The currently active world (as per
server.properties) is highlighted. - Activate Button: Click this next to a world’s name. This updates the
level-namefield in the “Server Properties” section below. You must click “Save Properties” in that section and then restart the server for the world change to take effect.
Server Properties
- Allows you to view and edit your
server.propertiesfile directly from the UI. - Modify values as needed.
- Save Properties: Click to save your changes to
server.properties. A server restart is usually required for most property changes to apply.
Pack Management
This section allows you to upload and manage behavior and resource packs for your server.
- Pack File (.mcpack): Select the
.mcpackfile you want to upload. - Pack Type: Choose the type of pack you are uploading:
Behavior Pack: For custom behaviors, entities, etc. Installed inbehavior_packs.Resource Pack: For custom textures, sounds, UI, etc. Installed inresource_packs.Development Behavior Pack: For behavior packs used during development. Installed indevelopment_behavior_packs.Development Resource Pack: For resource packs used during development. Installed indevelopment_resource_packs.
- Target World: Select the world to which this pack should be applied. The manager will update the corresponding
world_behavior_packs.jsonorworld_resource_packs.jsonfile for that world. - Upload Pack: Click to upload the selected pack.
- The pack will be extracted to the appropriate directory within your
serverDirectory. - The relevant world configuration JSON file will be updated to include the pack.
- Note: A server restart might be required for the pack to become active or for changes to take full effect, especially for behavior packs or if a world is already loaded.
- The pack will be extracted to the appropriate directory within your
7. Running Multiple Server Managers
Each instance of this application manages a single Minecraft Bedrock server. If you want to manage multiple Minecraft servers, you need to run multiple independent instances of this server manager. Here are two common ways:
-
Separate Directories:
- Copy the entire application into separate folders (e.g.,
mc_manager_server1,mc_manager_server2). - Each folder will have its own
config.json. Edit eachconfig.jsonto point to uniqueserverDirectory,tempDirectory,backupDirectory, and importantly, ensure the Minecraft server ports (serverPortIPv4,serverPortIPv6) are unique for each server to avoid conflicts. - You’ll also need to run
node app.jsfrom within each directory, ensuring each manager instance listens on a unique web interface port (by modifyingPORTinapp.jsfor each copy, or by using a reverse proxy).
- Copy the entire application into separate folders (e.g.,
-
CLI Overrides from a Single Application Directory:
- You can run multiple
node app.jsprocesses from the same application code. - For each process, use command-line arguments to specify unique settings, especially:
--serverDirectory <unique_path_for_server1_data>--tempDirectory <unique_path_for_server1_temp>--backupDirectory <unique_path_for_server1_backup>--serverPortIPv4 <unique_port_for_server1_ipv4>--serverPortIPv6 <unique_port_for_server1_ipv6>- You’ll also need to ensure each manager instance’s web UI runs on a different port. This currently requires modifying the
PORTconstant inapp.jsfor each process or using a reverse proxy setup.
- Example:
# Terminal 1 (for server 1 on UI port 3000) # (Modify app.js to use PORT 3000 or ensure it's default) node app.js --serverName "Server One" --serverDirectory ./server1_data --serverPortIPv4 19132 --serverPortIPv6 19133 # Terminal 2 (for server 2 on UI port 3001) # (Modify app.js to use PORT 3001 for this run, or use PM2 with port args) node app.js --serverName "Server Two" --serverDirectory ./server2_data --serverPortIPv4 19134 --serverPortIPv6 19135 - Managing the different web UI ports for each manager instance is key. Using a process manager like PM2 can help manage multiple Node.js processes with different environment variables or arguments.
- You can run multiple
Key for multiple servers: Each Minecraft Bedrock server must have its own unique data directory and operate on unique game ports.
Have fun managing your Minecraft Bedrock Server!