Glowstone

Games
Report Issue

Glowstone is an open-source server implementation for Minecraft: Java Edition 1.12.2 and up.

Contributors:
README

Glowstone

Glowstone is an open-source replacement for CraftBukkit, Spigot, and Paper.

Ports

Similar to CraftBukkit and it's derivatives, it only requires a single port. Other plugins may require more ports.

Port default
Game 25565
Docker Images (6)
Name Image
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 21 ghcr.io/ptero-eggs/yolks:java_21
java 22 ghcr.io/ptero-eggs/yolks:java_22
Startup Command
java -Xms768M -Xmx{{SERVER_MEMORY}}M -XX:+UseG1GC -jar {{SERVER_JARFILE}}
Variables (6)

Server Jar File

The name of the server jarfile to run the server with.

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

Glowstone Version

The version of Glowstone to download. If it ends in SNAPSHOT, it will attempt to download from the maven repository.

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

GitHub User

GitHub user to use for api calls. This only needs to be set if you hit the GitHub API too often across multiple servers.

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

GitHub OAuth Token

This can be either an OAuth or a Personal Access Token. This is required for the install is you set a user.

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

GitHub Package

The repository to download from.

Environment:
GITHUB_PACKAGE
Default:
GlowstoneMC/Glowstone
User Viewable:
User Editable:
Rules:
required|string

Match

Environment:
MATCH
Default:
glowstone.jar
User Viewable:
User Editable:
Rules:
required|string
Installation Script
Container: eclipse-temurin:8-jdk
Entrypoint: bash
#!/bin/bash
# Server Files: /mnt/server
apt update
apt install -y jq curl

mkdir -p /mnt/server
cd /mnt/server

if [ $VERSION == *SNAPSHOT ]; then
  echo -e "Using Maven"
  
  DOWNLOAD_URL="https://repo.glowstone.net/service/rest/v1/search/assets/download?group=net.glowstone&name=glowstone&sort=version&repository=snapshots&maven.baseVersion=${VERSION}&direction=desc&maven.classifier="
else 
    echo -e "Using GitHub."

    if [ -z "${GITHUB_USER}" ] && [ -z "${GITHUB_OAUTH_TOKEN}" ] ; then
        echo -e "using anon api call"
    else
        echo -e "user and oauth token set"
        alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '
    fi
    
    ## get release info and download links
    LATEST_JSON=$(curl --silent "https://api.github.com/repos/${GITHUB_PACKAGE}/releases/latest")
    RELEASES=$(curl --silent "https://api.github.com/repos/${GITHUB_PACKAGE}/releases")

    if [ -z "${VERSION}" ] || [ "${VERSION}" == "latest" ]; then
        DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})
    else
        VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION "${VERSION}" '.[] | select(.tag_name==$VERSION) | .tag_name')
        if [ "${VERSION}" == "${VERSION_CHECK}" ]; then
            DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION "${VERSION}" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})
        else
            echo -e "defaulting to latest release"
            DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)
        fi
    fi
fi

echo -e "Downloading..."
curl --silent -L -o ${SERVER_JARFILE} ${DOWNLOAD_URL}

echo -e "Generating configuration..."
java -jar ${SERVER_JARFILE} --generate-config

echo -e "Install Complete"