Supercharge your Minecraft server with multithreaded dimension ticking, improved chunk generation, optimized entity handling and many more powerful optimizations.
CanvasMC is a high-performance Minecraft server software focused on maximizing server performance while maintaining plugin compatibility. Built on top of Purpur, it implements various experimental optimizations to achieve significant performance improvements.
The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server.
Port | default |
---|---|
Game | 25565 |
To run CanvasMC, you'll need:
Name | Tag |
---|---|
Java 22 | ghcr.io/ptero-eggs/yolks:java_22 |
Name | Description | Environment Variable | Default Value | User Viewable | User Editable |
---|---|---|---|---|---|
Canvas MC Version | CanvasMC-Minecraft version (example: 1.21.4). Set to 'latest' to use latest version | MC_VERSION | latest | Yes | Yes |
CanvasMC Build Number | Build number from https://jenkins.canvasmc.io/job/Canvas/. Set to 'latest' to get the newest build | CANVAS_BUILD | latest | Yes | Yes |
#!/bin/bash
cd /mnt/server
apt-get update
apt-get install -y curl jq openjdk-17-jdk
# Clean old install
rm -f server.jar
MC_VERSION="$(echo "$MC_VERSION" | tr -d ' ')"
CANVAS_BUILD="$(echo "$CANVAS_BUILD" | tr -d ' ')"
# Get version
if [[ "$MC_VERSION" == "latest" ]]; then
echo "[CanvasMC] Fetching latest Minecraft version..."
MC_VERSION=$(curl -sSL "https://canvasmc.io/api/v2/builds" | jq -r '.[].minecraftVersion' | sort -Vr | head -n1)
fi
if [[ -z "$MC_VERSION" ]]; then
echo "[CanvasMC] Failed to resolve a valid Minecraft version."
exit 1
fi
echo "[CanvasMC] Using Minecraft version: $MC_VERSION"
# Get build
if [[ "$CANVAS_BUILD" == "latest" ]]; then
echo "[CanvasMC] Fetching latest build for Minecraft $MC_VERSION..."
BUILD_NUMBER=$(curl -sSL "https://canvasmc.io/api/v2/builds?minecraft_version=$MC_VERSION" | jq -r '.[].buildNumber' | sort -n | tail -n1)
else
BUILD_NUMBER="$CANVAS_BUILD"
fi
if [[ -z "$BUILD_NUMBER" ]]; then
echo "[CanvasMC] Could not determine build number."
exit 1
fi
echo "[CanvasMC] Using build number: $BUILD_NUMBER"
# Build URL
JAR_URL="https://jenkins.canvasmc.io/job/Canvas/${BUILD_NUMBER}/artifact/canvas-server/build/libs/canvas-build.${BUILD_NUMBER}.jar"
echo "[CanvasMC] Downloading server.jar from:"
echo "$JAR_URL"
curl -sSL -o server.jar "$JAR_URL"
if [[ ! -f server.jar ]]; then
echo "[CanvasMC] Download failed or file not found."
exit 1
fi
echo "Installation complete."