Compare commits

...

68 Commits

Author SHA1 Message Date
Edwin 820d401911
Enhance CurseForge server packs that use variables.txt (#2867) 2024-06-01 13:33:35 -05:00
noah1019 20d80bb600
rad2 compose example (#2859) 2024-05-27 18:14:32 -05:00
Geoff Bourne e172b52027
build: add back arm64 into java17/21 alpine multiarch (#2858) 2024-05-27 15:03:32 -05:00
dependabot[bot] 36c92be777
build(deps): bump mkdocs-material from 9.5.23 to 9.5.24 in /docs in the patches group (#2854) 2024-05-27 09:37:22 -05:00
Geoff Bourne e59d5ff13b
build: disable java17-openj9 for now (#2853) 2024-05-26 12:25:33 -05:00
Geoff Bourne ddfb99a1fc
Remove normalizing to uppercase of LEVEL_TYPE (#2852) 2024-05-26 09:53:45 -05:00
Geoff Bourne 1de2d34c64
build: upgrading git-lfs from packagecloud (#2850) 2024-05-26 08:31:52 -05:00
Geoff Bourne 65371be1eb
build: disable java17-openj9 for now (#2849) 2024-05-26 08:31:39 -05:00
Geoff Bourne e6b525a65c
cf: allow for trailing slash on CF modpack page URL (#2848) 2024-05-25 13:02:52 -05:00
Juan Jesús Alejo Sillero ed1c679559
Added a missing quotation mark (#2846) 2024-05-24 20:36:35 -05:00
dependabot[bot] e727602e51
build(deps): bump mkdocs-material from 9.5.22 to 9.5.23 in /docs in the patches group (#2837) 2024-05-23 07:18:51 -05:00
Geoff Bourne 180b6535b3
Fixed internal SPIGOT family mapping (#2839) 2024-05-20 16:33:56 -05:00
dependabot[bot] 3842ac4693
build(deps): bump actions/checkout from 4.1.5 to 4.1.6 in the updates group (#2836) 2024-05-20 08:13:55 -05:00
Geoff Bourne 340284913c
build: upgrading git-lfs from packagecloud (#2835) 2024-05-19 17:27:15 -05:00
Geoff Bourne 07e89bff53
build: upgrade rcon-cli and easy-add (#2831) 2024-05-18 13:54:23 -05:00
Geoff Bourne e1262effef
docs: add compose example of multiline MOTD (#2827) 2024-05-15 16:11:11 -05:00
Geoff Bourne cbcdfdc288
docs: add info about DUMP_SERVER_PROPERTIES (#2826) 2024-05-15 08:50:32 -05:00
dependabot[bot] 120e1c21bf
build(deps): bump mkdocs-material from 9.5.21 to 9.5.22 in /docs in the patches group (#2825)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-14 08:41:17 -05:00
dependabot[bot] 8557749d1d
build(deps): bump actions/checkout from 4.1.4 to 4.1.5 in the updates group (#2824)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-14 08:36:07 -05:00
Geoff Bourne 5c8e2bb0ba
examples: updated bmc4 example (#2822) 2024-05-12 14:06:21 -05:00
MASACR99 f659c56f18
Remove version from docker compose since it's been deprecated (#2816) 2024-05-06 14:35:50 -05:00
dependabot[bot] f06ebae451
build(deps): bump the patches group in /docs with 3 updates (#2815) 2024-05-06 07:29:59 -05:00
Geoff Bourne 7153e1443a
docs: added more detail about autopauase rootless usage (#2814) 2024-05-04 18:41:49 -05:00
dependabot[bot] d6cc10315b
build(deps): bump the patches group in /docs with 2 updates (#2806) 2024-04-30 20:53:51 -05:00
dependabot[bot] e8b46a3bcc
build(deps): bump actions/checkout from 4.1.3 to 4.1.4 in the updates group (#2807) 2024-04-29 07:41:27 -05:00
Geoff Bourne 4eb25f3cbc
paper: restore requirement of version.json metadata (#2802) 2024-04-28 11:29:04 -05:00
Geoff Bourne 234863a026
paper: fall back to VERSION env var when jar missing metadata (#2801) 2024-04-27 16:49:26 -05:00
Geoff Bourne c05b7cfa72
cf-files: correctly handle duplicate file refs (#2800) 2024-04-27 14:59:21 -05:00
Geoff Bourne 2a864f3106
paper: version metadata is optional for custom server jar (#2797) 2024-04-26 19:06:42 -05:00
Geoff Bourne 4e3198cbec
build: pin java17 tests to 1.20.4 (#2796) 2024-04-26 18:53:36 -05:00
Anton Curanz 94c8a86c7c
Apply SKIP_SUDO when starting knockd (#2795) 2024-04-26 16:09:19 -05:00
Geoff Bourne 1d57487766
docs: corrected mention of armv7 for latest/stable (#2793) 2024-04-25 08:22:52 -05:00
dependabot[bot] f23403a31c
build(deps): bump actions/checkout from 4.1.2 to 4.1.3 in the updates group (#2787)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-22 21:11:31 -05:00
dependabot[bot] 7cecfde797
build(deps): bump the patches group in /docs with 3 updates (#2788)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
2024-04-22 21:07:47 -05:00
Geoff Bourne 15a84ec316
docs: clarify the mention of java8 in deprecated section (#2785) 2024-04-20 12:01:27 -05:00
Bailey Allen 38c8399880
Add git-lfs package (#2781) 2024-04-17 08:11:04 -05:00
dependabot[bot] c666cf28f4
build(deps): bump docker/setup-buildx-action from 3.2.0 to 3.3.0 in the updates group (#2769) 2024-04-14 13:54:40 -05:00
Geoff Bourne 7dce58b7f6
docs: add a link to class file version table (#2779) 2024-04-14 13:54:12 -05:00
Geoff Bourne 5b920cca8f
modrinth: fixed force include option (#2778) 2024-04-13 21:35:02 -05:00
Geoff Bourne 09603f4003
modrinth: add option to force include client mods (#2777) 2024-04-13 20:40:06 -05:00
Geoff Bourne 32aa681582
build: upgraded restify and mc-server-runner (#2771) 2024-04-08 20:02:10 -05:00
Rover van der Noort 4f474d38c4
Update cf-exclude-include.json (#2770) 2024-04-08 08:02:46 -05:00
Geoff Bourne 79ad259f1d
cf: use fallback download URL when metadata doesn't provide one (#2767) 2024-04-07 14:01:47 -05:00
Geoff Bourne 4348853e15
build: also remove variant entry for java8-multiarch (#2766) 2024-04-07 11:31:37 -05:00
Geoff Bourne 8f13cd4496
build: java8 is now consistently multi-arch like others and new java8-alpine (#2763) 2024-04-07 10:53:37 -05:00
Geoff Bourne 665ca9c61a
Added support for skript resources via SPIGET_RESOURCES (#2764) 2024-04-06 22:00:50 -05:00
Geoff Bourne cec8027844
docs: fixed typo on java versions page (#2762) 2024-04-06 12:58:20 -05:00
Geoff Bourne e247348c47
build: upgrade mc-monitor to use retry for all errors (#2760) 2024-04-06 12:11:31 -05:00
Geoff Bourne b22c818f0e
Designate java21 as the latest/default image (#2757) 2024-04-04 21:16:48 -05:00
dependabot[bot] 55e7b8bee5
build(deps): bump the patches group in /docs with 1 update (#2750) 2024-04-04 07:26:48 -05:00
Geoff Bourne 00e04fc2d5
Removed write to /var/log/knocked-source during autopause resume (#2749) 2024-03-30 20:22:38 -05:00
Nilon123456789 a46a506a1c
Add Tailscale docker-compose example (#2747)
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
2024-03-29 08:32:18 -05:00
Geoff Bourne 46fb560ed9
Hybrid servers using CURSEFORGE_FILES assume mc-mods for Forge (#2740) 2024-03-27 08:21:07 -05:00
dependabot[bot] f10bb45964
build(deps): bump the updates group with 4 updates (#2729) 2024-03-18 17:12:35 -05:00
dependabot[bot] e556353ebb
build(deps): bump the patches group in /docs with 1 update (#2728) 2024-03-18 07:38:11 -05:00
Geoff Bourne 938b562d21
Successful spigot/bukkit update check caused grep to fail (#2726) 2024-03-17 22:07:34 -05:00
Geoff Bourne 35daf1441a
docs: add warning that GetBukkit is dead (#2723) 2024-03-16 14:46:03 -05:00
Geoff Bourne 75f5647c93
Fallback to existing server file when getbukkit retrieval fails (#2721) 2024-03-16 14:01:21 -05:00
C0D3 M4513R d7512c44a9
Magma Maintained 1.20.1 is archived (#2718) 2024-03-15 09:38:38 -05:00
Robin Brämer 7419a66843
fix: Remove EXTAR_ARGS quotes to allow multiple args (fixes #2715) (#2716) 2024-03-13 08:21:37 -05:00
Robin Brämer eec264c8ca
Pass EXTRA_ARGS to run.sh (fixes #2714) (#2715) 2024-03-13 07:24:56 -05:00
Kaiede 3d2b88effd
Update mc-server-runner to support EC-based SSH key (#2712) 2024-03-12 07:49:21 -05:00
Geoff Bourne 961bc7fdbf
Remove Java 8 warning and 5 second delay (#2711) 2024-03-11 18:51:01 -05:00
dependabot[bot] e33f87f841
build(deps): bump the patches group in /docs with 1 update (#2707) 2024-03-11 09:33:37 -05:00
Geoff Bourne ca352c2355
modrinth: add MODRINTH_OVERRIDES_EXCLUSIONS option (#2703) 2024-03-09 13:44:27 -06:00
dependabot[bot] 01be571535
build(deps): bump mkdocs-autorefs from 0.5.0 to 1.0.1 in /docs (#2693) 2024-03-06 07:51:35 -06:00
dependabot[bot] 51e56a2168
build(deps): bump the patches group in /docs with 3 updates (#2692) 2024-03-04 08:00:18 -06:00
Geoff Bourne fc5f7fa5d5
Use FTB_DIR for log4j2 patched files...hypothetically (#2691) 2024-03-03 16:01:49 -06:00
123 changed files with 505 additions and 355 deletions

View File

@ -11,9 +11,9 @@ body:
Please double check some things first:
1. Do you just have a question about something? If so, asking in the [Q&A Discussions](https://github.com/itzg/docker-minecraft-server/discussions/categories/q-a) or asking on [the Discord server](https://discord.gg/DXfKpjB) would be best.
2. Did you re-pull the newest image using `docker pull`?
3. Is this bug happening after the `[init]` prefixed logs and after the log that says "Starting the Minecraft server"? If so, please report the bug with Mojang or the respective server provider.
4. Are you seeing a performance problem? If so, that is typically outside the scope of the image setup mechanims. Ask a question as above or contact the respective server provider.
2. Did you **re-pull the newest image** and confirmed the issue after that? Run `docker pull <image>` or if using a compose file, it's as easy as running `docker compose pull`. If using Kubernetes, add `imagePullPolicy: Always` to the container.
4. Is this bug happening after the `[init]` prefixed logs and after the log that says "Starting the Minecraft server"? If so, please report the bug with Mojang or the respective server provider.
5. Are you seeing a performance problem? If so, that is typically outside the scope of this image. Ask a question as above or contact the respective server provider.
- type: textarea
id: problem
attributes:

View File

@ -10,6 +10,7 @@ on:
- "*.md"
- "docs/**"
- "examples/**"
- "notes/**"
jobs:
build:
@ -24,16 +25,13 @@ jobs:
- java17
- java17-graalvm
- java17-jdk
- java17-openj9
- java17-alpine
- java8
- java8-graalvm-ce
- java8-multiarch
- java8-openj9
- java8-jdk
- java8-alpine
- java11
- java11-openj9
- java11-jdk
include:
# JAVA 21:
- variant: java21-graalvm
@ -46,45 +44,37 @@ 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
# jammy doesn't work until minecraft updates to https://github.com/netty/netty/issues/12343
baseImage: eclipse-temurin:17-jre-focal
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: latest
mcVersion: 1.20.4
- variant: java17-graalvm
baseImage: container-registry.oracle.com/graalvm/jdk:17-ol8
platforms: linux/amd64,linux/arm64
mcVersion: latest
mcVersion: 1.20.4
- variant: java17-jdk
baseImage: eclipse-temurin:17-focal
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: latest
- variant: java17-openj9
baseImage: ibm-semeru-runtimes:open-17-jre
platforms: linux/amd64,linux/arm64
mcVersion: latest
mcVersion: 1.20.4
- variant: java17-alpine
baseImage: eclipse-temurin:17-jre-alpine
platforms: linux/amd64
mcVersion: latest
mcVersion: 1.20.4
# JAVA 11:
- variant: java11
baseImage: adoptopenjdk:11-jre-hotspot
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.16.5
- variant: java11-jdk
baseImage: adoptopenjdk:11-jdk-hotspot
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.16.5
- variant: java11-openj9
baseImage: ibm-semeru-runtimes:open-11-jre
platforms: linux/amd64,linux/arm64
mcVersion: 1.16.5
# JAVA 8: NOTE: Unable to go past 8u312 because of Forge dependencies
- variant: java8
baseImage: eclipse-temurin:8u312-b07-jre-focal
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.12.2
- variant: java8-alpine
baseImage: openjdk:8-jre-alpine3.9
platforms: linux/amd64
mcVersion: 1.12.2
@ -92,10 +82,6 @@ jobs:
baseImage: ghcr.io/graalvm/graalvm-ce:java8
platforms: linux/amd64
mcVersion: 1.12.2
- variant: java8-multiarch
baseImage: eclipse-temurin:8u312-b07-jre-focal
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.12.2
- variant: java8-jdk
baseImage: eclipse-temurin:8u312-b07-jdk-focal
platforms: linux/amd64,linux/arm64
@ -105,13 +91,13 @@ jobs:
platforms: linux/amd64,linux/arm64
mcVersion: 1.12.2
env:
IMAGE_TO_TEST: ${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}
IMAGE_TO_TEST: "${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}"
HAS_IMAGE_REPO_ACCESS: ${{ secrets.DOCKER_USER != '' && secrets.DOCKER_PASSWORD != '' }}
MAIN_VARIANT: java17
runs-on: ubuntu-20.04
MAIN_VARIANT: java21
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.1.6
with:
# for build-files step
fetch-depth: 0
@ -136,6 +122,8 @@ jobs:
type=raw,value=stable,enable=${{ github.ref_type == 'tag' && matrix.variant == env.MAIN_VARIANT }}
# apply the variant as a moving tag for most recent commit per variant
type=raw,value=${{ matrix.variant }},enable=${{ github.ref_name == github.event.repository.default_branch }}
# for backward compatibility with users referencing java8-multiarch, this will set an extra label on java8
type=raw,value=java8-multiarch,enable=${{ matrix.variant == 'java8' && github.ref_name == github.event.repository.default_branch }}
# NOTE this identifies which variant will be published as "latest", which isn't
# necessarily the newest version of Java
flavor: |
@ -144,13 +132,13 @@ jobs:
org.opencontainers.image.authors=Geoff Bourne <itzgeoff@gmail.com>
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
uses: docker/setup-buildx-action@v3.3.0
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.0.0
- name: Build for test
uses: docker/build-push-action@v5.1.0
uses: docker/build-push-action@v5.3.0
with:
platforms: linux/amd64
tags: ${{ env.IMAGE_TO_TEST }}
@ -173,14 +161,14 @@ jobs:
tests/test.sh
- name: Login to DockerHub
uses: docker/login-action@v3.0.0
uses: docker/login-action@v3.1.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.0.0
uses: docker/login-action@v3.1.0
if: env.HAS_IMAGE_REPO_ACCESS
with:
registry: ghcr.io
@ -188,7 +176,7 @@ jobs:
password: ${{ github.token }}
- name: Build and push
uses: docker/build-push-action@v5.1.0
uses: docker/build-push-action@v5.3.0
if: github.actor == github.repository_owner
with:
platforms: ${{ matrix.platforms }}

View File

@ -6,7 +6,7 @@ on:
jobs:
check:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
permissions:
issues: write
pull-requests: write

View File

@ -7,6 +7,7 @@ on:
- "*.md"
- "docs/**"
- "examples/**"
- "notes/**"
- "docker-compose*.yml"
- "mkdocs.yml"
@ -17,44 +18,44 @@ jobs:
matrix:
variant:
- java21
- java21-alpine
- java17
- java17-alpine
- java8-multiarch
- java8
include:
# JAVA 21:
- variant: java21
baseImage: eclipse-temurin:21-jre
platforms: linux/amd64,linux/arm64
mcVersion: latest
- variant: java21-alpine
baseImage: eclipse-temurin:21-jre-alpine
platforms: linux/amd64,linux/arm64
mcVersion: latest
# JAVA 17:
- variant: java17
# jammy doesn't work until minecraft updates to https://github.com/netty/netty/issues/12343
baseImage: eclipse-temurin:17-jre-focal
platforms: linux/amd64
mcVersion: latest
- variant: java17-alpine
baseImage: eclipse-temurin:17-jre-alpine
platforms: linux/amd64
mcVersion: latest
- variant: java8-multiarch
mcVersion: 1.20.4
- variant: java8
baseImage: eclipse-temurin:8u312-b07-jre-focal
platforms: linux/amd64
mcVersion: 1.12.2
env:
IMAGE_TO_TEST: ${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.1.6
with:
# for build-files step
fetch-depth: 0
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.0.0
uses: docker/setup-buildx-action@v3.3.0
- name: Confirm multi-arch build
uses: docker/build-push-action@v5.1.0
uses: docker/build-push-action@v5.3.0
with:
platforms: ${{ matrix.platforms }}
# ensure latest base image is used
@ -64,7 +65,7 @@ jobs:
cache-from: type=gha,scope=${{ matrix.variant }}
- name: Build for test
uses: docker/build-push-action@v5.1.0
uses: docker/build-push-action@v5.3.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

@ -1,5 +1,4 @@
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
version: 2
build:

View File

@ -1,6 +1,6 @@
# syntax = docker/dockerfile:1.3
ARG BASE_IMAGE=eclipse-temurin:17-jre-focal
ARG BASE_IMAGE=eclipse-temurin:21-jre
FROM ${BASE_IMAGE}
# hook into docker BuildKit --platform support
@ -9,14 +9,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 +23,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.5
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.1
ARG RESTIFY_VERSION=1.7.2
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.6
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.8
ARG MC_MONITOR_VERSION=0.12.11
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.11.1
ARG MC_SERVER_RUNNER_VERSION=1.12.1
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.5
ARG MC_HELPER_VERSION=1.38.15
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

@ -34,3 +34,6 @@ curl -fsSL -o /tmp/knock.tar.gz https://github.com/Metalcape/knock/releases/down
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

View File

@ -18,13 +18,15 @@ enabled=1
EOF
dnf update -y
dnf install -y ImageMagick \
dnf install -y \
ImageMagick \
file \
sudo \
net-tools \
iputils \
curl \
git \
git-lfs \
jq \
dos2unix \
mysql \
@ -40,6 +42,11 @@ dnf install -y ImageMagick \
findutils \
which
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash
dnf update -y
dnf install -y \
git-lfs
bash /build/ol/install-gosu.sh
# Patched knockd
@ -47,3 +54,6 @@ curl -fsSL -o /tmp/knock.tar.gz https://github.com/Metalcape/knock/releases/down
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

View File

@ -29,6 +29,11 @@ apt-get install -y \
libpcap0.8 \
webp
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
apt-get update
apt-get install -y \
git-lfs
apt-get clean
# Patched knockd
@ -37,3 +42,6 @@ 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

View File

@ -4,8 +4,6 @@
#
# and then access http://localhost:8000
version: "3.8"
services:
mkdocs:
build:

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -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:

View File

@ -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
![](../img/motd-example.png)
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

View File

@ -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:

View File

@ -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:

View File

@ -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

View File

@ -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:
@ -33,7 +32,6 @@ Monitors network traffic to the Minecraft containers. If there is traffic, the c
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

View File

@ -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

View File

@ -1,8 +1,7 @@
mkdocs == 1.5.3
mkdocs-material == 9.5.11
mkdocs-autorefs == 0.5.0
mkdocstrings == 0.24.0
mkdocs-material == 9.5.24
mkdocs-autorefs == 1.0.1
mkdocstrings == 0.25.1
mkdocs-literate-nav == 0.6.1
mdx-gh-links == 0.4
mkdocs-click == 0.8.1
mkdocs-static-i18n == 1.2.0
mkdocs-static-i18n == 1.2.3

View File

@ -59,4 +59,47 @@ To exclude client mods that are incorrectly declared by the modpack as server-co
notenoughanimations
lambdynamiclights
euphoriapatcher
```
```
## Force-include files
To force include client mods, set `MODRINTH_FORCE_INCLUDE_FILES` to a comma or newline delimited list of partial file names. You may need to set `MODRINTH_FORCE_SYNCHRONIZE` to "true" while iterating on a compatible set of mods to use.
!!! example
In a Compose file:
```yaml
MODRINTH_FORCE_INCLUDE_FILES: |
yet-another-config-lib
```
## 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.
### Ant-style paths
Ant-style paths can include the following globbing/wildcard symbols:
| Symbol | Behavior |
|--------|---------------------------------------------------------|
| `*` | Matches zero, one, or many characters except a slash |
| `**` | Matches zero, one, or many characters including slashes |
| `?` | Matches one character |
!!! example
The following compose `environment` entries show how to exclude Iris and Sodium mods from the overrides
```yaml
MODRINTH_OVERRIDES_EXCLUSIONS: mods/NekosEnchantedBooks-*.jar,mods/citresewn-*.jar
```
or using newline delimiter, which improves maintainability
```yaml
MODRINTH_OVERRIDES_EXCLUSIONS: |
mods/NekosEnchantedBooks-*.jar
mods/citresewn-*.jar
```

View File

@ -8,7 +8,7 @@ A [Magma](https://magmafoundation.org/) server, which is a combination of Forge
!!! note
The Magma project has been terminated ([original link died](https://git.magmafoundation.org/magmafoundation/magma-1-20-x/-/commit/4e7abe37403c47d09b74b77bcfc26a19b18f5891), [alternate statement on their discord](https://discord.com/channels/612695539729039411/647287352833605662/1174412642962649198) ). Please use Magma Maintained for 1.12.2, 1.18.2, 1.19.3, and 1.20.1, or Ketting for 1.20.1+.
The Magma project has been terminated ([original link died](https://git.magmafoundation.org/magmafoundation/magma-1-20-x/-/commit/4e7abe37403c47d09b74b77bcfc26a19b18f5891), [alternate statement on their discord](https://discord.com/channels/612695539729039411/647287352833605662/1174412642962649198) ). Please use Magma Maintained for 1.12.2, 1.18.2 and 1.19.3, or Ketting for 1.20.1+.
There are limited base versions supported, so you will also need to set `VERSION`, such as "1.12.2", "1.16.5", etc.

View File

@ -1,53 +1,115 @@
## Running Minecraft server on different Java version
## Image tags
!!! note
Image references can either omit the tag, which implies the tag `latest`, such as
For Forge versions less than 1.18, you _must_ use the `java8-multiarch` (or other java8) image tag.
itzg/minecraft-server
In general, if you see the following line in a server startup failure, then it means you need to be using Java 8 instead of the latest image Java version:
or explicitly include the tag, such as
```
Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader
cannot be cast to class java.net.URLClassLoader
```
itzg/minecraft-server:<tag>
When using the image `itzg/minecraft-server` without a tag, the `latest` image tag is implied from the table below. To use a different version of Java, please use an alternate tag to run your Minecraft server container. The `stable` tag is similar to `latest`; however, it tracks [the most recent repository release/tag](https://github.com/itzg/docker-minecraft-server/releases/latest).
where `<tag>` refers to the first column of this table:
| Tag name | Java version | Linux | JVM Type | Architecture |
|------------------|--------------|--------|--------------------|-------------------|
| latest | 17 | Ubuntu | Hotspot | amd64,arm64,armv7 |
| stable | 17 | Ubuntu | Hotspot | amd64,arm64,armv7 |
| java8 | 8 | Alpine | Hotspot | amd64 |
| java8-jdk | 8 | Ubuntu | Hotspot+JDK | amd64 |
| java8-multiarch | 8 | Ubuntu | Hotspot | amd64,arm64,armv7 |
| java8-openj9 | 8 | Debian | OpenJ9 | amd64 |
| java8-graalvm-ce | 8 | Oracle | GraalVM CE | amd64 |
| java11 | 11 | Ubuntu | Hotspot | amd64,arm64,armv7 |
| java11-jdk | 11 | Ubuntu | Hotspot+JDK | amd64,arm64,armv7 |
| java11-openj9 | 11 | Debian | OpenJ9 | amd64 |
| 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 |
| java21-alpine | 21 | Alpine | Hotspot | amd64 |
| java21 | 21 | Ubuntu | Hotspot | amd64,arm64 |
| java21-graalvm | 21 | Oracle | Oracle GraalVM[^1] | amd64,arm64 |
| 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, 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 |
| 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 |
For example, to use Java version 8 on any supported architecture:
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.
docker run --name mc itzg/minecraft-server:java8-multiarch
!!! example "Example using java8"
!!! note
Keep in mind that some versions of Minecraft server, such as Forge before 1.17, can't work on the newest versions of Java. Instead, one of the Java 8 images should be used. Also, FORGE doesn't support openj9 JVM implementation.
With docker run command-line
Some versions of vanilla Minecraft, such as 1.10, also do not run correctly with Java 17. If in doubt, use `java8-multiarch` for any version less than 1.17.
```
docker run -it -e EULA=true itzg/minecraft-server:java8
```
or in a compose file
```yaml
services:
mc:
image: itzg/minecraft-server:java8
```
### Deprecated Image Tags
!!! note "Latest"
The "latest" tag shifts to include not only the latest features and bug fixes, but also the latest Java version that Mojang requires for the latest Minecraft version.
!!! tip "Class File Version"
If the Minecraft startup is logging an error about a "class file version", then refer [to this table](https://javaalmanac.io/bytecode/versions/) to identify the JDK/Java version corresponding to each class file version.
### Release versions
Since the tags referenced above will shift as the newest image build brings in new features and bug fixes, released variants of those can also be used to pin a specific build of the image.
The syntax of released image tags is:
itzg/minecraft-server:<release>-<java tag>
where `java tag` still refers to the first column of the table above and `release` refers to [one of the image releases](https://github.com/itzg/docker-minecraft-server/releases).
!!! example
For example, the 2024.4.0 release of the Java 17 image would be
```
itzg/minecraft-server:2024.4.0-java17
```
### Stable image tag
The `stable` image tag combines the benefits of `latest` and [release versions](#release-versions) since it shifts to refer to the most recently released version.
## Version compatibilities
[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.
### 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.
#### Java 21
Some mods even up to Minecraft 1.21 require Java 17 and will not run on the latest Java version. If you see an error like the following then be sure to explicitly use a Java 17 tagged image:
```
Caused by: org.spongepowered.asm.mixin.throwables.ClassMetadataNotFoundException: java.util.List
at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.transformMethod(MixinPreProcessorStandard.java:754)
```
#### Java 8
For Forge versions less than 1.18, you _must_ use the `java8-multiarch` (or other java8) image tag.
In general, if you see the following line in a server startup failure, then it means you need to be using Java 8 instead of the latest image Java version:
```
Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader
cannot be cast to class java.net.URLClassLoader
```
Forge also doesn't support openj9 JVM implementation.
## Deprecated Image Tags
The following image tags have been deprecated and are no longer receiving updates:
- java19
- adopt13
- adopt14
@ -56,6 +118,8 @@ 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
[^1]: Based on the [Oracle GraalMV images](https://blogs.oracle.com/java/post/new-oracle-graalvm-container-images), which as of JDK 17, are now under the [GraalVM Free License](https://blogs.oracle.com/java/post/graalvm-free-license) incorporating what used to be known as the GraalVM Enterprise.

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server:java8-multiarch

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -0,0 +1,30 @@
services:
mc:
image: itzg/minecraft-server:java17
environment:
EULA: true
TYPE: MODRINTH
MEMORY: 4G
MODRINTH_MODPACK: better-mc-forge-bmc4
MODRINTH_VERSION: v26
MODRINTH_EXCLUDE_FILES: |
citresewn
oculus
yungsmenutweaks
notenoughanimations
ryoamiclights
euphoriapatcher
entity_model_features
entity_texture_features
3dskinlayers
connector
MODRINTH_OVERRIDES_EXCLUSIONS: |
mods/NekosEnchantedBooks-*.jar
mods/citresewn-*.jar
volumes:
- data:/data
ports:
- "25565:25565"
volumes:
data: {}

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: '3.8'
services:
minecraft:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: '3.8'
services:
minecraft:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: '3.8'
services:
minecraft:
ports:

View File

@ -1,5 +1,3 @@
version: '3.8'
####################################################################
# CURSEFORGE #
# #

View File

@ -1,5 +1,3 @@
version: '3.8'
services:
mc:
image: itzg/minecraft-server:${IMAGE_TAG:-java8}

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: '3.8'
####################################################################
# FORGE_GENERIC_PACK #
# #

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
# FTBA support is only available in non-Alpine images

View File

@ -1,5 +1,3 @@
version: '3.8'
####################################################################
# FORGE GENERIC_PACK #
# #

View File

@ -1,5 +1,3 @@
version: '3.8'
services:
mc:
image: itzg/minecraft-server:${IMAGE_TAG:-latest}

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server:java8

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -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

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,4 +1,3 @@
version: '3.8'
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: '3.8'
services:
mc:
# build: .

View File

@ -1,5 +1,3 @@
version: '3'
services:
minecraft:
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}

View File

@ -1,5 +1,3 @@
version: '3.8'
services:
mc:
image: itzg/minecraft-server:java8

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -4,8 +4,6 @@
# 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

View File

@ -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.

View File

@ -0,0 +1,35 @@
services:
tailscale-client:
image: tailscale/tailscale:latest
container_name: tailscale
hostname: tailscale-minecraft # This name will be the one on the tailscale network
environment:
TS_AUTHKEY: "tskey-auth-PLACE-YOUR-KEY-HERE"
TS_STATE_DIR: "/var/lib/tailscale"
TS_USERSPACE: "FALSE" # If not using Auto-pause it can be set as true
volumes:
- ./ts-minecraft/state:/var/lib/tailscale
- /dev/net/tun:/dev/net/tun
cap_add:
- net_admin
- sys_module
restart: unless-stopped
# ports: # Not needed, tailscale is directly linking to the container.
# - "25565:25565"
minecraft-server:
image: itzg/minecraft-server
network_mode: container:tailscale
stdin_open: true
tty: true
environment:
EULA: "TRUE"
# ENABLE_AUTOPAUSE: "TRUE"
# AUTOPAUSE_KNOCK_INTERFACE: "tailscale0"
# MAX_TICK_TIME: "-1"
volumes:
- minecraftserver:/data
restart: unless-stopped
volumes:
minecraftserver:

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,6 +1,3 @@
version: '3'
# Other docker-compose examples in /examples
services:
minecraft:
image: itzg/minecraft-server
@ -9,10 +6,7 @@ services:
ports:
- "25565:25565"
volumes:
- "mc:/data"
- ./data:/data
environment:
EULA: "TRUE"
restart: always
volumes:
mc: {}
restart: unless-stopped

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -0,0 +1,11 @@
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
TYPE: KETTING
VERSION: 1.20.1
CF_API_KEY: "${CF_API_KEY}"
CURSEFORGE_FILES: https://www.curseforge.com/minecraft/mc-mods/aquaculture
ports:
- "25565:25565"

View File

@ -1,4 +1,3 @@
version: "3"
services:
lazytainer:
image: ghcr.io/vmorganp/lazytainer:master

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: '3.8'
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mariadb:
image: mariadb:10

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
proxy:
image: itzg/bungeecord

View 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"

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: '3.7'
services:
mc:
build: .

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server:java8-multiarch

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
image: itzg/minecraft-server

View File

@ -0,0 +1,50 @@
# 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: |
auudio-forge
betterf3
better-third-person
clickable-advancements
controlling
craftpresence
creative-core
default-options
drippy-loading-screen
embeddium
embeddium-extension
embeddium-extras
equipment-compare
ezzoom
fading-night-vision
fancymenu
item-borders
itemphysic-lite
just-enough-resources-jer
konkrete
legendary-tooltips
mouse-tweaks
oauth
oculus
sound-filters
textrues-embeddium-options
toast-control
CF_FORCE_SYNCHRONIZE: "true"
MEMORY: 4G
volumes:
- mc-data:/data
- ./downloads:/downloads
volumes:
mc-data: {}

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server:java8-multiarch

View File

@ -0,0 +1,10 @@
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
TYPE: PAPER
PLUGINS: https://github.com/SkriptLang/Skript/releases/download/2.8.4/Skript.jar
SPIGET_RESOURCES: 103749
ports:
- "25565:25565"

View File

@ -0,0 +1,13 @@
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
TYPE: SPIGOT
VERSION: 1.20.4
ports:
- "25565:25565"
volumes:
- data:/data
volumes:
data: {}

View File

@ -1,5 +1,3 @@
version: '3.8'
services:
mc:
image: itzg/minecraft-server:java8-multiarch

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -1,5 +1,3 @@
version: "3.3"
services:
vanillatweaks_file:
restart: "no"

View File

@ -1,5 +1,3 @@
version: "3.8"
services:
mc:
image: itzg/minecraft-server

View File

@ -45,7 +45,12 @@ if isTrue "${DEBUG_AUTOPAUSE}"; then
knockdArgs+=(-D)
fi
sudo /usr/local/sbin/knockd "${knockdArgs[@]}"
if isTrue "${SKIP_SUDO}"; then
/usr/local/sbin/knockd "${knockdArgs[@]}"
else
sudo /usr/local/sbin/knockd "${knockdArgs[@]}"
fi
if [ $? -ne 0 ] ; then
logAutopause "Failed to start knockd daemon."
logAutopause "Probable cause: Unable to attach to interface \"$AUTOPAUSE_KNOCK_INTERFACE\"."
@ -124,11 +129,7 @@ do
STATE=E
else
TIME_THRESH=$(($(current_uptime)+$AUTOPAUSE_TIMEOUT_KN))
from=unknown
if [ -e /var/log/knocked-source ]; then
from=$(cat /var/log/knocked-source)
fi
logAutopause "Server was knocked from $from - waiting for clients or timeout"
logAutopause "Server was knocked - waiting for clients or timeout"
STATE=K
fi
fi

View File

@ -6,8 +6,6 @@ if isTrue "${DEBUG_AUTOPAUSE}"; then
fi
if [[ $( ps -ax -o stat,comm | grep 'java' | awk '{ print $1 }') =~ ^T.*$ ]] ; then
logAutopauseAction "Knocked from $1, resuming Java process"
echo "$1" > /var/log/knocked-source
pkill -CONT java
# remove .paused file from data directory

View File

@ -16,6 +16,7 @@
"entity-texture-features-fabric",
"entityculling",
"extreme-sound-muffler",
"free-cam",
"ignitioncoil",
"inmisaddon",
"irisshaders",

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -225,17 +225,14 @@ case "${TYPE^^}" in
;;
CUSTOM)
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployCustom" "$@"
;;
MAGMA)
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployMagma" "$@"
;;
MAGMA_MAINTAINED)
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployMagmaMaintained" "$@"
;;
@ -244,12 +241,10 @@ case "${TYPE^^}" in
;;
MOHIST)
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployMohist" "$@"
;;
CATSERVER)
evaluateJavaCompatibilityForForge
exec "${SCRIPTS:-/}start-deployCatserver" "$@"
;;

View File

@ -76,35 +76,50 @@ function downloadSpigot {
fi
setServerVar
curlArgs=()
if [ -f "$SERVER" ] && ! isTrue "$FORCE_REDOWNLOAD"; then
# tell curl to only download when newer
curlArgs="-z $SERVER"
curlArgs+=(-z "$SERVER")
fi
if isDebugging; then
curlArgs="$curlArgs -v"
curlArgs+=(-v)
fi
log "Downloading $match from $downloadUrl ..."
curl -fsSL -o "$SERVER" $curlArgs "$downloadUrl"
if [[ $? != 0 || $(grep -c "DOCTYPE html" "$SERVER") != 0 ]]; then
tempFile="$SERVER.$$"
# HTTP error or download site responded with an HTML error page
if ! curl -fsSL -o "$tempFile" "${curlArgs[@]}" "$downloadUrl" || ( [ -f "$tempFile" ] && grep -iq "doctype html" "$tempFile" ); then
cat <<EOF
ERROR: failed to download from $downloadUrl
Visit https://getbukkit.org/download/${getbukkitFlavor} to lookup the
exact version, such as 1.4.6-R0.4-SNAPSHOT or 1.8-R0.1-SNAPSHOT-latest.
Click into the version entry to find the **exact** version, because something
like "1.8" is not sufficient according to their download naming.
exact version or see if download site is unavailable.
Click into the version entry to find the **exact** version.
EOF
if isDebugging && [[ $(grep -c "DOCTYPE html" "$SERVER") != 0 ]]; then
cat "$SERVER"
if isDebugging && grep -iq "doctype html" "$tempFile"; then
cat "$tempFile"
fi
if [ -f "$SERVER" ]; then
log "Continuing with existing $SERVER file"
else
# remove invalid download
rm "$tempFile"
exit 3
fi
else
if [ -f "$tempFile" ]; then
mv "$tempFile" "$SERVER"
fi
# remove invalid download
rm "$SERVER"
exit 3
fi
JVM_OPTS="${JVM_OPTS} -DIReallyKnowWhatIAmDoingISwear"
export JVM_OPTS
}

View File

@ -11,6 +11,8 @@ resultsFile=/data/.install-modrinth.env
: "${MODRINTH_VERSION:=${MODRINTH_VERSION_ID:-}}"
: "${MODRINTH_IGNORE_MISSING_FILES:=}"
: "${MODRINTH_EXCLUDE_FILES:=}"
: "${MODRINTH_FORCE_INCLUDE_FILES:=}"
: "${MODRINTH_OVERRIDES_EXCLUSIONS:=}"
if [[ ! $MODRINTH_MODPACK ]]; then
log "ERROR: MODRINTH_MODPACK must be set when using TYPE/MOD_PLATFORM of MODRINTH"
@ -56,6 +58,8 @@ setArg --loader MODRINTH_LOADER
setArg --version MODRINTH_VERSION
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
if ! mc-image-helper install-modrinth-modpack "${args[@]}"; then
log "ERROR failed to install Modrinth modpack"

View File

@ -45,10 +45,17 @@ fi
canUseRollingLogs=true
useFallbackJvmFlag=false
if [[ ${FTB_DIR:-} ]]; then
SERVER_DIR="$FTB_DIR"
else
SERVER_DIR=/data
fi
patchLog4jConfig() {
file=${1?}
url=${2?}
if ! get -o "$file" "$url"; then
if ! get -o "${SERVER_DIR}/${file}" "$url"; then
log "ERROR: failed to download corrected log4j config, fallback to JVM flag"
useFallbackJvmFlag=true
return 1
@ -94,14 +101,14 @@ if isTrue "${ENABLE_ROLLING_LOGS:-false}"; then
exit 1
fi
# Set up log configuration
LOGFILE="/data/log4j2.xml"
LOGFILE="${SERVER_DIR}/log4j2.xml"
if [ ! -e "$LOGFILE" ]; then
log "Creating log4j2.xml in ${LOGFILE}"
cp /image/log4j2.xml "$LOGFILE"
else
log "log4j2.xml already created, skipping"
fi
JVM_OPTS="-Dlog4j.configurationFile=/data/log4j2.xml ${JVM_OPTS}"
JVM_OPTS="-Dlog4j.configurationFile=log4j2.xml ${JVM_OPTS}"
fi
# Optional disable console
@ -278,6 +285,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
@ -287,7 +299,10 @@ elif [[ $SERVER =~ run.sh ]]; then
echo "SETUP_ONLY: bash ${SERVER}"
exit
fi
exec mc-server-runner "${mcServerRunnerArgs[@]}" --shell bash "${SERVER}"
if isTrue "${DEBUG_EXEC}"; then
set -x
fi
exec mc-server-runner "${mcServerRunnerArgs[@]}" --shell bash "${SERVER}" $EXTRA_ARGS
else
# If we have a bootstrap.txt file... feed that in to the server stdin
if [ -f /data/bootstrap.txt ]; then

View File

@ -272,6 +272,13 @@ function handleCurseForgeFiles() {
forge|fabric|quilt)
args+=(--mod-loader "$TYPE")
;;
*)
if isFamily HYBRID; then
# To disambiguate mc-mods we'll assume that hybrid servers
# are blending Forge (rather than Fabric or NeoForge)
args+=(--mod-loader "forge")
fi
;;
esac
# shellcheck disable=SC2086

View File

@ -42,13 +42,19 @@ if [[ -v OPS_FILE ]]; then
fi
if [[ -v OPS ]]; then
args=()
if isTrue "${APPEND_OPS:-false}" || isFalse "${OVERRIDE_OPS:-true}"; then
args+=(--append-only)
fi
existing="$EXISTING_OPS_FILE"
# Working with an OPS list, so normalize the value to a "non-file" mode
if [[ "$EXISTING_OPS_FILE" = SYNC_FILE_MERGE_LIST ]]; then
existing=MERGE
fi
# legacy option
if [[ -v APPEND_OPS ]] && isTrue "${APPEND_OPS}"; then
existing=MERGE
fi
# legacy option
if [[ -v OVERRIDE_OPS ]] && isFalse "${OVERRIDE_OPS}"; then
existing=SKIP
fi
# shellcheck disable=SC2086
mc-image-helper manage-users \
"${sharedArgs[@]}" "${args[@]}" \

View File

@ -105,10 +105,6 @@ function customizeServerProps {
esac
fi
if [[ -v LEVEL_TYPE ]]; then
LEVEL_TYPE="${LEVEL_TYPE^^}"
fi
setPropertiesArgs=(
--definitions "/image/property-definitions.json"
)

View File

@ -108,15 +108,20 @@ downloadResourceFromSpiget() {
log "ERROR: failed to retrieve file type of resource $resource"
exit 1
fi
if containsPlugin "${outfile}"; then
log "Moving resource ${resource} into plugins"
mv "$outfile" /data/plugins
elif containsJars "${outfile}"; then
log "Extracting contents of resource ${resource} into plugins"
extract "$outfile" /data/plugins
if [[ $fileType = .sk ]]; then
mkdir -p /data/plugins/Skript/scripts
mv "$outfile" /data/plugins/Skript/scripts
else
log "ERROR: file for resource ${resource} has an unexpected file type: ${fileType}"
exit 2
if containsPlugin "${outfile}"; then
log "Moving resource ${resource} into plugins"
mv "$outfile" /data/plugins
elif containsJars "${outfile}"; then
log "Extracting contents of resource ${resource} into plugins"
extract "$outfile" /data/plugins
else
log "ERROR: file for resource ${resource} has an unexpected file type: ${fileType}"
exit 2
fi
fi
rm -rf "$tempDir"
}

View File

@ -253,17 +253,6 @@ function isType() {
return 1
}
function evaluateJavaCompatibilityForForge() {
javaRelease=$(mc-image-helper java-release)
if versionLessThan 1.18 && (( javaRelease > 8 )); then
log "**********************************************************************"
log "WARNING: Some mods and modpacks may require Java 8."
log " Please use itzg/minecraft-server:java8"
log "**********************************************************************"
sleep 5
fi
}
function extract() {
src=${1?}
destDir=${2?}
@ -337,7 +326,7 @@ function resolveVersion() {
function resolveFamily() {
case "$TYPE" in
PAPER|SPIGOT|BUKKIT|CANYON|PUFFERFISH|PURPUR)
FAMILY=SIGOT
FAMILY=SPIGOT
;;
FORGE)
FAMILY=FORGE

View File

@ -1,5 +1,3 @@
version: "3"
services:
monitor:
depends_on:

View File

@ -1,5 +1,3 @@
version: "3"
services:
monitor:
depends_on:

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
restart: "no"

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
restart: "no"

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
restart: "no"

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
image: ${IMAGE_TO_TEST:-itzg/minecraft-server:java8-multiarch}

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
restart: "no"

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}

View File

@ -1,5 +1,3 @@
version: "3"
services:
web:
image: nginx

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}

View File

@ -1,5 +1,3 @@
version: "3"
services:
mc:
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}

Some files were not shown because too many files have changed in this diff Show More