No description
Find a file
Iain Powrie 992f586ab6 Merge branch 'dev' into 'master'
v4.10.8

Closes #457, #727, #728, #734, #738, and #740

See merge request crafty-controller/crafty-4!1076
2026-07-29 19:24:47 +00:00
.gitlab Unit Test Pipes 2026-07-08 17:36:21 +00:00
app Reduce number of allowed image types 2026-07-25 09:56:15 -04:00
config_examples Add link to documentation to WSS error 2022-05-23 21:23:29 -04:00
docker Modernized Template and added hytale description 2026-01-25 17:17:12 +00:00
tests/classes Merge branch 'dev' into bugfix/log-perms 2026-05-27 14:26:04 -04:00
.dockerignore Add lang sort log to ignore files 2023-10-09 21:27:38 +00:00
.editorconfig Amend editor config for black 2022-03-23 01:53:43 +00:00
.gitignore Improve console performance for noizy servers 2026-06-04 11:44:19 +00:00
.gitlab-ci.yml Add parallel matrix and rules 2026-06-16 17:47:47 +01:00
.pylintrc Remove deprecated option 'suggestion-mode' from pylintrc 2026-04-10 15:17:20 +01:00
CHANGELOG.md Update changelog !1077 2026-07-25 15:02:34 +01:00
CONTRIBUTING.md Remove beta naming from intro 2023-01-02 14:01:33 -05:00
DBCHANGES.md Update DBCHANGES.md 2021-08-22 10:00:39 +00:00
docker-compose.yml.example Update additional docker references with Hytale udp ranges 2026-02-21 21:56:24 +00:00
docker_launcher.sh Revert "Merge branch 'bugfix/read-console-by-line' into 'dev'" 2026-04-13 19:48:00 +01:00
Dockerfile Add conditional installation of SteamCMD Deps 2026-02-28 18:39:05 +00:00
LICENSE Add LICENSE 2022-05-11 12:26:23 +00:00
main.py Add busy timeout to sqlite connections. 2026-06-04 12:08:00 -06:00
pytest.ini Unit Test Pipes 2026-07-08 17:36:21 +00:00
README.md Changelog retag 4.10.8 2026-06-21 21:06:39 +01:00
requirements.txt Readd packaging to requirements 2026-06-15 20:15:29 +01:00
SECURITY.md Add SECURITY.md 2025-08-17 14:45:34 -06:00
sonar-project.properties Unit Test Pipes 2026-07-08 17:36:21 +00:00

Crafty Logo

Crafty Controller 4.10.8

Python based Control Panel for your Minecraft Server

What is Crafty Controller?

Crafty Controller is a Minecraft Server Control Panel / Launcher. The purpose of Crafty Controller is to launch a Minecraft Server in the background and present a web interface for the server administrators to interact with their servers. Crafty is compatible with Docker, Linux, Windows.

Documentation

Documentation available on Crafty Docs

Meta

Project Homepage - https://craftycontrol.com

Discord Server - https://discord.gg/9VJPhCE

Git Repository - https://gitlab.com/crafty-controller/crafty-4

Docker Hub - arcadiatechnology/crafty-4


Basic Docker Usage 🐳

With Crafty Controller 4.0 we have focused on building our DevOps Principles, implementing build automation, and securing our containers, with the hopes of making our Container user's lives abit easier.

- Two big changes you will notice is:

  • We now provide pre-built images for you guys.
  • Containers now run as non-root, using practices used by OpenShift & Kubernetes (root group perms).

🔻WARNING: [WSL/WSL2 | WINDOWS 11 | DOCKER DESKTOP]🔻
BE ADVISED! Upstream is currently broken for Minecraft running on Docker under WSL/WSL2, Windows 11 / DOCKER DESKTOP!
On 'Stop' or 'Restart' of the MC Server, there is a 90% chance the World's Chunks will be shredded irreparably!
Please only run Docker on Linux, If you are using Windows we have a portable installs found here: Latest-Stable, Latest-Development


- To get started with docker 🛫

All you need to do is pull the image from this git repository's registry. This is done by using 'docker-compose' or 'docker run' (You don't need to clone the Repository and build, like in 3.x ).

If you have a config folder already from previous local installation or docker setup*, the image should mount this volume and fix the permission as required, if no config present then it will populate its own config folder for you.

As the Dockerfile uses the permission structure of crafty:root internally there is no need to worry about matching the UID or GID on the host system :)


- Using the registry image 🌎

The provided image supports both arm64 and amd64 out the box, if you have issues though you can build it yourself with the compose file in docker/.

The image is located at: registry.gitlab.com/crafty-controller/crafty-4:latest or arcadiatechnology/crafty-4

Branch Status
:latest pipeline status
:dev pipeline status

Here are some example methods for getting started🚀:

docker-compose.yml:

# Make your compose file
$ vim docker-compose.yml
services:
  crafty:
    container_name: crafty_container
    image: registry.gitlab.com/crafty-controller/crafty-4:latest
    restart: always
    environment:
      - TZ=Etc/UTC
    ports:
      - "5520-5550:5520-5550/udp" # Hytale
      - "8000:8000" # HTTP
      - "8443:8443" # HTTPS
      - "8123:8123" # DYNMAP
      - "19132:19132/udp" # BEDROCK
      - "25500-25600:25500-25600" # MC SERV PORT RANGE
    volumes:
      - ./docker/backups:/crafty/backups
      - ./docker/logs:/crafty/logs
      - ./docker/servers:/crafty/servers
      - ./docker/config:/crafty/app/config
      - ./docker/import:/crafty/import
$ docker-compose up -d && docker-compose logs -f

docker run:

$ docker run \
	--name crafty_container \
	--detach \
	--restart always \
	-P 5520-5550:5520-5550/udp \
	-p 8000:8000 \
	-p 8443:8443 \
	-p 8123:8123 \
	-p 19132:19132/udp \
	-p 25500-25600:25500-25600 \
	-e TZ=Etc/UTC \
	-v "/$(pwd)/docker/backups:/crafty/backups" \
	-v "/$(pwd)/docker/logs:/crafty/logs" \
	-v "/$(pwd)/docker/servers:/crafty/servers" \
	-v "/$(pwd)/docker/config:/crafty/app/config" \
	-v "/$(pwd)/docker/import:/crafty/import" \
	registry.gitlab.com/crafty-controller/crafty-4:latest

Building from the cloned repository:

If you are building from docker-compose you can find the compose file in ./docker/docker-compose.yml just cd to the docker directory and docker-compose up -d

If you'd rather not use docker-compose you can use the following docker run in the directory where the Dockerfile is:

# REMEMBER, Build your image first!
$ docker build . -t crafty

$ docker run \
	--name crafty_container \
	--detach \
	--restart always \
	-P 5520-5550:5520-5550/udp \
	-p 8000:8000 \
	-p 8443:8443 \
	-p 8123:8123 \
	-p 19132:19132/udp \
	-p 25500-25600:25500-25600 \
	-e TZ=Etc/UTC \
	-v "/$(pwd)/docker/backups:/crafty/backups" \
	-v "/$(pwd)/docker/logs:/crafty/logs" \
	-v "/$(pwd)/docker/servers:/crafty/servers" \
	-v "/$(pwd)/docker/config:/crafty/app/config" \
	-v "/$(pwd)/docker/import:/crafty/import" \
	crafty

A fresh build will take several minutes depending on your system, but will be rapid thereafter.