A Bukkit server implementation on common mod loaders.
Check out the Github for more information.
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 8 | ghcr.io/ptero-eggs/yolks:java_8 |
Java 11 | ghcr.io/ptero-eggs/yolks:java_11 |
Java 16 | ghcr.io/ptero-eggs/yolks:java_16 |
Java 17 | ghcr.io/ptero-eggs/yolks:java_17 |
Java 19 | ghcr.io/ptero-eggs/yolks:java_19 |
Java 21 | ghcr.io/ptero-eggs/yolks:java_21 |
Java 22 | ghcr.io/ptero-eggs/yolks:java_22 |
Name | Description | Environment Variable | Default Value | User Viewable | User Editable |
---|---|---|---|---|---|
Server Jar File | Name of the server JAR file that will be created (e.g. server.jar). | SERVER_JARFILE | server.jar | Yes | Yes |
Minecraft Version | The version of Minecraft to download. | MINECRAFT_VERSION | auto | Yes | Yes |
Download Path | Optional custom download URL. Leave empty to use the Arclight API. | DOWNLOAD_URL | No | No | |
Arclight Channel | Select the Arclight build channel (e.g. stable, beta). Use 'auto' to use the most recent one. | ARCLIGHT_CHANNEL | auto | Yes | Yes |
Arclight Loader | Select the mod loader you want to use (forge, neoforge, fabric). | ARCLIGHT_LOADER | forge | Yes | Yes |
#!/bin/bash
# Arclight Installation Script
#
# Server Files: /mnt/server
cd /mnt/server
BASE_API_URL="https://files.hypoglycemia.icu/v1/files/arclight"
if [ -n "${DOWNLOAD_URL}" ]; then
echo "Using custom download URL: ${DOWNLOAD_URL}"
else
echo "Fetching available Minecraft versions for Arclight..."
ARCLIGHT_VERSION=$(curl -s "${BASE_API_URL}/minecraft" | jq -r '.files[].name' | sort -Vr)
if [ -z "$ARCLIGHT_VERSION" ] || [ "$ARCLIGHT_VERSION" == "null" ]; then
echo "Error: Could not fetch version list from API."
exit 1
fi
if [ "$MINECRAFT_VERSION" == "auto" ]; then
MINECRAFT_VERSION=$(echo "$ARCLIGHT_VERSION" | head -n 1)
echo "Auto-selected Minecraft version: ${MINECRAFT_VERSION}"
else
VERSION_EXISTS=$(echo "$ARCLIGHT_VERSION" | grep -Fx "$MINECRAFT_VERSION")
if [ -z "$VERSION_EXISTS" ]; then
echo "Warning: Specified version '${MINECRAFT_VERSION}' not found. Falling back to the latest available version."
MINECRAFT_VERSION=$(echo "$ARCLIGHT_VERSION" | head -n 1)
echo "Fallback version: ${MINECRAFT_VERSION}"
fi
fi
echo "Fetching available loaders for version ${MINECRAFT_VERSION}..."
LOADER_LIST=$(curl -s "${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders" | jq -r '.files[].name')
if [ -z "$LOADER_LIST" ] || [ "$LOADER_LIST" == "null" ]; then
echo "Error: Could not fetch loader list from API."
exit 1
fi
LOADER_EXISTS=$(echo "$LOADER_LIST" | grep -Fx "$ARCLIGHT_LOADER")
if [ -z "$LOADER_EXISTS" ]; then
echo "Warning: Specified loader '${ARCLIGHT_LOADER}' not found for version ${MINECRAFT_VERSION}"
exit 1
fi
echo "Fetching available channels for version ${MINECRAFT_VERSION} and loader ${ARCLIGHT_LOADER}..."
CHANNEL_LIST=$(curl -s "${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}")
CHANNEL_LIST_NAME=$(echo "$CHANNEL_LIST" | jq -r '.files[].name')
if [ "$ARCLIGHT_CHANNEL" == "auto" ]; then
echo "Selecting preferred channel for loader ${ARCLIGHT_LOADER} ${MINECRAFT_VERSION}..."
ARCLIGHT_CHANNEL=$(echo "$CHANNEL_LIST_NAME" | grep -E 'latest-stable|version-stable|latest-snapshot|version-snapshot' | \
grep -x 'latest-stable' || \
echo "$CHANNEL_LIST_NAME" | grep -x 'version-stable' || \
echo "$CHANNEL_LIST_NAME" | grep -x 'latest-snapshot' || \
echo "$CHANNEL_LIST_NAME" | grep -x 'version-snapshot' | head -n 1)
if [ -z "$ARCLIGHT_CHANNEL" ]; then
echo "No preferred channel found. Falling back to last in list."
ARCLIGHT_CHANNEL=$(echo "$CHANNEL_LIST_NAME" | tail -n 1)
fi
CHANNEL_TYPE=$(echo "$CHANNEL_LIST" | jq -r ".files[] | select(.name==\"${ARCLIGHT_CHANNEL}\") | .type")
echo "Auto-selected channel: ${ARCLIGHT_CHANNEL}"
else
if [ "$ARCLIGHT_CHANNEL" == "beta" ]; then
CHANNELS=("latest-snapshot" "versions-snapshot")
elif [ "$ARCLIGHT_CHANNEL" == "stable" ]; then
CHANNELS=("latest-stable" "versions-stable")
fi
for CHANNEL in "${CHANNELS[@]}"; do
if echo "$CHANNEL_LIST_NAME" | grep -q "$CHANNEL"; then
ARCLIGHT_CHANNEL="$CHANNEL"
break
fi
done
if [ -z "$ARCLIGHT_CHANNEL" ]; then
echo "Warning: Specified channel '${ARCLIGHT_CHANNEL}' not found for loader ${ARCLIGHT_LOADER} and Minecraft version ${MINECRAFT_VERSION}. Falling back to default channel."
ARCLIGHT_CHANNEL=$(echo "$CHANNEL_LIST_NAME" | grep -E 'latest-stable|version-stable|latest-snapshot|version-snapshot' | \
grep -x 'latest-stable' || \
echo "$CHANNEL_LIST_NAME" | grep -x 'version-stable' || \
echo "$CHANNEL_LIST_NAME" | grep -x 'latest-snapshot' || \
echo "$CHANNEL_LIST_NAME" | grep -x 'version-snapshot' | head -n 1)
if [ -z "$ARCLIGHT_CHANNEL" ]; then
ARCLIGHT_CHANNEL=$(echo "$CHANNEL_LIST_NAME" | tail -n 1)
fi
echo "Fallback channel: ${ARCLIGHT_CHANNEL}"
fi
CHANNEL_TYPE=$(echo "$CHANNEL_LIST" | jq -r ".files[] | select(.name==\"${ARCLIGHT_CHANNEL}\") | .type")
fi
echo "Fetching builds for ${ARCLIGHT_LOADER}-${MINECRAFT_VERSION}-${ARCLIGHT_CHANNEL}..."
if [ -z "$CHANNEL_TYPE" ] || [ "$CHANNEL_TYPE" == "null" ] || [ "$CHANNEL_TYPE" == "link" ]; then
BUILD_NAME=${ARCLIGHT_CHANNEL}
DOWNLOAD_URL="${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}/${ARCLIGHT_CHANNEL}"
elif [ "$CHANNEL_TYPE" == "directory" ]; then
BUILD=$(curl -s "${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}/${ARCLIGHT_CHANNEL}" | jq -r '.files[0]')
BUILD_NAME=$(echo "${BUILD}" | jq -r '.name')
DOWNLOAD_URL="${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}/${ARCLIGHT_CHANNEL}/${BUILD_NAME}"
else
echo "Error: Unknown channel type. Exiting."
exit 1
fi
echo "Selected build: ${BUILD_NAME}"
fi
echo "Downloading Arclight from: ${DOWNLOAD_URL}"
if [ -f "${SERVER_JARFILE}" ]; then
echo "Backing up existing server jar..."
mv "${SERVER_JARFILE}" "${SERVER_JARFILE}.old"
fi
curl -s -L -o "${SERVER_JARFILE}" "${DOWNLOAD_URL}"
if [ $? -ne 0 ]; then
echo "Download failed. Please check the URL or your internet connection."
exit 1
fi
echo "Download complete. File saved as ${SERVER_JARFILE}"