Blockland Docker
A Docker image for running Blockland dedicated servers. Designed for use with Pelican Panel game server management.
Based on eagle517's original Blockland Docker image.
How to use
This image is designed to run inside a Pelican Panel egg. Running it manually (e.g., with docker run or docker compose) will likely not work correctly, since it expects Pelican's environment (e.g., /home/container as the working directory and Pelican-managed volume mounts).
Create a custom egg in Pelican that uses rallyblockk/blockland-pelican as its image (yolk), then add the environment variables below as egg variables. Or use the pre-made egg from the Blockland-Pelican-Egg repository. Pelican mounts the server data to /home/container automatically. The container runs as UID 1000—if you hit permission issues, check your node’s Wings configuration.
The image is available on Docker Hub at rallyblockk/blockland-pelican.
Note: If you run into connection issues, see the Networking section—host network mode may help (configured in Wings, not in the egg).
Environment variables
| Name | Type | Default | Description |
|---|---|---|---|
| BL_DEDI_LAN | bool (0 or 1) | 0 | Launches the server as a Dedicated or Dedicated LAN type. Note that DedicatedLANs are forced into using 28050 as their port. Blame Badspot, not me |
| BL_DTOKEN | string | "" | Your DToken for authentication |
| BL_SERVER_NAME | string | "" | The name shown on the server list. Underscores will be replaced with spaces by Blockland |
| BL_MAX_PLAYERS | int | "" | The max number of players that can join the server |
| BL_GAMEMODE | string | Custom | The name of the gamemode to launch with |
| BL_PORT | int | 28000 | The port to bind to, see the Network section below |
| BL_EXTRA_ARGS | string | "" | Additional parameters to pass to the game as you see fit |
| BL_INST_NUM_PROC | int | 10 | Number of parallel processes used to download the game files during installation |
| BL_INST_FORCE | bool (0 or 1) | 0 | Forcefully install the game each time you launch |
| BL_INST_OVERWRITE | bool (0 or 1) | 0 | Overwrite existing files during installation |
| BL_UNZIP_ADDONS | bool (0 or 1) | 0 | When enabled, automatically extracts any .zip files in the Add-Ons directory before the server starts. Each zip is unzipped and the archive is removed. Handles single-folder, single-file, and multi-file zip structures so add-ons end up in properly named folders. |
| BL_PATCH_ENABLE | bool (0 or 1) | 1 | Patches the game with RedBlocklandLoader and the WineFix DLL to make the console work with Wine 8.0.2 (See Wine section below) |
| BL_PATCH_EXE_URL | string | See Dockerfile | URL to retrieve the patched Blockland.exe from for RedBlocklandLoader |
| BL_PATCH_LOADER_URL | string | See Dockerfile | URL to retrieve RedBlocklandLoader.dll from |
| BL_PATCH_WINEFIX_URL | string | See Dockerfile | URL to retrieve WineFix.dll from |
| WINEARCH | string | win32 | Specifies the arch type Wine should create the prefix under |
| WINEDEBUG | string | -all | Controls how much logging Wine does to the console (default hides everything) |
Networking
Blockland uses UDP. The original image recommended host network mode for reliability, but many users run fine with Pelican’s default bridge network. If you have connection issues (players can’t join, server not visible, etc.), try configuring Wings for host network mode in /etc/pelican/config.yml—see Pelican’s optional config docs. Host network is Linux-only and removes Docker isolation; use with caution on shared nodes.
Volumes
Pelican mounts each server's data directory at /home/container (the working directory). Files there are persisted as the server's storage. The container runs as UID/GID 1000—Pelican typically handles permissions, but that can cause issues if something is misconfigured at the node level.
Wine
Wine seems to be having less and less compatibility with Blockland as time goes on. Back when Wine 5.18 came out, we lost the Curses backend, and it stopped being possible to interact with Blockland's console. I eventually figured out what the issue with Wine was, and created Wine Fix which allowed console interaction to work with Wine up to 8.0.2. With Wine 9 and later, it appears the console is just completely broken now. I don't have the time to figure out what shenanigans the Wine devs got up to, so we're stuck with 8.0.2 for now.