Egg Repository

Pterodactyl Community Egg Repository

CanvasMC

Supercharge your Minecraft server with multithreaded dimension ticking, improved chunk generation, optimized entity handling and many more powerful optimizations.

Read Me

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.

CanvasMC Website

CanvasMC Plugin documentation

Server Ports

The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server.

Portdefault
Game25565

Requirements

To run CanvasMC, you'll need:

  • Java 22 or newer
  • At least 4GB of RAM (recommended)
  • A stable internet connection
Yolks
NameTag
Java 22ghcr.io/ptero-eggs/yolks:java_22
Variables
NameDescriptionEnvironment VariableDefault ValueUser ViewableUser Editable
Canvas MC VersionCanvasMC-Minecraft version (example: 1.21.4). Set to 'latest' to use latest versionMC_VERSIONlatestYesYes
CanvasMC Build NumberBuild number from https://jenkins.canvasmc.io/job/Canvas/. Set to 'latest' to get the newest buildCANVAS_BUILDlatestYesYes
Install Script
#!/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."