Initial commit: Minecraft Java & Bedrock crossplay server setup
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
# 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:
|
||||
Reference in New Issue
Block a user