Velocity

games
Report Issue

Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility.

Contributors:
README

Velocity Minecraft Proxy

Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility.

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
Docker Images (6)
Name Image
Java 22 ghcr.io/ptero-eggs/yolks:java_22
Java 21 ghcr.io/ptero-eggs/yolks:java_21
Java 17 ghcr.io/ptero-eggs/yolks:java_17
Java 16 ghcr.io/ptero-eggs/yolks:java_16
Java 11 ghcr.io/ptero-eggs/yolks:java_11
Java 8 ghcr.io/ptero-eggs/yolks:java_8
Startup Command
java -Xms128M -Xmx{{SERVER_MEMORY}}M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar {{SERVER_JARFILE}}
Variables (4)

Velocity Version

The Velocity Proxy version to download. Set to 'latest ' the download the last stable build.

Environment:
VELOCITY_VERSION
Default:
latest
User Viewable:
User Editable:
Rules:
required|string|max:20

Server Jar File

Server Jarfile, by default this is set to 'velocity.jar'. Set it to otherwise if you wish to have a different jarfile name.

Environment:
SERVER_JARFILE
Default:
velocity.jar
User Viewable:
User Editable:
Rules:
required|string|max:32|regex:/^([\w\d._-]+)(\.jar)$/

Download Path

A URL to use to download a server.jar rather than the ones in the install script. This is not user viewable.

Environment:
DL_PATH
Default:
None
User Viewable:
User Editable:
Rules:
nullable|string

Build Number

The build number for the velocity release. Leave at latest to always get the latest version. Invalid versions will default to latest.

Environment:
BUILD_NUMBER
Default:
latest
User Viewable:
User Editable:
Rules:
required|string|max:20
Installation Script
Container: ghcr.io/ptero-eggs/installers:alpine
Entrypoint: ash
#!/bin/ash
# Velocity Proxy Installation Script
#
# Server Files: /mnt/server
PROJECT=velocity

if [ -n "${DL_PATH}" ]; then
	echo -e "Using supplied download url: ${DL_PATH}"
	DOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
else
	VER_EXISTS=`curl -s https://fill.papermc.io/v3/projects/${PROJECT} | jq -r --arg VERSION $VELOCITY_VERSION '.versions | any(.[]; index($VERSION))' | grep -m1 true`
	LATEST_VERSION=`curl -s https://fill.papermc.io/v3/projects/${PROJECT} | jq -r '.versions | to_entries | .[0].value[0]'`

	if [ "${VER_EXISTS}" == "true" ]; then
		echo -e "Version is valid. Using version ${VELOCITY_VERSION}"
	else
		echo -e "Specified version not found. Defaulting to the latest ${PROJECT} version"
		VELOCITY_VERSION=${LATEST_VERSION}
	fi

	BUILD_EXISTS=`curl -s https://fill.papermc.io/v3/projects/${PROJECT}/versions/${VELOCITY_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`
	LATEST_BUILD=`curl -s https://fill.papermc.io/v3/projects/${PROJECT}/versions/${VELOCITY_VERSION} | jq -r '.builds' | jq -r '.[0]'`

	if [ "${BUILD_EXISTS}" == "true" ]; then
		echo -e "Build is valid for version ${VELOCITY_VERSION}. Using build ${BUILD_NUMBER}"
	else
		echo -e "Using the latest ${PROJECT} build for version ${VELOCITY_VERSION}"
		BUILD_NUMBER=${LATEST_BUILD}
	fi

	echo "Version being downloaded"
	echo -e "Project: ${PROJECT}"
	echo -e "Velocity Version: ${VELOCITY_VERSION}"
	echo -e "Build: ${BUILD_NUMBER}"
	DOWNLOAD_URL=`curl -s https://fill.papermc.io/v3/projects/${PROJECT}/versions/${VELOCITY_VERSION}/builds/${BUILD_NUMBER} | jq -r '.downloads."server:default".url'`
fi

cd /mnt/server

echo -e "Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}"

if [ -f ${SERVER_JARFILE} ]; then
	mv ${SERVER_JARFILE} ${SERVER_JARFILE}.old
fi

curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}

if [[ -f velocity.toml ]]; then
	echo -e "velocity config file exists"
else
	echo -e "downloading velocity config file."
	curl https://raw.githubusercontent.com/ptero-eggs/game-eggs/main/minecraft/proxy/java/velocity/velocity.toml -o velocity.toml
fi

if [[ -f forwarding.secret ]]; then
	echo -e "velocity forwarding secret file already exists"
else
	echo -e "creating forwarding secret file"
	touch forwarding.secret
	date +%s | sha256sum | base64 | head -c 12 > forwarding.secret
fi

echo -e "install complete"