Compare commits

...

90 Commits

Author SHA1 Message Date
dependabot[bot] 214002370e build(deps): bump the patches group in /docs with 2 updates
Bumps the patches group in /docs with 2 updates: [click](https://github.com/pallets/click) and [zensical](https://github.com/zensical/zensical).


Updates `click` from 8.3.3 to 8.4.0
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.3.3...8.4.0)

Updates `zensical` from 0.0.41 to 0.0.43
- [Release notes](https://github.com/zensical/zensical/releases)
- [Commits](https://github.com/zensical/zensical/compare/v0.0.41...v0.0.43)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: patches
- dependency-name: zensical
  dependency-version: 0.0.43
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patches
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-20 13:27:12 +00:00
dependabot[bot] 1e8aecd06e build(deps): bump pymdown-extensions from 10.21.2 to 10.21.3 in /docs (#4072) 2026-05-19 22:48:37 -05:00
renovate[bot] 21920f3fe7 Update dependency itzg/easy-add to v0.8.13 (#4067) 2026-05-19 07:16:54 -05:00
renovate[bot] 9352c45d6e Update dependency itzg/mc-server-runner to v1.14.7 (#4069) 2026-05-19 06:53:28 -05:00
renovate[bot] 3d4555557b Update dependency itzg/restify to v1.7.14 (#4070) 2026-05-18 21:18:43 -05:00
Harrison Black c95b638faa feat: Server library cleanup on paper install (#4046) 2026-05-18 06:59:23 -05:00
renovate[bot] fd823d6040 Update dependency itzg/rcon-cli to v1.7.5 (#4066) 2026-05-17 15:25:10 -05:00
renovate[bot] 7656abeaa6 Update dependency itzg/mc-monitor to v0.16.4 (#4065) 2026-05-17 14:14:26 -05:00
renovate[bot] a708715a9f Update dependency itzg/mc-monitor to v0.16.3 (#4063)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-17 09:03:28 -05:00
Geoff Bourne 5febc1ab5d examples: fix invalid data volume for vanilla-tweaks (#4064) 2026-05-17 08:59:38 -05:00
Geoff Bourne 6878ad6e01 Update java8 builds to 1.51.3-java8 (#4060) 2026-05-16 22:34:35 -05:00
dependabot[bot] 889b607606 build(deps): bump zensical from 0.0.40 to 0.0.41 in /docs in the patches group (#4057) 2026-05-15 07:35:40 -05:00
renovate[bot] f3b1d7ee93 Update dependency itzg/mc-image-helper to v1.58.0 (#4059) 2026-05-15 07:35:04 -05:00
renovate[bot] cdc2c7977e Update dependency itzg/mc-server-runner to v1.14.6 (#4035) 2026-05-14 12:36:48 -05:00
Geoff Bourne 14d0be9430 Adjust labels for docs in dependabot.yml (#4041) 2026-05-12 18:57:05 -05:00
Chip Wolf ‮ ffbd905ec4 feat: load env vars from file or archive at startup (#4053) 2026-05-12 18:56:30 -05:00
Harrison Black b35db38cd3 build(deps): Bump mc-image-helper java8 to 1.51.2 (#4056) 2026-05-12 12:28:14 -05:00
renovate[bot] 32696ae457 Update dependency itzg/easy-add to v0.8.12 (#4055) 2026-05-12 12:25:40 -05:00
renovate[bot] 50155230bd Update dependency itzg/mc-image-helper to v1.57.4 (#4054) 2026-05-11 07:46:13 -05:00
renovate[bot] 14c8509bee Update dependency itzg/mc-image-helper to v1.57.3 (#4047) 2026-05-10 07:44:20 -05:00
Geoff Bourne a44c717041 build: corrected git-lfs install (#4051) 2026-05-09 11:52:58 -05:00
dependabot[bot] 60ab277060 build(deps): bump zensical from 0.0.37 to 0.0.40 in /docs in the patches group (#4045) 2026-05-06 06:57:16 -05:00
renovate[bot] 3393e65d6f Update dependency itzg/mc-image-helper to v1.57.2 (#4044) 2026-05-04 09:06:48 -05:00
renovate[bot] 4caed18ead Update dependency itzg/mc-image-helper to v1.57.1 (#4039)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-02 13:11:03 -05:00
renovate[bot] de5e99cfa1 Update dependency itzg/mc-monitor to v0.16.2 (#4034) 2026-05-01 20:24:05 -05:00
dependabot[bot] ff280ecf48 build(deps): bump the patches group in /docs with 4 updates (#4040) 2026-04-29 07:20:52 -05:00
renovate[bot] d34111c3e3 Update dependency itzg/restify to v1.7.13 (#4036) 2026-04-26 19:03:07 -05:00
Kim c660ac5e8f Added force include JER to Wold's Vaults in cf-exclude-include.json (#4033) 2026-04-26 10:11:59 -05:00
evergales a383184e92 Remove Connector & Appleskin from modrinth exclusions (#4031) 2026-04-26 07:33:59 -05:00
Geoff Bourne eb63433d35 Clarify source directories with APPLY_EXTRA_FILES (#4030) 2026-04-24 07:45:59 -05:00
dependabot[bot] 5e1d166ba6 build(deps): bump the patches group in /docs with 2 updates (#4027) 2026-04-22 05:54:53 -06:00
Pacsui 8745b36b89 fix deadlink for autostop example (#4022) 2026-04-16 14:20:24 -05:00
renovate[bot] 97407c672f Update dependency itzg/mc-image-helper to v1.56.3 (#4015)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 13:41:48 -05:00
dependabot[bot] e25de5dc05 build(deps): bump packaging from 26.0 to 26.1 in /docs in the patches group (#4021) 2026-04-15 07:08:45 -05:00
dependabot[bot] 59a2126192 build(deps): bump the updates group with 3 updates (#4019) 2026-04-14 07:36:43 -05:00
dependabot[bot] 5e2e26831e build(deps): bump zensical from 0.0.32 to 0.0.33 in /docs in the patches group (#4020) 2026-04-14 07:36:08 -05:00
dependabot[bot] 18d57981f5 build(deps): bump docker/login-action from 3.7.0 to 4.0.0 (#3965) 2026-04-14 06:50:48 -05:00
at://matrixfurry.com a5cd3a57fa Remove EMI from Modrinth exclusions (#4018) 2026-04-13 19:53:32 -05:00
AegisBlue c692e99523 Include Server.pro sponsorship in README (#4017) 2026-04-13 11:27:20 -05:00
dependabot[bot] 5f9bc3a414 build(deps): bump the patches group in /docs with 2 updates (#4016) 2026-04-13 06:57:25 -05:00
Geoff Bourne df7f067782 neoforge: support year-based versions (#4014) 2026-04-12 14:02:37 -05:00
SpawnBox-dev 7b1cb53cda docs: simplify sponsor layout - drop table, use floated logo (#4012) 2026-04-11 21:15:00 -05:00
Geoff Bourne dcfedaa10f Put sponsor entries in table (#4011) 2026-04-11 20:35:15 -05:00
Geoff Bourne a9a27df4a6 Corrected sponsors anchor (#4010) 2026-04-11 20:15:20 -05:00
Geoff Bourne a2fbd4ce9a Add sponsors section to README (#4009)
Co-authored-by: SpawnBox-dev <github@spawnbox.app>
Co-authored-by: SpawnBox-dev <developer@spawnbox.app>
2026-04-11 20:02:38 -05:00
renovate[bot] eb4fe3c7bf Update dependency itzg/mc-image-helper to v1.56.1 (#4005) 2026-04-09 21:48:28 -05:00
Geoff Bourne 8c9e2c653f Added dev docs for building image with tool version change (#4007) 2026-04-09 11:02:32 -05:00
Vianney Veremme bd98fe57ba Add optional Modrinth projects support (? suffix) documentation (#4004) 2026-04-09 10:15:11 -05:00
dependabot[bot] 23205471db build(deps): bump the patches group in /docs with 2 updates (#4001) 2026-04-06 07:49:39 -05:00
EmilyxFox f8618a5360 add more examples for new minecraft version schema (#3981) 2026-04-05 11:25:32 -05:00
renovate[bot] acc90757a6 chore(deps): update dependency itzg/mc-server-runner to v1.14.5 (#3999)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-05 10:07:11 -05:00
Geoff Bourne 589872049f Added default exclude of smooth swapping (#3992) 2026-03-31 11:38:50 -05:00
dependabot[bot] 18403e7db8 build(deps): bump the patches group across 1 directory with 4 updates (#3996) 2026-03-30 13:37:28 -05:00
renovate[bot] 2625ca2b3c chore(deps): update dependency itzg/mc-server-runner to v1.14.4 (#3993)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-28 13:24:01 -05:00
Geoff Bourne 5b9c09b7b2 Pin mcVersion to 1.21.11 for Java 21 build testing (#3991) 2026-03-26 15:54:10 -05:00
Jason Walton b37c2cc3ef Add RCON_PASSWORD_FILE to variables.md. (#3989) 2026-03-26 15:42:22 -05:00
Geoff Bourne 3cd3656868 Consider MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE as part of VERSION_FROM_MODRINTH_PROJECTS (#3985) 2026-03-22 19:52:07 -05:00
renovate[bot] 387c674849 chore(deps): update dependency itzg/mc-image-helper to v1.55.3 (#3984)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-22 08:45:41 -05:00
Geoff Bourne fba656561f Add image variant java25-alpine (#3980) 2026-03-17 21:06:00 -05:00
Geoff Bourne cf8ab31e25 Apply logging prefix on output from DEBUG_MEMORY (#3975) 2026-03-17 08:04:46 -05:00
dependabot[bot] 68bb650617 build(deps): bump the patches group in /docs with 2 updates (#3976) 2026-03-16 07:30:31 -05:00
renovate[bot] c5a298fa05 chore(deps): update dependency itzg/rcon-cli to v1.7.4 (#3973) 2026-03-13 07:30:23 -05:00
Geoff Bourne 5dff0b8541 notes: removed start-setupForgeApiMods from start flow diagram (#3972) 2026-03-12 16:08:06 -05:00
renovate[bot] 9c9a3a8b43 chore(deps): update dependency itzg/mc-server-runner to v1.14.3 (#3971) 2026-03-10 22:23:09 -05:00
dependabot[bot] 3bbe3b7c80 build(deps): bump platformdirs from 4.9.2 to 4.9.4 in /docs in the patches group (#3970) 2026-03-09 07:31:56 -05:00
EmilyxFox ddb3dbf776 add dockerfile_inline example to misc/building (#3963) 2026-03-07 18:40:17 -06:00
Geoff Bourne 1cf70665bb build: adjust RTD config to explicitly use docs/requirements.txt (#3964) 2026-03-07 14:08:54 -06:00
Geoff Bourne a543ee7ebc Added NUMA library (#3962) 2026-03-07 08:54:18 -06:00
renovate[bot] a69017b5e1 chore(deps): update dependency itzg/mc-server-runner to v1.14.2 (#3959) 2026-03-01 09:56:11 -06:00
Geoff Bourne e3f715e9ca build: adjusted issues notify triage label setting (#3957) 2026-02-28 14:25:29 -06:00
renovate[bot] 1904798a75 chore(deps): update dependency itzg/mc-image-helper to v1.55.2 (#3956)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-28 08:47:00 -06:00
Caedis 7c2c0ded70 Switch GTNH pack version metadata url to new endpoint (#3955) 2026-02-27 08:08:04 -06:00
renovate[bot] a62be28cfd chore(deps): update dependency itzg/mc-image-helper to v1.55.0 (#3953) 2026-02-26 07:10:00 -06:00
dependabot[bot] 6402e72fda build(deps): bump mkdocstrings-python from 2.0.2 to 2.0.3 in /docs in the patches group (#3952) 2026-02-23 08:08:22 -06:00
Geoff Bourne 8b2f26535d Refactor issue label workflow for Discord notifications (#3950) 2026-02-21 17:15:30 -06:00
Spencer e202239e66 Update link to example compose file for HTTP Proxy config (#3949) 2026-02-19 18:35:16 -06:00
Geoff Bourne 4e4d6959e4 Bump latest to java 25 in images.json (#3948) 2026-02-16 16:08:58 -06:00
renovate[bot] 92f3200b4c chore(deps): update dependency itzg/restify to v1.7.12 (#3947) 2026-02-16 15:36:58 -06:00
renovate[bot] 02b8993561 chore(deps): update dependency itzg/mc-monitor to v0.16.1 (#3946)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 14:17:57 -06:00
Geoff Bourne 4466c778db Markup other dependencies in Dockerfile for Renovate (#3945) 2026-02-16 14:11:57 -06:00
renovate[bot] f5616795bd chore(deps): update dependency itzg/mc-image-helper to v1.54.1 (#3944)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 13:43:20 -06:00
Geoff Bourne a00062ba64 build: fix regex pattern that was bad in docs (#3943) 2026-02-16 13:34:05 -06:00
Geoff Bourne d217e21903 Corrected enabled managers reference (#3936) 2026-02-16 11:51:50 -06:00
dependabot[bot] dd5e2be036 build(deps): bump griffe from 1.15.0 to 2.0.0 in /docs (#3941)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 11:50:18 -06:00
dependabot[bot] b818a72e54 build(deps): bump the patches group in /docs with 5 updates (#3940) 2026-02-16 08:52:26 -06:00
dependabot[bot] fe1cadcb0d build(deps): bump docker/build-push-action from 6.18.0 to 6.19.2 in the updates group (#3939) 2026-02-16 08:50:24 -06:00
Geoff Bourne ac125dc15e Temporarily replace GTNH ServerPacks call with restify+jq (#3938) 2026-02-15 17:33:46 -06:00
Andre Blanke 4c0fd104c6 Exit early on failed GTNH packs retrieval (#3931) 2026-02-15 13:20:18 -06:00
Geoff Bourne cca86e6a3d Tuning renovate config to just custom regex (#3928) 2026-02-15 09:52:49 -06:00
renovate[bot] 67ec9e1b3c chore: Configure Renovate (#3923)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Geoff Bourne <itzgeoff@gmail.com>
2026-02-14 14:46:05 -06:00
58 changed files with 661 additions and 173 deletions
+6
View File
@@ -13,9 +13,15 @@ updates:
- minor
- package-ecosystem: pip
directory: "/docs"
labels:
- dependencies
- documentation
schedule:
interval: weekly
groups:
docker:
patterns:
- "docker/*"
patches:
patterns:
- "*"
+1
View File
@@ -2,6 +2,7 @@ changelog:
exclude:
authors:
- dependabot
- renovate
categories:
- title: Enhancements
labels:
+20 -14
View File
@@ -17,6 +17,7 @@ on:
- "compose-docs.yml"
- "zensical.toml"
- ".readthedocs.yaml"
- "renovate.json5"
jobs:
build:
@@ -26,6 +27,7 @@ jobs:
# NOTE: the "latest" variant is identified in the Docker meta step's 'latest' config
variant:
- java25
- java25-alpine
- java25-jdk
- java21
- java21-alpine
@@ -41,6 +43,10 @@ jobs:
baseImage: eclipse-temurin:25-jre
platforms: linux/amd64,linux/arm64
mcVersion: latest
- variant: java25-alpine
baseImage: eclipse-temurin:25-jre-alpine
platforms: linux/amd64,linux/arm64
mcVersion: latest
- variant: java25-jdk
baseImage: eclipse-temurin:25
platforms: linux/amd64,linux/arm64
@@ -49,15 +55,15 @@ jobs:
- variant: java21
baseImage: eclipse-temurin:21-jre
platforms: linux/amd64,linux/arm64
mcVersion: latest
mcVersion: 1.21.11
- variant: java21-jdk
baseImage: eclipse-temurin:21
platforms: linux/amd64,linux/arm64
mcVersion: latest
mcVersion: 1.21.11
- variant: java21-alpine
baseImage: eclipse-temurin:21-jre-alpine
platforms: linux/amd64,linux/arm64
mcVersion: latest
mcVersion: 1.21.11
# JAVA 17:
- variant: java17
# jammy doesn't work until minecraft updates to https://github.com/netty/netty/issues/12343
@@ -79,14 +85,14 @@ jobs:
baseImage: eclipse-temurin:8u312-b07-jre-focal
platforms: linux/amd64,linux/arm/v7,linux/arm64
mcVersion: 1.12.2
# Pin version for Java 8
mcHelperVersion: 1.51.1
# Pin version for Java 8, also be sure to set in verify-pr.yml
mcHelperVersion: 1.51.3-java8
- variant: java8-jdk
baseImage: eclipse-temurin:8u312-b07-jdk-focal
platforms: linux/amd64,linux/arm64
mcVersion: 1.12.2
# Pin version for Java 8
mcHelperVersion: 1.51.1
# Pin version for Java 8, also be sure to set in verify-pr.yml
mcHelperVersion: 1.51.3-java8
env:
IMAGE_TO_TEST: "${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}"
HAS_IMAGE_REPO_ACCESS: ${{ secrets.DOCKER_USER != '' && secrets.DOCKER_PASSWORD != '' }}
@@ -101,7 +107,7 @@ jobs:
- name: Docker meta
id: meta
uses: docker/metadata-action@v5.10.0
uses: docker/metadata-action@v6.0.0
with:
# NOTE for forks: if your Docker Hub organization doesn't match your Github repo's,
# then the use of ${{ github.repository_owner }} will need to be replaced.
@@ -131,13 +137,13 @@ jobs:
org.opencontainers.image.authors=Geoff Bourne <itzgeoff@gmail.com>
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.12.0
uses: docker/setup-buildx-action@v4.0.0
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.7.0
uses: docker/setup-qemu-action@v4.0.0
- name: Build for test
uses: docker/build-push-action@v6.18.0
uses: docker/build-push-action@v7.1.0
with:
platforms: linux/amd64
tags: ${{ env.IMAGE_TO_TEST }}
@@ -162,14 +168,14 @@ jobs:
tests/test.sh
- name: Login to DockerHub
uses: docker/login-action@v3.7.0
uses: docker/login-action@v4.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.7.0
uses: docker/login-action@v4.1.0
if: env.HAS_IMAGE_REPO_ACCESS
with:
registry: ghcr.io
@@ -177,7 +183,7 @@ jobs:
password: ${{ github.token }}
- name: Build and push
uses: docker/build-push-action@v6.18.0
uses: docker/build-push-action@v7.1.0
if: github.actor == github.repository_owner
with:
platforms: ${{ matrix.platforms }}
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
steps:
- name: on-publish
if: github.event_name == 'release' && github.event.action == 'published'
uses: SethCohen/github-releases-to-discord@v1.19.0
uses: SethCohen/github-releases-to-discord@v1.20.0
with:
webhook_url: ${{ secrets.DISCORD_WEBHOOK }}
- name: on-success
+12 -28
View File
@@ -1,33 +1,17 @@
name: Issue labels
name: Issues notify
on:
issues:
types: [labeled, reopened, closed, deleted]
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_ISSUES_WEBHOOK }}
types:
- opened
- labeled
- unlabeled
- closed
jobs:
labelNotify:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: notify on label
if: >
github.event.label.name == 'enhancement'
|| github.event.label.name == 'bug'
|| github.event.label.name == 'help wanted'
|| github.event.label.name == 'priority/high'
|| github.event.label.name == 'question'
|| github.event.label.name == 'status/waiting on upstream'
uses: Ilshidur/action-discord@master
with:
args: "[${{ github.event.issue.title }} (#${{ github.event.issue.number }})](<${{ github.event.issue.html_url }}>) added `${{ github.event.label.name }}` label"
- name: notify on action change
if: >
github.event.action == 'closed'
|| github.event.action == 'reopened'
|| github.event.action == 'deleted'
uses: Ilshidur/action-discord@master
with:
args: "[${{ github.event.issue.title }} (#${{ github.event.issue.number }})](<${{ github.event.issue.html_url }}>) has been `${{ github.event.action }}` by `${{ github.event.sender.login }}`"
notify:
uses: itzg/github-workflows/.github/workflows/issues-notify-discord.yml@main
with:
triageLabel: 'status/needs triage'
secrets:
discordWebhook: "${{secrets.DISCORD_ISSUES_WEBHOOK}}"
+9 -8
View File
@@ -14,6 +14,7 @@ on:
- "compose-docs.yml"
- "zensical.toml"
- ".readthedocs.yaml"
- "renovate.json5"
jobs:
build:
@@ -22,7 +23,7 @@ jobs:
matrix:
variant:
- java25
- java21-alpine
- java25-alpine
- java17
- java8
include:
@@ -31,8 +32,8 @@ jobs:
baseImage: eclipse-temurin:25-jre
platforms: linux/amd64,linux/arm64
mcVersion: latest
- variant: java21-alpine
baseImage: eclipse-temurin:21-jre-alpine
- variant: java25-alpine
baseImage: eclipse-temurin:25-jre-alpine
platforms: linux/amd64,linux/arm64
mcVersion: latest
# JAVA 17:
@@ -45,8 +46,8 @@ jobs:
baseImage: eclipse-temurin:8u312-b07-jre-focal
platforms: linux/amd64
mcVersion: 1.12.2
# Pin version for Java 8
mcHelperVersion: 1.51.1
# Pin version for Java 8, be sure to also set in build.yml
mcHelperVersion: 1.51.3-java8
env:
IMAGE_TO_TEST: ${{ github.repository_owner }}/minecraft-server:test-${{ matrix.variant }}-${{ github.run_id }}
runs-on: ubuntu-22.04
@@ -58,10 +59,10 @@ jobs:
fetch-depth: 0
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.12.0
uses: docker/setup-buildx-action@v4.0.0
- name: Confirm multi-arch build
uses: docker/build-push-action@v6.18.0
uses: docker/build-push-action@v7.1.0
with:
platforms: ${{ matrix.platforms }}
# ensure latest base image is used
@@ -72,7 +73,7 @@ jobs:
cache-from: type=gha,scope=${{ matrix.variant }}
- name: Build for test
uses: docker/build-push-action@v6.18.0
uses: docker/build-push-action@v7.1.0
with:
# Only build single platform since loading multi-arch image into daemon fails with
# "docker exporter does not currently support exporting manifest lists"
+2 -6
View File
@@ -1,19 +1,15 @@
version: 2
python:
install:
- requirements: docs/requirements.txt
build:
os: ubuntu-24.04
tools:
python: latest
python: "3.14"
jobs:
# We recommend using a requirements file for reproducible builds.
# This is just a quick example to get started.
# https://docs.readthedocs.io/page/guides/reproducible-builds.html
install:
- pip install zensical
- pip install -r docs/requirements.txt
build:
html:
- zensical build
+12 -7
View File
@@ -25,32 +25,37 @@ EXPOSE 25565
ARG APPS_REV=1
ARG GITHUB_BASEURL=https://github.com
ARG EASY_ADD_VERSION=0.8.11
# renovate: datasource=github-releases packageName=itzg/easy-add
ARG EASY_ADD_VERSION=0.8.13
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.11
# renovate: datasource=github-releases packageName=itzg/restify
ARG RESTIFY_VERSION=1.7.14
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.7.3
# renovate: datasource=github-releases packageName=itzg/rcon-cli
ARG RCON_CLI_VERSION=1.7.5
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.16.0
# renovate: datasource=github-releases packageName=itzg/mc-monitor
ARG MC_MONITOR_VERSION=0.16.4
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.14.1
# renovate: datasource=github-releases packageName=itzg/mc-server-runner
ARG MC_SERVER_RUNNER_VERSION=1.14.7
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.54.0
# renovate: datasource=github-releases packageName=itzg/mc-image-helper versioning=loose
ARG MC_HELPER_VERSION=1.58.0
ARG MC_HELPER_BASE_URL=${GITHUB_BASEURL}/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION}
# used for cache busting local copy of mc-image-helper
ARG MC_HELPER_REV=1
+24 -1
View File
@@ -6,7 +6,7 @@
[![](https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-orange.svg)](https://www.buymeacoffee.com/itzg)
[![Documentation Status](https://readthedocs.org/projects/docker-minecraft-server/badge/?version=latest)](https://docker-minecraft-server.readthedocs.io/en/latest/?badge=latest)
[![Read the docs](docs/img/docs-banner.png)](https://docker-minecraft-server.readthedocs.io/)
[![Read the docs](docs/img/banner-docs.png)](https://docker-minecraft-server.readthedocs.io/)
There you will find things like
- [Quick start with Docker Compose](https://docker-minecraft-server.readthedocs.io/en/latest/#using-docker-compose)
@@ -19,3 +19,26 @@ There you will find things like
There are also many examples located in [the examples directory](examples) of this repo.
This image only supports Java edition natively; however, if looking for a server that is compatible with Bedrock edition, then use [itzg/minecraft-bedrock-server](https://github.com/itzg/docker-minecraft-bedrock-server) or [refer to this section](https://docker-minecraft-server.readthedocs.io/en/latest/misc/examples/#bedrock-compatible-server) to add Bedrock compatibility to a Java edition server.
[![Sponsors](docs/img/banner-sponsors.png)](#sponsors)
<a name="sponsors"></a>
<a href="https://spawnbox.app"><img src="https://spawnbox.app/favicon-48x48.png" alt="SpawnBox logo" width="48" align="left" /></a>
<a href="https://spawnbox.app"><b>SpawnBox</b></a> - Powered by <code>itzg/minecraft-server</code>, it's a Windows desktop app for parents, teens, and friend groups who want a Minecraft server on their own PC without learning Docker, WSL2, or networking.
<br clear="left" />
<a href="https://server.pro"><img src="https://server.pro/s/img/logo-short-192.png" alt="Server.pro logo" width="48" align="left" /></a>
<a href="https://server.pro"><b>Server.pro</b></a> - A game server hosting platform offering one-click Minecraft server deployment powered by <code>itzg/minecraft-server</code>, with global locations and an easy-to-use control panel.
<br clear="left" />
<!-- additional sponsors repeat the pattern above: floated logo + blurb + clear-left break -->
<!-- logo image preferrably hosted on an external, stable site at a size of 48x48px -->
<!-- link to sponsor site -->
<!-- one or two line summary ideally with a mention of image integration -->
[and more...](https://github.com/sponsors/itzg)
+4 -1
View File
@@ -18,6 +18,7 @@ apk add --no-cache -U \
curl \
iputils \
git \
git-lfs \
jq \
mysql-client \
tzdata \
@@ -31,6 +32,7 @@ apk add --no-cache -U \
libpcap \
libwebp \
libcap \
numactl \
${EXTRA_ALPINE_PACKAGES}
# Download and install patched knockd
@@ -44,4 +46,5 @@ cat <<EOF >> /etc/gitconfig
[user]
name = Minecraft Server on Docker
email = server@example.com
EOF
EOF
git lfs install
+2
View File
@@ -46,6 +46,7 @@ dnf install -y \
zstd \
$([ "$os_major_version" -ge 10 ] && echo 'bzip2' || echo 'lbzip2') \
libpcap \
libcap \
libwebp \
findutils \
which \
@@ -81,3 +82,4 @@ cat <<EOF >> /etc/gitconfig
name = Minecraft Server on Docker
email = server@example.com
EOF
git lfs install
+4 -5
View File
@@ -16,6 +16,7 @@ apt-get install -y \
iputils-ping \
curl \
git \
git-lfs \
jq \
dos2unix \
mysql-client \
@@ -27,13 +28,10 @@ apt-get install -y \
lbzip2 \
nfs-common \
libpcap0.8 \
libnuma1 \
libcap2-bin \
${EXTRA_DEB_PACKAGES}
# 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
@@ -50,3 +48,4 @@ cat <<EOF >> /etc/gitconfig
name = Minecraft Server on Docker
email = server@example.com
EOF
git lfs install
+15
View File
@@ -0,0 +1,15 @@
services:
mc-dev:
build:
context: .
environment:
EULA: true
volumes:
- ./scripts:/image/scripts:ro
- data:/data
ports:
- "25565:25565"
stdin_open: true
tty: true
volumes:
data:
+7 -1
View File
@@ -22,6 +22,12 @@ docker run -d --pull=always \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
```
## Clean server libraries
By default, supported server types remove stale server libraries during installation by setting `CLEAN_SERVER_LIBRARIES` to `true`. Set `CLEAN_SERVER_LIBRARIES` to `false` to disable this cleanup if it causes unexpected behavior.
Currently, library cleanup is supported by `TYPE=PAPER`. Other server jar types are not yet supported.
## Running as alternate user/group ID
By default, the container will switch to and run the Minecraft server as user ID 1000 and group ID 1000; however, that can be changed by setting the environment variables `UID` and `GID`.
@@ -166,7 +172,7 @@ such as:
## HTTP Proxy
You may configure the use of an HTTP/HTTPS proxy by passing the proxy's "host:port" via the environment variable `PROXY`. In [the example compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-proxied.yml) it references a Squid proxy. The host and port can be separately passed via the environment variables `PROXY_HOST` and `PROXY_PORT`. A `|` delimited list of hosts to exclude from proxying can be passed via `PROXY_NON_PROXY_HOSTS`.
You may configure the use of an HTTP/HTTPS proxy by passing the proxy's "host:port" via the environment variable `PROXY`. In [the example compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/proxied/compose.yml) it references a Squid proxy. The host and port can be separately passed via the environment variables `PROXY_HOST` and `PROXY_PORT`. A `|` delimited list of hosts to exclude from proxying can be passed via `PROXY_NON_PROXY_HOSTS`.
## Using "noconsole" option

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

@@ -6,7 +6,7 @@ Small, none, Minecraftia
Line 2:
"Documentation"
Large, non, Minecrafter
Large, none, Minecrafter
Overall settings:
- drop shadow
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

+9
View File
@@ -0,0 +1,9 @@
Generated at https://textcraft.net/
Line 1:
"Sponsors"
Mid
None
Minecrafter
Drop shadow
3d-style view
+1 -1
View File
@@ -8,7 +8,7 @@ An option to stop the server after a specified time has been added for niche app
A `.skip-stop` file can be created in the `/data` directory to make the server skip autostopping, for as long as the file is present. The autostop timer will also be reset.
A starting, example compose file has been provided in [examples/docker-compose-autostop.yml](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-autostop.yml).
A starting, example compose file has been provided in [examples/autostop/compose.yml](https://github.com/itzg/docker-minecraft-server/blob/master/examples/autostop/compose.yml).
Enable the Autostop functionality by setting:
+80
View File
@@ -1,4 +1,84 @@
## Simple image additions
You can easily build upon the base image using an inline Dockerfile.
```yaml title="compose.yaml"
services:
mc:
build:
context: .
dockerfile_inline: |
FROM itzg/minecraft-server:latest
RUN apt-get update && apt-get install -y \
webp \
&& rm -rf /var/lib/apt/lists/*
pull: true # Always pull new base image
pull_policy: build
restart: unless-stopped
environment:
EULA: true
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data
```
Here is an example to add Nvidia GPU support for C2ME:
??? Example "C2ME GPU example"
```yaml title="compose.yaml"
services:
mc:
build:
context: .
dockerfile_inline: |
FROM itzg/minecraft-server:java25
# Install OpenCL loader and NVIDIA driver capabilities
RUN apt-get update && apt-get install -y \
ocl-icd-libopencl1 \
opencl-headers \
clinfo \
&& rm -rf /var/lib/apt/lists/*
# 1. Create the vendor directory
# 2. Tell OpenCL to use the NVIDIA library
RUN mkdir -p /etc/OpenCL/vendors && \
echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
# Tell the NVIDIA container runtime to expose all GPU capabilities (including compute/utility)
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility,graphics,video
COPY ./mods /mods
pull: true # Always pull new base image
pull_policy: build
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
environment:
EULA: true
TYPE: "FABRIC"
VERSION: 1.21.10
MEMORY: 8G
MODRINTH_PROJECTS: |-
fabric-api
c2me
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data
```
!!! tip "For advanced use only"
This page describes a capability that is not applicable to most users. It is only intended for rare cases when a very specific Java base image is needed or additional packages need to be installed that are not generally applicable or would bloat the image size.
+27 -49
View File
@@ -11,62 +11,40 @@ Adding a new server `TYPE` can vary due to the complexity of obtaining and confi
## Iterative script development
Individual scripts can be iteratively developed, debugged, and tested using the following procedure.
First, build a baseline of the image to include the packages needed by existing or new scripts:
PowerShell: (Example of building and testing ForgeAPI)
```powershell
$env:FOLDER_TO_TEST="forgeapimods_projectids"
$env:IMAGE_TO_TEST="mc-dev"
docker build -t $env:IMAGE_TO_TEST .
pushd "tests/setuponlytests/$env:FOLDER_TO_TEST/"
docker compose run mc
docker compose down -v --remove-orphans
popd
```
PowerShell: Building different images of Java for testing
```powershell
$env:BASE_IMAGE='eclipse-temurin:8u312-b07-jre'
$env:IMAGE_TO_TEST="mc-dev"
docker build --build-arg BASE_IMAGE=$env:BASE_IMAGE -t $env:IMAGE_TO_TEST .
```
Bash: (Example of building and testing ForgeAPI)
```bash
export FOLDER_TO_TEST="forgeapimods_file"
export IMAGE_TO_TEST="mc-dev"
docker build -t $IMAGE_TO_TEST .
pushd tests/setuponlytests/$FOLDER_TO_TEST/
docker compose run mc
docker compose down -v --remove-orphans
popd
```
Using the baseline image, an interactive container can be started to iteratively run the scripts to be developed. By attaching the current workspace directory, you can use the local editor of your choice to iteratively modify scripts while using the container to run them.
The included `compose-dev.yml` will mount the local `scripts` code into the container and allow for iterative development. Replace `[-e key=value]` with any environment variables you wish to set for testing the modified scripts.
```shell
docker run -it --rm -v ${PWD}:/image/scripts --entrypoint bash mc-dev
docker compose -f compose-dev.yml run --rm -it [-e key=value] mc-dev
```
From within the container you can run individual scripts via the attached `/image/scripts/` path; however, be sure to set any environment variables expected by the scripts by either `export`ing them manually:
!!! tip
```shell
export VERSION=1.12.2
/image/scripts/start-deployFabric
To speed up the development cycle, it is recommended to set `SETUP_ONLY` to `true` as part of the run command above.
## Building the image with a new release of a tool
In this exapmle, let's say that [mc-image-helper](https://github.com/itzg/mc-image-helper) has been [released](https://github.com/itzg/mc-image-helper/releases) at 1.56.0, but the corresponding changes in the image [scripts](https://github.com/itzg/docker-minecraft-server/tree/23205471db9814cff9c6602361dbc6cdd6c4230a/scripts) need to be tested against that version while updating [the Dockerfile](https://github.com/itzg/docker-minecraft-server/blob/23205471db9814cff9c6602361dbc6cdd6c4230a/Dockerfile#L58).
```yaml title="tests/manual/optional-projects/compose.yml" hl_lines="7"
services:
mc:
build:
# ...or wherever you cloned the docker-minecraft-server repo
context: ../../..
args:
MC_HELPER_VERSION: 1.56.0
environment:
EULA: true
TYPE: "FABRIC"
MODRINTH_PROJECTS: |
fabric-api
pl3xmap?:beta
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data
```
...or pre-pending script execution:
```shell
VERSION=1.12.2 /image/scripts/start-deployFabric
```
!!! note
You may want to temporarily add an `exit` statement near the end of your script to isolate execution to just the script you're developing.
## Using development copy of tools
In the cloned repo, such as [`mc-image-helper`](https://github.com/itzg/mc-image-helper), install the distribution locally by running:
+55 -1
View File
@@ -81,7 +81,13 @@ These paths work well if you want to have a common set of modules in a separate
You can download/copy additional configuration files or other resources before the server starts by using the `APPLY_EXTRA_FILES` environment variable. This is useful for downloading configs that you want to patch or modify during the startup process.
The format uses a `<` separator between the destination path and the source URL/path. The destination path is relative to the `/data` directory. If specifying a source path, it needs to be path mounted within the container.
The format uses a `<` separator between the destination path and the source URL/path.
The destination path is relative to the `/data` directory.
If specifying a source path, rather than URL, it needs to reference a path mounted into the container as a volume.
A source path can refer to a directory, in which case the files within that directory will be copied into the destination directory. At startup, it will take care of synchronizing the removal of files it copied when they are removed from the source.
!!! example
@@ -150,6 +156,54 @@ Disabling mods within docker compose files:
mod2.jar
```
### Loading container configuration from a pack
A pack can ship its own container configuration so that the server type, version,
and other variables travel with the pack rather than being declared by the user.
At startup, before `TYPE` is dispatched, the container can load environment
variables from a file on disk, a URL, an entry inside an archive, or from the
`.env` of each `GENERIC_PACK(S)` entry.
- `LOAD_ENV_FROM_GENERIC_PACK`: when `true`, each entry in `GENERIC_PACKS` (after
`GENERIC_PACKS_PREFIX`/`SUFFIX` expansion) is probed for a top-level `.env`
and each one found is sourced in the same order the packs are applied (later
packs override earlier ones, matching the layering of the unpack itself). Packs
without a `.env` are skipped without error. URLs are downloaded into
`/data/packs/` and reused by the regular generic-pack unpack step, so they are
not fetched twice.
- `LOAD_ENV_FROM_FILE`: container path or URL of a shell-style env file (one
`KEY=VALUE` per line). Comments and blank lines are allowed.
- `LOAD_ENV_FROM_ARCHIVE`: container path or URL of a zip/tar archive containing
an env file. The entry is sourced into the environment.
- `LOAD_ENV_FROM_ARCHIVE_ENTRY`: relative path of the env file inside the archive.
Defaults to `.env`.
These can be combined. Load order is: generic packs first, then
`LOAD_ENV_FROM_FILE`, then `LOAD_ENV_FROM_ARCHIVE` — later loads override
earlier ones, and all of them **override** values passed via `docker run -e` (or
compose `environment:`), so the pack's declared values win.
```shell
docker run -d \
-e EULA=TRUE \
-e GENERIC_PACK=https://cdn.example.org/my-pack.zip \
-e LOAD_ENV_FROM_GENERIC_PACK=true \
itzg/minecraft-server
```
Where `my-pack.zip` contains a `.env` at its root such as:
```env
TYPE=FABRIC
VERSION=1.21.1
FABRIC_LOADER_VERSION=0.16.0
```
!!! warning
The env file is sourced by `bash`, so any shell syntax it contains will be
evaluated. Only point these variables at sources you trust. `EULA` cannot be
set this way — it is checked before the env file is loaded.
## Mods/plugins list
You may also download or copy over individual mods/plugins using the `MODS` or `PLUGINS` environment variables. Both are a comma or newline delimited list of
+48 -1
View File
@@ -86,6 +86,54 @@ Where:
To temporarily disable processing of the `MODRINTH_PROJECTS` list, then comment out the `MODRINTH_PROJECTS` environment variable.
## Optional projects
Projects that are not critical for the server to function can be marked as **optional** by appending a `?` to the project slug or ID. When a compatible version cannot be found for an optional project, the server logs a warning and continues startup instead of failing.
This is particularly useful for server-side mods that tend to lag behind on Minecraft updates, such as map renderers (Pl3xmap, BlueMap), performance mods (Lithium, C2ME), or admin tools (Spark, LuckPerms).
```yaml
MODRINTH_PROJECTS: |
fabric-api
lithium
pl3xmap?
bluemap?:beta
```
The `?` marker can be combined with all existing format options:
| Format | Example |
|----------------------------|---------------------------|
| Slug only | `pl3xmap?` |
| With version | `pl3xmap?:Oa9ZDzZq` |
| With release type | `pl3xmap?:beta` |
| With loader prefix | `fabric:pl3xmap?` |
| Full combination | `fabric:pl3xmap?:beta` |
| In listing files | `pl3xmap?` *(one per line)* |
When combined with [`VERSION_FROM_MODRINTH_PROJECTS`](#version-from-projects), optional projects are **excluded** from the version calculation. This means an optional mod that hasn't been updated yet will never block a Minecraft version upgrade.
!!! example "Automatic upgrades without optional-mod breakage"
```yaml
MODRINTH_PROJECTS: |
fabric-api
lithium
pl3xmap?
VERSION_FROM_MODRINTH_PROJECTS: true
```
If a new Minecraft version is released and `fabric-api` + `lithium` support it but `pl3xmap` does not:
1. The resolved `VERSION` is set to the new version (pl3xmap is not considered)
2. `fabric-api` and `lithium` are installed normally
3. `pl3xmap` is skipped with a warning in the logs
4. On a future restart, once pl3xmap publishes a compatible build, it is picked up automatically
!!! note
Optional projects marked with `?` in listing files (`@/path/to/file.txt`) are supported ; the `?` is parsed from each line the same way as inline entries.
## Version from Projects
When the environment variable `VERSION_FROM_MODRINTH_PROJECTS` is set to "true" the Minecraft [`VERSION`](../versions/minecraft.md) will be automatically determined by looking at the most recent version of Minecraft that is supported by all the projects provided in `MODRINTH_PROJECTS`.
@@ -115,4 +163,3 @@ When the environment variable `VERSION_FROM_MODRINTH_PROJECTS` is set to "true"
`MODRINTH_LOADER`
: When using a custom server, set this to specify which loader type will be requested during lookups
+13 -13
View File
@@ -1,25 +1,25 @@
click==8.3.1
click==8.4.0
colorama==0.4.6
deepmerge==2.0
ghp-import==2.1.0
griffe==1.15.0
griffe==2.0.2
Jinja2==3.1.6
Markdown==3.10.1
Markdown==3.10.2
MarkupSafe==3.0.3
mergedeep==1.3.4
mkdocs==1.6.1
mkdocs-autorefs==1.4.3
mkdocs-get-deps==0.2.0
mkdocstrings==1.0.3
mkdocstrings-python==2.0.1
packaging==26.0
pathspec==1.0.4
platformdirs==4.5.1
Pygments==2.19.2
pymdown-extensions==10.20.1
mkdocs-autorefs==1.4.4
mkdocs-get-deps==0.2.2
mkdocstrings==1.0.4
mkdocstrings-python==2.0.3
packaging==26.2
pathspec==1.1.1
platformdirs==4.9.6
Pygments==2.20.0
pymdown-extensions==10.21.3
python-dateutil==2.9.0.post0
PyYAML==6.0.3
pyyaml_env_tag==1.1
six==1.17.0
watchdog==6.0.0
# zensical @ file:///
zensical==0.0.43
+6
View File
@@ -397,6 +397,12 @@ This image maps known server properties as described in [this section](configura
<td><code>Randomly generated</code></td>
<td>✅</td>
</tr>
<tr>
<td><code>RCON_PASSWORD_FILE</code></td>
<td>Can be set to read the RCON password from a file. Overrides <code>RCON_PASSWORD</code> if both are set.</td>
<td><code></code></td>
<td>⬜️</td>
</tr>
<tr>
<td><code>RCON_PORT</code></td>
<td>The port for RCON</td>
+4 -9
View File
@@ -15,25 +15,19 @@ where `<tag>` refers to the first column of this table:
| latest | 25 | Ubuntu | Hotspot | amd64, arm64 | |
| stable | 25 | Ubuntu | Hotspot | amd64, arm64 | |
| java25 | 25 | Ubuntu | Hotspot | amd64, arm64 | |
| java25-alpine | 25 | Alpine | Hotspot | amd64, arm64 | |
| java25-jdk | 25 | Ubuntu | Hotspot+JDK | amd64, arm64 | |
| java25-graalvm | 25 | Oracle | Oracle GraalVM (3) | amd64, arm64 | (5) |
| 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 (3) | amd64, arm64 | (5) |
| java17 | 17 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
| java17-graalvm | 17 | Oracle | Oracle GraalVM (3) | amd64, arm64 | (5) |
| java16 | 16 | Ubuntu | Hotspot | amd64, arm64, armv7 | (4) |
| java16 | 16 | Ubuntu | Hotspot | amd64, arm64, armv7 | (1) |
| java11 | 11 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
| java8 | 8 | Ubuntu | Hotspot | amd64, arm64, armv7 | |
Notes
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.
2. Short-term variant, subject to deprecation upon next version introduction
3. Based on the [Oracle GraalVM 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.
4. This version of Java is [recommended for PaperMC 1.16.5](https://docs.papermc.io/paper/getting-started/#requirements)
5. Due to these images using Oracle Linux, (which is based on Red Hat Enterprise Linux) Forge Installer will not work due to its use of zlib-ng. Use other images for initial installation and Forge version upgrade.
1. This version of Java is [recommended for PaperMC 1.16.5](https://docs.papermc.io/paper/getting-started/#requirements)
!!! example "Example using java8"
@@ -127,6 +121,7 @@ Forge also doesn't support openj9 JVM implementation.
The following image tags have been deprecated and are no longer receiving updates:
- java25-graalvm, java21-graalvm, java17-graalvm
- adopt13
- adopt14
- adopt15
+2 -1
View File
@@ -2,7 +2,8 @@ To use a different Minecraft version, pass the `VERSION` environment variable (c
- `LATEST` for latest release (the default)
- `SNAPSHOT` for latest snapshot
- a specific version, such as `1.7.9`, `25w35a`, `26.1`, or `26.1-snapshot-1`
- a specific legacy version, such as `1.7.9`, `25w35a`, `1.15.2-pre2` or `1.21.11-rc1`
- a specific [new version numbering system](https://www.minecraft.net/en-us/article/minecraft-new-version-numbering-system) version like `26.1`, `26.1-snapshot-1`, `26.1-pre-1`, or `26.1-rc-1`
- or an alpha and beta version, such as "b1.7.3" (server download might not exist)
For example, to use the latest snapshot:
+1 -3
View File
@@ -10,7 +10,6 @@ services:
VANILLATWEAKS_FILE: /config/vanillatweaks-datapacks.json
REMOVE_OLD_VANILLATWEAKS: "TRUE"
volumes:
- data:/data
- ./vanillatweaks-datapacks.json:/config/vanillatweaks-datapacks.json:ro
vanillatweaks_sharecode:
# port is set to 25566 to not conflict with vanillatweaks_file example
@@ -35,7 +34,6 @@ services:
VANILLATWEAKS_FILE: /config/vanillatweaks-datapacks.json,/config/vanillatweaks-resourcepacks.json,/config/vanillatweaks-craftingtweaks.json
REMOVE_OLD_VANILLATWEAKS: "TRUE"
volumes:
- data:/data
- ./vanillatweaks-datapacks.json:/config/vanillatweaks-datapacks.json:ro
- ./vanillatweaks-resourcepacks.json:/config/vanillatweaks-resourcepacks.json:ro
- ./vanillatweaks-craftingtweaks.json:/config/vanillatweaks-craftingtweaks.json:ro
- ./vanillatweaks-craftingtweaks.json:/config/vanillatweaks-craftingtweaks.json:ro
+6
View File
@@ -144,6 +144,7 @@
"smart-hud",
"smithing-template-viewer",
"smooth-font",
"smooth-swapping",
"smoothwater",
"sodium",
"sodium-extra",
@@ -211,6 +212,11 @@
},
"valhelsia-5": {
"excludes": ["modernfix"]
},
"wolds-vaults": {
"forceIncludes": [
"just-enough-resources-jer"
]
}
}
}
+1 -4
View File
@@ -5,7 +5,6 @@
"AmbientSounds",
"amecs",
"Animation_Overhaul",
"appleskin",
"auudio",
"axolotlbuckets",
"BadOptimizations",
@@ -28,7 +27,6 @@
"compass-coords",
"colorwheel",
"connectedness",
"connector",
"continuity",
"controlling",
"craftpresence",
@@ -39,8 +37,6 @@
"distraction_free_recipes",
"drippyloadingscreen",
"eating-animation",
"emi",
"emi_loot",
"emi_trade",
"emiffect",
"emitrades",
@@ -94,6 +90,7 @@
"seasonhud",
"ShoulderSurfing",
"skinlayers3d",
"smoothswapping",
"sodium",
"sorted_enchantments",
"tooltipfix",
+14 -4
View File
@@ -2,7 +2,7 @@
{
"tag": "latest",
"notes": "Always tracks the most recent commit on the main branch",
"java": "21",
"java": "25",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
@@ -24,12 +24,20 @@
"jvm": "hotspot",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java25-alpine",
"java": "25",
"distribution": "alpine",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java25-graalvm",
"java": "25",
"distribution": "oracle",
"jvm": "graalvm",
"architectures": ["amd64", "arm64"]
"architectures": ["amd64", "arm64"],
"deprecated": true
},
{
"tag": "java24",
@@ -67,7 +75,8 @@
"java": "21",
"distribution": "oracle",
"jvm": "graalvm",
"architectures": ["amd64", "arm64"]
"architectures": ["amd64", "arm64"],
"deprecated": true
},
{
"tag": "java21-jdk",
@@ -141,4 +150,5 @@
{"tag": "java8-jdk", "deprecated": true},
{"tag": "java8-openj9", "deprecated": true},
{"tag": "java8-graalvm-ce", "deprecated": true}
]
]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 75 KiB

+16
View File
@@ -0,0 +1,16 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"enabledManagers": [
"custom.regex"
],
"customManagers": [
{
"customType": "regex",
"managerFilePatterns": ["/^Dockerfile$/"],
"matchStrings": [
"# renovate: datasource=(?<datasource>[a-z-]+?)(?: packageName=(?<packageName>.+?))?(?: versioning=(?<versioning>[a-z-]+))?\\s(?:ENV|ARG) .+?_VERSION=(?<currentValue>.+?)\\s"
]
}
],
"labels": ["dependencies"]
}
+32 -3
View File
@@ -54,8 +54,8 @@ fi
if isTrue "${DEBUG_MEMORY:-false}"; then
log "Memory usage and availability (in MB)"
uname -pars
free -m
uname -pars | applyLogPrefix
free -m | applyLogPrefix
fi
##########################################
@@ -152,11 +152,40 @@ fi
cd /data || exit 1
##########################################
# Optionally load environment variables from a file or archive entry,
# allowing packs/artifacts to declare TYPE, VERSION and other settings
# inside-out. Loaded values override anything passed in through docker -e.
# Generic packs are processed first so that LOAD_ENV_FROM_FILE and
# LOAD_ENV_FROM_ARCHIVE can override any values they set.
if isTrue "${LOAD_ENV_FROM_GENERIC_PACK:-false}"; then
if ! loadEnvFromGenericPack; then
exit 1
fi
fi
if [[ ${LOAD_ENV_FROM_FILE:-} ]]; then
if ! loadEnvFromFile "${LOAD_ENV_FROM_FILE}"; then
exit 1
fi
fi
if [[ ${LOAD_ENV_FROM_ARCHIVE:-} ]]; then
if ! loadEnvFromArchive "${LOAD_ENV_FROM_ARCHIVE}" "${LOAD_ENV_FROM_ARCHIVE_ENTRY:-.env}"; then
exit 1
fi
fi
export DECLARED_TYPE=${TYPE^^}
export DECLARED_VERSION="$VERSION"
if isTrue "${VERSION_FROM_MODRINTH_PROJECTS:-}" && [[ ${MODRINTH_PROJECTS:-} ]]; then
if ! VERSION=$(mc-image-helper version-from-modrinth-projects --projects "${MODRINTH_PROJECTS}"); then
args=()
if [[ ${MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE:-} ]]; then
args+=(--allowed-version-type "${MODRINTH_PROJECTS_DEFAULT_VERSION_TYPE:-}")
fi
if ! VERSION=$(mc-image-helper version-from-modrinth-projects "${args[@]}" --projects "${MODRINTH_PROJECTS}"); then
logError "failed to resolve version from MODRINTH_PROJECTS: ${MODRINTH_PROJECTS}"
exit 1
fi
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
+6 -2
View File
@@ -8,10 +8,14 @@ function getGTNHdownloadPath(){
gtnh_download_path=""
current_java_version=$(mc-image-helper java-release)
if ! mapfile -t packs < <(curl -sfL 'http://downloads.gtnewhorizons.com/ServerPacks/?raw'); then
logError "Failed to retrieve data from http://downloads.gtnewhorizons.com/ServerPacks/?raw"
if ! packs_data="$(
curl -fsSL "https://downloads.gtnewhorizons.com/versions.json" \
| jq -r '.versions[]?.server? | .[]? | select(type=="string" and test("Server"))'
)"; then
logError "Failed to retrieve data from https://downloads.gtnewhorizons.com/versions.json"
exit 1
fi
mapfile -t packs <<< "$packs_data"
log "Start locating server files..."
for pack in "${packs[@]}"; do
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
+20 -6
View File
@@ -11,17 +11,26 @@ handleDebugMode
: "${PAPER_DOWNLOAD_URL:=}"
: "${PAPER_CUSTOM_JAR:=}"
: "${PAPER_CONFIG_DEFAULTS_REPO:=${PAPER_CONFIG_REPO:=https://raw.githubusercontent.com/Shonz1/minecraft-default-configs/main}}"
: "${CLEAN_SERVER_LIBRARIES:=true}"
resultsFile=/data/.paper.env
if [[ $PAPER_CUSTOM_JAR ]]; then
export SERVER="$PAPER_CUSTOM_JAR"
elif [[ $PAPER_DOWNLOAD_URL ]]; then
if ! mc-image-helper install-paper \
--output-directory=/data \
--results-file="$resultsFile" \
--url="$PAPER_DOWNLOAD_URL"; then
logError "Failed to download from custom PaperMC URL"
exit 1
args=(
--output-directory=/data
--results-file="$resultsFile"
--url="$PAPER_DOWNLOAD_URL"
)
if [[ $CLEAN_SERVER_LIBRARIES ]]; then
args+=(--clean-libraries)
fi
if ! mc-image-helper install-paper "${args[@]}"; then
logError "Failed to download from custom PaperMC URL"
exit 1
fi
applyResultsFile ${resultsFile}
else
@@ -35,6 +44,11 @@ else
if [[ $PAPER_BUILD ]]; then
args+=(--build="$PAPER_BUILD")
fi
if [[ $CLEAN_SERVER_LIBRARIES ]]; then
args+=(--clean-libraries)
fi
if ! mc-image-helper install-paper "${args[@]}"; then
logError "Failed to download $PAPER_PROJECT"
exit 1
Regular → Executable
View File
Regular → Executable
View File
Regular → Executable
View File
+122 -3
View File
@@ -26,6 +26,117 @@ function applyResultsFile() {
set +a
}
function loadEnvFromFile() {
local source=${1?Missing required source argument}
local downloaded=
if isURL "$source"; then
mkdir -p /data/.tmp
downloaded=$(mktemp -p /data/.tmp)
log "Downloading env file from $source"
if ! get -o "$downloaded" "$source"; then
logError "Failed to download env file from $source"
rm -f "$downloaded"
return 1
fi
log "Loading env vars from $source"
applyResultsFile "$downloaded"
rm -f "$downloaded"
elif [ -f "$source" ]; then
log "Loading env vars from $source"
applyResultsFile "$source"
else
logError "Env file not found: $source"
return 1
fi
}
function loadEnvFromArchive() {
local source=${1?Missing required source argument}
local entry=${2:-.env}
local archive=
local downloaded=
local tmpdir
local rc=0
mkdir -p /data/.tmp
if isURL "$source"; then
downloaded=$(mktemp -p /data/.tmp)
log "Downloading archive from $source"
if ! get -o "$downloaded" "$source"; then
logError "Failed to download archive from $source"
rm -f "$downloaded"
return 1
fi
archive=$downloaded
elif [ -f "$source" ]; then
archive=$source
else
logError "Archive not found: $source"
return 1
fi
tmpdir=$(mktemp -d -p /data/.tmp)
if extract "$archive" "$tmpdir" "$entry" && [ -f "$tmpdir/$entry" ]; then
log "Loading env vars from '$entry' in $source"
applyResultsFile "$tmpdir/$entry"
else
logError "Failed to load env entry '$entry' from $source"
rc=1
fi
rm -rf "$tmpdir"
[[ -n "$downloaded" ]] && rm -f "$downloaded"
return $rc
}
function loadEnvFromGenericPack() {
: "${GENERIC_PACKS:=${GENERIC_PACK:-}}"
: "${GENERIC_PACKS_PREFIX:=}"
: "${GENERIC_PACKS_SUFFIX:=}"
if [[ -z "${GENERIC_PACKS}" ]]; then
logWarning "LOAD_ENV_FROM_GENERIC_PACK is set but GENERIC_PACK(S) is empty"
return 0
fi
mkdir -p /data/.tmp
IFS=',' read -ra packs <<< "${GENERIC_PACKS}"
local loaded=0
local pack packEntry packFile tmpdir
for packEntry in "${packs[@]}"; do
pack="${GENERIC_PACKS_PREFIX}${packEntry}${GENERIC_PACKS_SUFFIX}"
if isURL "$pack"; then
mkdir -p /data/packs
if ! packFile=$(get -o /data/packs --output-filename --skip-up-to-date "$pack"); then
logError "Failed to download generic pack $pack"
return 1
fi
else
packFile=$pack
fi
if [[ ! -f "$packFile" ]]; then
logError "Generic pack not found: $packFile"
return 1
fi
tmpdir=$(mktemp -d -p /data/.tmp)
# Packs without a .env are valid — silently skip; the unpack step still applies them.
if extract "$packFile" "$tmpdir" .env 2>/dev/null && [ -f "$tmpdir/.env" ]; then
log "Loading env vars from .env in $pack"
applyResultsFile "$tmpdir/.env"
loaded=$((loaded + 1))
fi
rm -rf "$tmpdir"
done
if (( loaded == 0 )); then
logWarning "LOAD_ENV_FROM_GENERIC_PACK is set but no pack in GENERIC_PACK(S) contained a .env"
fi
}
function join_by() {
local d=$1
shift
@@ -125,6 +236,12 @@ function logn() {
echo -n "[init] $*"
}
# Use as
# cmd | applyLogPrefix
function applyLogPrefix() {
sed 's/^/[init] /'
}
function log() {
local oldState
# The return status when listing options is zero if all optnames are enabled, non- zero otherwise.
@@ -439,17 +556,19 @@ function isType() {
function extract() {
src=${1?}
destDir=${2?}
shift 2
# remaining args are paths within the archive to extract; if none, extract everything
type=$(file -b --mime-type "${src}")
case "${type}" in
application/zip)
unzip -o -q -d "${destDir}" "${src}"
unzip -o -q -d "${destDir}" "${src}" "$@"
;;
application/x-tar | application/gzip | application/x-gzip | application/x-bzip2)
tar -C "${destDir}" -xf "${src}"
tar -C "${destDir}" -xf "${src}" "$@"
;;
application/zstd | application/x-zstd)
tar -C "${destDir}" --use-compress-program=unzstd -xf "${src}"
tar -C "${destDir}" --use-compress-program=unzstd -xf "${src}" "$@"
;;
*)
logError "Unsupported archive type: $type"
@@ -0,0 +1,17 @@
services:
mc:
build:
# ...or wherever you cloned the docker-minecraft-server repo
context: ../../..
args:
MC_HELPER_VERSION: 1.56.0
environment:
EULA: true
TYPE: "FABRIC"
MODRINTH_PROJECTS: |
fabric-api
pl3xmap?:beta
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data
@@ -0,0 +1,18 @@
services:
mc:
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
environment:
EULA: "true"
SETUP_ONLY: "true"
LOAD_ENV_FROM_ARCHIVE: /test/load-env.zip
MOTD: from-compose
LOG_TIMESTAMP: "true"
DEBUG: "true"
# the following are only used to speed up test execution
TYPE: CUSTOM
CUSTOM_SERVER: /servers/fake.jar
VERSION: 1.18.1
volumes:
- ./data:/data
- ./load-env.zip:/test/load-env.zip
- ./fake.jar:/servers/fake.jar
@@ -0,0 +1 @@
mc-image-helper assert propertyEquals --file=server.properties --property=motd --expect=from-archive
@@ -0,0 +1,18 @@
services:
mc:
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
environment:
EULA: "true"
SETUP_ONLY: "true"
LOAD_ENV_FROM_FILE: /test/load-env.env
MOTD: from-compose
LOG_TIMESTAMP: "true"
DEBUG: "true"
# the following are only used to speed up test execution
TYPE: CUSTOM
CUSTOM_SERVER: /servers/fake.jar
VERSION: 1.18.1
volumes:
- ./data:/data
- ./load-env.env:/test/load-env.env
- ./fake.jar:/servers/fake.jar
@@ -0,0 +1,2 @@
# Loaded by LOAD_ENV_FROM_FILE during start-configuration
MOTD=from-env-file
@@ -0,0 +1 @@
mc-image-helper assert propertyEquals --file=server.properties --property=motd --expect=from-env-file
@@ -0,0 +1,19 @@
services:
mc:
image: ${IMAGE_TO_TEST:-itzg/minecraft-server}
environment:
EULA: "true"
SETUP_ONLY: "true"
GENERIC_PACK: /packs/pack.zip
LOAD_ENV_FROM_GENERIC_PACK: "true"
MOTD: from-compose
LOG_TIMESTAMP: "true"
DEBUG: "true"
# the following are only used to speed up test execution
TYPE: CUSTOM
CUSTOM_SERVER: /servers/fake.jar
VERSION: 1.18.1
volumes:
- ./data:/data
- ./pack.zip:/packs/pack.zip
- ./fake.jar:/servers/fake.jar
@@ -0,0 +1,2 @@
mc-image-helper assert propertyEquals --file=server.properties --property=motd --expect=from-generic-pack
mc-image-helper assert fileExists config/dummy.yml