From 8049bd5b8038337efb691989a1cf775dbcb56b1a Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Sun, 21 Mar 2021 15:35:12 -0500 Subject: [PATCH] docs: Lots of cleanup about /data path and management of mods and plugins related to that --- README.md | 367 +++++++++++++++------------------ docs/level-vs-world.drawio.png | Bin 0 -> 34180 bytes 2 files changed, 168 insertions(+), 199 deletions(-) create mode 100644 docs/level-vs-world.drawio.png diff --git a/README.md b/README.md index 0353f811..9a3ebecf 100644 --- a/README.md +++ b/README.md @@ -109,16 +109,23 @@ such as: docker run -d -it -v /etc/timezone:/etc/timezone:ro -p 25565:25565 --name mc itzg/minecraft-server -## Attaching data directory to host filesystem +## Data Directory -In order to readily access the Minecraft data, use the `-v` argument -to map a directory on your host machine to the container's `/data` directory, such as: +Everything the container manages is located under the **container's** `/data` path, as shown here: - docker run -d -v /path/on/host:/data ... +![](docs/level-vs-world.drawio.png) -When attached in this way you can stop the server, edit the configuration under your attached `/path/on/host` and start the server again with `docker start CONTAINER_ID` to pick up the new configuration. +> NOTE: The container path `/data` is pre-declared as a volume, so if you do nothing then it will be allocated as an anonymous volume. As such, it is subject to removal when the container is removed. -As example, using Docker compose, create the following `docker-compose.yml` in its own directory and the container will automatically create/attach the relative directory `data` to the container: +### Attaching data directory to host filesystem + +In most cases the easier way to persist and work with the minecraft data files is to use the `-v` argument to map a directory on your host machine to the container's `/data` directory, such as the following where `/home/user/minecraft-data` would be a directory of your choosing on your host machine: + + docker run -d -v /home/user/minecraft-data:/data ... + +When attached in this way you can stop the server, edit the configuration under your attached directory and start the server again to pick up the new configuration. + +With Docker Compose, setting up a host attached directory is even easier since relative paths can be configured. For example, with the following `docker-compose.yml` Docker will automatically create/attach the relative directory `minecraft-data` to the container. ```yaml version: "3" @@ -131,8 +138,8 @@ services: environment: EULA: "TRUE" volumes: - # attach the relative directory 'data' to the container's /data path - - ./data:/data + # attach a directory relative to the directory containing this compose file + - ./minecraft-data:/data ``` ## Versions @@ -207,46 +214,6 @@ healthy Some orchestration systems, such as Portainer, don't allow for disabling the default `HEALTHCHECK` declared by this image. In those cases you can approximate the disabling of healthchecks by setting the environment variable `DISABLE_HEALTHCHECK` to `true`. -## Autopause - -### Description - -There are various bug reports on [Mojang](https://bugs.mojang.com) about high CPU usage of servers with newer versions, even with few or no clients connected (e.g. [this one](https://bugs.mojang.com/browse/MC-149018), in fact the functionality is based on [this comment in the thread](https://bugs.mojang.com/browse/MC-149018?focusedCommentId=593606&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-593606)). - -An autopause functionality has been added to this image to monitor whether clients are connected to the server. If for a specified time no client is connected, the Java process is stopped. When knocking on the server port (e.g. by the ingame Multiplayer server overview), the process is resumed. The experience for the client does not change. - -Of course, even loaded chunks are not ticked when the process is stopped. - -**You must greatly increase or disable max-tick-time watchdog functionality.** From the server's point of view, the pausing causes a single tick to take as long as the process is stopped, so the server watchdog might intervene after the process is continued, possibly forcing a container restart. To prevent this, ensure that the `max-tick-time` in the `server.properties` file is set to a very large value or -1 to disable it entirely, which is highly recommended. That can be set with `MAX_TICK_TIME` as described in [the section below](#max-tick-time). - -> **NOTE:** Non-vanilla versions might have their own configuration file, you might have to disable their watchdogs separately (e.g. PAPER Servers). - -On startup the `server.properties` file is checked and, if applicable, a warning is printed to the terminal. When the server is created (no data available in the persistent directory), the properties file is created with the Watchdog disabled. - -The utility used to wake the server (`knock(d)`) works at network interface level. So the correct interface has to be set using the `AUTOPAUSE_KNOCK_INTERFACE` variable when using non-default networking environments (e.g. host-networking, Portainer oder NAS solutions). See the description of the variable below. - -A starting, example compose file has been provided in [examples/docker-compose-autopause.yml](examples/docker-compose-autopause.yml). - -### Enabling Autopause - -Enable the Autopause functionality by setting: - -``` --e ENABLE_AUTOPAUSE=TRUE -``` - -The following environment variables define the behaviour of auto-pausing: -* `AUTOPAUSE_TIMEOUT_EST`, default `3600` (seconds) -describes the time between the last client disconnect and the pausing of the process (read as timeout established) -* `AUTOPAUSE_TIMEOUT_INIT`, default `600` (seconds) -describes the time between server start and the pausing of the process, when no client connects inbetween (read as timeout initialized) -* `AUTOPAUSE_TIMEOUT_KN`, default `120` (seconds) -describes the time between knocking of the port (e.g. by the main menu ping) and the pausing of the process, when no client connects inbetween (read as timeout knocked) -* `AUTOPAUSE_PERIOD`, default `10` (seconds) -describes period of the daemonized state machine, that handles the pausing of the process (resuming is done independently) -* `AUTOPAUSE_KNOCK_INTERFACE`, default `eth0` -
Describes the interface passed to the `knockd` daemon. If the default interface does not work, run the `ifconfig` command inside the container and derive the interface receiving the incoming connection from its output. The passed interface must exist inside the container. Using the loopback interface (`lo`) does likely not yield the desired results. - ## Deployment Templates and Examples ### Helm Charts @@ -287,163 +254,23 @@ the URL with `FORGE_INSTALLER_URL`, such as: In both of the cases above, there is no need for the `VERSION` or `FORGEVERSION` variables. -In order to add mods, you have two options. +### Managing mods -### Using the /data volume +In order to manage mods, you have two options: -This is the easiest way if you are using a persistent `/data` mount. +1. [Attach a host directory to the /data path](#attaching-data-directory-to-host-filesystem) and manage the contents of the `mods` subdirectory -To do this, you will need to attach the container's `/data` directory -(see "Attaching data directory to host filesystem”). -Then, you can add mods to the `/path/on/host/mods` folder you chose. From the example above, -the `/path/on/host` folder contents look like: +2. Using a mods-mount -``` -/path/on/host -├── mods -│   └── ... INSTALL MODS HERE ... -├── config -│   └── ... CONFIGURE MODS HERE ... -├── ops.json -├── server.properties -├── whitelist.json -├── worlds -│   └── ... PLACE MAPS IN THEIR OWN FOLDERS HERE ... -└── ... -``` +If the container paths `/mods` and/or `/config` exist, such as by attaching a docker volume or host path, then any files in either of these directories will be copied over to the respective `/data` subdirectory before starting Minecraft. -Providing a presistent `/data` mount is a good idea, both to persist the game world and to allow for the manual configuration which is sometimes needed. +If you want old mods to be removed as the `/mods` content is updated, then add `-e REMOVE_OLD_MODS=TRUE`. You can fine tune the removal process by specifying the `REMOVE_OLD_MODS_INCLUDE` and `REMOVE_OLD_MODS_EXCLUDE` variables. By default, everything will be removed. You can also specify the `REMOVE_OLD_MODS_DEPTH` (default is 16) variable to only delete files up to a certain level. -For instance, imagine a scenario when the initial launch has completed, but you now want to change the worldmap for your server. +For example: `-e REMOVE_OLD_MODS=TRUE -e REMOVE_OLD_MODS_INCLUDE="*.jar" -e REMOVE_OLD_MODS_DEPTH=1` will remove all old jar files that are directly inside the `plugins/` or `mods/` directory. -Assuming you have a shared directory to your container, you can then (after first launch) drag and drop your premade maps or worlds into the `\worlds\` directory. **Note:** each world should be placed in its own folder under the `\worlds\` directory. +You can specify the destination of the files that are copied from `/config` by setting the `COPY_CONFIG_DEST` variable, where the default is `/data/config`. For example, `-v ./config:/config -e COPY_CONFIG_DEST=/data` will allow you to copy over files like `bukkit.yml` and so on directly into the server directory. -Once your maps are in the proper path, you can then specify which map the server uses by changing the `level-name` value in `server.properties` to match the name of your map. - -If you add mods or make changes to `server.properties` while the container is running, you'll need to restart it to pick those -up: - - docker stop mc - docker start mc - -### Using separate mounts - -This is the easiest way if you are using an ephemeral `/data` filesystem, -or downloading a world with the `WORLD` option. - -There are two additional volumes that can be mounted; `/mods` and `/config`. -Any files in either of these filesystems will be copied over to the main -`/data` filesystem before starting Minecraft. If you want old mods to be removed as the `/mods` content is updated, then add `-e REMOVE_OLD_MODS=TRUE`. If you are running a `BUKKIT` distribution this will affect all files inside the `plugins/` directory. You can fine tune the removal process by specifing the `REMOVE_OLD_MODS_INCLUDE` and `REMOVE_OLD_MODS_EXCLUDE` variables. By default everything will be removed. You can also specify the `REMOVE_OLD_MODS_DEPTH` (default 16) variable to only delete files up to a certain level. - -> For example: `-e REMOVE_OLD_MODS=TRUE -e REMOVE_OLD_MODS_INCLUDE="*.jar" -e REMOVE_OLD_MODS_DEPTH=1` will remove all old jar files that are directly inside the `plugins/` or `mods/` directory. - -This works well if you want to have a common set of modules in a separate -location, but still have multiple worlds with different server requirements -in either persistent volumes or a downloadable archive. - -You can specify the destination of the configs that are located inside the `/config` mount by setting the `COPY_CONFIG_DEST` variable. The configs are copied recursivly to the `/data/config` directory by default. If a file was updated directly inside the `/data/*` directoy and is newer than the file in the `/config/*` mount it will not be overriden. - -> For example: `-v ./config:/config -e COPY_CONFIG_DEST=/data` will allow you to copy over your `bukkit.yml` and so on directly into the server directory. - -### Replacing variables inside configs - -Sometimes you have mods or plugins that require configuration information that is only available at runtime. -For example if you need to configure a plugin to connect to a database, -you don't want to include this information in your Git repository or Docker image. -Or maybe you have some runtime information like the server name that needs to be set -in your config files after the container starts. - -For those cases there is the option to replace defined variables inside your configs -with environment variables defined at container runtime. - -If you set the enviroment variable `REPLACE_ENV_VARIABLES` to `TRUE` the startup script -will go thru all files inside your `/data` volume and replace variables that match your -defined environment variables. Variables that you want to replace need to be wrapped -inside `${YOUR_VARIABLE}` curly brackets and prefixed with a dollar sign. This is the regular -syntax for enviromment variables inside strings or config files. - -Optionally you can also define a prefix to only match predefined environment variables. - -`ENV_VARIABLE_PREFIX="CFG_"` <-- this is the default prefix - -If you want use file for value (like when use secrets) you can add suffix `_FILE` to your variable name (in run command). - -There are some limitations to what characters you can use. - -| Type | Allowed Characters | -| ----- | ------------------- | -| Name | `0-9a-zA-Z_-` | -| Value | `0-9a-zA-Z_-:/=?.+` | - -Variables will be replaced in files with the following extensions: -`.yml`, `.yaml`, `.txt`, `.cfg`, `.conf`, `.properties`. - -Specific files can be excluded by listing their name (without path) in the variable `REPLACE_ENV_VARIABLES_EXCLUDES`. - -Paths can be excluded by listing them in the variable `REPLACE_ENV_VARIABLES_EXCLUDE_PATHS`. Path -excludes are recursive. Here is an example: -``` -REPLACE_ENV_VARIABLES_EXCLUDE_PATHS="/data/plugins/Essentials/userdata /data/plugins/MyPlugin" -``` - -Here is a full example where we want to replace values inside a `database.yml`. - -```yml - ---- -database: - host: ${CFG_DB_HOST} - name: ${CFG_DB_NAME} - password: ${CFG_DB_PASSWORD} -``` - -This is how your `docker-compose.yml` file could look like: - -```yml -version: "3" -# Other docker-compose examples in /examples - -services: - minecraft: - image: itzg/minecraft-server - ports: - - "25565:25565" - volumes: - - "mc:/data" - environment: - EULA: "TRUE" - ENABLE_RCON: "true" - RCON_PASSWORD: "testing" - RCON_PORT: 28016 - # enable env variable replacement - REPLACE_ENV_VARIABLES: "TRUE" - # define an optional prefix for your env variables you want to replace - ENV_VARIABLE_PREFIX: "CFG_" - # and here are the actual variables - CFG_DB_HOST: "http://localhost:3306" - CFG_DB_NAME: "minecraft" - CFG_DB_PASSWORD_FILE: "/run/secrets/db_password" - restart: always - rcon: - image: itzg/rcon - ports: - - "4326:4326" - - "4327:4327" - volumes: - - "rcon:/opt/rcon-web-admin/db" - -volumes: - mc: - rcon: - -secrets: - db_password: - file: ./db_password -``` - -The content of `db_password`: - - ug23u3bg39o-ogADSs +> NOTE: If a file was updated in the destination path and is newer than the source file from `/config`, then it will not be overwritten. ## Running a Bukkit/Spigot server @@ -460,7 +287,7 @@ If you are hosting your own copy of Bukkit/Spigot you can override the download You can build spigot from source by adding `-e BUILD_FROM_SOURCE=true` -If you have attached a host directory to the `/data` volume, then you can install plugins within the `plugins` subdirectory. You can also [attach a `/plugins` volume](#deploying-plugins-from-attached-volume). If you add plugins while the container is running, you'll need to restart it to pick those up. +Plugins can either be managed within the `plugins` subdirectory of the [data directory](#data-directory) or you can also [attach a `/plugins` volume](#deploying-plugins-from-attached-volume). If you add plugins while the container is running, you'll need to restart it to pick those up. [You can also auto-download plugins using `SPIGET_RESOURCES`.](#auto-downloading-spigotmcbukkitpapermc-plugins) @@ -705,7 +532,7 @@ in either persistent volumes or a downloadable archive. ## Deploying plugins from attached volume -There is one additional volume that can be mounted; `/plugins`. Any files in this filesystem will be copied over to the main `/data/plugins` filesystem before starting Minecraft. Set `PLUGINS_SYNC_UPDATE=false` if you want files from `/plugins` to take precedence over newer files in `/data/plugins`. +If the `/plugins` directory exists in the container, such as from an attached volume, any files in this directory will be copied over to `/data/plugins` before starting Minecraft. Set `PLUGINS_SYNC_UPDATE=false` if you want files from `/plugins` to take precedence over newer files in `/data/plugins`. This works well if you want to have a common set of plugins in a separate location, but still have multiple worlds with different server requirements in either persistent volumes or a downloadable archive. @@ -713,6 +540,8 @@ This works well if you want to have a common set of plugins in a separate locati The `SPIGET_RESOURCES` variable can be set with a comma-separated list of SpigotMC resource IDs to automatically download [SpigotMC resources/plugins](https://www.spigotmc.org/resources/) using [the spiget API](https://spiget.org/). Resources that are zip files will be expanded into the plugins directory and resources that are simply jar files will be moved there. +> NOTE: the variable is purposely spelled SPIG**E**T with an "E" + The **resource ID** can be located from the numerical part of the URL after the shortname and a dot. For example, the ID is **9089** from https://www.spigotmc.org/resources/essentialsx.9089/ @@ -722,6 +551,106 @@ For example, the following will auto-download the [EssentialsX](https://www.spig -e SPIGET_RESOURCES=9089,34315 +## Replacing variables inside configs + +Sometimes you have mods or plugins that require configuration information that is only available at runtime. +For example if you need to configure a plugin to connect to a database, +you don't want to include this information in your Git repository or Docker image. +Or maybe you have some runtime information like the server name that needs to be set +in your config files after the container starts. + +For those cases there is the option to replace defined variables inside your configs +with environment variables defined at container runtime. + +If you set the enviroment variable `REPLACE_ENV_VARIABLES` to `TRUE` the startup script +will go thru all files inside your `/data` volume and replace variables that match your +defined environment variables. Variables that you want to replace need to be wrapped +inside `${YOUR_VARIABLE}` curly brackets and prefixed with a dollar sign. This is the regular +syntax for enviromment variables inside strings or config files. + +Optionally you can also define a prefix to only match predefined environment variables. + +`ENV_VARIABLE_PREFIX="CFG_"` <-- this is the default prefix + +If you want use file for value (like when use secrets) you can add suffix `_FILE` to your variable name (in run command). + +There are some limitations to what characters you can use. + +| Type | Allowed Characters | +| ----- | ------------------- | +| Name | `0-9a-zA-Z_-` | +| Value | `0-9a-zA-Z_-:/=?.+` | + +Variables will be replaced in files with the following extensions: +`.yml`, `.yaml`, `.txt`, `.cfg`, `.conf`, `.properties`. + +Specific files can be excluded by listing their name (without path) in the variable `REPLACE_ENV_VARIABLES_EXCLUDES`. + +Paths can be excluded by listing them in the variable `REPLACE_ENV_VARIABLES_EXCLUDE_PATHS`. Path +excludes are recursive. Here is an example: +``` +REPLACE_ENV_VARIABLES_EXCLUDE_PATHS="/data/plugins/Essentials/userdata /data/plugins/MyPlugin" +``` + +Here is a full example where we want to replace values inside a `database.yml`. + +```yml + +--- +database: + host: ${CFG_DB_HOST} + name: ${CFG_DB_NAME} + password: ${CFG_DB_PASSWORD} +``` + +This is how your `docker-compose.yml` file could look like: + +```yml +version: "3" +# Other docker-compose examples in /examples + +services: + minecraft: + image: itzg/minecraft-server + ports: + - "25565:25565" + volumes: + - "mc:/data" + environment: + EULA: "TRUE" + ENABLE_RCON: "true" + RCON_PASSWORD: "testing" + RCON_PORT: 28016 + # enable env variable replacement + REPLACE_ENV_VARIABLES: "TRUE" + # define an optional prefix for your env variables you want to replace + ENV_VARIABLE_PREFIX: "CFG_" + # and here are the actual variables + CFG_DB_HOST: "http://localhost:3306" + CFG_DB_NAME: "minecraft" + CFG_DB_PASSWORD_FILE: "/run/secrets/db_password" + restart: always + rcon: + image: itzg/rcon + ports: + - "4326:4326" + - "4327:4327" + volumes: + - "rcon:/opt/rcon-web-admin/db" + +volumes: + mc: + rcon: + +secrets: + db_password: + file: ./db_password +``` + +The content of `db_password`: + + ug23u3bg39o-ogADSs + ## Running with a custom server JAR If you would like to run a custom server JAR, set `-e TYPE=CUSTOM` and pass the custom server @@ -1215,6 +1144,46 @@ disable that by passing `-e GUI=FALSE`. When the container is signalled to stop, the Minecraft process wrapper will attempt to send a "stop" command via RCON or console and waits for the process to gracefully finish. By defaul it waits 60 seconds, but that duration can be configured by setting the environment variable `STOP_DURATION` to the number of seconds. +## Autopause + +### Description + +There are various bug reports on [Mojang](https://bugs.mojang.com) about high CPU usage of servers with newer versions, even with few or no clients connected (e.g. [this one](https://bugs.mojang.com/browse/MC-149018), in fact the functionality is based on [this comment in the thread](https://bugs.mojang.com/browse/MC-149018?focusedCommentId=593606&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-593606)). + +An autopause functionality has been added to this image to monitor whether clients are connected to the server. If for a specified time no client is connected, the Java process is stopped. When knocking on the server port (e.g. by the ingame Multiplayer server overview), the process is resumed. The experience for the client does not change. + +Of course, even loaded chunks are not ticked when the process is stopped. + +**You must greatly increase or disable max-tick-time watchdog functionality.** From the server's point of view, the pausing causes a single tick to take as long as the process is stopped, so the server watchdog might intervene after the process is continued, possibly forcing a container restart. To prevent this, ensure that the `max-tick-time` in the `server.properties` file is set to a very large value or -1 to disable it entirely, which is highly recommended. That can be set with `MAX_TICK_TIME` as described in [the section below](#max-tick-time). + +> **NOTE:** Non-vanilla versions might have their own configuration file, you might have to disable their watchdogs separately (e.g. PAPER Servers). + +On startup the `server.properties` file is checked and, if applicable, a warning is printed to the terminal. When the server is created (no data available in the persistent directory), the properties file is created with the Watchdog disabled. + +The utility used to wake the server (`knock(d)`) works at network interface level. So the correct interface has to be set using the `AUTOPAUSE_KNOCK_INTERFACE` variable when using non-default networking environments (e.g. host-networking, Portainer oder NAS solutions). See the description of the variable below. + +A starting, example compose file has been provided in [examples/docker-compose-autopause.yml](examples/docker-compose-autopause.yml). + +### Enabling Autopause + +Enable the Autopause functionality by setting: + +``` +-e ENABLE_AUTOPAUSE=TRUE +``` + +The following environment variables define the behaviour of auto-pausing: +* `AUTOPAUSE_TIMEOUT_EST`, default `3600` (seconds) + describes the time between the last client disconnect and the pausing of the process (read as timeout established) +* `AUTOPAUSE_TIMEOUT_INIT`, default `600` (seconds) + describes the time between server start and the pausing of the process, when no client connects inbetween (read as timeout initialized) +* `AUTOPAUSE_TIMEOUT_KN`, default `120` (seconds) + describes the time between knocking of the port (e.g. by the main menu ping) and the pausing of the process, when no client connects inbetween (read as timeout knocked) +* `AUTOPAUSE_PERIOD`, default `10` (seconds) + describes period of the daemonized state machine, that handles the pausing of the process (resuming is done independently) +* `AUTOPAUSE_KNOCK_INTERFACE`, default `eth0` +
Describes the interface passed to the `knockd` daemon. If the default interface does not work, run the `ifconfig` command inside the container and derive the interface receiving the incoming connection from its output. The passed interface must exist inside the container. Using the loopback interface (`lo`) does likely not yield the desired results. + ## Running on RaspberryPi To run this image on a RaspberryPi 3 B+, 4, or newer, use any of the image tags [list in the Java version section](#running-minecraft-server-on-different-java-version) that specify `armv7` for the architecture, such as diff --git a/docs/level-vs-world.drawio.png b/docs/level-vs-world.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..8f4337e3d63646357c1b93c97e7dd385cad450e8 GIT binary patch literal 34180 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 U-i)$4VSyhdxSD*4?9(^@3(7-PW&i*H literal 0 HcmV?d00001