98 lines
4.1 KiB
YAML
98 lines
4.1 KiB
YAML
# Minecraft Crossplay-Server: Java Edition + Bedrock Edition
|
|
# ----------------------------------------------------------
|
|
# Basis : PaperMC (Java-Server, Plugin-faehig)
|
|
# Bruecke: GeyserMC uebersetzt Bedrock-Pakete -> Java-Protokoll
|
|
# Auth : Floodgate authentifiziert Bedrock-Spieler ueber Xbox Live,
|
|
# d.h. Konsolen-/Mobile-Spieler brauchen KEINEN Java-Account.
|
|
#
|
|
# Alle Stellschrauben liegen in .env
|
|
|
|
name: mc-crossplay
|
|
|
|
services:
|
|
minecraft:
|
|
# Minecraft 26.x setzt Java 25 voraus - Tag nicht auf java21 zuruecksetzen.
|
|
image: itzg/minecraft-server:stable-java25
|
|
container_name: mc-crossplay
|
|
restart: unless-stopped
|
|
# noetig, damit die Server-Konsole via `docker attach` bedienbar bleibt
|
|
stdin_open: true
|
|
tty: true
|
|
|
|
ports:
|
|
- "${JAVA_PORT:-25565}:25565/tcp" # Java Edition (TCP)
|
|
- "${BEDROCK_PORT:-19132}:19132/udp" # Bedrock Edition via Geyser (UDP!)
|
|
|
|
environment:
|
|
# --- Mojang EULA -------------------------------------------------
|
|
EULA: "TRUE"
|
|
|
|
# --- Server-Software ---------------------------------------------
|
|
TYPE: "PAPER"
|
|
VERSION: "${MC_VERSION:-LATEST}"
|
|
|
|
# --- Speicher / JVM ----------------------------------------------
|
|
INIT_MEMORY: "${MC_MEMORY:-4G}"
|
|
MAX_MEMORY: "${MC_MEMORY:-4G}"
|
|
USE_AIKAR_FLAGS: "true"
|
|
|
|
# --- Plugins ------------------------------------------------------
|
|
# Immer der aktuellste Build. Wichtig, weil Bedrock-Clients (Konsole,
|
|
# Handy) sich selbst updaten und Geyser hinterherziehen muss.
|
|
# Eigene Plugins hier einfach als weitere Zeile (URL) ergaenzen.
|
|
PLUGINS: |
|
|
https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot
|
|
https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot
|
|
|
|
# --- Konfigurations-Seeding ---------------------------------------
|
|
# Inhalt von ./config wird nach /data kopiert, also z.B.
|
|
# ./config/plugins/Geyser-Spigot/config.yml -> /data/plugins/Geyser-Spigot/config.yml
|
|
COPY_CONFIG_DEST: "/data"
|
|
|
|
# --- server.properties --------------------------------------------
|
|
MOTD: "${MC_MOTD:-Crossplay Server - Java & Bedrock}"
|
|
DIFFICULTY: "${MC_DIFFICULTY:-normal}"
|
|
MAX_PLAYERS: "${MC_MAX_PLAYERS:-20}"
|
|
VIEW_DISTANCE: "${MC_VIEW_DISTANCE:-10}"
|
|
SIMULATION_DISTANCE: "${MC_SIMULATION_DISTANCE:-8}"
|
|
SPAWN_PROTECTION: "0"
|
|
OPS: "${MC_OPS:-}"
|
|
|
|
# --- Whitelist ----------------------------------------------------
|
|
# MC_WHITELIST nimmt ausschliesslich *Java*-Profilnamen auf - itzg loest
|
|
# sie beim Start via PlayerDB/Mojang in UUIDs auf. Xbox-Gamertags von
|
|
# Bedrock-Spielern lassen sich hier NICHT eintragen, die kommen ueber
|
|
# `rcon-cli "fwhitelist add <Gamertag>"` direkt von Floodgate dazu.
|
|
ENABLE_WHITELIST: "${MC_WHITELIST_ENABLED:-false}"
|
|
ENFORCE_WHITELIST: "${MC_WHITELIST_ENABLED:-false}"
|
|
WHITELIST: "${MC_WHITELIST:-}"
|
|
# MERGE ist hier entscheidend: ohne das wuerde die whitelist.json bei
|
|
# jedem Start auf MC_WHITELIST reduziert - und alle per fwhitelist
|
|
# eingetragenen Bedrock-Spieler waeren wieder raus.
|
|
EXISTING_WHITELIST_FILE: "MERGE"
|
|
|
|
# Muss TRUE bleiben: Floodgate haengt sich in die Online-Auth ein.
|
|
ONLINE_MODE: "TRUE"
|
|
# Muss false sein: Bedrock-Spieler haben keine Java-Chat-Signatur und
|
|
# wuerden sonst beim Chatten rausfliegen.
|
|
ENFORCE_SECURE_PROFILE: "false"
|
|
|
|
# --- Fernsteuerung / Betrieb ---------------------------------------
|
|
ENABLE_RCON: "true"
|
|
RCON_PASSWORD: "${RCON_PASSWORD:?RCON_PASSWORD fehlt - bitte in .env setzen}"
|
|
TZ: "${TZ:-Europe/Berlin}"
|
|
# Zeit fuers saubere Speichern der Welt beim Stoppen
|
|
STOP_DURATION: "120"
|
|
|
|
volumes:
|
|
# Welt + Plugin-Daten in einem Named Volume (schnelle I/O, auch unter
|
|
# Docker Desktop/WSL2). Zugriff via `docker compose cp` oder Backup s. README.
|
|
- mc-data:/data
|
|
# Vorgegebene Konfigurationsdateien, versionierbar im Projektordner
|
|
- ./config:/config:ro
|
|
|
|
stop_grace_period: 2m
|
|
|
|
volumes:
|
|
mc-data:
|