mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-02-17 07:03:57 +00:00
Compare commits
109 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd3c7a4b77 | ||
|
|
5340121d37 | ||
|
|
9546dd322d | ||
|
|
739cd5a320 | ||
|
|
09b716dd6b | ||
|
|
a7ecd92244 | ||
|
|
8685cc05c7 | ||
|
|
235141fcf3 | ||
|
|
cea839aa67 | ||
|
|
6d9c6d64e2 | ||
|
|
5d8b99c454 | ||
|
|
5113afccb5 | ||
|
|
0a7b1ed817 | ||
|
|
4fe1c2c7b4 | ||
|
|
8c0c27aef9 | ||
|
|
e9d7668cd8 | ||
|
|
06190ef9d0 | ||
|
|
1c780ff655 | ||
|
|
866f9c9d45 | ||
|
|
4da0e93c0f | ||
|
|
5415879cd2 | ||
|
|
28737a99bc | ||
|
|
f4634c3fd9 | ||
|
|
46ee2331bf | ||
|
|
edffc58589 | ||
|
|
be846dd369 | ||
|
|
de1d7f422c | ||
|
|
b393b22136 | ||
|
|
d7c6a7d2b6 | ||
|
|
0ff8e68f01 | ||
|
|
a71c5384b4 | ||
|
|
379cef3c7e | ||
|
|
163a268770 | ||
|
|
f84ae66af3 | ||
|
|
58face9c1b | ||
|
|
b8e6eea265 | ||
|
|
78b55df635 | ||
|
|
0f9941373b | ||
|
|
6ac313ae71 | ||
|
|
bc0a87cc53 | ||
|
|
5baf398af3 | ||
|
|
8dac5d1428 | ||
|
|
4232a981e8 | ||
|
|
b89c698676 | ||
|
|
8a5b5bbe70 | ||
|
|
11d8d917f2 | ||
|
|
2023f5aa31 | ||
|
|
bcd8db1306 | ||
|
|
62ce504da3 | ||
|
|
c87145a5e4 | ||
|
|
c4f69bf577 | ||
|
|
67b790dfed | ||
|
|
a55d575375 | ||
|
|
70cc1298c2 | ||
|
|
b9a61c8852 | ||
|
|
75496d6e0b | ||
|
|
50caaf98ef | ||
|
|
14a8f903ae | ||
|
|
c70f9c3fff | ||
|
|
a933e92460 | ||
|
|
4c42a3e46c | ||
|
|
1ccd6a0954 | ||
|
|
c3614466e7 | ||
|
|
3349df764e | ||
|
|
d3725c3388 | ||
|
|
63e8d33f6c | ||
|
|
a8b7ad533c | ||
|
|
fe5f066a0b | ||
|
|
47c2b60cba | ||
|
|
db88d167fe | ||
|
|
774d3bc717 | ||
|
|
c365a6cc5a | ||
|
|
cafb80eec3 | ||
|
|
bc789202a1 | ||
|
|
2e9be596f7 | ||
|
|
87afad69b3 | ||
|
|
fa058a18ad | ||
|
|
3936d56583 | ||
|
|
ca8abe3e16 | ||
|
|
ed7a6668aa | ||
|
|
c828985ebe | ||
|
|
8fd98f0315 | ||
|
|
708b6ab849 | ||
|
|
524ac1d0ec | ||
|
|
2cf4b98d76 | ||
|
|
b3e0ea14bf | ||
|
|
820d401911 | ||
|
|
20d80bb600 | ||
|
|
e172b52027 | ||
|
|
36c92be777 | ||
|
|
e59d5ff13b | ||
|
|
ddfb99a1fc | ||
|
|
1de2d34c64 | ||
|
|
65371be1eb | ||
|
|
e6b525a65c | ||
|
|
ed1c679559 | ||
|
|
e727602e51 | ||
|
|
180b6535b3 | ||
|
|
3842ac4693 | ||
|
|
340284913c | ||
|
|
07e89bff53 | ||
|
|
e1262effef | ||
|
|
cbcdfdc288 | ||
|
|
120e1c21bf | ||
|
|
8557749d1d | ||
|
|
5c8e2bb0ba | ||
|
|
f659c56f18 | ||
|
|
f06ebae451 | ||
|
|
7153e1443a |
32
.github/workflows/build-multiarch.yml
vendored
32
.github/workflows/build-multiarch.yml
vendored
@@ -11,6 +11,7 @@ on:
|
||||
- "docs/**"
|
||||
- "examples/**"
|
||||
- "notes/**"
|
||||
- "kustomize/**"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -21,11 +22,10 @@ jobs:
|
||||
variant:
|
||||
- java21-graalvm
|
||||
- java21
|
||||
- java21-jdk
|
||||
- java21-alpine
|
||||
- java17
|
||||
- java17-graalvm
|
||||
- java17-jdk
|
||||
- java17-openj9
|
||||
- java17-alpine
|
||||
- java8
|
||||
- java8-graalvm-ce
|
||||
@@ -43,9 +43,13 @@ 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
|
||||
platforms: linux/amd64,linux/arm64
|
||||
mcVersion: latest
|
||||
# JAVA 17:
|
||||
- variant: java17
|
||||
@@ -57,14 +61,6 @@ jobs:
|
||||
baseImage: container-registry.oracle.com/graalvm/jdk:17-ol8
|
||||
platforms: linux/amd64,linux/arm64
|
||||
mcVersion: 1.20.4
|
||||
- variant: java17-jdk
|
||||
baseImage: eclipse-temurin:17-focal
|
||||
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
||||
mcVersion: 1.20.4
|
||||
- variant: java17-openj9
|
||||
baseImage: ibm-semeru-runtimes:open-17-jre
|
||||
platforms: linux/amd64,linux/arm64
|
||||
mcVersion: 1.20.4
|
||||
- variant: java17-alpine
|
||||
baseImage: eclipse-temurin:17-jre-alpine
|
||||
platforms: linux/amd64
|
||||
@@ -102,7 +98,7 @@ jobs:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.4
|
||||
uses: actions/checkout@v4.1.7
|
||||
with:
|
||||
# for build-files step
|
||||
fetch-depth: 0
|
||||
@@ -137,13 +133,13 @@ jobs:
|
||||
org.opencontainers.image.authors=Geoff Bourne <itzgeoff@gmail.com>
|
||||
|
||||
- name: Setup Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3.3.0
|
||||
uses: docker/setup-buildx-action@v3.6.1
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3.0.0
|
||||
uses: docker/setup-qemu-action@v3.2.0
|
||||
|
||||
- name: Build for test
|
||||
uses: docker/build-push-action@v5.3.0
|
||||
uses: docker/build-push-action@v6.7.0
|
||||
with:
|
||||
platforms: linux/amd64
|
||||
tags: ${{ env.IMAGE_TO_TEST }}
|
||||
@@ -166,14 +162,14 @@ jobs:
|
||||
tests/test.sh
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3.1.0
|
||||
uses: docker/login-action@v3.3.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.3.0
|
||||
if: env.HAS_IMAGE_REPO_ACCESS
|
||||
with:
|
||||
registry: ghcr.io
|
||||
@@ -181,7 +177,7 @@ jobs:
|
||||
password: ${{ github.token }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v5.3.0
|
||||
uses: docker/build-push-action@v6.7.0
|
||||
if: github.actor == github.repository_owner
|
||||
with:
|
||||
platforms: ${{ matrix.platforms }}
|
||||
|
||||
11
.github/workflows/verify-pr.yml
vendored
11
.github/workflows/verify-pr.yml
vendored
@@ -8,6 +8,7 @@ on:
|
||||
- "docs/**"
|
||||
- "examples/**"
|
||||
- "notes/**"
|
||||
- "kustomize/**"
|
||||
- "docker-compose*.yml"
|
||||
- "mkdocs.yml"
|
||||
|
||||
@@ -29,7 +30,7 @@ jobs:
|
||||
mcVersion: latest
|
||||
- variant: java21-alpine
|
||||
baseImage: eclipse-temurin:21-jre-alpine
|
||||
platforms: linux/amd64
|
||||
platforms: linux/amd64,linux/arm64
|
||||
mcVersion: latest
|
||||
# JAVA 17:
|
||||
- variant: java17
|
||||
@@ -46,16 +47,16 @@ jobs:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.4
|
||||
uses: actions/checkout@v4.1.7
|
||||
with:
|
||||
# for build-files step
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3.3.0
|
||||
uses: docker/setup-buildx-action@v3.6.1
|
||||
|
||||
- name: Confirm multi-arch build
|
||||
uses: docker/build-push-action@v5.3.0
|
||||
uses: docker/build-push-action@v6.7.0
|
||||
with:
|
||||
platforms: ${{ matrix.platforms }}
|
||||
# ensure latest base image is used
|
||||
@@ -65,7 +66,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@v6.7.0
|
||||
with:
|
||||
# Only build single platform since loading multi-arch image into daemon fails with
|
||||
# "docker exporter does not currently support exporting manifest lists"
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
|
||||
version: 2
|
||||
|
||||
build:
|
||||
|
||||
24
Dockerfile
24
Dockerfile
@@ -1,5 +1,3 @@
|
||||
# syntax = docker/dockerfile:1.3
|
||||
|
||||
ARG BASE_IMAGE=eclipse-temurin:21-jre
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
@@ -9,14 +7,12 @@ ARG TARGETOS
|
||||
ARG TARGETARCH
|
||||
ARG TARGETVARIANT
|
||||
|
||||
# CI system should set this to a hash or git revision of the build directory and it's contents to
|
||||
# ensure consistent cache updates.
|
||||
ARG BUILD_FILES_REV=1
|
||||
ARG FORCE_INSTALL_PACKAGES=1
|
||||
RUN --mount=target=/build,source=build \
|
||||
REV=${BUILD_FILES_REV} TARGET=${TARGETARCH}${TARGETVARIANT} /build/run.sh install-packages
|
||||
TARGET=${TARGETARCH}${TARGETVARIANT} /build/run.sh install-packages
|
||||
|
||||
RUN --mount=target=/build,source=build \
|
||||
REV=${BUILD_FILES_REV} /build/run.sh setup-user
|
||||
/build/run.sh setup-user
|
||||
|
||||
COPY --chmod=644 files/sudoers* /etc/sudoers.d
|
||||
|
||||
@@ -25,31 +21,31 @@ EXPOSE 25565
|
||||
ARG APPS_REV=1
|
||||
ARG GITHUB_BASEURL=https://github.com
|
||||
|
||||
ARG EASY_ADD_VERSION=0.8.4
|
||||
ARG EASY_ADD_VERSION=0.8.7
|
||||
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.4
|
||||
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.4
|
||||
ARG RCON_CLI_VERSION=1.6.8
|
||||
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.13
|
||||
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.14
|
||||
ARG MC_HELPER_VERSION=1.39.11
|
||||
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
|
||||
@@ -76,4 +72,4 @@ RUN curl -fsSL -o /image/Log4jPatcher.jar https://github.com/CreeperHost/Log4jPa
|
||||
RUN dos2unix /start* /auto/*
|
||||
|
||||
ENTRYPOINT [ "/start" ]
|
||||
HEALTHCHECK --start-period=1m --interval=5s --retries=24 CMD mc-health
|
||||
HEALTHCHECK --start-period=30s --retries=24 --interval=60s CMD mc-health
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -44,7 +44,7 @@ do
|
||||
if [[ "$RCON_CMDS_STARTUP" ]]; then
|
||||
while read -r cmd; do
|
||||
run_command "$cmd"
|
||||
done <<< "$RCON_CMDS_STARTUP"
|
||||
done <<< "$(echo -e "$RCON_CMDS_STARTUP")"
|
||||
fi
|
||||
if
|
||||
[[ -z "$RCON_CMDS_ON_CONNECT" ]] &&
|
||||
@@ -66,7 +66,7 @@ do
|
||||
logRcon "First Clients has Connected, running first connect cmds"
|
||||
while read -r cmd; do
|
||||
run_command "$cmd"
|
||||
done <<< "$RCON_CMDS_FIRST_CONNECT"
|
||||
done <<< "$(echo -e "$RCON_CMDS_FIRST_CONNECT")"
|
||||
fi
|
||||
|
||||
# When a client joins
|
||||
@@ -74,13 +74,13 @@ do
|
||||
logRcon "Clients have Connected, running connect cmds"
|
||||
while read -r cmd; do
|
||||
run_command "$cmd"
|
||||
done <<< "$RCON_CMDS_ON_CONNECT"
|
||||
done <<< "$(echo -e "$RCON_CMDS_ON_CONNECT")"
|
||||
# When a client leaves
|
||||
elif (( CURR_CLIENTCONNECTIONS < CLIENTCONNECTIONS )) && [[ "$RCON_CMDS_ON_DISCONNECT" ]]; then
|
||||
logRcon "Clients have Disconnected, running disconnect cmds"
|
||||
while read -r cmd; do
|
||||
run_command "$cmd"
|
||||
done <<< "$RCON_CMDS_ON_DISCONNECT"
|
||||
done <<< "$(echo -e "$RCON_CMDS_ON_DISCONNECT")"
|
||||
fi
|
||||
|
||||
# Last client connection
|
||||
@@ -89,7 +89,7 @@ do
|
||||
logRcon "ALL Clients have Disconnected, running last disconnect cmds"
|
||||
while read -r cmd; do
|
||||
run_command "$cmd"
|
||||
done <<< "$RCON_CMDS_LAST_DISCONNECT"
|
||||
done <<< "$(echo -e "$RCON_CMDS_LAST_DISCONNECT")"
|
||||
fi
|
||||
CLIENTCONNECTIONS=$CURR_CLIENTCONNECTIONS
|
||||
;;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
# Install necessary packages
|
||||
apk add --no-cache -U \
|
||||
openssl \
|
||||
imagemagick \
|
||||
@@ -14,9 +15,9 @@ apk add --no-cache -U \
|
||||
procps \
|
||||
shadow \
|
||||
bash \
|
||||
curl iputils \
|
||||
curl \
|
||||
iputils \
|
||||
git \
|
||||
git-lfs \
|
||||
jq \
|
||||
mysql-client \
|
||||
tzdata \
|
||||
@@ -30,11 +31,15 @@ apk add --no-cache -U \
|
||||
libwebp \
|
||||
libcap
|
||||
|
||||
# Patched knockd
|
||||
# Download and install patched knockd
|
||||
curl -fsSL -o /tmp/knock.tar.gz https://github.com/Metalcape/knock/releases/download/0.8.1/knock-0.8.1-alpine-amd64.tar.gz
|
||||
tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
|
||||
ln -s /usr/local/sbin/knockd /usr/sbin/knockd
|
||||
setcap cap_net_raw=ep /usr/local/sbin/knockd
|
||||
|
||||
# Set git credentials
|
||||
echo -e "[user]\n name = Minecraft Server on Docker\n email = server@example.com" >> /etc/gitconfig
|
||||
# Set Git credentials globally
|
||||
cat <<EOF >> /etc/gitconfig
|
||||
[user]
|
||||
name = Minecraft Server on Docker
|
||||
email = server@example.com
|
||||
EOF
|
||||
@@ -1,12 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ $(uname -m) == "aarch64" ]]; then
|
||||
curl -sL -o /bin/gosu https://github.com/tianon/gosu/releases/download/1.16/gosu-arm64
|
||||
chmod +x /bin/gosu
|
||||
elif [[ $(uname -m) == "x86_64" ]]; then
|
||||
curl -sL -o /bin/gosu https://github.com/tianon/gosu/releases/download/1.16/gosu-amd64
|
||||
chmod +x /bin/gosu
|
||||
else
|
||||
echo "Not supported!"
|
||||
exit 1
|
||||
fi
|
||||
set -euo pipefail
|
||||
|
||||
GOSU_VERSION="1.16"
|
||||
GOSU_BASE_URL="https://github.com/tianon/gosu/releases/download/$GOSU_VERSION"
|
||||
|
||||
case $(uname -m) in
|
||||
"aarch64")
|
||||
GOSU_ARCH="gosu-arm64"
|
||||
;;
|
||||
"x86_64")
|
||||
GOSU_ARCH="gosu-amd64"
|
||||
;;
|
||||
*)
|
||||
echo "Architecture not supported!"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
curl -sL -o /bin/gosu "${GOSU_BASE_URL}/${GOSU_ARCH}"
|
||||
chmod +x /bin/gosu
|
||||
|
||||
@@ -4,28 +4,33 @@ export TARGET
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Install and configure dnf
|
||||
microdnf install dnf -y
|
||||
|
||||
dnf install 'dnf-command(config-manager)' -y
|
||||
dnf config-manager --set-enabled ol8_codeready_builder
|
||||
tee /etc/yum.repos.d/ol8-epel.repo<<EOF
|
||||
|
||||
# Add EPEL repository
|
||||
tee /etc/yum.repos.d/ol8-epel.repo <<EOF
|
||||
[ol8_developer_EPEL]
|
||||
name= Oracle Linux \$releasever EPEL (\$basearch)
|
||||
name=Oracle Linux \$releasever EPEL (\$basearch)
|
||||
baseurl=https://yum.oracle.com/repo/OracleLinux/OL8/developer/EPEL/\$basearch/
|
||||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
|
||||
gpgcheck=1
|
||||
enabled=1
|
||||
EOF
|
||||
|
||||
# Update system
|
||||
dnf update -y
|
||||
|
||||
dnf install -y ImageMagick \
|
||||
# Install necessary packages
|
||||
dnf install -y \
|
||||
ImageMagick \
|
||||
file \
|
||||
sudo \
|
||||
net-tools \
|
||||
iputils \
|
||||
curl \
|
||||
git \
|
||||
git-lfs \
|
||||
jq \
|
||||
dos2unix \
|
||||
mysql \
|
||||
@@ -41,13 +46,26 @@ dnf install -y ImageMagick \
|
||||
findutils \
|
||||
which
|
||||
|
||||
# Install Git LFS
|
||||
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash
|
||||
dnf update -y
|
||||
dnf install -y git-lfs
|
||||
|
||||
# Clean up DNF when done
|
||||
dnf clean all
|
||||
|
||||
# Install gosu (assuming the script /build/ol/install-gosu.sh exists and is executable)
|
||||
bash /build/ol/install-gosu.sh
|
||||
|
||||
# Patched knockd
|
||||
# Download and install patched knockd
|
||||
curl -fsSL -o /tmp/knock.tar.gz https://github.com/Metalcape/knock/releases/download/0.8.1/knock-0.8.1-$TARGET.tar.gz
|
||||
tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
|
||||
ln -s /usr/local/sbin/knockd /usr/sbin/knockd
|
||||
setcap cap_net_raw=ep /usr/local/sbin/knockd
|
||||
|
||||
# Set git credentials
|
||||
echo -e "[user]\n name = Minecraft Server on Docker\n email = server@example.com" >> /etc/gitconfig
|
||||
# Set git credentials globally
|
||||
cat <<EOF >> /etc/gitconfig
|
||||
[user]
|
||||
name = Minecraft Server on Docker
|
||||
email = server@example.com
|
||||
EOF
|
||||
|
||||
@@ -4,8 +4,8 @@ export TARGET
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Update and install packages
|
||||
apt-get update
|
||||
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y \
|
||||
imagemagick \
|
||||
@@ -16,7 +16,6 @@ apt-get install -y \
|
||||
iputils-ping \
|
||||
curl \
|
||||
git \
|
||||
git-lfs \
|
||||
jq \
|
||||
dos2unix \
|
||||
mysql-client \
|
||||
@@ -27,17 +26,26 @@ apt-get install -y \
|
||||
zstd \
|
||||
lbzip2 \
|
||||
nfs-common \
|
||||
libpcap0.8 \
|
||||
webp
|
||||
libpcap0.8
|
||||
|
||||
# Install Git LFS
|
||||
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
|
||||
apt-get update
|
||||
apt-get install -y git-lfs
|
||||
|
||||
# Clean up APT when done
|
||||
apt-get clean
|
||||
|
||||
# Patched knockd
|
||||
# Download and install patched knockd
|
||||
curl -fsSL -o /tmp/knock.tar.gz https://github.com/Metalcape/knock/releases/download/0.8.1/knock-0.8.1-$TARGET.tar.gz
|
||||
tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
|
||||
ln -s /usr/local/sbin/knockd /usr/sbin/knockd
|
||||
setcap cap_net_raw=ep /usr/local/sbin/knockd
|
||||
find /usr/lib -name 'libpcap.so.0.8' -execdir cp '{}' libpcap.so.1 \;
|
||||
|
||||
# Set git credentials
|
||||
echo -e "[user]\n name = Minecraft Server on Docker\n email = server@example.com" >> /etc/gitconfig
|
||||
# Set git credentials globally
|
||||
cat <<EOF >> /etc/gitconfig
|
||||
[user]
|
||||
name = Minecraft Server on Docker
|
||||
email = server@example.com
|
||||
EOF
|
||||
|
||||
@@ -2,5 +2,9 @@
|
||||
|
||||
set -e
|
||||
|
||||
if id ubuntu > /dev/null 2>&1; then
|
||||
deluser ubuntu
|
||||
fi
|
||||
|
||||
addgroup --gid 1000 minecraft
|
||||
adduser --system --shell /bin/false --uid 1000 --ingroup minecraft --home /data minecraft
|
||||
@@ -4,8 +4,6 @@
|
||||
#
|
||||
# and then access http://localhost:8000
|
||||
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mkdocs:
|
||||
build:
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -66,7 +66,6 @@ database:
|
||||
This is how your `docker-compose.yml` file could look like:
|
||||
|
||||
```yml
|
||||
version: "3.8"
|
||||
# Other docker-compose examples in /examples
|
||||
|
||||
services:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -4,7 +4,9 @@ If you prefer to manually manage the `server.properties` file, set `OVERRIDE_SER
|
||||
|
||||
!!! note
|
||||
|
||||
To clear a server property, set the variable to an empty string, such as `-e RESOURCE_PACK=""`. An unset variable is ignored and the existing `server.property` is left unchanged.
|
||||
To clear a server property, set the variable to an empty string, such as `-e RESOURCE_PACK=""`. An unset variable is ignored and the existing server property is left unchanged.
|
||||
|
||||
To see what `server.properties` will get used by the server, set the environment variable `DUMP_SERVER_PROPERTIES` to "true" and the contents of `server.properties` will get output before the server starts.
|
||||
|
||||
## Placeholders
|
||||
|
||||
@@ -62,9 +64,25 @@ The section symbol (§) and other unicode characters are automatically converted
|
||||
|
||||

|
||||
|
||||
To produce a multi-line MOTD, embed a newline character as `\n` in the string, such as
|
||||
To produce a multi-line MOTD, embed a newline character as `\n` in the string, such as the following example.
|
||||
|
||||
!!! example "Multi-line MOTD"
|
||||
|
||||
With `docker run`
|
||||
|
||||
```
|
||||
-e MOTD="Line one\nLine two"
|
||||
```
|
||||
|
||||
or within a compose file
|
||||
|
||||
```yaml
|
||||
MOTD: |
|
||||
line one
|
||||
line two
|
||||
# or
|
||||
# MOTD: "line one\nline two"
|
||||
```
|
||||
|
||||
!!! tip
|
||||
|
||||
@@ -110,7 +128,7 @@ When either is set, [whitelisting of connecting users](https://minecraft.wiki/w/
|
||||
|
||||
To change the behavior when the whitelist file already exists, set the variable `EXISTING_WHITELIST_FILE` to one of the following options:
|
||||
|
||||
`SKIP` (default)
|
||||
`SKIP`
|
||||
: Skip processing of the whitelist file when one is already present. This is the same as setting the legacy variable `OVERRIDE_WHITELIST` to "false".
|
||||
|
||||
`SYNCHRONIZE`
|
||||
@@ -119,7 +137,7 @@ To change the behavior when the whitelist file already exists, set the variable
|
||||
`MERGE`
|
||||
: Merge the list of users from `WHITELIST` into the existing file. `WHITELIST_FILE` cannot be used with this option.
|
||||
|
||||
`SYNC_FILE_MERGE_LIST`
|
||||
`SYNC_FILE_MERGE_LIST` (default)
|
||||
: When `WHITELIST_FILE` is provided it will overwrite an existing whitelist file. Also, if `WHITELIST` is provided, then those users will be merged into the newly copied file.
|
||||
|
||||
!!! note
|
||||
@@ -153,7 +171,7 @@ Similar to the whitelist, users can be provisioned as operators (aka administrat
|
||||
|
||||
To change the behavior when the ops file already exists, set the variable `EXISTING_OPS_FILE` to one of the following options:
|
||||
|
||||
`SKIP` (default)
|
||||
`SKIP`
|
||||
: Skip processing of the ops file when one is already present. This is the same as setting the legacy variable `OVERRIDE_OPS` to "false".
|
||||
|
||||
`SYNCHRONIZE`
|
||||
@@ -162,7 +180,7 @@ To change the behavior when the ops file already exists, set the variable `EXIST
|
||||
`MERGE`
|
||||
: Merge the list of users from `OPS` into the existing file. `OPS_FILE` cannot be used with this option.
|
||||
|
||||
`SYNC_FILE_MERGE_LIST`
|
||||
`SYNC_FILE_MERGE_LIST` (default)
|
||||
: When `OPS_FILE` is provided it will overwrite an existing ops file. Also, if `OPS` is provided, then those users will be merged into the newly copied file.
|
||||
|
||||
!!! note
|
||||
@@ -477,4 +495,11 @@ When using `docker run` from a bash shell, the entries must be quoted with the `
|
||||
| SIMULATION_DISTANCE | simulation-distance |
|
||||
| SYNC_CHUNK_WRITES | sync-chunk-writes |
|
||||
| USE_NATIVE_TRANSPORT | use-native-transport |
|
||||
|
||||
| HIDE_ONLINE_PLAYERS | hide-online-players |
|
||||
| RESOURCE_PACK_ID | resource-pack-id |
|
||||
| RESOURCE_PACK_PROMPT | resource-pack-prompt |
|
||||
| MAX_CHAINED_NEIGHBOR_UPDATES | max-chained-neighbor-updates |
|
||||
| LOG_IPS | log-ips |
|
||||
| REGION_FILE_COMPRESSION | region-file-compression |
|
||||
| BUG_REPORT_LINK | bug-report-link |
|
||||
| PAUSE_WHEN_EMPTY_SECONDS | pause-when-empty-seconds |
|
||||
@@ -31,7 +31,6 @@ When attached in this way you can stop the server, edit the configuration under
|
||||
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 title="docker-compose.yml"
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
mc:
|
||||
|
||||
@@ -39,7 +39,6 @@ By default, the container will download the latest version of the "vanilla" [Min
|
||||
4. Done! Point your client at your host's name/IP address and port 25565.
|
||||
|
||||
```yaml
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
|
||||
@@ -45,7 +45,9 @@ The following environment variables define the behaviour of auto-pausing:
|
||||
|
||||
## Rootless Auto-Pause
|
||||
|
||||
If you're running the container as rootless, you might need to set change the default port forwarder from RootlessKit to slirp4netns.
|
||||
If you're running the container as rootless, then it is necessary to add the `CAP_NET_RAW` capability to the container, such as using [the `cap_add` service field](https://docs.docker.com/compose/compose-file/05-services/#cap_add) in a compose file or [`--cap-add` docker run argument](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities). It may also be necessary to set the environment variable `SKIP_SUDO` to "true".
|
||||
|
||||
You might need to set change the default port forwarder from RootlessKit to slirp4netns.
|
||||
|
||||
For Docker, see the following for setup:
|
||||
|
||||
@@ -54,8 +56,9 @@ For Docker, see the following for setup:
|
||||
|
||||
For Podman, see the following for setup:
|
||||
- https://rootlesscontaine.rs/getting-started/podman/#changing-the-port-forwarder
|
||||
- Run with
|
||||
|
||||
```
|
||||
-e AUTOPAUSE_KNOCK_INTERFACE=tap0 --cap-add=CAP_NET_RAW --network slirp4netns:port_handler=slirp4netns
|
||||
```
|
||||
|
||||
!!! example "Using docker run"
|
||||
|
||||
-e AUTOPAUSE_KNOCK_INTERFACE=tap0 --cap-add=CAP_NET_RAW --network slirp4netns:port_handler=slirp4netns
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
An option to stop the server after a specified time has been added for niche applications (e.g. billing saving on AWS Fargate). The function is incompatible with the Autopause functionality, as they basically cancel out each other.
|
||||
|
||||
!!! note
|
||||
!!! note
|
||||
|
||||
the docker container variables have to be set accordingly (restart policy set to "no") and that the container has to be manually restarted.
|
||||
|
||||
@@ -25,3 +25,6 @@ The following environment variables define the behavior of auto-stopping:
|
||||
describes period of the daemonized state machine, that handles the stopping of the server
|
||||
|
||||
> To troubleshoot, add `DEBUG_AUTOSTOP=true` to see additional output
|
||||
|
||||
## Proxy Support
|
||||
If you make use of PROXY Protocol, i.e. through something like HAProxy or Fly.io, you will need to enable it in your variety of server's configuration, and then set the `USES_PROXY_PROTOCOL` envar to `true`. This lets Autostop monitor the server, where it otherwise wouldn't
|
||||
|
||||
@@ -7,7 +7,6 @@ Various examples are [maintained in the repository](https://github.com/itzg/dock
|
||||
Using the [GeyserMC plugin](https://geysermc.org/) with a Paper server (or similar) "enables clients from Minecraft Bedrock Edition to join your Minecraft Java server". The example also includes [Floodgate](https://wiki.geysermc.org/floodgate/) which "allows Xbox Live authenticated Bedrock users to join without a Java Edition account".
|
||||
|
||||
```yaml
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
@@ -27,13 +26,60 @@ services:
|
||||
|
||||
[Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/geyser/docker-compose.yml)
|
||||
|
||||
## Lazymc - Put your Minecraft server to rest when idle
|
||||
|
||||
With [lazymc-docker-proxy](https://github.com/joesturge/lazymc-docker-proxy) you are able to use [lazymc](https://github.com/timvisee/lazymc) with the minecraft container.
|
||||
|
||||
```yaml
|
||||
services:
|
||||
lazymc:
|
||||
container_name: lazymc
|
||||
image: ghcr.io/joesturge/lazymc-docker-proxy:latest
|
||||
environment:
|
||||
# Point to the service name of the Minecraft server
|
||||
SERVER_ADDRESS: mc:25565
|
||||
# Required to find the container to manage it
|
||||
LAZYMC_GROUP: mc
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
# you should mount the minecraft server dir under /server, using read only.
|
||||
- data:/server:ro
|
||||
# you need to supply the docker socket, so that the container can run docker command
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
ports:
|
||||
# lazymc-docker-proxy acts as a proxy, so there is
|
||||
# no need to expose the server port on the Minecraft container
|
||||
- "25565:25565"
|
||||
|
||||
# Standard Docker Minecraft server, also works with other server types
|
||||
mc:
|
||||
image: itzg/minecraft-server:java21
|
||||
container_name: minecraft-server
|
||||
# We need to add a label here so that lazymc-docker-proxy knows which
|
||||
# container to manage
|
||||
labels:
|
||||
- lazymc.group=mc
|
||||
tty: true
|
||||
stdin_open: true
|
||||
# This container should be managed solely by the lazymc container
|
||||
# so set restart to no, or else the container will start again...
|
||||
restart: no
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
volumes:
|
||||
- data:/data
|
||||
|
||||
volumes:
|
||||
data:
|
||||
```
|
||||
[Source](https://github.com/joesturge/lazymc-docker-proxy/blob/master/docker-compose.yaml)
|
||||
|
||||
## Lazytainer - Stop Minecraft container based on traffic
|
||||
Monitors network traffic to the Minecraft containers. If there is traffic, the container runs, otherwise the container is stopped/paused.
|
||||
|
||||
By using [Lazytainer](https://github.com/vmorganp/Lazytainer) with the [docker-minecraft-server](https://github.com/itzg/docker-minecraft-server) a somehow similar behaviour to [Lazymc](https://github.com/timvisee/lazymc) can be archived.
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
services:
|
||||
lazytainer:
|
||||
image: ghcr.io/vmorganp/lazytainer:master
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -76,7 +76,7 @@ would expand to `https://cdn.example.org/configs-v9.0.1.zip,https://cdn.example.
|
||||
|
||||
If applying large generic packs, the update can be time-consuming. To skip the update set `SKIP_GENERIC_PACK_UPDATE_CHECK` to "true". Conversely, the generic pack(s) can be forced to be applied by setting `FORCE_GENERIC_PACK_UPDATE` to "true".
|
||||
|
||||
The most time-consuming portion of the generic pack update is generating and comparing the SHA1 checksum. To skip the checksum generation, set `SKIP_GENERIC_PACK_CHECKSUM` to "true.
|
||||
The most time-consuming portion of the generic pack update is generating and comparing the SHA1 checksum. To skip the checksum generation, set `SKIP_GENERIC_PACK_CHECKSUM` to "true".
|
||||
|
||||
## Mods/plugins list
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -26,5 +26,5 @@
|
||||
: Can be set to `none` (the default), `required`, or `optional` to download required and/or optional dependencies.
|
||||
|
||||
`MODRINTH_ALLOWED_VERSION_TYPE`
|
||||
: The version type is used to determine the newest version to use from each project. The allowed values are `release` (default), `beta`, `alpha`.
|
||||
: The version type is used to determine the newest version to use from each project. The allowed values are `release` (default), `beta`, `alpha`. Setting to `beta` will pick up both release and beta versions. Setting to `alpha` will pick up release, beta, and alpha versions.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
mkdocs-material == 9.5.19
|
||||
mkdocs-autorefs == 1.0.1
|
||||
mkdocstrings == 0.25.0
|
||||
mkdocs-material == 9.5.34
|
||||
mkdocs-autorefs == 1.2.0
|
||||
mkdocstrings == 0.26.0
|
||||
mkdocs-literate-nav == 0.6.1
|
||||
mdx-gh-links == 0.4
|
||||
mkdocs-click == 0.8.1
|
||||
mkdocs-static-i18n == 1.2.2
|
||||
mkdocs-static-i18n == 1.2.3
|
||||
@@ -73,6 +73,10 @@ To force include client mods, set `MODRINTH_FORCE_INCLUDE_FILES` to a comma or n
|
||||
yet-another-config-lib
|
||||
```
|
||||
|
||||
## Default exclude/includes
|
||||
|
||||
The image comes with a default set of exclude/includes, maintained [in the repo files area](https://github.com/itzg/docker-minecraft-server/blob/master/files/modrinth-exclude-include.json) and uses the same [JSON schema](https://github.com/itzg/mc-image-helper?tab=readme-ov-file#excludeinclude-file-schema) as Auto CurseForge. Those defaults can be disabled by setting the env var `MODRINTH_DEFAULT_EXCLUDE_INCLUDES` to an empty string.
|
||||
|
||||
## Excluding Overrides Files
|
||||
|
||||
Modrinth mrpack/zip files may include an `overrides` subdirectory that contains config files, world data, and extra mod files. All of those files will be extracted into the `/data` path of the container. If any of those files, such as incompatible mods, need to be excluded from extraction, then the `MODRINTH_OVERRIDES_EXCLUSIONS` variable can be set with a comma or newline delimited list of ant-style paths ([see below](#ant-style-paths)) to exclude, relative to the overrides (or `/data`) directory.
|
||||
|
||||
@@ -32,7 +32,7 @@ A [Ketting](https://github.com/kettingpowered/Ketting-1-20-x) server, which is a
|
||||
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.20.1" or later.
|
||||
|
||||
`FORGE_VERSION` and `KETTING_VERSION` may be specified; however, they will be defaulted by the [Ketting launcher](https://github.com/kettingpowered/kettinglauncher) otherwise.
|
||||
Available Ketting Versions may be found at [https://github.com/kettingpowered/Ketting-1-20-x/packages/2041866/versions](https://github.com/kettingpowered/Ketting-1-20-x/packages/2041866/versions).
|
||||
Available Ketting Versions may be found at [https://reposilite.c0d3m4513r.com/#/Ketting-Server-Releases/org/kettingpowered/server/forge](https://reposilite.c0d3m4513r.com/#/Ketting-Server-Releases/org/kettingpowered/server/forge).
|
||||
The Version structure is `MinecraftVersion-ForgeVersion-KettingVersion` (e.g. `1.20.1-47.2.20-0.1.4` is for Minecraft `1.20.1`, Forge `47.2.20` and Ketting `0.1.4`).
|
||||
|
||||
### Mohist
|
||||
|
||||
@@ -1,10 +1,28 @@
|
||||
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 ...
|
||||
```
|
||||
|
||||
!!! tip
|
||||
|
||||
If you see the following error, it likely means you need to set the env var `PAPER_CHANNEL` to "experimental"
|
||||
|
||||
```
|
||||
No build found for version 1.21 with channel 'default'
|
||||
```
|
||||
|
||||
If you are hosting your own copy of Paper you can override the download URL with `PAPER_DOWNLOAD_URL=<url>`.
|
||||
|
||||
@@ -47,13 +65,19 @@ Extra variables:
|
||||
|
||||
### Folia
|
||||
|
||||
Enable Folia server mode by adding a `-e TYPE=FOLIA` to your command-line.
|
||||
A [Folia server](https://papermc.io/software/folia) can be used by setting the environment variable `TYPE` to "FOLIA".
|
||||
|
||||
By default, the container will run the latest build of [Folia server](https://papermc.io/downloads), but you can also choose to run a specific build with `-e FOLIABUILD=26`.
|
||||
By default, the container will run the latest experimental build of [Folia server](https://papermc.io/downloads), but you can also choose to run a specific build with `-e FOLIABUILD=26`. The release channel can be changed with the variable `FOLIA_CHANNEL`; however, only experimental builds are available at this time.
|
||||
|
||||
!!! example
|
||||
|
||||
Using `docker run`
|
||||
|
||||
```
|
||||
docker run -d -v /path/on/host:/data \
|
||||
-e TYPE=FOLIA \
|
||||
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
|
||||
```
|
||||
|
||||
If you are hosting your own copy of Folia you can override the download URL with `FOLIA_DOWNLOAD_URL=<url>`.
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -10,31 +10,32 @@ or explicitly include the tag, such as
|
||||
|
||||
where `<tag>` refers to the first column of this table:
|
||||
|
||||
| Tag | Java version | Linux | JVM Type | Architecture |
|
||||
|------------------|--------------|--------|--------------------|-------------------|
|
||||
| latest | 21 | Ubuntu | Hotspot | amd64,arm64 |
|
||||
| stable | 21 | Ubuntu | Hotspot | amd64,arm64 |
|
||||
| java21 | 21 | Ubuntu | Hotspot | amd64,arm64 |
|
||||
| java21-alpine | 21 | Alpine | Hotspot | amd64 |
|
||||
| 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-openj9 | 17 | Debian | OpenJ9 | amd64 |
|
||||
| java17-graalvm | 17 | Oracle | Oracle GraalVM[^1] | amd64,arm64 |
|
||||
| java17-alpine | 17 | Alpine | Hotspot | amd64 |
|
||||
| java11 | 11 | Ubuntu | Hotspot | amd64,arm64,armv7 |
|
||||
| java8 | 8 | Ubuntu | Hotspot | amd64 |
|
||||
| java8-alpine | 8 | Alpine | Hotspot | amd64 |
|
||||
| java8-jdk | 8 | Ubuntu | Hotspot+JDK | amd64 |
|
||||
| java8-openj9 | 8 | Debian | OpenJ9 | amd64 |
|
||||
| java8-graalvm-ce | 8 | Oracle | GraalVM CE | amd64 |
|
||||
| Tag | Java version | Linux | JVM Type | Architecture |
|
||||
|------------------|--------------|--------|--------------------|---------------------|
|
||||
| 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-graalvm | 17 | Oracle | Oracle GraalVM[^1] | amd64, arm64 |
|
||||
| java17-alpine | 17 | Alpine | Hotspot | amd64 (1) |
|
||||
| java11 | 11 | Ubuntu | Hotspot | amd64, arm64, armv7 |
|
||||
| java8 | 8 | Ubuntu | Hotspot | amd64, arm64, armv7 |
|
||||
| java8-alpine | 8 | Alpine | Hotspot | amd64 (1) |
|
||||
| java8-jdk | 8 | Ubuntu | Hotspot+JDK | amd64 |
|
||||
| java8-openj9 | 8 | Debian | OpenJ9 | amd64 |
|
||||
| java8-graalvm-ce | 8 | Oracle | GraalVM CE | amd64 |
|
||||
|
||||
!!! example "Example using java8-multiarch"
|
||||
1. Why no arm64 for Java 17 Alpine? That is because the base images, such as [elipse-temurin](https://hub.docker.com/_/eclipse-temurin/tags?page=&page_size=&ordering=&name=17-jre-alpine) do not provide support for that. Use the Ubuntu based images instead.
|
||||
|
||||
!!! example "Example using java8"
|
||||
|
||||
With docker run command-line
|
||||
|
||||
```
|
||||
docker run -it -e EULA=true itzg/minecraft-server:java8-multiarch
|
||||
docker run -it -e EULA=true itzg/minecraft-server:java8
|
||||
```
|
||||
|
||||
or in a compose file
|
||||
@@ -42,7 +43,7 @@ where `<tag>` refers to the first column of this table:
|
||||
```yaml
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:java8-multiarch
|
||||
image: itzg/minecraft-server:java8
|
||||
```
|
||||
|
||||
!!! note "Latest"
|
||||
@@ -79,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.
|
||||
@@ -117,6 +130,7 @@ The following image tags have been deprecated and are no longer receiving update
|
||||
- multiarch-latest
|
||||
- java16/java16-openj9
|
||||
- java17-graalvm-ce
|
||||
- java17-openj9
|
||||
- java20-graalvm, java20, java20-alpine
|
||||
- java8-multiarch is still built and pushed, but please move to java8 instead
|
||||
|
||||
|
||||
@@ -16,21 +16,6 @@ services:
|
||||
- "25565:25565"
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
- ./downloads:/downloads
|
||||
# Manually download the following and put into the 'downloads' directory next to this compose file
|
||||
#
|
||||
# Mod Filename Download page
|
||||
# =========================== ========================================= ====================================================================================
|
||||
# Fish of Thieves [Fabric 1.20.1] Fish of Thieves v3.0.3 https://www.curseforge.com/minecraft/mc-mods/fish-of-thieves/files/4958329
|
||||
# Only Hammers [FORGE/FABRIC] OnlyHammers-1.20.1-0.6-Fabric https://www.curseforge.com/minecraft/mc-mods/only-hammers-forge-fabric/files/4832068
|
||||
# Sprinklerz sprinklerz-0.5_fabric.jar https://www.curseforge.com/minecraft/mc-mods/sprinklerz/files/4835664
|
||||
# Frog Legs (Fabric/Forge) FrogLegs-v2.0.0-1.20.1-Fabric.jar https://www.curseforge.com/minecraft/mc-mods/froglegs/files/4917818
|
||||
# TrimsEffects [FABRIC] TrimsEffects - MC 1.20.X - 1.1.0 https://www.curseforge.com/minecraft/mc-mods/trimseffects/files/4954156
|
||||
# Display Case Display Case-fabric-1.20-1.0.8.jar https://www.curseforge.com/minecraft/mc-mods/displaycase/files/4921333
|
||||
# Structory: Towers Structory Towers 1.20.4 v1.0.6 https://www.curseforge.com/minecraft/mc-mods/structory-towers/files/4937875
|
||||
# Packet Fixer Packet Fixer Fabric 1.2.1 https://www.curseforge.com/minecraft/mc-mods/packet-fixer/files/4884316
|
||||
# Perfect Plushies Perfect Plushies 1.9.0 [Fabric] https://www.curseforge.com/minecraft/mc-mods/perfect-plushies/files/4985767
|
||||
# Structory Structory 1.20.2 v1.3.4 https://www.curseforge.com/minecraft/mc-mods/structory/files/4937872
|
||||
|
||||
volumes:
|
||||
mc-data: {}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
image: itzg/minecraft-server:java17
|
||||
ports:
|
||||
- "25565:25565"
|
||||
environment:
|
||||
@@ -11,11 +9,10 @@ services:
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/all-the-mods-8
|
||||
CF_FILENAME_MATCHER: "1.0.6"
|
||||
# CF_FILENAME_MATCHER: "1.1.0"
|
||||
MEMORY: 4G
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
- ../downloads:/downloads
|
||||
# Since Docker's default volume driver creates volumes owned by root, this
|
||||
# init container will change ownership to match final UID of mc service, above
|
||||
init-filebrowser:
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
@@ -16,7 +14,6 @@ services:
|
||||
MEMORY: 4G
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
- ./downloads:/downloads
|
||||
|
||||
volumes:
|
||||
mc-data: {}
|
||||
@@ -1,8 +1,6 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:java8-multiarch
|
||||
image: itzg/minecraft-server:java8
|
||||
ports:
|
||||
- "25565:25565"
|
||||
environment:
|
||||
@@ -45,7 +43,6 @@ services:
|
||||
MEMORY: 4G
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
- ./downloads:/downloads
|
||||
|
||||
volumes:
|
||||
mc-data: {}
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
@@ -9,11 +7,10 @@ services:
|
||||
# Set CF_API_KEY=... in a .env file next to this compose file and don't source control that file
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_SLUG: better-mc-fabric-bmc1
|
||||
CF_FILENAME_MATCHER: v18.5
|
||||
# CF_FILENAME_MATCHER: v18.5
|
||||
MEMORY: 4G
|
||||
volumes:
|
||||
- mc:/data
|
||||
- ../downloads:/downloads
|
||||
ports:
|
||||
- "25565:25565"
|
||||
|
||||
|
||||
@@ -1,28 +1,15 @@
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
image: itzg/minecraft-server:java17
|
||||
environment:
|
||||
EULA: true
|
||||
TYPE: MODRINTH
|
||||
MEMORY: 4G
|
||||
MODRINTH_MODPACK: better-mc-forge-bmc4
|
||||
MODRINTH_VERSION: v4
|
||||
MODRINTH_FORCE_SYNCHRONIZE: true
|
||||
MODRINTH_EXCLUDE_FILES: |
|
||||
citresewn
|
||||
oculus
|
||||
yungsmenutweaks
|
||||
notenoughanimations
|
||||
ryoamiclights
|
||||
euphoriapatcher
|
||||
entity_model_features
|
||||
entity_texture_features
|
||||
3dskinlayers
|
||||
MODRINTH_VERSION: v28
|
||||
MODRINTH_OVERRIDES_EXCLUSIONS: |
|
||||
mods/NekosEnchantedBooks-*.jar
|
||||
mods/citresewn-*.jar
|
||||
DEBUG: true
|
||||
SETUP_ONLY: true
|
||||
volumes:
|
||||
- data:/data
|
||||
ports:
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
minecraft:
|
||||
image: itzg/minecraft-server
|
||||
@@ -10,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"
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
minecraft:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
minecraft:
|
||||
ports:
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
####################################################################
|
||||
# CURSEFORGE #
|
||||
# #
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:${IMAGE_TAG:-java8}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
####################################################################
|
||||
# FORGE_GENERIC_PACK #
|
||||
# #
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
# FTBA support is only available in non-Alpine images
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
####################################################################
|
||||
# FORGE GENERIC_PACK #
|
||||
# #
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:${IMAGE_TAG:-latest}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:java8
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
minecraft:
|
||||
image: itzg/minecraft-server
|
||||
volumes:
|
||||
- data:/data
|
||||
- ./data:/data
|
||||
- ./mods:/mods
|
||||
ports:
|
||||
- "25565:25565"
|
||||
@@ -12,10 +10,5 @@ services:
|
||||
EULA: "true"
|
||||
TYPE: "FORGE"
|
||||
VERSION: "1.19.2"
|
||||
DEBUG: "true"
|
||||
SETUP_ONLY: "true"
|
||||
tty: True
|
||||
stdin_open: True
|
||||
|
||||
volumes:
|
||||
data: {}
|
||||
tty: true
|
||||
stdin_open: true
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
version: '3.8'
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mc:
|
||||
# build: .
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
minecraft:
|
||||
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:java8
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
version: '3.8'
|
||||
# Forge with Sponge API support. THIS REQUIRES DOWNLOADING SPONGEFORGE.
|
||||
# Place the SpongeForge jar file in /data/mods. Other Forge mods go here as well.
|
||||
# Place Sponge mods in /data/mods/plugins. Yes, this is a directory inside the Forge mod directory. Do NOT use /data/plugins.
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
version: "3"
|
||||
services:
|
||||
tailscale-client:
|
||||
image: tailscale/tailscale:latest
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
40
examples/lazymc/docker_compose.yml
Normal file
40
examples/lazymc/docker_compose.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
services:
|
||||
lazymc:
|
||||
container_name: lazymc
|
||||
image: ghcr.io/joesturge/lazymc-docker-proxy:latest
|
||||
environment:
|
||||
# Point to the service name of the Minecraft server
|
||||
SERVER_ADDRESS: mc:25565
|
||||
# Required to find the container to manage it
|
||||
LAZYMC_GROUP: mc
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
# you should mount the minecraft server dir under /server, using read only.
|
||||
- data:/server:ro
|
||||
# you need to supply the docker socket, so that the container can run docker command
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
ports:
|
||||
# lazymc-docker-proxy acts as a proxy, so there is
|
||||
# no need to expose the server port on the Minecraft container
|
||||
- "25565:25565"
|
||||
|
||||
# Standard Docker Minecraft server, also works with other server types
|
||||
mc:
|
||||
image: itzg/minecraft-server:java21
|
||||
container_name: minecraft-server
|
||||
# We need to add a label here so that lazymc-docker-proxy knows which
|
||||
# container to manage
|
||||
labels:
|
||||
- lazymc.group=mc
|
||||
tty: true
|
||||
stdin_open: true
|
||||
# This container should be managed solely by the lazymc container
|
||||
# so set restart to no, or else the container will start again...
|
||||
restart: no
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
volumes:
|
||||
- data:/data
|
||||
|
||||
volumes:
|
||||
data:
|
||||
@@ -1,4 +1,3 @@
|
||||
version: "3"
|
||||
services:
|
||||
lazytainer:
|
||||
image: ghcr.io/vmorganp/lazytainer:master
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb:10
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
proxy:
|
||||
image: itzg/bungeecord
|
||||
image: itzg/mc-proxy
|
||||
environment:
|
||||
TYPE: WATERFALL
|
||||
ports:
|
||||
@@ -12,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:
|
||||
|
||||
12
examples/multiline-motd/docker-compose.yml
Normal file
12
examples/multiline-motd/docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
environment:
|
||||
EULA: true
|
||||
MOTD: |
|
||||
line one
|
||||
line two
|
||||
# or
|
||||
# MOTD: "line one\nline two"
|
||||
ports:
|
||||
- "25565:25565"
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.7'
|
||||
|
||||
services:
|
||||
mc:
|
||||
build: .
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:java8-multiarch
|
||||
|
||||
18
examples/prominence2/docker-compose.yml
Normal file
18
examples/prominence2/docker-compose.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
ports:
|
||||
- "25565:25565"
|
||||
environment:
|
||||
EULA: "true"
|
||||
MOD_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/prominence-2-rpg
|
||||
CF_FILENAME_MATCHER: "2.8.7"
|
||||
MEMORY: 4G
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
|
||||
volumes:
|
||||
mc-data: {}
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
33
examples/rad2/compose.yaml
Normal file
33
examples/rad2/compose.yaml
Normal file
@@ -0,0 +1,33 @@
|
||||
# This runs the most recent version of Roguelike Adventures and Dungeons 2. Version 1.11 as of writing.
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:java8
|
||||
ports:
|
||||
- "25565:25565"
|
||||
environment:
|
||||
EULA: "true"
|
||||
MOD_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/roguelike-adventures-and-dungeons-2
|
||||
# Optional: select a specific version/file
|
||||
#CF_FILENAME_MATCHER: "0.2.34"
|
||||
CF_EXCLUDE_MODS: |
|
||||
controlling
|
||||
craftpresence
|
||||
creative-core
|
||||
default-options
|
||||
equipment-compare
|
||||
item-borders
|
||||
itemphysic-lite
|
||||
konkrete
|
||||
oauth
|
||||
sound-filters
|
||||
toast-control
|
||||
CF_FORCE_SYNCHRONIZE: "true"
|
||||
MEMORY: 4G
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
|
||||
volumes:
|
||||
mc-data: {}
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:java8-multiarch
|
||||
|
||||
21
examples/simple-voice-chat/fabric-compose.yaml
Normal file
21
examples/simple-voice-chat/fabric-compose.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
tty: true
|
||||
stdin_open: true
|
||||
ports:
|
||||
# Game port
|
||||
- "25565:25565/tcp"
|
||||
# Voice chat port
|
||||
- "24454:24454/udp"
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
TYPE: "FABRIC"
|
||||
VERSION: "1.21.1"
|
||||
# This will select the latest version of simple voice chat for 1.21.1.
|
||||
# You can specify a version by appending :versionID (e.g. simple-voice-chat:anabvqRL)
|
||||
MODRINTH_PROJECTS: "simple-voice-chat"
|
||||
MEMORY: 8G
|
||||
volumes:
|
||||
# attach the relative directory 'data' to the container's /data path
|
||||
- ./data:/data
|
||||
21
examples/simple-voice-chat/neoforge-compose.yaml
Normal file
21
examples/simple-voice-chat/neoforge-compose.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
tty: true
|
||||
stdin_open: true
|
||||
ports:
|
||||
# Game port
|
||||
- "25565:25565/tcp"
|
||||
# Voice chat port
|
||||
- "24454:24454/udp"
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
TYPE: "NEOFORGE"
|
||||
VERSION: "1.21.1"
|
||||
# This will select the latest version of simple voice chat for 1.21.1.
|
||||
# You can specify a version by appending :versionID (e.g. simple-voice-chat:anabvqRL)
|
||||
MODRINTH_PROJECTS: "simple-voice-chat"
|
||||
MEMORY: 8G
|
||||
volumes:
|
||||
# attach the relative directory 'data' to the container's /data path
|
||||
- ./data:/data
|
||||
21
examples/simple-voice-chat/paper-compose.yaml
Normal file
21
examples/simple-voice-chat/paper-compose.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
tty: true
|
||||
stdin_open: true
|
||||
ports:
|
||||
# Game port
|
||||
- "25565:25565/tcp"
|
||||
# Voice chat port
|
||||
- "24454:24454/udp"
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
TYPE: "PAPER"
|
||||
VERSION: "1.21.1"
|
||||
# This will select the latest version of simple voice chat for 1.21.1.
|
||||
# You can specify a version by appending :versionID (e.g. simple-voice-chat:anabvqRL)
|
||||
MODRINTH_PROJECTS: "simple-voice-chat"
|
||||
MEMORY: 8G
|
||||
volumes:
|
||||
# attach the relative directory 'data' to the container's /data path
|
||||
- ./data:/data
|
||||
@@ -1,11 +1,8 @@
|
||||
# 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/
|
||||
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
@@ -15,8 +12,6 @@ services:
|
||||
EULA: "TRUE"
|
||||
TYPE: PAPER
|
||||
SPIGET_RESOURCES: 34315,3836
|
||||
REMOVE_OLD_MODS: true
|
||||
volumes:
|
||||
- data:/data
|
||||
|
||||
volumes:
|
||||
data: {}
|
||||
- ./data:/data
|
||||
@@ -1,5 +1,3 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:java8-multiarch
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.3"
|
||||
|
||||
services:
|
||||
vanillatweaks_file:
|
||||
restart: "no"
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
@@ -18,10 +16,6 @@ services:
|
||||
ENABLE_COMMAND_BLOCK: true
|
||||
DIFFICULTY: hard
|
||||
volumes:
|
||||
# Need to place non-distributable mods in ./downloads/mods
|
||||
# As of Update-10.0.0
|
||||
# - Neon Craft 2 v2.2: https://www.curseforge.com/minecraft/mc-mods/neon-craft-2-mod/files/3726051
|
||||
- ./downloads:/downloads
|
||||
- mc-data:/data
|
||||
|
||||
volumes:
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# shellcheck source=../scripts/start-utils
|
||||
. "${SCRIPTS:-/}start-utils"
|
||||
current_uptime() {
|
||||
awk '{print $1}' /proc/uptime | cut -d . -f 1
|
||||
}
|
||||
@@ -16,14 +18,20 @@ rcon_client_exists() {
|
||||
[[ -n "$(ps -ax -o comm | grep 'rcon-cli')" ]]
|
||||
}
|
||||
|
||||
use_proxy() {
|
||||
if isTrue "$USES_PROXY_PROTOCOL"; then
|
||||
echo "--use-proxy"
|
||||
fi
|
||||
}
|
||||
|
||||
mc_server_listening() {
|
||||
mc-monitor status --host localhost --port "$SERVER_PORT" --timeout 10s >& /dev/null
|
||||
mc-monitor status $(use_proxy) --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 java_running; then
|
||||
if ! connections=$(mc-monitor status $(use_proxy) --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
|
||||
|
||||
@@ -1,30 +1,72 @@
|
||||
{
|
||||
"globalExcludes": [
|
||||
"ambience-music-mod",
|
||||
"ambientsounds",
|
||||
"appleskin",
|
||||
"armor-chroma",
|
||||
"armor-toughness-bar",
|
||||
"auudio-forge",
|
||||
"beehivetooltips",
|
||||
"better-advancements",
|
||||
"better-foliage",
|
||||
"better-placement",
|
||||
"better-sprinting",
|
||||
"better-third-person",
|
||||
"better-tips-nbt-tag",
|
||||
"betterf3",
|
||||
"betterfps",
|
||||
"biomeinfo",
|
||||
"block-drops-jei-addon",
|
||||
"blur-forge",
|
||||
"cartography",
|
||||
"cherished-worlds",
|
||||
"chunk-animator",
|
||||
"clickable-advancements",
|
||||
"configured",
|
||||
"controlling",
|
||||
"ctm",
|
||||
"custom-main-menu",
|
||||
"defensive-measures",
|
||||
"ding",
|
||||
"drippy-loading-screen",
|
||||
"dynamic-surroundings",
|
||||
"dynamiclights-reforged",
|
||||
"easiervillagertrading",
|
||||
"effective-forge",
|
||||
"embeddium",
|
||||
"embeddium-extension",
|
||||
"embeddium-extras",
|
||||
"enchantment-descriptions",
|
||||
"enhancedvisuals",
|
||||
"entity-collision-fps-fix",
|
||||
"entity-texture-features-fabric",
|
||||
"entityculling",
|
||||
"extreme-sound-muffler",
|
||||
"ezzoom",
|
||||
"fading-night-vision",
|
||||
"falling-leaves-forge",
|
||||
"fancymenu",
|
||||
"faster-ladder-climbing",
|
||||
"foamfix-optimization-mod",
|
||||
"fps-reducer",
|
||||
"free-cam",
|
||||
"ftb-backups-2",
|
||||
"fullscreen-windowed-borderless-for-minecraft",
|
||||
"hwyla",
|
||||
"ignitioncoil",
|
||||
"inmisaddon",
|
||||
"irisshaders",
|
||||
"iris-flywheel-compat",
|
||||
"irisshaders",
|
||||
"item-obliterator",
|
||||
"itemphysic-lite",
|
||||
"itemzoom",
|
||||
"just-enough-harvestcraft",
|
||||
"just-enough-resources-jer",
|
||||
"just-zoom",
|
||||
"konkrete",
|
||||
"legendary-tooltips",
|
||||
"loot-capacitor-tooltips",
|
||||
"lootbeams",
|
||||
"magnesium-extras",
|
||||
"menumobs",
|
||||
"minecraft-rich-presence",
|
||||
@@ -32,6 +74,7 @@
|
||||
"mouse-tweaks",
|
||||
"neat",
|
||||
"nekos-enchanted-books",
|
||||
"no-nv-flash",
|
||||
"no-recipe-book",
|
||||
"not-enough-animations",
|
||||
"oculus",
|
||||
@@ -39,16 +82,38 @@
|
||||
"overloaded-armor-bar",
|
||||
"packmodemenu",
|
||||
"reauth",
|
||||
"reblured",
|
||||
"reforgium",
|
||||
"resource-reloader",
|
||||
"rubidium",
|
||||
"rubidium-extra",
|
||||
"ryoamiclights",
|
||||
"schematica",
|
||||
"seamless-loading-screen",
|
||||
"seamless-loading-screen-forge",
|
||||
"searchables",
|
||||
"shulkerboxviewer",
|
||||
"skin-layers-3d",
|
||||
"smart-hud",
|
||||
"smooth-font",
|
||||
"smoothwater",
|
||||
"sodium",
|
||||
"sodium-rubidium-occlusion-culling-fix",
|
||||
"sound-filters",
|
||||
"sound-physics-remastered",
|
||||
"stellar-sky",
|
||||
"swingthroughgrass",
|
||||
"textrues-embeddium-options",
|
||||
"textrues-rubidium-options",
|
||||
"thaumic-jei",
|
||||
"tips",
|
||||
"torohealth-damage-indicators",
|
||||
"waila-harvestability"
|
||||
"true-darkness",
|
||||
"ungrab-mouse-mod",
|
||||
"vanillafix",
|
||||
"visuality",
|
||||
"waila-harvestability",
|
||||
"zume"
|
||||
],
|
||||
"modpacks": {
|
||||
"all-of-fabric-6": {
|
||||
|
||||
80
files/modrinth-exclude-include.json
Normal file
80
files/modrinth-exclude-include.json
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"globalExcludes": [
|
||||
"3dskinlayers",
|
||||
"ae2-emi-crafting",
|
||||
"AmbientSounds",
|
||||
"amecs",
|
||||
"Animation_Overhaul",
|
||||
"appleskin",
|
||||
"auudio",
|
||||
"axolotlbuckets",
|
||||
"BadOptimizations",
|
||||
"BetterAdvancements",
|
||||
"betterbeds",
|
||||
"BetterThirdPerson",
|
||||
"BHMenu",
|
||||
"blur",
|
||||
"Boat-Item-View",
|
||||
"bobby",
|
||||
"cat_jam",
|
||||
"chat_heads",
|
||||
"chatanimation",
|
||||
"cherishedworlds",
|
||||
"citresewn",
|
||||
"clickadv",
|
||||
"connector",
|
||||
"DisableCustomWorldsAdvice",
|
||||
"drippyloadingscreen",
|
||||
"eating-animation",
|
||||
"emiffect",
|
||||
"emitrades",
|
||||
"entity_model_features",
|
||||
"entity_texture_features",
|
||||
"entityculling",
|
||||
"euphoriapatcher",
|
||||
"fallingleaves",
|
||||
"fancymenu",
|
||||
"fast-ip-ping",
|
||||
"FauxCustomEntityData",
|
||||
"GeckoLibIrisCompat",
|
||||
"gpumemleakfix",
|
||||
"Highlighter",
|
||||
"ImmediatelyFast",
|
||||
"indium",
|
||||
"iris",
|
||||
"iris-flywheel",
|
||||
"ItemBorders",
|
||||
"ItemLocks",
|
||||
"justzoom",
|
||||
"language-reload",
|
||||
"lazy-language-loader",
|
||||
"LegendaryTooltips",
|
||||
"loadmyresources",
|
||||
"lootbeams",
|
||||
"MindfulDarkness",
|
||||
"MouseTweaks",
|
||||
"nicer-skies",
|
||||
"notenoughanimations",
|
||||
"oculus",
|
||||
"OverflowingBars",
|
||||
"PickUpNotifier",
|
||||
"PresenceFootsteps",
|
||||
"Prism",
|
||||
"reeses_sodium_options",
|
||||
"ResourcePackOverrides",
|
||||
"ryoamiclights",
|
||||
"Searchables",
|
||||
"seasonhud",
|
||||
"ShoulderSurfing",
|
||||
"skinlayers3d",
|
||||
"sodium",
|
||||
"sorted_enchantments",
|
||||
"visuality",
|
||||
"VR-Combat",
|
||||
"YeetusExperimentus",
|
||||
"yungsmenutweaks",
|
||||
"Zoomify"
|
||||
],
|
||||
"globalForceIncludes": [],
|
||||
"modpacks": {}
|
||||
}
|
||||
@@ -1,58 +1,66 @@
|
||||
{
|
||||
"motd": {"env": "MOTD"},
|
||||
"gamemode": {"env": "MODE"},
|
||||
"difficulty": {"env": "DIFFICULTY"},
|
||||
"white-list": {"env": "WHITELIST_PROP"},
|
||||
"enforce-whitelist": {"env": "ENFORCE_WHITELIST"},
|
||||
"level-type": {"env": "LEVEL_TYPE"},
|
||||
"server-name": {"env": "SERVER_NAME"},
|
||||
"server-ip": {"env": "SERVER_IP"},
|
||||
"server-port": {"env": "SERVER_PORT"},
|
||||
"allow-flight": {"env": "ALLOW_FLIGHT"},
|
||||
"allow-nether": {"env": "ALLOW_NETHER"},
|
||||
"bug-report-link": {"env": "BUG_REPORT_LINK"},
|
||||
"announce-player-achievements": {"env": "ANNOUNCE_PLAYER_ACHIEVEMENTS"},
|
||||
"broadcast-console-to-ops": {"env": "BROADCAST_CONSOLE_TO_OPS"},
|
||||
"broadcast-rcon-to-ops": {"env": "BROADCAST_RCON_TO_OPS"},
|
||||
"difficulty": {"env": "DIFFICULTY"},
|
||||
"enable-command-block": {"env": "ENABLE_COMMAND_BLOCK"},
|
||||
"enable-jmx-monitoring": {"env": "ENABLE_JMX"},
|
||||
"enable-query": {"env": "ENABLE_QUERY"},
|
||||
"enable-rcon": {"env": "ENABLE_RCON"},
|
||||
"enable-status": {"env": "ENABLE_STATUS"},
|
||||
"enforce-secure-profile": {"env": "ENFORCE_SECURE_PROFILE"},
|
||||
"enforce-whitelist": {"env": "ENFORCE_WHITELIST"},
|
||||
"entity-broadcast-range-percentage": {"env": "ENTITY_BROADCAST_RANGE_PERCENTAGE"},
|
||||
"force-gamemode": {"env": "FORCE_GAMEMODE"},
|
||||
"function-permission-level": {"env": "FUNCTION_PERMISSION_LEVEL"},
|
||||
"gamemode": {"env": "MODE"},
|
||||
"generate-structures": {"env": "GENERATE_STRUCTURES"},
|
||||
"generator-settings": {"env": "GENERATOR_SETTINGS"},
|
||||
"hardcore": {"env": "HARDCORE"},
|
||||
"hide-online-players": {"env": "HIDE_ONLINE_PLAYERS"},
|
||||
"initial-disabled-packs": {"env": "INITIAL_DISABLED_PACKS"},
|
||||
"initial-enabled-packs": {"env": "INITIAL_ENABLED_PACKS"},
|
||||
"level-name": {"env": "LEVEL"},
|
||||
"level-seed": {"env": "SEED"},
|
||||
"level-type": {"env": "LEVEL_TYPE"},
|
||||
"log-ips": {"env": "LOG_IPS"},
|
||||
"max-build-height": {"env": "MAX_BUILD_HEIGHT"},
|
||||
"max-chained-neighbor-updates": {"env": "MAX_CHAINED_NEIGHBOR_UPDATES"},
|
||||
"max-players": {"env": "MAX_PLAYERS"},
|
||||
"max-tick-time": {"env": "MAX_TICK_TIME"},
|
||||
"max-world-size": {"env": "MAX_WORLD_SIZE"},
|
||||
"motd": {"env": "MOTD"},
|
||||
"network-compression-threshold": {"env": "NETWORK_COMPRESSION_THRESHOLD"},
|
||||
"online-mode": {"env": "ONLINE_MODE"},
|
||||
"op-permission-level": {"env": "OP_PERMISSION_LEVEL"},
|
||||
"pause-when-empty-seconds": {"env": "PAUSE_WHEN_EMPTY_SECONDS"},
|
||||
"player-idle-timeout": {"env": "PLAYER_IDLE_TIMEOUT"},
|
||||
"prevent-proxy-connections": {"env": "PREVENT_PROXY_CONNECTIONS"},
|
||||
"previews-chat": {"env": "PREVIEWS_CHAT"},
|
||||
"pvp": {"env": "PVP"},
|
||||
"query.port": {"env": "QUERY_PORT"},
|
||||
"rcon.password": {"env": "RCON_PASSWORD"},
|
||||
"rcon.port": {"env": "RCON_PORT"},
|
||||
"region-file-compression": {"env": "REGION_FILE_COMPRESSION"},
|
||||
"resource-pack": {"env": "RESOURCE_PACK"},
|
||||
"resource-pack-id": {"env": "RESOURCE_PACK_ID"},
|
||||
"resource-pack-prompt": {"env": "RESOURCE_PACK_PROMPT"},
|
||||
"resource-pack-sha1": {"env": "RESOURCE_PACK_SHA1"},
|
||||
"require-resource-pack": {"env": "RESOURCE_PACK_ENFORCE"},
|
||||
"server-ip": {"env": "SERVER_IP"},
|
||||
"server-name": {"env": "SERVER_NAME"},
|
||||
"server-port": {"env": "SERVER_PORT"},
|
||||
"simulation-distance": {"env": "SIMULATION_DISTANCE"},
|
||||
"snooper-enabled": {"env": "SNOOPER_ENABLED"},
|
||||
"spawn-animals": {"env": "SPAWN_ANIMALS"},
|
||||
"spawn-monsters": {"env": "SPAWN_MONSTERS"},
|
||||
"spawn-npcs": {"env": "SPAWN_NPCS"},
|
||||
"spawn-protection": {"env": "SPAWN_PROTECTION"},
|
||||
"generate-structures": {"env": "GENERATE_STRUCTURES"},
|
||||
"view-distance": {"env": "VIEW_DISTANCE"},
|
||||
"hardcore": {"env": "HARDCORE"},
|
||||
"snooper-enabled": {"env": "SNOOPER_ENABLED"},
|
||||
"max-build-height": {"env": "MAX_BUILD_HEIGHT"},
|
||||
"force-gamemode": {"env": "FORCE_GAMEMODE"},
|
||||
"max-tick-time": {"env": "MAX_TICK_TIME"},
|
||||
"enable-query": {"env": "ENABLE_QUERY"},
|
||||
"query.port": {"env": "QUERY_PORT"},
|
||||
"enable-rcon": {"env": "ENABLE_RCON"},
|
||||
"rcon.password": {"env": "RCON_PASSWORD"},
|
||||
"rcon.port": {"env": "RCON_PORT"},
|
||||
"max-players": {"env": "MAX_PLAYERS"},
|
||||
"max-world-size": {"env": "MAX_WORLD_SIZE"},
|
||||
"level-name": {"env": "LEVEL"},
|
||||
"level-seed": {"env": "SEED"},
|
||||
"pvp": {"env": "PVP"},
|
||||
"generator-settings": {"env": "GENERATOR_SETTINGS"},
|
||||
"online-mode": {"env": "ONLINE_MODE"},
|
||||
"allow-flight": {"env": "ALLOW_FLIGHT"},
|
||||
"resource-pack": {"env": "RESOURCE_PACK"},
|
||||
"resource-pack-sha1": {"env": "RESOURCE_PACK_SHA1"},
|
||||
"require-resource-pack": {"env": "RESOURCE_PACK_ENFORCE"},
|
||||
"player-idle-timeout": {"env": "PLAYER_IDLE_TIMEOUT"},
|
||||
"broadcast-console-to-ops": {"env": "BROADCAST_CONSOLE_TO_OPS"},
|
||||
"broadcast-rcon-to-ops": {"env": "BROADCAST_RCON_TO_OPS"},
|
||||
"enable-jmx-monitoring": {"env": "ENABLE_JMX"},
|
||||
"sync-chunk-writes": {"env": "SYNC_CHUNK_WRITES"},
|
||||
"enable-status": {"env": "ENABLE_STATUS"},
|
||||
"entity-broadcast-range-percentage": {"env": "ENTITY_BROADCAST_RANGE_PERCENTAGE"},
|
||||
"function-permission-level": {"env": "FUNCTION_PERMISSION_LEVEL"},
|
||||
"network-compression-threshold": {"env": "NETWORK_COMPRESSION_THRESHOLD"},
|
||||
"op-permission-level": {"env": "OP_PERMISSION_LEVEL"},
|
||||
"prevent-proxy-connections": {"env": "PREVENT_PROXY_CONNECTIONS"},
|
||||
"use-native-transport": {"env": "USE_NATIVE_TRANSPORT"},
|
||||
"simulation-distance": {"env": "SIMULATION_DISTANCE"},
|
||||
"previews-chat": {"env": "PREVIEWS_CHAT"},
|
||||
"enforce-secure-profile": {"env": "ENFORCE_SECURE_PROFILE"},
|
||||
"initial-enabled-packs": {"env": "INITIAL_ENABLED_PACKS"},
|
||||
"initial-disabled-packs": {"env": "INITIAL_DISABLED_PACKS"}
|
||||
"view-distance": {"env": "VIEW_DISTANCE"},
|
||||
"white-list": {"env": "WHITELIST_PROP"}
|
||||
}
|
||||
@@ -13,10 +13,24 @@ configMapGenerator:
|
||||
- name: mc
|
||||
envs:
|
||||
- mc.env
|
||||
patches:
|
||||
# Example of using a patch to set external service name for mc-router to pick up
|
||||
- path: set-external-servername.yml
|
||||
```
|
||||
|
||||
### mc.env
|
||||
```
|
||||
EULA=true
|
||||
TYPE=FORGE
|
||||
```
|
||||
|
||||
###
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: mc
|
||||
annotations:
|
||||
mc-router.itzg.me/externalServerName: forge.example.com
|
||||
```
|
||||
21
mkdocs.yml
21
mkdocs.yml
@@ -15,6 +15,27 @@ theme:
|
||||
- navigation.top
|
||||
- navigation.indexes
|
||||
locale: en
|
||||
palette:
|
||||
|
||||
# Palette toggle for automatic mode
|
||||
- media: "(prefers-color-scheme)"
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: Switch to light mode
|
||||
|
||||
# Palette toggle for light mode
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
toggle:
|
||||
icon: material/brightness-7
|
||||
name: Switch to dark mode
|
||||
|
||||
# Palette toggle for dark mode
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
toggle:
|
||||
icon: material/brightness-4
|
||||
name: Switch to system preference
|
||||
|
||||
highlightjs: true
|
||||
hljs_languages:
|
||||
|
||||
BIN
notes/Hairpin routing.drawio.png
Normal file
BIN
notes/Hairpin routing.drawio.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
@@ -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
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ set -eu
|
||||
: "${CF_FORCE_SYNCHRONIZE:=false}"
|
||||
: "${CF_FORCE_REINSTALL_MODLOADER:=false}"
|
||||
: "${CF_IGNORE_MISSING_FILES:=}"
|
||||
: "${CF_EXCLUDE_INCLUDE_FILE=https://raw.githubusercontent.com/itzg/docker-minecraft-server/master/files/cf-exclude-include.json}"
|
||||
: "${CF_EXCLUDE_INCLUDE_FILE=/image/cf-exclude-include.json}"
|
||||
: "${CF_EXCLUDE_MODS:=}"
|
||||
: "${CF_FORCE_INCLUDE_MODS:=}"
|
||||
: "${CF_SET_LEVEL_FROM:=}" # --set-level-from
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
: "${FOLIA_CHANNEL:=experimental}"
|
||||
|
||||
# shellcheck source=start-utils
|
||||
. "${SCRIPTS:-/}start-utils"
|
||||
set -o pipefail
|
||||
handleDebugMode
|
||||
|
||||
if [[ $FOLIA_DOWNLOAD_URL ]]; then
|
||||
export PAPER_DOWNLOAD_URL="$FOLIA_DOWNLOAD_URL"
|
||||
fi
|
||||
@@ -8,4 +15,7 @@ if [[ $FOLIABUILD ]]; then
|
||||
export PAPERBUILD="$FOLIABUILD"
|
||||
fi
|
||||
|
||||
PAPER_PROJECT="folia" PAPER_NAME="FoliaMC" exec "${SCRIPTS:-/}start-deployPaper" "$@"
|
||||
PAPER_PROJECT="folia" \
|
||||
PAPER_NAME="FoliaMC" \
|
||||
PAPER_CHANNEL="${FOLIA_CHANNEL}" \
|
||||
exec "${SCRIPTS:-/}start-deployPaper" "$@"
|
||||
|
||||
@@ -9,10 +9,11 @@ resultsFile=/data/.install-modrinth.env
|
||||
: "${MODRINTH_MODPACK:=${MODRINTH_PROJECT:-}}"
|
||||
: "${MODRINTH_LOADER:=}"
|
||||
: "${MODRINTH_VERSION:=${MODRINTH_VERSION_ID:-}}"
|
||||
: "${MODRINTH_IGNORE_MISSING_FILES:=}"
|
||||
: "${MODRINTH_EXCLUDE_FILES:=}"
|
||||
: "${MODRINTH_FORCE_INCLUDE_FILES:=}"
|
||||
: "${MODRINTH_OVERRIDES_EXCLUSIONS:=}"
|
||||
: "${MODRINTH_IGNORE_MISSING_FILES=}"
|
||||
: "${MODRINTH_EXCLUDE_FILES=}"
|
||||
: "${MODRINTH_FORCE_INCLUDE_FILES=}"
|
||||
: "${MODRINTH_OVERRIDES_EXCLUSIONS=}"
|
||||
: "${MODRINTH_DEFAULT_EXCLUDE_INCLUDES=/image/modrinth-exclude-include.json}"
|
||||
|
||||
if [[ ! $MODRINTH_MODPACK ]]; then
|
||||
log "ERROR: MODRINTH_MODPACK must be set when using TYPE/MOD_PLATFORM of MODRINTH"
|
||||
@@ -60,6 +61,7 @@ setArg --default-version-type MODRINTH_DEFAULT_VERSION_TYPE
|
||||
setArg --exclude-files MODRINTH_EXCLUDE_FILES
|
||||
setArg --force-include-files MODRINTH_FORCE_INCLUDE_FILES
|
||||
setArg --overrides-exclusions MODRINTH_OVERRIDES_EXCLUSIONS
|
||||
setArg --default-exclude-includes MODRINTH_DEFAULT_EXCLUDE_INCLUDES
|
||||
|
||||
if ! mc-image-helper install-modrinth-modpack "${args[@]}"; then
|
||||
log "ERROR failed to install Modrinth modpack"
|
||||
|
||||
@@ -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"
|
||||
@@ -49,6 +52,12 @@ else
|
||||
|
||||
fi
|
||||
|
||||
# Download default configs to allow for consistent patching
|
||||
for c in paper-global.yml paper-world-defaults.yml spigot.yml; do
|
||||
DOWNLOAD_DEFAULT_CONFIGS+=",${PAPER_CONFIG_DEFAULTS_REPO}/${VERSION}/$c"
|
||||
done
|
||||
export DOWNLOAD_DEFAULT_CONFIGS
|
||||
|
||||
# Normalize on Spigot for downstream operations
|
||||
export FAMILY=SPIGOT
|
||||
|
||||
|
||||
@@ -64,6 +64,9 @@ patchLog4jConfig() {
|
||||
canUseRollingLogs=false
|
||||
}
|
||||
|
||||
# Temporarily disable debugging output
|
||||
oldState=$(shopt -po xtrace || true)
|
||||
shopt -u -o xtrace
|
||||
# Patch Log4j remote code execution vulnerability
|
||||
# See https://www.minecraft.net/en-us/article/important-message--security-vulnerability-java-edition
|
||||
if versionLessThan 1.7; then
|
||||
@@ -80,6 +83,7 @@ elif isType PURPUR && versionLessThan 1.18.1; then
|
||||
elif versionLessThan 1.18.1; then
|
||||
useFallbackJvmFlag=true
|
||||
fi
|
||||
eval "$oldState"
|
||||
|
||||
if ${useFallbackJvmFlag}; then
|
||||
JVM_OPTS="-Dlog4j2.formatMsgNoLookups=true ${JVM_OPTS}"
|
||||
@@ -227,6 +231,12 @@ MC_HEALTH_EXTRA_ARGS=(
|
||||
--use-server-list-ping
|
||||
)
|
||||
" > /data/.mc-health.env
|
||||
elif isTrue "$USES_PROXY_PROTOCOL"; then
|
||||
echo "
|
||||
MC_HEALTH_EXTRA_ARGS=(
|
||||
--use-proxy
|
||||
)
|
||||
" > /data/.mc-health.env
|
||||
else
|
||||
rm -f /data/.mc-health.env
|
||||
fi
|
||||
@@ -285,6 +295,11 @@ EOF
|
||||
if isTrue "${EXEC_DIRECTLY:-false}"; then
|
||||
"${finalArgs[@]}"
|
||||
else
|
||||
if [ -f "${FTB_DIR}/variables.txt" ]; then
|
||||
JVM_ARGS="${JVM_XX_OPTS} ${JVM_OPTS} $expandedDOpts"
|
||||
JVM_ARGS=${JVM_ARGS//$'\n'/}
|
||||
sed -i "s~JAVA_ARGS=.*~JAVA_ARGS=\"${JVM_ARGS}\"~" "${FTB_DIR}/variables.txt"
|
||||
fi
|
||||
exec mc-server-runner "${mcServerRunnerArgs[@]}" "${finalArgs[@]}"
|
||||
fi
|
||||
elif [[ $SERVER =~ run.sh ]]; then
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
. "${SCRIPTS:-/}start-utils"
|
||||
|
||||
set -e
|
||||
handleDebugMode
|
||||
|
||||
: "${REPLACE_ENV_IN_PLACE:=${REPLACE_ENV_VARIABLES:-false}}"
|
||||
: "${REPLACE_ENV_PATHS:=/data}"
|
||||
@@ -13,6 +14,7 @@ set -e
|
||||
: "${REPLACE_ENV_VARIABLES_EXCLUDE_PATHS:=}"
|
||||
: "${PATCH_DEFINITIONS:=}"
|
||||
: "${DEBUG:=false}"
|
||||
: "${DOWNLOAD_DEFAULT_CONFIGS:=}"
|
||||
|
||||
if isTrue "${REPLACE_ENV_IN_PLACE}"; then
|
||||
log "Replacing env variables in ${REPLACE_ENV_PATHS} that match the prefix '$REPLACE_ENV_VARIABLE_PREFIX' ..."
|
||||
@@ -25,6 +27,16 @@ if isTrue "${REPLACE_ENV_IN_PLACE}"; then
|
||||
"${REPLACE_ENV_PATHS[@]}"
|
||||
fi
|
||||
|
||||
if [[ $DOWNLOAD_DEFAULT_CONFIGS ]]; then
|
||||
log "Downloading default configs, if needed"
|
||||
if ! mc-image-helper mcopy \
|
||||
--to /data/config \
|
||||
--skip-existing --skip-up-to-date=false \
|
||||
"$DOWNLOAD_DEFAULT_CONFIGS" 2> /dev/null; then
|
||||
log "WARN: one or more default config files were not available from $DOWNLOAD_DEFAULT_CONFIGS"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ${PATCH_DEFINITIONS} ]]; then
|
||||
log "Applying patch definitions from ${PATCH_DEFINITIONS}"
|
||||
mc-image-helper patch \
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user