Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility.
Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility.
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 |
Name | Tag |
---|---|
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 |
Name | Description | Environment Variable | Default Value | User Viewable | User Editable |
---|---|---|---|---|---|
Velocity Version | The Velocity Proxy version to download. Set to 'latest ' the download the last stable build. | VELOCITY_VERSION | latest | Yes | No |
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. | SERVER_JARFILE | velocity.jar | Yes | No |
Download Path | A URL to use to download a server.jar rather than the ones in the install script. This is not user viewable. | DL_PATH | No | No | |
Build Number | The build number for the velocity release. Leave at latest to always get the latest version. Invalid versions will default to latest. | BUILD_NUMBER | latest | Yes | Yes |
#!/bin/ash
# Velocity Proxy Installation Script
#
# Server Files: /mnt/server
PROJECT=velocity
if [[ -z ${VELOCITY_VERSION} ]] || [[ ${VELOCITY_VERSION} == "latest" ]]; then
VELOCITY_VERSION="latest"
fi
if [[ -n "${DOWNLOAD_LINK}" ]]; then
echo -e "Using supplied download url: ${DOWNLOAD_LINK}"
DOWNLOAD_URL=$(eval echo $(echo ${DL_PATH} | sed -e 's/{{/${/g' -e 's/}}/}/g'))
else
VER_EXISTS=$(curl -s https://api.papermc.io/v2/projects/${PROJECT} | jq -r --arg VERSION $VELOCITY_VERSION '.versions[] | contains($VERSION)' | grep true)
LATEST_VERSION=$(curl -s https://api.papermc.io/v2/projects/${PROJECT} | jq -r '.versions' | jq -r '.[-1]')
if [[ "${VER_EXISTS}" == "true" ]]; then
echo -e "Version is valid. Using version ${VELOCITY_VERSION}"
else
echo -e "Using the latest ${PROJECT} version"
VELOCITY_VERSION=${LATEST_VERSION}
fi
BUILD_EXISTS=$(curl -s https://api.papermc.io/v2/projects/${PROJECT}/versions/${VELOCITY_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true)
LATEST_BUILD=$(curl -s https://api.papermc.io/v2/projects/${PROJECT}/versions/${VELOCITY_VERSION} | jq -r '.builds' | jq -r '.[-1]')
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
JAR_NAME=${PROJECT}-${VELOCITY_VERSION}-${BUILD_NUMBER}.jar
echo "Version being downloaded"
echo -e "Velocity Version: ${VELOCITY_VERSION}"
echo -e "Build: ${BUILD_NUMBER}"
echo -e "JAR Name of Build: ${JAR_NAME}"
DOWNLOAD_URL=https://api.papermc.io/v2/projects/${PROJECT}/versions/${VELOCITY_VERSION}/builds/${BUILD_NUMBER}/downloads/${JAR_NAME}
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"