A continuación se inicia un servidor dedicado de Bedrock que ejecuta una versión predeterminada y exponiendo el puerto UDP predeterminado:
docker run -d -it -e EULA=TRUE -p 19132:19132/udp -v mc-bedrock-data:/data itzg/minecraft-bedrock-server
Nota : Si planea ejecutar un servidor durante más tiempo, se recomienda altamente utilizando una capa de administración como Docker Compose o Kubernetes para permitir la reconfiguración incremental y las actualizaciones de imágenes.
Con la variable VERSION
establecida en "Último", que es el valor predeterminado, entonces el servidor Bedrock se puede actualizar reiniciando el contenedor. En cada inicio, el contenedor verifica la última versión y actualizaciones, si es necesario.
La última versión de vista previa se puede solicitar configurando VERSION
en "Vista previa".
Para Minecraft Java Edition necesitará usar esta imagen en su lugar:
ITZG/Minecraft-server
EULA
(sin valor predeterminado): debe establecerse en TRUE
para aceptar el acuerdo de licencia de usuario final de MinecraftVERSION
(predeterminada es LATEST
): se puede configurar en una versión de servidor específica o se pueden usar los siguientes valores especiales:LATEST
: determina la última versión (no previa) y se puede usar para actualizar automáticamente en el inicio del contenedorPREVIEW
: determina la última versión de vista previa y se actualizará automáticamentePREVIEW
en "verdadero"UID
(predeterminado derivado de /data
): se puede configurar en una ID de usuario específica para ejecutar el proceso de servidor BedrockGID
(predeterminado derivado de /data
): se puede configurar en una ID de grupo específica para ejecutar el proceso de servidor BedrockTZ
(sin valor predeterminado): se puede configurar en una zona horaria específica como America/New_York
. Esto establecerá la zona horaria para el contenedor Docker y, por lo tanto, sus registros. Además, si desea sincronizar el tiempo con el host, puede montar el archivo /etc/localtime
desde el host al contenedor como /etc/localtime:/etc/localtime:ro
.PACKAGE_BACKUP_KEEP
( 2
): cuántas copias de seguridad de paquetes para mantener Las siguientes variables de entorno establecerán la propiedad equivalente en server.properties
, donde cada una se describe aquí. Por lo general, cada propiedad está configurada en su lugar por el equivalente superior_snake_case.
SERVER_NAME
GAMEMODE
FORCE_GAMEMODE
DIFFICULTY
ALLOW_CHEATS
MAX_PLAYERS
ONLINE_MODE
WHITE_LIST
ALLOW_LIST
SERVER_PORT
SERVER_PORT_V6
ENABLE_LAN_VISIBILITY
VIEW_DISTANCE
TICK_DISTANCE
PLAYER_IDLE_TIMEOUT
MAX_THREADS
LEVEL_NAME
LEVEL_SEED
LEVEL_TYPE
DEFAULT_PLAYER_PERMISSION_LEVEL
TEXTUREPACK_REQUIRED
CONTENT_LOG_FILE_ENABLED
CONTENT_LOG_LEVEL
CONTENT_LOG_CONSOLE_OUTPUT_ENABLED
COMPRESSION_THRESHOLD
COMPRESSION_ALGORITHM
SERVER_AUTHORITATIVE_MOVEMENT
PLAYER_POSITION_ACCEPTANCE_THRESHOLD
PLAYER_MOVEMENT_SCORE_THRESHOLD
PLAYER_MOVEMENT_ACTION_DIRECTION_THRESHOLD
PLAYER_MOVEMENT_DISTANCE_THRESHOLD
PLAYER_MOVEMENT_DURATION_THRESHOLD_IN_MS
CORRECT_PLAYER_MOVEMENT
SERVER_AUTHORITATIVE_BLOCK_BREAKING
SERVER_AUTHORITATIVE_BLOCK_BREAKING_PICK_RANGE_SCALAR
CHAT_RESTRICTION
DISABLE_PLAYER_INTERACTION
CLIENT_SIDE_CHUNK_GENERATION_ENABLED
BLOCK_NETWORK_IDS_ARE_HASHES
DISABLE_PERSONA
DISABLE_CUSTOM_SKINS
SERVER_BUILD_RADIUS_RATIO
ALLOW_OUTBOUND_SCRIPT_DEBUGGING
ALLOW_INBOUND_SCRIPT_DEBUGGING
FORCE_INBOUND_DEBUG_PORT
SCRIPT_DEBUGGER_AUTO_ATTACH
SCRIPT_DEBUGGER_AUTO_ATTACH_CONNECT_ADDRESS
SCRIPT_WATCHDOG_ENABLE
SCRIPT_WATCHDOG_ENABLE_EXCEPTION_HANDLING
SCRIPT_WATCHDOG_ENABLE_SHUTDOWN
SCRIPT_WATCHDOG_HANG_EXCEPTION
SCRIPT_WATCHDOG_HANG_THRESHOLD
SCRIPT_WATCHDOG_SPIKE_THRESHOLD
SCRIPT_WATCHDOG_SLOW_THRESHOLD
SCRIPT_WATCHDOG_MEMORY_WARNING
SCRIPT_WATCHDOG_MEMORY_LIMIT
OP_PERMISSION_LEVEL
EMIT_SERVER_TELEMETRY
MSA_GAMERTAGS_ONLY
ITEM_TRANSACTION_LOGGING_ENABLED
Por ejemplo, para configurar un servidor plano y creativo en lugar del uso predeterminado:
docker run -d -it --name bds-flat-creative
-e EULA=TRUE -e LEVEL_TYPE=flat -e GAMEMODE=creative
-p 19132:19132/udp itzg/minecraft-bedrock-server
SERVER_PORT
. El puerto IPv6 no está expuesto de forma predeterminada. Tenga en cuenta que debe agregar /udp
al exponer el puerto, como -p 19132:19132/udp
y tanto IPv4 como IPv6 deben estar habilitados en su máquina host. /data
: la ubicación donde se amplía y se ejecuta el servidor descargado. También contiene el server.properties
de archivos de propiedades de configuración. Puede crear un named volume
y usarlo como:
docker volume create mc-volume
docker run -d -it --name mc-server -e EULA=TRUE -p 19132:19132/udp -v mc-volume:/data itzg/minecraft-bedrock-server
Si está utilizando un volumen con nombre y desea que el proceso de base se ejecute como usuario que no es de raíz, entonces deberá preparar el volumen y chown
al usuario deseado.
Por ejemplo, si desea que el servidor Bedrock se ejecute con ID de usuario 1000 y ID de grupo 1000, cree y ofrezca el volumen llamado "Bedrock" usando:
docker run --rm -v bedrock:/data alpine chown 1000:1000 /data
Si se usa docker run
, simplemente haga referencia a ese volumen "Bedrock" en el argumento -v
. Si usa un archivo de composición, declare el volumen como externo utilizando este tipo de declaración:
volumes :
bedrock :
external :
name : bedrock
Al ejecutar el contenedor en su LAN, puede encontrar y conectarse al servidor dedicado en la parte "Juegos LAN" de la pestaña "Amigos", como:
El servidor dedicado de Bedrock requiere que se definan los permisos con Xuids. Hay varias herramientas para buscarlas en línea y también se imprimen al registro cuando un jugador se une. Hay 3 niveles de permisos y 3 opciones para configurar cada grupo:
OPS
se usa para definir operadores en el servidor. -e OPS= " 1234567890,0987654321 "
MEMBERS
se usan para definir los miembros en el servidor. -e MEMBERS= " 1234567890,0987654321 "
VISITORS
se utilizan para definir visitantes en el servidor. -e VISITORS= " 1234567890,0987654321 "
Hay dos formas de manejar una lista blanca:
El primero es establecer la variable de entorno de ALLOW_LIST
en verdadero y mapear en un archivo Liftlist.json (anteriormente conocido como "Whitelist.json") que está personalizado en el contenedor.
El otro es establecer la variable de entorno ALLOW_LIST_USERS
en una lista separada por comas de nombres de usuario de la etiqueta de jugadores y sus Xuids correspondientes. Cada nombre de usuario debe ser seguido por su Xuid, separado por un colon. El servidor usará estos detalles para que coincida con el reproductor.
Hay varias herramientas para mirar Xuids en línea y también se imprimen al registro cuando un reproductor se une al servidor.
-e ALLOW_LIST_USERS= " player1:1234567890,player2:0987654321 "
También conocido como paquetes de comportamiento o recursos, para agregar modificaciones a su servidor, puede seguir estos pasos, probado con OPS (un reproductor de sueño) y BedRocktweaks
C:UsersUSERAppDataLocalPackagesMicrosoft.MinecraftUWP_*LocalStategamescom.mojang
.Si desea instalarlos sin usar un cliente, debería poder descifrar las modificaciones directamente en el volumen del servidor, .mcaddon debe entrar en comportamiento_packs y .mcpack en recursos_packs. Ambos .mcaddon y .mcpack en realidad se renombraron los archivos .zip.
worlds/$level-name/world_behavior_packs.json
, deberá agregar una entrada para cada mod como en el manifest.json anterior, solo necesitamos el uuid ahora llamado pack_id y la versión reemplazar puntos con con comas y citas dobles con [].También puede crear un
worlds/$level-name/world_resource_packs.json
pero he visto que poner paquetes de recursos y comportamientos dentro del mismo json funciona bien
[
{
"pack_id" : "5f51f7b7-85dc-44da-a3ef-a48d8414e4d5",
"version" : [ 3, 0, 0 ]
}
]
Si desea forzar el paquete de recursos en todos los clientes, hay una opción
texturepack-required=false
enserver.properties
que deben cambiarse atrue
. Los paquetes de recursos se pueden eliminar entrando en Configuración> Almacenamiento> Datos en caché, luego seleccionando el paquete y haciendo clic en el bote de basura.
Para obtener más información, Foxynotail realizó un video que explicó lo mismo en un servidor que se ejecuta en Windows.
Para obtener más información sobre la gestión de servidores dedicados en el rock en general, consulte esta publicación de Reddit.
Esta imagen viene inclinada con un script llamado send-command
que enviará un comando y argumento de roca madre a la consola de servidor Bedrock. La salida del comando solo será visible en los registros de contenedores.
Por ejemplo:
docker exec CONTAINER_NAME_OR_ID send-command gamerule dofiretick false
Alternativamente, con Stdin y Tty habilitados (como usar -it
), adjunte a la consola del contenedor por su nombre o identificación usando:
docker attach CONTAINER_NAME_OR_ID
Mientras está adjunto, puede ejecutar cualquier comando del lado del servidor, como opinar a su reproductor para que sea administrador:
gamerule dofiretick false
Cuando termine, separe la consola del servidor con CTRL-P, CTRL-Q
El directorio de ejemplos contiene un archivo de composición de Docker de ejemplo que declara:
/data
services :
bds :
image : itzg/minecraft-bedrock-server
environment :
EULA : " TRUE "
ports :
- " 19132:19132/udp "
volumes :
- ./data:/data
stdin_open : true
tty : true
Inicie el servidor y ejecute en segundo plano usando:
docker compose up -d
Puede seguir los registros en cualquier momento usando:
docker compose logs -f
El directorio de ejemplos contiene un archivo de manifiesto de Kubernetes que declara:
La implementación de POD incluye algunos ejemplos de configuración de las propiedades del servidor a través de variables de entorno:
env :
- name : EULA
value : " TRUE "
- name : GAMEMODE
value : survival
- name : DIFFICULTY
value : normal
El archivo es implementable como está en la mayoría de los clústeres, pero se ha confirmado en Docker para el motor de escritorio y Google Kubernetes:
kubectl apply -f examples/kubernetes.yml
Puede seguir los registros de la implementación utilizando:
kubectl logs -f deployment/bds
@ThetinkerDad proporciona un excelente tutorial sobre cómo alojar múltiples instancias en un solo puerto (19132) para que se pueda descubrir: https://www.youtube.com/watch?v=DS0_ESZJBFS
Al intentar construir esta imagen de Docker, asegúrese de que todos los archivos
.sh
tengan una secuencia de final de línea deLF
noCLRF
o la compilación fallará.