app | ||
config_examples | ||
docker | ||
.dockerignore | ||
.editorconfig | ||
.gitignore | ||
.gitlab-ci.yml | ||
.pylintrc | ||
DBCHANGES.md | ||
docker_launcher.sh | ||
docker-compose.yml.example | ||
Dockerfile | ||
main.py | ||
README.md | ||
requirements.txt |
Crafty Controller 4.0.0-alpha.3
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 7, Windows 8 and Windows 10.
Documentation
Documentation available on wiki.craftycontrol.com
Meta
Project Homepage - https://craftycontrol.com
Discord Server - https://discord.gg/9VJPhCE
Git Repository - https://gitlab.com/crafty-controller/crafty-web
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 OpenSwift & 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, 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 :)
*Make sure the ownership permissions on
servers/ backups/ logs/ configs/ imports/
in thedocker/
are notroot:root
, please just chown the dir recursively to your host user.
Please make sure if you are using a
compose
file, that the above volume mount directories are present, otherwise, docker will just make them and they'll beroot:root
which is not what we want.💀
- 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-commander:latest
Branch | Status |
---|---|
:latest | |
:dev |
While the repository is still private / pre-release, Before you can pull the image you must authenticate docker with the Container Registry.
To authenticate you will need a personal access token with the minimum scope:
- For read (pull) access,
read_registry
. - For write (push) access,
write_registry
.
When you have this just run:
$ docker login registry.gitlab.com -u <username> -p <token>
or
$ echo <token> | docker login registry.gitlab.com -u <username> --password-stdin
or
$ cat ~/my_password.txt | docker login registry.gitlab.com -u <username> --password-stdin
Then use one of the following methods:
docker-compose.yml:
# We need to make them because of permissions remember!
$ mkdir docker/ docker/backups docker/logs docker/servers docker/config docker/import
# Make your compose file
$ vim docker-compose.yml
version: '3'
services:
crafty:
container_name: crafty_commander
image: registry.gitlab.com/crafty-controller/crafty-commander:latest
environment:
- TZ=Etc/UTC
ports:
- "8000:8000" # HTTP
- "8443:8443" # HTTPS
- "8123:8123" # DYNMAP
- "19132:19132/udp" # BEDROCK
- "25500-25600:25500-25600" # MC SERV PORT RANGE
volumes:
- ./docker/backups:/commander/backups
- ./docker/logs:/commander/logs
- ./docker/servers:/commander/servers
- ./docker/config:/commander/app/config
- ./docker/import:/commander/import
$ docker-compose up -d && docker-compose logs -f
docker run:
# We need to make them because of permissions remember!
$ mkdir docker/ docker/backups docker/logs docker/servers docker/config docker/import
$ docker run \
--name crafty_commander \
-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:/commander/backups" \
-v "/$(pwd)/docker/logs:/commander/logs" \
-v "/$(pwd)/docker/servers:/commander/servers" \
-v "/$(pwd)/docker/config:/commander/app/config" \
-v "/$(pwd)/docker/import:/commander/import" \
registry.gitlab.com/crafty-controller/crafty-commander: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_commander \
-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:/commander/backups" \
-v "/$(pwd)/docker/logs:/commander/logs" \
-v "/$(pwd)/docker/servers:/commander/servers" \
-v "/$(pwd)/docker/config:/commander/app/config" \
-v "/$(pwd)/docker/import:/commander/import" \
crafty
A fresh build will take several minutes depending on your system, but will be rapid thereafter.