Compare commits

...

24 Commits

Author SHA1 Message Date
Geoff Bourne
1ccd6a0954 docs: updated to new name of itzg/mc-proxy (#2917) 2024-06-20 08:59:50 -05:00
Emmanuel Ferdman
c3614466e7 Update compose file reference (#2915) 2024-06-19 08:16:29 -05:00
dependabot[bot]
3349df764e build(deps): bump the updates group with 2 updates (#2910) 2024-06-18 15:14:01 -05:00
dependabot[bot]
d3725c3388 build(deps): bump mkdocs-material from 9.5.26 to 9.5.27 in /docs in the patches group (#2909) 2024-06-18 07:48:23 -05:00
Geoff Bourne
63e8d33f6c Add a section about class file version 65.0 message (#2906) 2024-06-15 17:36:06 -05:00
Geoff Bourne
a8b7ad533c Added hairpin routing diagram (#2903) 2024-06-15 14:13:30 -05:00
Geoff Bourne
fe5f066a0b paper: consider release channel when selecting version/build (#2902) 2024-06-15 14:05:14 -05:00
Geoff Bourne
47c2b60cba build: add java21-jdk variant (#2900) 2024-06-14 13:58:29 -05:00
Geoff Bourne
db88d167fe Don't log RCON password when DEBUG enabled (#2898) 2024-06-14 07:51:01 -05:00
wirytiox
774d3bc717 Add true-darkness to CF global excludes (#2899) 2024-06-13 17:41:49 -05:00
Geoff Bourne
c365a6cc5a Fixed typo in CF files dependencies section title (#2896) 2024-06-13 10:29:27 -05:00
Kian Kasad
cafb80eec3 Accept yes/no for boolean environment variables (#2893) 2024-06-13 07:46:16 -05:00
Geoff Bourne
bc789202a1 Disable default configs download until issues resolved (#2895) 2024-06-13 07:45:48 -05:00
Geoff Bourne
2e9be596f7 Fixed issue of unbound REMOVE_OLD_MODS_EXCLUDE variable when using SPIGET_RESOURCES (#2891) 2024-06-12 16:38:41 -05:00
dependabot[bot]
87afad69b3 build(deps): bump mkdocs-material from 9.5.25 to 9.5.26 in /docs in the patches group (#2886) 2024-06-10 19:43:57 -05:00
Geoff Bourne
fa058a18ad build: upgrade tools to Go 1.22.4 (#2885) 2024-06-09 15:04:13 -05:00
Geoff Bourne
3936d56583 cf: verify mod file hashes and re-download to repair (#2884) 2024-06-08 13:57:57 -05:00
Geoff Bourne
ca8abe3e16 paper: download default configs to allow for patching (#2883) 2024-06-08 12:46:54 -05:00
Geoff Bourne
ed7a6668aa Added note about CurseForge files dependency handling (#2881) 2024-06-08 09:10:25 -05:00
Felipe Paschoal Bergamo
c828985ebe Add SERVER_HOST Environment in mc-monitor command (#2875) 2024-06-05 18:48:35 -05:00
wirytiox
8fd98f0315 Add zume to cf-exclude-include.json (#2874) 2024-06-05 07:47:18 -05:00
Geoff Bourne
708b6ab849 docs: fixed description of BROADCAST_RCON_TO_OPS variable (#2873) 2024-06-04 19:56:37 -05:00
dependabot[bot]
524ac1d0ec build(deps): bump mkdocs-material from 9.5.24 to 9.5.25 in /docs in the patches group (#2871) 2024-06-03 08:28:31 -05:00
dependabot[bot]
2cf4b98d76 build(deps): bump docker/login-action from 3.1.0 to 3.2.0 in the updates group (#2872) 2024-06-03 08:27:19 -05:00
22 changed files with 97 additions and 50 deletions

View File

@@ -21,10 +21,10 @@ jobs:
variant:
- java21-graalvm
- java21
- java21-jdk
- java21-alpine
- java17
- java17-graalvm
- java17-jdk
- java17-alpine
- java8
- java8-graalvm-ce
@@ -42,6 +42,10 @@ jobs:
baseImage: eclipse-temurin:21-jre
platforms: linux/amd64,linux/arm64
mcVersion: latest
- variant: java21-jdk
baseImage: eclipse-temurin:21
platforms: linux/amd64,linux/arm64
mcVersion: latest
- variant: java21-alpine
baseImage: eclipse-temurin:21-jre-alpine
platforms: linux/amd64,linux/arm64
@@ -97,7 +101,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4.1.6
uses: actions/checkout@v4.1.7
with:
# for build-files step
fetch-depth: 0
@@ -138,7 +142,7 @@ jobs:
uses: docker/setup-qemu-action@v3.0.0
- name: Build for test
uses: docker/build-push-action@v5.3.0
uses: docker/build-push-action@v5.4.0
with:
platforms: linux/amd64
tags: ${{ env.IMAGE_TO_TEST }}
@@ -161,14 +165,14 @@ jobs:
tests/test.sh
- name: Login to DockerHub
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.2.0
if: env.HAS_IMAGE_REPO_ACCESS
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GHCR
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.2.0
if: env.HAS_IMAGE_REPO_ACCESS
with:
registry: ghcr.io
@@ -176,7 +180,7 @@ jobs:
password: ${{ github.token }}
- name: Build and push
uses: docker/build-push-action@v5.3.0
uses: docker/build-push-action@v5.4.0
if: github.actor == github.repository_owner
with:
platforms: ${{ matrix.platforms }}

View File

@@ -46,7 +46,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4.1.6
uses: actions/checkout@v4.1.7
with:
# for build-files step
fetch-depth: 0
@@ -55,7 +55,7 @@ jobs:
uses: docker/setup-buildx-action@v3.3.0
- name: Confirm multi-arch build
uses: docker/build-push-action@v5.3.0
uses: docker/build-push-action@v5.4.0
with:
platforms: ${{ matrix.platforms }}
# ensure latest base image is used
@@ -65,7 +65,7 @@ jobs:
cache-from: type=gha,scope=${{ matrix.variant }}
- name: Build for test
uses: docker/build-push-action@v5.3.0
uses: docker/build-push-action@v5.4.0
with:
# Only build single platform since loading multi-arch image into daemon fails with
# "docker exporter does not currently support exporting manifest lists"

View File

@@ -23,31 +23,31 @@ EXPOSE 25565
ARG APPS_REV=1
ARG GITHUB_BASEURL=https://github.com
ARG EASY_ADD_VERSION=0.8.5
ARG EASY_ADD_VERSION=0.8.6
ADD ${GITHUB_BASEURL}/itzg/easy-add/releases/download/${EASY_ADD_VERSION}/easy-add_${TARGETOS}_${TARGETARCH}${TARGETVARIANT} /usr/bin/easy-add
RUN chmod +x /usr/bin/easy-add
ARG RESTIFY_VERSION=1.7.2
ARG RESTIFY_VERSION=1.7.3
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${RESTIFY_VERSION} --var app=restify --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG RCON_CLI_VERSION=1.6.6
ARG RCON_CLI_VERSION=1.6.7
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${RCON_CLI_VERSION} --var app=rcon-cli --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG MC_MONITOR_VERSION=0.12.11
ARG MC_MONITOR_VERSION=0.12.12
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG MC_SERVER_RUNNER_VERSION=1.12.1
ARG MC_SERVER_RUNNER_VERSION=1.12.2
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${MC_SERVER_RUNNER_VERSION} --var app=mc-server-runner --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG MC_HELPER_VERSION=1.38.15
ARG MC_HELPER_VERSION=1.39.0
ARG MC_HELPER_BASE_URL=${GITHUB_BASEURL}/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION}
# used for cache busting local copy of mc-image-helper
ARG MC_HELPER_REV=1

View File

@@ -13,6 +13,6 @@ elif isTrue "${ENABLE_AUTOPAUSE}" && [[ "$( ps -ax -o stat,comm | grep 'java' |
echo "Java process suspended by Autopause function"
exit 0
else
mc-monitor status "${MC_HEALTH_EXTRA_ARGS[@]}" --host localhost --port "${SERVER_PORT:-25565}"
mc-monitor status "${MC_HEALTH_EXTRA_ARGS[@]}" --host "${SERVER_HOST:-localhost}" --port "${SERVER_PORT:-25565}"
exit $?
fi

View File

@@ -55,6 +55,14 @@ To allow time for players to finish what they're doing during a graceful server
The grace period can be increased using [the -t option on docker-compose down](https://docs.docker.com/compose/reference/down/) or set the [stop_grace_period](https://docs.docker.com/compose/compose-file/05-services/#stop_grace_period) in the compose file.
## Configuration Options for Minecraft Server Health Monitoring
The image tags include specific variables to simplify configuration for monitoring the health of a Minecraft server:
- `-e SERVER_HOST=localhost` : This variable sets the host address of the Minecraft server to be monitored. By default, it is set to `localhost`, but you can replace it with the actual hostname or IP address of your Minecraft server.
- `-e SERVER_PORT=25565` : This variable sets the port number on which the Minecraft server is running. By default, Minecraft servers run on port 25565, but if your server is configured to use a different port, you should replace `25565` with the correct port number. This helps the monitoring system to accurately check the health status of the Minecraft server on the specified port.
## OpenJ9 Specific Options
The openj9 image tags include specific variables to simplify configuration:

View File

@@ -6,7 +6,7 @@ Docker image that runs a Minecraft Bedrock server.
Lightweight multiplexer/proxy for Minecraft Java servers. Provided as a stand-alone application and a Docker image.
### [itzg/bungeecord](https://github.com/itzg/docker-bungeecord/)
### [itzg/mc-proxy](https://github.com/itzg/docker-bungeecord/)
Docker image that runs a proxy powered by Bungeecord, Velocity, or Waterfall

View File

@@ -47,3 +47,7 @@ naturalist
aquaculture
naturalist
```
## Dependencies
The files processing can detect if a dependency is missing from the given list, but is not able to resolve the dependencies otherwise since their metadata only gives the mod ID and not the specific file version/ID that is needed.

View File

@@ -117,7 +117,7 @@ https://edge.forgecdn.net/files/2871/647/ToastControl-1.15.2-3.0.1.jar
Blank lines and lines that start with a `#` will be ignored
[This compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-mods-file.yml) shows another example of using this feature.
[This compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/mods-file/docker-compose.yml) shows another example of using this feature.
## Remove old mods/plugins

View File

@@ -1,4 +1,4 @@
mkdocs-material == 9.5.24
mkdocs-material == 9.5.27
mkdocs-autorefs == 1.0.1
mkdocstrings == 0.25.1
mkdocs-literate-nav == 0.6.1

View File

@@ -1,10 +1,20 @@
Enable Paper server mode by adding a `-e TYPE=PAPER` to your command-line.
A [PaperMC server](https://papermc.io/) can be automatically downloaded, upgraded, and run by setting the environment variable TYPE to "PAPER".
By default, the container will run the latest build of [Paper server](https://papermc.io/downloads) but you can also choose to run a specific build with `-e PAPERBUILD=205`.
By default, the container will find and download the latest build for the `VERSION` chosen. If `VERSION` is not specified, then the latest Minecraft version released by PaperMC is selected. Along with a specific `VERSION`, a specific Paper build can be selected by setting the environment variable `PAPER_BUILD`.
docker run -d -v /path/on/host:/data \
-e TYPE=PAPER \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
To allow for the selection of experimental builds, set `PAPER_CHANNEL` to "experimental", otherwise only release/default channel builds are selected.
!!! example
```
docker run ... -e TYPE=PAPER ...
docker run ... -e TYPE=PAPER -e VERSION=1.20.6 ...
docker run ... -e TYPE=PAPER -e VERSION=1.20.6 -e PAPER_BUILD=140 ...
docker run ... -e TYPE=PAPER -e PAPER_CHANNEL=experimental ...
```
If you are hosting your own copy of Paper you can override the download URL with `PAPER_DOWNLOAD_URL=<url>`.

View File

@@ -558,7 +558,7 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
</tr>
<tr>
<td><code>BROADCAST_RCON_TO_OPS</code></td>
<td>Should RCON be enabled</td>
<td>Sets broadcast-rcon-to-ops server property</td>
<td><code>false</code></td>
<td>⬜️</td>
</tr>

View File

@@ -15,10 +15,10 @@ where `<tag>` refers to the first column of this table:
| latest | 21 | Ubuntu | Hotspot | amd64, arm64 |
| stable | 21 | Ubuntu | Hotspot | amd64, arm64 |
| java21 | 21 | Ubuntu | Hotspot | amd64, arm64 |
| java21-jdk | 21 | Ubuntu | Hotspot+JDK | amd64, arm64 |
| java21-alpine | 21 | Alpine | Hotspot | amd64, arm64 |
| java21-graalvm | 21 | Oracle | Oracle GraalVM[^1] | amd64, arm64 |
| java17 | 17 | Ubuntu | Hotspot | amd64, arm64, armv7 |
| java17-jdk | 17 | Ubuntu | Hotspot+JDK | amd64, arm64, armv7 |
| java17-graalvm | 17 | Oracle | Oracle GraalVM[^1] | amd64, arm64 |
| java17-alpine | 17 | Alpine | Hotspot | amd64 (1) |
| java11 | 11 | Ubuntu | Hotspot | amd64, arm64, armv7 |
@@ -80,6 +80,18 @@ The `stable` image tag combines the benefits of `latest` and [release versions](
[This section in the Minecraft wiki](https://minecraft.wiki/w/Tutorials/Update_Java#Why_update?) lists out versions of **vanilla** Minecraft versions and the corresponding Java version that is required.
### Class file version 65.0
If encountering a startup failure similar to the following examples, then ensure that the latest image has been re-pulled to use a Java 21. Alternatively, set the image tag specifically to `itzg/minecraft-server:java21`.
> Exception in thread "ServerMain" java.lang.UnsupportedClassVersionError: org/bukkit/craftbukkit/Main has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0
or
> Error: LinkageError occurred while loading main class net.minecraft.bundler.Main
java.lang.UnsupportedClassVersionError: net/minecraft/bundler/Main has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0
### Forge versions
Forge and its mods sometimes utilize non-public APIs of the JVM and as such are suspceptible to becoming broken with newer Java versions.

View File

@@ -8,7 +8,6 @@ services:
environment:
EULA: "TRUE"
ENABLE_AUTOPAUSE: "TRUE"
OVERRIDE_SERVER_PROPERTIES: "TRUE"
MAX_TICK_TIME: "-1"
# More aggressive settings for demo purposes
AUTOPAUSE_TIMEOUT_INIT: "30"

View File

@@ -1,6 +1,6 @@
services:
proxy:
image: itzg/bungeecord
image: itzg/mc-proxy
environment:
TYPE: WATERFALL
ports:
@@ -10,7 +10,7 @@ services:
- ./waterfall-config:/config
# If you want to use Velocity here is a premade version that supports Velocity
# velocity-proxy:
# image: itzg/bungeecord
# image: itzg/mc-proxy
# environment:
# TYPE: VELOCITY
# ports:

View File

@@ -1,6 +1,5 @@
# NOTE
# This file is named spiget with an "e"
# since it provides an example of the
# This file is purposely named spiget with an "e" since it provides an example of the
# feature https://docker-minecraft-server.readthedocs.io/en/latest/mods-and-plugins/spiget/
# which uses the Spiget API at https://spiget.org/
@@ -13,8 +12,6 @@ services:
EULA: "TRUE"
TYPE: PAPER
SPIGET_RESOURCES: 34315,3836
REMOVE_OLD_MODS: true
volumes:
- data:/data
volumes:
data: {}
- ./data:/data

View File

@@ -17,13 +17,13 @@ rcon_client_exists() {
}
mc_server_listening() {
mc-monitor status --host localhost --port "$SERVER_PORT" --timeout 10s >& /dev/null
mc-monitor status --host "${SERVER_HOST:-localhost}" --port "$SERVER_PORT" --timeout 10s >& /dev/null
}
java_clients_connections() {
local connections
if java_running ; then
if ! connections=$(mc-monitor status --host localhost --port "$SERVER_PORT" --show-player-count); then
if ! connections=$(mc-monitor status --host "${SERVER_HOST:-localhost}" --port "$SERVER_PORT" --show-player-count); then
# consider it a non-zero player count if the ping fails
# otherwise a laggy server with players connected could get paused
connections=1

View File

@@ -1,5 +1,6 @@
{
"globalExcludes": [
"ambientsounds",
"armor-toughness-bar",
"biomeinfo",
@@ -48,7 +49,9 @@
"thaumic-jei",
"tips",
"torohealth-damage-indicators",
"waila-harvestability"
"true-darkness",
"waila-harvestability",
"zume"
],
"modpacks": {
"all-of-fabric-6": {

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -57,6 +57,9 @@ fi
# Setup RCON password
if isTrue "${ENABLE_RCON:-true}"; then
# turn off debug output
set +x
if [[ -v RCON_PASSWORD_FILE ]]; then
if [ ! -e "${RCON_PASSWORD_FILE}" ]; then
log ""
@@ -78,11 +81,12 @@ if isTrue "${ENABLE_RCON:-true}"; then
# For rcon-cli access running via exec, which by default is running as root
echo "password=${RCON_PASSWORD}" > "$HOME/.rcon-cli.env"
echo "password: \"${RCON_PASSWORD}\"" > "$HOME/.rcon-cli.yaml"
isDebugging && set -x
else
rm -f "$HOME/.rcon-cli.env" "$HOME/.rcon-cli.yaml"
fi
##########################################
# Auto-pause/stop

View File

@@ -6,9 +6,11 @@ set -o pipefail
handleDebugMode
: "${PAPER_PROJECT:=paper}"
: "${PAPERBUILD:=}"
: "${PAPER_BUILD:=${PAPERBUILD:-}}"
: "${PAPER_CHANNEL:=default}"
: "${PAPER_DOWNLOAD_URL:=}"
: "${PAPER_CUSTOM_JAR:=}"
: "${PAPER_CONFIG_DEFAULTS_REPO:=https://raw.githubusercontent.com/dayyeeet/minecraft-default-configs/main}"
resultsFile=/data/.paper.env
if [[ $PAPER_CUSTOM_JAR ]]; then
@@ -33,9 +35,10 @@ else
--results-file="$resultsFile"
--project="$PAPER_PROJECT"
--version="$VERSION"
--channel="$PAPER_CHANNEL"
)
if [[ $PAPERBUILD ]]; then
args+=(--build="$PAPERBUILD")
if [[ $PAPER_BUILD ]]; then
args+=(--build="$PAPER_BUILD")
fi
if ! mc-image-helper install-paper "${args[@]}"; then
log "ERROR: failed to download $PAPER_PROJECT"

View File

@@ -8,7 +8,10 @@ handleDebugMode
: "${SPIGET_RESOURCES:=}"
: "${SPIGET_DOWNLOAD_TOLERANCE:=5}" # in minutes
: "${REMOVE_OLD_MODS:=false}"
: "${REMOVE_OLD_MODS_EXCLUDE:=}"
: "${REMOVE_OLD_MODS_INCLUDE:=*.jar,*-version.json}"
: "${REMOVE_OLD_MODS_DEPTH:=1} "
acceptArgs=(--accept application/zip --accept application/java-archive --accept application/octet-stream)
@@ -127,7 +130,7 @@ downloadResourceFromSpiget() {
}
if [[ ${SPIGET_RESOURCES} ]]; then
if isTrue "${REMOVE_OLD_MODS:-false}"; then
if isTrue "${REMOVE_OLD_MODS}"; then
removeOldMods /data/plugins
REMOVE_OLD_MODS=false
fi

View File

@@ -64,7 +64,7 @@ function getFilenameFromUrl() {
function isTrue() {
case "${1,,}" in
true | on | 1)
true | yes | on | 1)
return 0
;;
*)
@@ -75,7 +75,7 @@ function isTrue() {
function isFalse() {
case "${1,,}" in
false | off | 0)
false | no | off | 0)
return 0
;;
*)
@@ -207,13 +207,13 @@ eula=${EULA,,}
function removeOldMods {
if [ -d "$1" ]; then
log "Removing old mods including:${REMOVE_OLD_MODS_INCLUDE} excluding:${REMOVE_OLD_MODS_EXCLUDE}"
log "Removing old mods including='${REMOVE_OLD_MODS_INCLUDE}' excluding='${REMOVE_OLD_MODS_EXCLUDE}' up to depth=${REMOVE_OLD_MODS_DEPTH}"
args=(
--delete
--type file
--min-depth=1 --max-depth "${REMOVE_OLD_MODS_DEPTH:-16}"
--name "${REMOVE_OLD_MODS_INCLUDE:-*}"
--exclude-name "${REMOVE_OLD_MODS_EXCLUDE:-}"
--min-depth=1 --max-depth "${REMOVE_OLD_MODS_DEPTH}"
--name "${REMOVE_OLD_MODS_INCLUDE}"
--exclude-name "${REMOVE_OLD_MODS_EXCLUDE}"
)
if ! isDebugging; then
args+=(--quiet)
@@ -345,4 +345,4 @@ function ensureRemoveAllModsOff() {
log "WARNING using REMOVE_OLDS_MODS interferes with $reason -- it is now disabled"
REMOVE_OLD_MODS=false
fi
}
}