mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-02-17 15:13:55 +00:00
Compare commits
22 Commits
2025.2.1
...
itzg-patch
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33435b7e52 | ||
|
|
231ac0f665 | ||
|
|
68a56be107 | ||
|
|
ac32c8706f | ||
|
|
f5e511e3cc | ||
|
|
2a859d61f6 | ||
|
|
943429e180 | ||
|
|
7e5f5805a5 | ||
|
|
777f4e26b9 | ||
|
|
21f2a7e86c | ||
|
|
f22d291bfc | ||
|
|
5fd2522028 | ||
|
|
a7b35d955b | ||
|
|
73e402b46d | ||
|
|
73cb6333b7 | ||
|
|
6f190a68a2 | ||
|
|
4eedde802b | ||
|
|
8bb7ea9000 | ||
|
|
fcfb1cd74c | ||
|
|
beb3b4a2ce | ||
|
|
dcdbb85936 | ||
|
|
3a678a6bf3 |
14
.github/workflows/build-multiarch.yml
vendored
14
.github/workflows/build-multiarch.yml
vendored
@@ -111,7 +111,7 @@ jobs:
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5.6.1
|
||||
uses: docker/metadata-action@v5.7.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.
|
||||
@@ -139,13 +139,13 @@ jobs:
|
||||
org.opencontainers.image.authors=Geoff Bourne <itzgeoff@gmail.com>
|
||||
|
||||
- name: Setup Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3.9.0
|
||||
uses: docker/setup-buildx-action@v3.10.0
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3.4.0
|
||||
uses: docker/setup-qemu-action@v3.6.0
|
||||
|
||||
- name: Build for test
|
||||
uses: docker/build-push-action@v6.13.0
|
||||
uses: docker/build-push-action@v6.15.0
|
||||
with:
|
||||
platforms: linux/amd64
|
||||
tags: ${{ env.IMAGE_TO_TEST }}
|
||||
@@ -168,14 +168,14 @@ jobs:
|
||||
tests/test.sh
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3.3.0
|
||||
uses: docker/login-action@v3.4.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.3.0
|
||||
uses: docker/login-action@v3.4.0
|
||||
if: env.HAS_IMAGE_REPO_ACCESS
|
||||
with:
|
||||
registry: ghcr.io
|
||||
@@ -183,7 +183,7 @@ jobs:
|
||||
password: ${{ github.token }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v6.13.0
|
||||
uses: docker/build-push-action@v6.15.0
|
||||
if: github.actor == github.repository_owner
|
||||
with:
|
||||
platforms: ${{ matrix.platforms }}
|
||||
|
||||
6
.github/workflows/verify-pr.yml
vendored
6
.github/workflows/verify-pr.yml
vendored
@@ -53,10 +53,10 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3.9.0
|
||||
uses: docker/setup-buildx-action@v3.10.0
|
||||
|
||||
- name: Confirm multi-arch build
|
||||
uses: docker/build-push-action@v6.13.0
|
||||
uses: docker/build-push-action@v6.15.0
|
||||
with:
|
||||
platforms: ${{ matrix.platforms }}
|
||||
# ensure latest base image is used
|
||||
@@ -66,7 +66,7 @@ jobs:
|
||||
cache-from: type=gha,scope=${{ matrix.variant }}
|
||||
|
||||
- name: Build for test
|
||||
uses: docker/build-push-action@v6.13.0
|
||||
uses: docker/build-push-action@v6.15.0
|
||||
with:
|
||||
# Only build single platform since loading multi-arch image into daemon fails with
|
||||
# "docker exporter does not currently support exporting manifest lists"
|
||||
|
||||
@@ -35,7 +35,7 @@ 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.11
|
||||
ARG RCON_CLI_VERSION=1.7.0
|
||||
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
|
||||
@@ -50,7 +50,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.40.13
|
||||
ARG MC_HELPER_VERSION=1.41.2
|
||||
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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[](https://hub.docker.com/r/itzg/minecraft-server/)
|
||||
[](https://hub.docker.com/r/itzg/minecraft-server/)
|
||||
[](https://hub.docker.com/r/itzg/minecraft-server/)
|
||||
[](https://hub.docker.com/r/itzg/minecraft-server/)
|
||||
[](https://github.com/itzg/docker-minecraft-server/issues)
|
||||
[](https://discord.gg/DXfKpjB)
|
||||
[](https://github.com/itzg/docker-minecraft-server/actions/workflows/build-multiarch.yml)
|
||||
|
||||
@@ -197,14 +197,34 @@ New to [22W42A](https://www.minecraft.net/en-us/article/minecraft-snapshot-22w42
|
||||
|
||||
### Server icon
|
||||
|
||||
A server icon can be configured using the `ICON` variable. The image will be automatically
|
||||
downloaded, scaled, and converted from any other image format:
|
||||
A server icon can be configured by setting the `ICON` variable to a URL to download or a container path. The image will be automatically downloaded (if a URL), scaled, and converted from any other image format:
|
||||
|
||||
!!! example
|
||||
|
||||
Using `docker run`:
|
||||
|
||||
```
|
||||
docker run -d -e ICON=http://..../some/image.png ...
|
||||
```
|
||||
|
||||
In compose file:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
ICON: http://..../some/image.png
|
||||
```
|
||||
|
||||
Using a file from host filesystem:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
ICON: /icon.png
|
||||
OVERRIDE_ICON: true
|
||||
volumes:
|
||||
./icon.png:/icon.png
|
||||
```
|
||||
|
||||
The server icon which has been set doesn't get overridden by default. It can be changed and overridden by setting `OVERRIDE_ICON` to `TRUE`.
|
||||
|
||||
docker run -d -e ICON=http://..../some/other/image.png -e OVERRIDE_ICON=TRUE...
|
||||
By default an existing `server-icon.png` file will not be replaced, that can be changed by setting `OVERRIDE_ICON` to "true".
|
||||
|
||||
### RCON
|
||||
|
||||
@@ -502,4 +522,4 @@ When using `docker run` from a bash shell, the entries must be quoted with the `
|
||||
| LOG_IPS | log-ips |
|
||||
| REGION_FILE_COMPRESSION | region-file-compression |
|
||||
| BUG_REPORT_LINK | bug-report-link |
|
||||
| PAUSE_WHEN_EMPTY_SECONDS | pause-when-empty-seconds |
|
||||
| PAUSE_WHEN_EMPTY_SECONDS | pause-when-empty-seconds |
|
||||
|
||||
@@ -38,6 +38,8 @@ The following environment variables define the behaviour of auto-pausing:
|
||||
describes period of the daemonized state machine, that handles the pausing of the process (resuming is done independently)
|
||||
- `AUTOPAUSE_KNOCK_INTERFACE`, default `eth0`
|
||||
<br>Describes the interface passed to the `knockd` daemon. If the default interface does not work, run the `ifconfig` command inside the container and derive the interface receiving the incoming connection from its output. The passed interface must exist inside the container. Using the loopback interface (`lo`) does likely not yield the desired results.
|
||||
- `AUTOPAUSE_STATUS_RETRY_LIMIT`, default 10
|
||||
- `AUTOPAUSE_STATUS_RETRY_INTERVAL`, default 2s
|
||||
|
||||
!!! tip
|
||||
|
||||
|
||||
@@ -17,12 +17,14 @@ Enable the Autostop functionality by setting:
|
||||
```
|
||||
|
||||
The following environment variables define the behavior of auto-stopping:
|
||||
* `AUTOSTOP_TIMEOUT_EST`, default `3600` (seconds)
|
||||
- `AUTOSTOP_TIMEOUT_EST`, default `3600` (seconds)
|
||||
describes the time between the last client disconnect and the stopping of the server (read as timeout established)
|
||||
* `AUTOSTOP_TIMEOUT_INIT`, default `1800` (seconds)
|
||||
- `AUTOSTOP_TIMEOUT_INIT`, default `1800` (seconds)
|
||||
describes the time between server start and the stopping of the server, when no client connects in-between (read as timeout initialized)
|
||||
* `AUTOSTOP_PERIOD`, default `10` (seconds)
|
||||
- `AUTOSTOP_PERIOD`, default `10` (seconds)
|
||||
describes period of the daemonized state machine, that handles the stopping of the server
|
||||
- `AUTOPAUSE_STATUS_RETRY_LIMIT`, default 10
|
||||
- `AUTOPAUSE_STATUS_RETRY_INTERVAL`, default 2s
|
||||
|
||||
> To troubleshoot, add `DEBUG_AUTOSTOP=true` to see additional output
|
||||
|
||||
|
||||
@@ -31,15 +31,33 @@ services:
|
||||
With [lazymc-docker-proxy](https://github.com/joesturge/lazymc-docker-proxy) you are able to use [lazymc](https://github.com/timvisee/lazymc) with the minecraft container.
|
||||
|
||||
```yaml
|
||||
# Lazymc requires that the minecraft server have a static IP.
|
||||
#
|
||||
# To ensure that our servers have a static IP we need to create
|
||||
# a network for our services to use.
|
||||
#
|
||||
# By default, Docker uses 172.17.0.0/16 subnet range.
|
||||
# So we need to create a new network in a different subnet
|
||||
# See the readme for more information.
|
||||
#
|
||||
# Please ensure that the subnet falls within the private CIDRs:
|
||||
# https://datatracker.ietf.org/doc/html/rfc1918#section-3
|
||||
#
|
||||
# And that it is not in use by anything else.
|
||||
networks:
|
||||
minecraft-network:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.18.0.0/16
|
||||
|
||||
services:
|
||||
lazymc:
|
||||
container_name: lazymc
|
||||
image: ghcr.io/joesturge/lazymc-docker-proxy:latest
|
||||
environment:
|
||||
# Point to the service name of the Minecraft server
|
||||
SERVER_ADDRESS: mc:25565
|
||||
# Required to find the container to manage it
|
||||
LAZYMC_GROUP: mc
|
||||
# the IPs should start at .2 as .1 is reserved for the gateway
|
||||
networks:
|
||||
minecraft-network:
|
||||
ipv4_address: 172.18.0.2
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
# you should mount the minecraft server dir under /server, using read only.
|
||||
@@ -54,11 +72,19 @@ services:
|
||||
# Standard Docker Minecraft server, also works with other server types
|
||||
mc:
|
||||
image: itzg/minecraft-server:java21
|
||||
container_name: minecraft-server
|
||||
# Assign a static IP to the server container
|
||||
networks:
|
||||
minecraft-network:
|
||||
ipv4_address: 172.18.0.3
|
||||
# We need to add a label here so that lazymc-docker-proxy knows which
|
||||
# container to manage
|
||||
labels:
|
||||
# Set lazymc.enabled to true to enable lazymc on this container
|
||||
- lazymc.enabled=true
|
||||
# Required to find the container to manage it
|
||||
- lazymc.group=mc
|
||||
# Point to the service name of the Minecraft server
|
||||
- lazymc.server.address=mc:25565
|
||||
tty: true
|
||||
stdin_open: true
|
||||
# This container should be managed solely by the lazymc container
|
||||
@@ -113,4 +139,4 @@ services:
|
||||
stdin_open: true
|
||||
restart: unless-stopped
|
||||
```
|
||||
[Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/lazytainer/docker-compose.yml)
|
||||
[Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/lazytainer/docker-compose.yml)
|
||||
|
||||
@@ -23,7 +23,7 @@ The terms "mods" and "plugins" can be quite confusing. Generally, the rule of th
|
||||
There are optional volume paths that can be attached to supply content to be copied into the data area:
|
||||
|
||||
`/plugins`
|
||||
: content in this directory is synchronized into `/data/plugins` for server types that use plugins, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_PLUGINS_SRC` and destination by setting `COPY_PLUGINS_DEST`.
|
||||
: content in this directory is synchronized into `/data/plugins` for server types that use plugins, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_PLUGINS_SRC` and destination by setting `COPY_PLUGINS_DEST`. If using a mod-based loader, such as Forge or Fabric, but a hybrid mod like [Cardboard](https://modrinth.com/mod/cardboard), then set `USES_PLUGINS` to have the automation utilize `/plugins` mount.
|
||||
|
||||
`/mods`
|
||||
: content in this directory is synchronized into `/data/mods` for server types that use mods, [as described above](#mods-vs-plugins). For special cases, the source can be changed by setting `COPY_MODS_SRC` and destination by setting `COPY_MODS_DEST`.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
mkdocs-material == 9.6.1
|
||||
mkdocs-autorefs == 1.3.0
|
||||
mkdocstrings == 0.27.0
|
||||
mkdocs-material == 9.6.8
|
||||
mkdocs-autorefs == 1.4.1
|
||||
mkdocstrings[python] == 0.29.0
|
||||
mkdocs-literate-nav == 0.6.1
|
||||
mdx-gh-links == 0.4
|
||||
mkdocs-click == 0.8.1
|
||||
|
||||
@@ -56,7 +56,9 @@ For example:
|
||||
-e TYPE=AUTO_CURSEFORGE -e CF_SLUG=all-the-mods-8
|
||||
```
|
||||
|
||||
The latest file will be located and used by default, but if a specific version is desired you can use one of the following options. With any of these options **do not select a server file** -- they lack the required manifest and defeat the ability to consistently automate startup.
|
||||
### Pinning modpack and mod loader versions
|
||||
|
||||
The latest modpack file and its associated mod loader will be located and installed by default on startup (including automatic upgrading of both on subsequent startups, if a later version is found on CurseForge). If a specific version is desired instead, you can use one of the following options. With any of these options **do not select a server file** -- they lack the required manifest and defeat the ability to consistently automate startup.
|
||||
|
||||
- Use `CF_PAGE_URL`, but include the full URL to a specific file
|
||||
- Set `CF_FILE_ID` to the numerical file ID
|
||||
@@ -82,6 +84,8 @@ The following examples all refer to version 1.0.7 of ATM8:
|
||||
CF_FILENAME_MATCHER: 1.0.7
|
||||
```
|
||||
|
||||
Pinning modpack version also pins the mod loader (to the version specified by the modpack). Mod loader version cannot be pinned independently of the modpack.
|
||||
|
||||
## Manual Downloads
|
||||
|
||||
For mod, modpacks, and world files that are not allowed for automated download, the container path `/downloads` can be attached and matching files will be retrieved from there. The subdirectories `mods`, `modpacks`, and `worlds` will also be checked accordingly. To change the source location of downloaded files, set `CF_DOWNLOADS_REPO` to an existing container path. To disable this feature, set `CF_DOWNLOADS_REPO` to an empty string.
|
||||
|
||||
@@ -4,7 +4,10 @@ services:
|
||||
environment:
|
||||
EULA: true
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# from .env
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/all-of-fabric-7
|
||||
# CF_FILENAME_MATCHER: 1.2.2
|
||||
|
||||
@@ -8,7 +8,10 @@ services:
|
||||
environment:
|
||||
EULA: true
|
||||
MOD_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_SLUG: all-the-mods-10
|
||||
# Optional: select a specific version/file
|
||||
|
||||
@@ -6,7 +6,10 @@ services:
|
||||
environment:
|
||||
EULA: "true"
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/all-the-mods-8
|
||||
# CF_FILENAME_MATCHER: "1.1.0"
|
||||
|
||||
@@ -6,7 +6,10 @@ services:
|
||||
environment:
|
||||
EULA: "true"
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/all-the-mods-9
|
||||
# Optional: select a specific version/file
|
||||
|
||||
@@ -4,7 +4,10 @@ services:
|
||||
environment:
|
||||
EULA: true
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_MODPACK_MANIFEST: /manifests/manifest.json
|
||||
CF_SLUG: "custom"
|
||||
|
||||
@@ -6,40 +6,12 @@ services:
|
||||
environment:
|
||||
EULA: "true"
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/minecraft-eternal/files/4102634
|
||||
CF_EXCLUDE_MODS: |
|
||||
cherished-worlds
|
||||
controlling
|
||||
ctm
|
||||
custom-main-menu
|
||||
ding
|
||||
minecraft-rich-presence
|
||||
enchantment-descriptions
|
||||
just-enough-harvestcraft
|
||||
just-enough-resources-jer
|
||||
menumobs
|
||||
more-overlays
|
||||
mouse-tweaks
|
||||
oldjavawarning
|
||||
overloaded-armor-bar
|
||||
reauth
|
||||
thaumic-jei
|
||||
tips
|
||||
armor-toughness-bar
|
||||
waila-harvestability
|
||||
ambientsounds
|
||||
biomeinfo
|
||||
block-drops-jei-addon
|
||||
loot-capacitor-tooltips
|
||||
no-recipe-book
|
||||
packmodemenu
|
||||
resource-reloader
|
||||
|
||||
# blockdrops
|
||||
|
||||
CF_FORCE_SYNCHRONIZE: "true"
|
||||
MEMORY: 4G
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
|
||||
@@ -7,11 +7,13 @@ services:
|
||||
- "mc:/data"
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
TYPE: PAPER
|
||||
ENABLE_AUTOPAUSE: "TRUE"
|
||||
MAX_TICK_TIME: "-1"
|
||||
# More aggressive settings for demo purposes
|
||||
AUTOPAUSE_TIMEOUT_INIT: "30"
|
||||
AUTOPAUSE_TIMEOUT_EST: "10"
|
||||
JVM_DD_OPTS: "disable.watchdog:true"
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
|
||||
@@ -4,7 +4,10 @@ services:
|
||||
environment:
|
||||
EULA: true
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# Set CF_API_KEY=... in a .env file next to this compose file and don't source control that file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_SLUG: better-mc-fabric-bmc1
|
||||
# CF_FILENAME_MATCHER: v18.5
|
||||
|
||||
@@ -9,10 +9,14 @@ services:
|
||||
EULA: true
|
||||
ALLOW_FLIGHT: true
|
||||
MOD_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_SLUG: craftoria
|
||||
MEMORY: 8G
|
||||
# TODO: replace with slugs and see if already excluded by cf-exclude-include.json
|
||||
CF_EXCLUDE_MODS: |
|
||||
737481
|
||||
363363
|
||||
|
||||
@@ -4,7 +4,10 @@ services:
|
||||
environment:
|
||||
EULA: true
|
||||
TYPE: FORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
VERSION: 1.19.2
|
||||
CURSEFORGE_FILES: |
|
||||
|
||||
@@ -12,7 +12,10 @@ services:
|
||||
CURSEFORGE_FILES: |
|
||||
fabric-api
|
||||
chunky-pregenerator
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
# YAML Heredoc, be sure to use '|-' this will remove the first newline and final new line.
|
||||
# This is versus '|' that will leaving with two empty strings at top and bottom.
|
||||
|
||||
20
examples/fabric-cardboard/compose.yml
Normal file
20
examples/fabric-cardboard/compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:latest
|
||||
tty: true
|
||||
stdin_open: true
|
||||
ports:
|
||||
- "25565:25565"
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
TYPE: "FABRIC"
|
||||
MEMORY: 4G
|
||||
MODRINTH_PROJECTS: |
|
||||
fabric-api
|
||||
cardboard:beta
|
||||
USES_PLUGINS: true
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
- ./plugins:/plugins:ro
|
||||
volumes:
|
||||
mc-data:
|
||||
@@ -4,6 +4,9 @@ services:
|
||||
environment:
|
||||
EULA: "true"
|
||||
TYPE: FABRIC
|
||||
# VERSION: 1.21.4
|
||||
# FABRIC_INSTALLER_VERSION: 1.0.1
|
||||
# FABRIC_LOADER_VERSION: 0.16.10
|
||||
ports:
|
||||
- "25565:25565"
|
||||
volumes:
|
||||
@@ -9,6 +9,10 @@ services:
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
TYPE: AUTO_CURSEFORGE
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/ftb-evolution
|
||||
# This modpack includes an override client-side only mod that will prevent the server from starting.
|
||||
|
||||
@@ -5,6 +5,10 @@ services:
|
||||
EULA: true
|
||||
TYPE: KETTING
|
||||
VERSION: 1.20.1
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: "${CF_API_KEY}"
|
||||
CURSEFORGE_FILES: https://www.curseforge.com/minecraft/mc-mods/aquaculture
|
||||
ports:
|
||||
|
||||
@@ -1,12 +1,30 @@
|
||||
# Lazymc requires that the minecraft server have a static IP.
|
||||
#
|
||||
# To ensure that our servers have a static IP we need to create
|
||||
# a network for our services to use.
|
||||
#
|
||||
# By default, Docker uses 172.17.0.0/16 subnet range.
|
||||
# So we need to create a new network in a different subnet
|
||||
# See the readme for more information.
|
||||
#
|
||||
# Please ensure that the subnet falls within the private CIDRs:
|
||||
# https://datatracker.ietf.org/doc/html/rfc1918#section-3
|
||||
#
|
||||
# And that it is not in use by anything else.
|
||||
networks:
|
||||
minecraft-network:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.18.0.0/16
|
||||
|
||||
services:
|
||||
lazymc:
|
||||
container_name: lazymc
|
||||
image: ghcr.io/joesturge/lazymc-docker-proxy:latest
|
||||
environment:
|
||||
# Point to the service name of the Minecraft server
|
||||
SERVER_ADDRESS: mc:25565
|
||||
# Required to find the container to manage it
|
||||
LAZYMC_GROUP: mc
|
||||
# the IPs should start at .2 as .1 is reserved for the gateway
|
||||
networks:
|
||||
minecraft-network:
|
||||
ipv4_address: 172.18.0.2
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
# you should mount the minecraft server dir under /server, using read only.
|
||||
@@ -21,11 +39,19 @@ services:
|
||||
# Standard Docker Minecraft server, also works with other server types
|
||||
mc:
|
||||
image: itzg/minecraft-server:java21
|
||||
container_name: minecraft-server
|
||||
# Assign a static IP to the server container
|
||||
networks:
|
||||
minecraft-network:
|
||||
ipv4_address: 172.18.0.3
|
||||
# We need to add a label here so that lazymc-docker-proxy knows which
|
||||
# container to manage
|
||||
labels:
|
||||
# Set lazymc.enabled to true to enable lazymc on this container
|
||||
- lazymc.enabled=true
|
||||
# Required to find the container to manage it
|
||||
- lazymc.group=mc
|
||||
# Point to the service name of the Minecraft server
|
||||
- lazymc.server.address=mc:25565
|
||||
tty: true
|
||||
stdin_open: true
|
||||
# This container should be managed solely by the lazymc container
|
||||
|
||||
@@ -6,7 +6,10 @@ services:
|
||||
environment:
|
||||
EULA: "true"
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# CF_API_KEY=... must be set in .env file or as environment variable
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_SLUG: one-block-modded
|
||||
# Modpack client zip must be manually downloaded from
|
||||
|
||||
@@ -6,7 +6,11 @@ services:
|
||||
environment:
|
||||
EULA: "true"
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
CF_API_KEY: # allocate from https://console.curseforge.com/
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_SLUG: the-pixelmon-modpack
|
||||
CF_FILENAME_MATCHER: "9.1.2"
|
||||
MEMORY: 4G
|
||||
|
||||
@@ -6,7 +6,10 @@ services:
|
||||
environment:
|
||||
EULA: "true"
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/prominence-2-rpg
|
||||
CF_FILENAME_MATCHER: "2.8.7"
|
||||
|
||||
@@ -7,20 +7,20 @@ services:
|
||||
environment:
|
||||
EULA: "true"
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/roguelike-adventures-and-dungeons-2
|
||||
# Optional: select a specific version/file
|
||||
#CF_FILENAME_MATCHER: "0.2.34"
|
||||
CF_EXCLUDE_MODS: |
|
||||
controlling
|
||||
creative-core
|
||||
default-options
|
||||
itemphysic-lite
|
||||
konkrete
|
||||
oauth
|
||||
sound-filters
|
||||
toast-control
|
||||
CF_FORCE_SYNCHRONIZE: "true"
|
||||
MEMORY: 4G
|
||||
volumes:
|
||||
|
||||
@@ -4,7 +4,10 @@ services:
|
||||
environment:
|
||||
EULA: true
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# Set CF_API_KEY=... in a .env file next to this compose file and don't source control that file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_SLUG: rlcraft
|
||||
CF_FILENAME_MATCHER: 2.9.3
|
||||
|
||||
@@ -8,7 +8,10 @@ services:
|
||||
# CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/skyfactory-5/files/6044634
|
||||
CF_SLUG: skyfactory-5
|
||||
CF_FILENAME_MATCHER: 5.0.2
|
||||
# Loads from .env file
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
MEMORY: 4G
|
||||
ports:
|
||||
|
||||
@@ -6,7 +6,11 @@ services:
|
||||
environment:
|
||||
EULA: "true"
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
CF_API_KEY: # allocate from https://console.curseforge.com/
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_FORCE_SYNCHRONIZE: "true"
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/valhelsia-5/files/4429560
|
||||
MEMORY: 4G
|
||||
|
||||
@@ -6,13 +6,14 @@ services:
|
||||
environment:
|
||||
EULA: "true"
|
||||
MODPACK_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/
|
||||
# Allocate API key from https://console.curseforge.com/
|
||||
# and set in .env file making sure to double up dollar signs, such as
|
||||
# CF_API_KEY=$$2a$$10$$....
|
||||
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/#api-key
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_SLUG: vault-hunters-1-18-2
|
||||
MOTD: "§4----- §2 Vault Hunters: 1.18.2 §4 -----§r\\n §4------ §e vaulthunters.gg §4------"
|
||||
MEMORY: 6G # 4G for base server + 2G per player
|
||||
CF_EXCLUDE_MODS: |
|
||||
reauth
|
||||
ALLOW_FLIGHT: true
|
||||
ENABLE_COMMAND_BLOCK: true
|
||||
DIFFICULTY: hard
|
||||
|
||||
@@ -24,14 +24,25 @@ use_proxy() {
|
||||
fi
|
||||
}
|
||||
|
||||
use_server_list_ping() {
|
||||
if versionLessThan 1.7; then
|
||||
echo "--use-server-list-ping"
|
||||
fi
|
||||
}
|
||||
|
||||
mc_server_listening() {
|
||||
mc-monitor status $(use_proxy) --host "${SERVER_HOST:-localhost}" --port "$SERVER_PORT" --timeout 10s >&/dev/null
|
||||
mc-monitor status $(use_proxy) --host "${SERVER_HOST:-localhost}" --port "$SERVER_PORT" $(use_server_list_ping) --timeout 10s >&/dev/null
|
||||
}
|
||||
|
||||
java_clients_connections() {
|
||||
local connections
|
||||
if java_running; then
|
||||
if ! connections=$(mc-monitor status $(use_proxy) --host "${SERVER_HOST:-localhost}" --port "$SERVER_PORT" --show-player-count); then
|
||||
if ! connections=$(mc-monitor status \
|
||||
--host "${SERVER_HOST:-localhost}" \
|
||||
--port "$SERVER_PORT" \
|
||||
--retry-limit "${AUTOPAUSE_STATUS_RETRY_LIMIT:-10}" --retry-interval "${AUTOPAUSE_STATUS_RETRY_INTERVAL:-2s}" \
|
||||
$(use_proxy) $(use_server_list_ping) \
|
||||
--show-player-count); then
|
||||
# consider it a non-zero player count if the ping fails
|
||||
# otherwise a laggy server with players connected could get paused
|
||||
connections=1
|
||||
@@ -44,4 +55,4 @@ java_clients_connections() {
|
||||
|
||||
java_clients_connected() {
|
||||
(( $(java_clients_connections) > 0 ))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
"cherished-worlds",
|
||||
"chunk-animator",
|
||||
"clickable-advancements",
|
||||
"compass-coords",
|
||||
"configured",
|
||||
"controlling",
|
||||
"craftpresence",
|
||||
@@ -113,6 +114,7 @@
|
||||
"sodium-extra",
|
||||
"sodium-options-api",
|
||||
"sodium-rubidium-occlusion-culling-fix",
|
||||
"sound",
|
||||
"sound-reloader",
|
||||
"sound-filters",
|
||||
"sound-physics-remastered",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Configuration status="WARN" packages="com.mojang.util">
|
||||
<Configuration status="WARN">
|
||||
<Appenders>
|
||||
<Console name="SysOut" target="SYSTEM_OUT">
|
||||
<PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n" />
|
||||
@@ -34,4 +34,4 @@
|
||||
<AppenderRef ref="TerminalConsole"/>
|
||||
</Root>
|
||||
</Loggers>
|
||||
</Configuration>
|
||||
</Configuration>
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
"cherishedworlds",
|
||||
"citresewn",
|
||||
"clickadv",
|
||||
"compass-coords",
|
||||
"connectedness",
|
||||
"connector",
|
||||
"craftpresence",
|
||||
@@ -85,4 +86,4 @@
|
||||
],
|
||||
"globalForceIncludes": [],
|
||||
"modpacks": {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ if ! isTrue "${SKIP_SUDO:-false}" && [ "$(id -u)" = 0 ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if isTrue "${SKIP_CHOWN_DATA}" || [[ $(stat -c "%u" /data) != "$UID" ]]; then
|
||||
if isFalse "${SKIP_CHOWN_DATA}" && [[ $(stat -c "%u" /data) != "$UID" ]]; then
|
||||
log "Changing ownership of /data to $UID ..."
|
||||
chown -R ${runAsUser}:${runAsGroup} /data
|
||||
fi
|
||||
|
||||
@@ -38,8 +38,8 @@ if [ ! -e /data/eula.txt ]; then
|
||||
log ""
|
||||
logError "Please accept the Minecraft EULA at"
|
||||
logError " https://account.mojang.com/documents/minecraft_eula"
|
||||
logError "by adding the following immediately after 'docker run':"
|
||||
logError " -e EULA=TRUE"
|
||||
logError "by setting the container environment variable "
|
||||
logError "EULA to \"true\""
|
||||
log ""
|
||||
exit 1
|
||||
fi
|
||||
@@ -285,4 +285,4 @@ case "${TYPE^^}" in
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
esac
|
||||
|
||||
@@ -464,21 +464,33 @@ function checkSum() {
|
||||
}
|
||||
|
||||
function usesMods() {
|
||||
case "$FAMILY" in
|
||||
FORGE | FABRIC | HYBRID | SPONGE)
|
||||
if isTrue "${USES_MODS:-}"; then
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
return 1
|
||||
|
||||
else
|
||||
case "$FAMILY" in
|
||||
FORGE | FABRIC | HYBRID | SPONGE)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
return 1
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
function usesPlugins() {
|
||||
case "$FAMILY" in
|
||||
SPIGOT | HYBRID)
|
||||
if isTrue "${USES_PLUGINS:-}"; then
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
return 1
|
||||
|
||||
else
|
||||
case "$FAMILY" in
|
||||
SPIGOT | HYBRID)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
return 1
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
function resolveVersion() {
|
||||
|
||||
Reference in New Issue
Block a user