CanvasMC
Supercharge your Minecraft server with multithreaded dimension ticking, improved chunk generation, optimized entity handling and many more powerful optimizations.
Ports
Add an allocation on the node for each port.
- Game 25565
Install
- Installer image
- ghcr.io/pterodactyl/installers:debian
- Install script
- 99 lines
Images
New servers use the first image. Users can change it on the Startup page.
- Java 25 default ghcr.io/pterodactyl/yolks:java_25
- Java 22 ghcr.io/pterodactyl/yolks:java_22
Panel features
- eula
The Panel asks the user to accept the Minecraft EULA when the server needs it.
- java_version
The Panel lets the user change the Java version when the server needs a different one.
- pid_limit
The Panel tells the user when the server reaches its process or memory limit.
Startup
The Panel runs this command to start the server. It replaces each variable in the command with the value of that variable.
2 variables
Startup command
java -Xms128M -XX:MaxRAMPercentage=95.0 --add-modules=jdk.incubator.vector -jar server.jar --noguiCanvasMC-Minecraft version (example: 1.21.4). Set to 'latest' to use latest version
MC_VERSIONUsers can edit
required|string|max:15
Build number from https://jenkins.canvasmc.io/job/Canvas/. Set to 'latest' to get the newest build
CANVAS_BUILDUsers can edit
required|string|max:10
Wings
- Stop command
- stop
- Running when the console shows
- )! For help, type
Files Wings edits
Wings sets these values in these files before each start.
server.properties properties
- server-ip
- 0.0.0.0
- server-port
- {{server.build.default.port}}
- query.port
- {{server.build.default.port}}
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
Changes
- Fixes and optimisations (#587)
· Red Banana · 0c7ed9e
- Adding java 25 to most minecraft eggs
· Red-Banana-Official · fb0c032
- Add: CanvasMC
· Red Banana · 7d95b37
Problem with this egg?
Open an issue on GitHub. Include your Panel and Wings versions.
Install script 99 lines bash in ghcr.io/pterodactyl/installers:debian Show Hide
#!/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."