CanvasMC
gamesSupercharge your Minecraft server with multithreaded dimension ticking, improved chunk generation, optimized entity handling and many more powerful optimizations.
README
CanvasMC
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.
Server Ports
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 |
Requirements
To run CanvasMC, you'll need:
- Java 22 or newer
- At least 4GB of RAM (recommended)
- A stable internet connection
Docker Images (2)
| Name | Image |
|---|---|
Java 25 | ghcr.io/pterodactyl/yolks:java_25 |
Java 22 | ghcr.io/pterodactyl/yolks:java_22 |
Startup Command
java -Xms128M -XX:MaxRAMPercentage=95.0 --add-modules=jdk.incubator.vector -jar server.jar --nogui Variables (2)
Canvas MC Version
CanvasMC-Minecraft version (example: 1.21.4). Set to 'latest' to use latest version
- Environment:
MC_VERSION- Default:
latest- User Viewable:
- ✅
- User Editable:
- ✅
- Rules:
required|string|max:15
CanvasMC Build Number
Build number from https://jenkins.canvasmc.io/job/Canvas/. Set to 'latest' to get the newest build
- Environment:
CANVAS_BUILD- Default:
latest- User Viewable:
- ✅
- User Editable:
- ✅
- Rules:
required|string|max:10
Installation Script
ghcr.io/pterodactyl/installers:debianbash#!/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/build
if [[ "$CANVAS_BUILD" == "latest" ]]; then
if [[ "$MC_VERSION" == "latest" ]]; then
echo "[CanvasMC] Fetching latest Minecraft version and build..."
BUILD_INFO=$(curl -fsSL "https://canvasmc.io/api/v2/builds/latest?project=canvas")
else
echo "[CanvasMC] Fetching latest build for Minecraft $MC_VERSION..."
BUILD_INFO=$(curl -fsSL "https://canvasmc.io/api/v2/builds/latest?project=canvas&channel=$MC_VERSION")
fi
if [[ -z "$BUILD_INFO" ]]; then
echo "[CanvasMC] Failed to query Canvas API."
exit 1
fi
RESULT=$(echo "$BUILD_INFO" | jq -r '.result')
if [[ "$RESULT" != "SUCCESS" ]]; then
echo "[CanvasMC] Canvas API returned an error."
echo "$BUILD_INFO"
exit 1
fi
MC_VERSION=$(echo "$BUILD_INFO" | jq -r '.channelVersion')
BUILD_NUMBER=$(echo "$BUILD_INFO" | jq -r '.buildNumber')
JAR_URL=$(echo "$BUILD_INFO" | jq -r '.downloadUrl')
else
# Specified build number
BUILD_NUMBER="$CANVAS_BUILD"
if [[ "$MC_VERSION" == "latest" ]]; then
echo "[CanvasMC] Fetching latest Minecraft version..."
BUILD_INFO=$(curl -fsSL "https://canvasmc.io/api/v2/builds/latest?project=canvas")
if [[ -z "$BUILD_INFO" ]]; then
echo "[CanvasMC] Failed to query Canvas API."
exit 1
fi
RESULT=$(echo "$BUILD_INFO" | jq -r '.result')
if [[ "$RESULT" != "SUCCESS" ]]; then
echo "[CanvasMC] Canvas API returned an error."
echo "$BUILD_INFO"
exit 1
fi
MC_VERSION=$(echo "$BUILD_INFO" | jq -r '.channelVersion')
fi
JAR_URL="https://jenkins.canvasmc.io/job/Canvas/${BUILD_NUMBER}/artifact/canvas-server/build/libs/canvas-build.${BUILD_NUMBER}.jar"
fi
# Check values
if [[ -z "$MC_VERSION" || "$MC_VERSION" == "null" ]]; then
echo "[CanvasMC] Failed to resolve a valid Minecraft version."
exit 1
fi
if [[ -z "$BUILD_NUMBER" || "$BUILD_NUMBER" == "null" ]]; then
echo "[CanvasMC] Failed to resolve a valid build number."
exit 1
fi
if [[ -z "$JAR_URL" || "$JAR_URL" == "null" ]]; then
echo "[CanvasMC] Failed to resolve a valid download URL."
exit 1
fi
echo "[CanvasMC] Using Minecraft version: $MC_VERSION"
echo "[CanvasMC] Using build number: $BUILD_NUMBER"
echo "[CanvasMC] Downloading server.jar from:"
echo "$JAR_URL"
curl -fsSL -o server.jar "$JAR_URL"
if [[ $? -ne 0 ]]; then
echo "[CanvasMC] Download failed."
exit 1
fi
if [[ ! -f server.jar || ! -s server.jar ]]; then
echo "[CanvasMC] Downloaded server.jar is invalid."
exit 1
fi
echo "Installation complete."