Game catalogue

Minecraft (Paper)

High-performance Minecraft server with plugin support (Bukkit/Spigot/Paper plugins). Choose a version, or "latest".

Downloadinstall script
Architecturesany
Portsgame TCP 25565 · rcon TCP 25575
Recommended2048 MB memory + 32 MB per player · 2 cores · 6 GB disk
Player countminecraft
RCONsource
Version2a4f20455261

Settings

Template

minecraft-paper.yaml · import it in the panel or add it from the catalogue.

# Paper: the fast, plugin-capable Minecraft server (papermc.io).
id: minecraft-paper
name: Minecraft (Paper)
description: High-performance Minecraft server with plugin support (Bukkit/Spigot/Paper plugins). Choose a version, or "latest".
images:
  - label: Java 25 (Minecraft 26.x and newer)
    image: registry.audifire.ch/hosting-panel/runtime-images/java:25
  - label: Java 21 (Minecraft 1.20.5 – 1.21)
    image: registry.audifire.ch/hosting-panel/runtime-images/java:21
  - label: Java 17 (Minecraft 1.18 – 1.20.4)
    image: registry.audifire.ch/hosting-panel/runtime-images/java:17
startupMode: shell
# Aikar's flags, Paper's recommendation
startup: >-
  java -Xms128M -Xmx{{SERVER_MEMORY}}M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200
  -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5
  -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5
  -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs
  -Daikars.new.flags=true -jar {{SERVER_JARFILE}} --nogui
stop:
  command: stop
  timeoutSeconds: 60
readyPattern: ")! For help, type"
ports:
  - role: game
    protocol: tcp
    default: 25565
  - role: rcon
    protocol: tcp
    default: 25575
    variable: RCON_PORT
# players, MOTD and version from the Server List Ping (as in the game's server list)
query:
  protocol: minecraft
# Source RCON for integrations (e.g. whitelists); on when an RCON password is set
rcon:
  protocol: source
  password: "{{env.RCON_PASSWORD}}"
# starting points for the limits when creating a server; memory grows with the player slots
resources:
  memoryMb: 2048
  memoryPerPlayerMb: 32
  playersVariable: MAX_PLAYERS
  cpuPercent: 200
  diskMb: 6144
variables:
  - key: RCON_PASSWORD
    name: RCON password
    description: Turns RCON on, for tools and integrations. Empty keeps it off.
    visibility: secret
    rules: nullable|string|max:64
  - key: PAPER_VERSION
    name: Minecraft version
    description: '"latest", or a version like 1.21.4. Reinstall to change it or to get the newest Paper build.'
    default: latest
    rules: required|string|max:20
  - key: SERVER_JARFILE
    name: Server jar
    default: server.jar
    visibility: admin
    rules: required|regex:/^[\w.-]+\.jar$/
  - key: MAX_PLAYERS
    name: Max players
    default: "20"
    rules: required|integer|between:1,500
  - key: MOTD
    name: Server list description
    default: A Paper Server
    rules: required|string|max:59
configFiles:
  - path: server.properties
    parser: properties
    values:
      - key: server-port
        value: "{{server.build.default.port}}"
      - key: server-ip
        value: ""
      - key: max-players
        value: "{{env.MAX_PLAYERS}}"
      - key: motd
        value: "{{env.MOTD}}"
      - key: enable-rcon
        value: "true"
      - key: rcon.port
        value: "{{env.RCON_PORT}}"
      - key: rcon.password
        value: "{{env.RCON_PASSWORD}}"
prompts:
  - id: eula
    when: You need to agree to the EULA
    title: The server needs the Minecraft EULA accepted
    message: By accepting you agree to the Minecraft End User License Agreement.
    link:
      label: Minecraft EULA
      url: https://aka.ms/MinecraftEULA
    action: Accept and start
    writeFiles:
      - path: eula.txt
        content: "eula=true\n"
    then: start
install:
  image: alpine:3.22
  entrypoint: sh
  script: |
    set -e
    apk add --no-cache curl jq >/dev/null
    cd /mnt/server
    api=https://fill.papermc.io/v3/projects/paper
    version="${PAPER_VERSION}"
    [ "$version" = "latest" ] && version=$(curl -fsSL "$api" | jq -r '.versions | to_entries[0].value[0]')
    build=$(curl -fsSL "$api/versions/$version/builds/latest")
    url=$(echo "$build" | jq -r '.downloads."server:default".url // empty')
    if [ -z "$url" ]; then echo "No Paper build for Minecraft $version."; exit 1; fi
    echo "Downloading Paper $version build $(echo "$build" | jq -r .id)…"
    curl -fsSL -o "${SERVER_JARFILE}" "$url"
    [ -f server.properties ] || printf 'server-port=25565\n' > server.properties
    echo "Paper $version installed."