Compare commits

..

1 Commits

Author SHA1 Message Date
Geoff Bourne
30000819d8 Fix syntax error in start-deployPurpur 2024-12-06 07:52:59 -06:00
42 changed files with 98 additions and 401 deletions

View File

@@ -20,12 +20,10 @@ jobs:
matrix:
# NOTE: the "latest" variant is identified in the Docker meta step's 'latest' config
variant:
- java23
- java23-graalvm
- java21
- java21-alpine
- java21-graalvm
- java21
- java21-jdk
- java21-alpine
- java17
- java17-graalvm
- java17-alpine
@@ -35,15 +33,6 @@ jobs:
- java8-jdk
- java11
include:
# JAVA 23
- variant: java23
baseImage: eclipse-temurin:23-jre
platforms: linux/amd64,linux/arm64
mcVersion: latest
- variant: java23-graalvm
baseImage: container-registry.oracle.com/graalvm/jdk:23-ol8
platforms: linux/amd64,linux/arm64
mcVersion: latest
# JAVA 21:
- variant: java21-graalvm
baseImage: container-registry.oracle.com/graalvm/jdk:21-ol8
@@ -139,13 +128,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.7.1
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.4.0
uses: docker/setup-qemu-action@v3.2.0
- name: Build for test
uses: docker/build-push-action@v6.13.0
uses: docker/build-push-action@v6.10.0
with:
platforms: linux/amd64
tags: ${{ env.IMAGE_TO_TEST }}
@@ -183,7 +172,7 @@ jobs:
password: ${{ github.token }}
- name: Build and push
uses: docker/build-push-action@v6.13.0
uses: docker/build-push-action@v6.10.0
if: github.actor == github.repository_owner
with:
platforms: ${{ matrix.platforms }}

View File

@@ -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.7.1
- name: Confirm multi-arch build
uses: docker/build-push-action@v6.13.0
uses: docker/build-push-action@v6.10.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.10.0
with:
# Only build single platform since loading multi-arch image into daemon fails with
# "docker exporter does not currently support exporting manifest lists"

View File

@@ -26,31 +26,31 @@ EXPOSE 25565
ARG APPS_REV=1
ARG GITHUB_BASEURL=https://github.com
ARG EASY_ADD_VERSION=0.8.9
ARG EASY_ADD_VERSION=0.8.8
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.7
ARG RESTIFY_VERSION=1.7.5
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.6.9
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.15.3
ARG MC_MONITOR_VERSION=0.15.0
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${MC_MONITOR_VERSION} --var app=mc-monitor --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG MC_SERVER_RUNNER_VERSION=1.12.6
ARG MC_SERVER_RUNNER_VERSION=1.12.3
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.40.6
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
@@ -64,7 +64,7 @@ WORKDIR /data
STOPSIGNAL SIGTERM
# End user MUST set EULA and change RCON_PASSWORD
ENV TYPE=VANILLA VERSION=LATEST EULA="" UID=1000 GID=1000 LC_ALL=en_US.UTF-8
ENV TYPE=VANILLA VERSION=LATEST EULA="" UID=1000 GID=1000
COPY --chmod=755 scripts/start* /
COPY --chmod=755 bin/ /usr/local/bin/

View File

@@ -10,12 +10,10 @@
There you will find things like
- [Quick start with Docker Compose](https://docker-minecraft-server.readthedocs.io/en/latest/#using-docker-compose)
- Running [different versions of Minecraft](https://docker-minecraft-server.readthedocs.io/en/latest/versions/minecraft/) and using [various server types](https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/) for Java Edition
- Running [different versions of Minecraft](https://docker-minecraft-server.readthedocs.io/en/latest/versions/minecraft/) and using [various server types](https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/)
- [Setting server properties via container environment variables](https://docker-minecraft-server.readthedocs.io/en/latest/configuration/server-properties/)
- [Managing mods and plugins with automated downloads and cleanup](https://docker-minecraft-server.readthedocs.io/en/latest/mods-and-plugins/)
- [Using various modpack providers/platforms](https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/)
- ...and much more
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.
There are also many examples located in [the examples directory](examples) of this repo.

View File

@@ -24,7 +24,6 @@ apk add --no-cache -U \
tzdata \
rsync \
nano \
ncurses \
sudo \
tar \
zstd \

View File

@@ -46,7 +46,6 @@ dnf install -y \
libwebp \
findutils \
which \
glibc-langpack-en \
${EXTRA_DNF_PACKAGES}
# Install Git LFS

View File

@@ -1,4 +1,4 @@
FROM python:3.9
FROM python:3.8
RUN pip install --upgrade pip

View File

@@ -4,10 +4,14 @@ title: Modifying config files
## Replacing variables inside configs
Sometimes you have mods or plugins that require configuration information that is only available at deploy-time. For example if you need to configure a plugin to connect to a database, you don't want to include this information in your Git repository or Docker image.
Or maybe you have some runtime information like the server name that needs to be set in your config files after the container starts.
Sometimes you have mods or plugins that require configuration information that is only available at runtime.
For example if you need to configure a plugin to connect to a database,
you don't want to include this information in your Git repository or Docker image.
Or maybe you have some runtime information like the server name that needs to be set
in your config files after the container starts.
For those cases there is the option to replace defined variables inside your configs with environment variables defined at container runtime.
For those cases there is the option to replace defined variables inside your configs
with environment variables defined at container runtime.
When the environment variable `REPLACE_ENV_IN_PLACE` is set to `true` (the default), the startup script will go through all files inside the container's `/data` path and replace variables that match the container's environment variables. Variables can instead (or in addition to) be replaced in files sync'ed from `/plugins`, `/mods`, and `/config` by setting `REPLACE_ENV_DURING_SYNC` to `true` (defaults to `false`).

View File

@@ -55,16 +55,6 @@ To allow time for players to finish what they're doing during a graceful server
The grace period can be increased using [the -t option on docker-compose down](https://docs.docker.com/compose/reference/down/) or set the [stop_grace_period](https://docs.docker.com/compose/compose-file/05-services/#stop_grace_period) in the compose file.
The `STOP_SERVER_ANNOUNCE_DELAY` can be bypassed by sending a `SIGUSR1` signal to the `mc-server-runner` process.
`docker`:
docker stop --signal SIGUSR1 mc
`docker compose`:
docker compose kill --signal SIGUSR1
## Configuration Options for Minecraft Server Health Monitoring
The image tags include specific variables to simplify configuration for monitoring the health of a Minecraft server:

View File

@@ -19,7 +19,7 @@ where, in this case, the standard server port 25565, will be exposed on your hos
!!! note
If you plan on running a server for a longer amount of time it is highly recommended using a management layer such as [Docker Compose](#using-docker-compose) or [Kubernetes](misc/deployment/index.md#on-kubernetes) to allow for incremental reconfiguration and image upgrades.
If you plan on running a server for a longer amount of time it is highly recommended using a management layer such as [Docker Compose](#using-docker-compose) or [Kubernetes](#deployment-templates-and-examples) to allow for incremental reconfiguration and image upgrades.
!!! info
@@ -58,9 +58,6 @@ To apply changes made to the compose file, just run `docker compose up -d` again
Follow the logs of the container using `docker compose logs -f`, check on the status with `docker compose ps`, and stop the container using `docker compose stop`.
!!! note "Configurator Tool"
If you prefer to use an interactive tool to create or edit a Docker Compose file for this image, you can check out [setupmc.com's configurator](https://setupmc.com/java-server/). It provides a form that supports most of the image variables and generates the `compose.yml` file in real time.
!!! note "More Compose Examples"
There are more [examples located in the Github repo](https://github.com/itzg/docker-minecraft-server/tree/master/examples).

View File

@@ -16,7 +16,7 @@ A file called `.paused` is created in `/data` directory when the server is pause
A `.skip-pause` file can be created in the `/data` directory to make the server skip autopausing, for as long as the file is present. The autopause timer will also be reset.
A starting, example compose file has been provided in [the examples](https://github.com/itzg/docker-minecraft-server/blob/master/examples/autopause/compose.yml).
A starting, example compose file has been provided in [examples/docker-compose-autopause.yml](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-autopause.yml).
Auto-pause is not compatible with `EXEC_DIRECTLY=true` and the two cannot be set together.

View File

@@ -80,10 +80,6 @@ Example of expected VanillaTweaks share codes:
VANILLATWEAKS_SHARECODE: MGr52E,tF1zL2,LnEDwT
```
!!! note
Datapack names are all lower case. [See their spec](https://vanillatweaks.net/assets/resources/json/1.21/dpcategories.json) for a full list of 1.21 datapacks, and [their spec](https://vanillatweaks.net/assets/resources/json/1.21/ctcategories.json) for a full list of 1.21 crafting tweaks.
Example of expected VanillaTweaks files:
``` yaml
@@ -93,14 +89,13 @@ VANILLATWEAKS_FILE: /config/vt-datapacks.json,/config/vt-craftingtweaks.json,/co
``` json title="DataPacks json"
{
"type": "datapacks",
"version": "1.21",
"version": "1.18",
"packs": {
"gameplay changes": [
"survival": [
"graves",
"multiplayer sleep",
"armored elytra"
"multiplayer sleep"
],
"teleport commands": ["tpa"]
"items": ["armored elytra"]
}
}
```
@@ -108,7 +103,7 @@ VANILLATWEAKS_FILE: /config/vt-datapacks.json,/config/vt-craftingtweaks.json,/co
``` json title="ResourcePacks json"
{
"type": "resourcepacks",
"version": "1.21",
"version": "1.18",
"packs": {
"aesthetic": ["CherryPicking", "BlackNetherBricks", "AlternateBlockDestruction"]
}
@@ -119,7 +114,7 @@ VANILLATWEAKS_FILE: /config/vt-datapacks.json,/config/vt-craftingtweaks.json,/co
``` json title="CraftingTweaks Json"
{
"type": "craftingtweaks",
"version": "1.21",
"version": "1.18",
"packs": {
"quality of life": [
"dropper to dispenser",

View File

@@ -22,27 +22,22 @@ The following formats are supported in the list of project-file references:
- Project ID, such as `238222`. _The newest applicable file will be automatically selected._
- Project slug or ID, `:`, and a file ID, such as `jei:4593548` or `238222:4593548`
- Project slug or ID, `@`, and a partial filename, such as `jei@10.2.1.1005`. This option is useful to refer to a version of the mod/plugin rather than looking up the file ID.
- An `@` followed by the **container path** to a listing file
!!! info "More about listing files"
An `@` followed by the container path to a listing file can also be provided as a project-file reference. Each line is processed as a reference where blank lines and comments that start with `#` are ignored.
Each line in the listing file is processed as one of the references above; however, blank lines and comments that start with `#` are ignored.
Make sure to place the listing file in a mounted directory/volume or declare an appropriate mount for it.
For example, `CURSEFORGE_FILES` can be set to "@/extras/cf-mods.txt", assuming "/extras" has been added to `volumes` section, where the container file `/extras/cf-mods.txt` contains
```text
# This comment is ignored
jei:10.2.1.1005
# This and previous blank line are ignore
geckolib
aquaculture
naturalist
```
For example, `CURSEFORGE_FILES` can be set to "@/extras/cf-mods.txt" where the container file `/extras/cf-mods.txt` contains
!!! tip "Multi-line values in Docker Compose"
```text
# This comment is ignored
jei:10.2.1.1005
# This and previous blank line are ignore
geckolib
aquaculture
naturalist
```
!!! tip "Docker Compose"
Making use of the space delimited option, compose file declarations can be organized nicely with a [multi-line string](https://yaml-multiline.info/), such as

View File

@@ -78,24 +78,9 @@ If applying large generic packs, the update can be time-consuming. To skip the u
The most time-consuming portion of the generic pack update is generating and comparing the SHA1 checksum. To skip the checksum generation, set `SKIP_GENERIC_PACK_CHECKSUM` to "true".
To disable specific mods, which can be useful for conflicts between multiple generic packs, you can use the `GENERIC_PACKS_DISABLE_MODS` variable to specify mods to disable.
Disabling mods with docker run:
```shell
docker run -d -e GENERIC_PACKS_DISABLE_MODS="mod1.jar mod2.jar" ...
```
Disabling mods within docker compose files:
```yaml
GENERIC_PACKS_DISABLE_MODS: |
mod1.jar
mod2.jar
```
## 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
- URL of a jar file
- container path to a jar file
- container path to a directory containing jar files

View File

@@ -1,8 +1,8 @@
# Auto-download from Modrinth
[Modrinth](https://modrinth.com/) is an open source modding platform with a clean, easy to use website for finding [Fabric, Forge, etc mods](https://modrinth.com/mods) and [Paper, etc plugins](https://modrinth.com/plugins), and [datapacks](https://modrinth.com/datapacks). At startup, the container will automatically locate and download the newest versions of mod/plugin files that correspond to the `TYPE` and `VERSION` in use. Older file versions downloaded previously will automatically be cleaned up.
[Modrinth](https://modrinth.com/) is an open source modding platform with a clean, easy to use website for finding [Fabric and Forge mods](https://modrinth.com/mods). At startup, the container will automatically locate and download the newest versions of mod/plugin files that correspond to the `TYPE` and `VERSION` in use. Older file versions downloaded previously will automatically be cleaned up.
- **MODRINTH_PROJECTS** : comma or newline separated list of project slugs (short name) or IDs. The project ID is located in the "Technical information" section. The project slug is the part of the URL that follows `/mod/`, `/plugin/`, or `/datapack/`. For example:
- **MODRINTH_PROJECTS** : comma or newline separated list of project slugs (short name) or IDs. The project ID is located in the "Technical information" section. The slug is the part of the page URL that follows `/mod/`:
```
https://modrinth.com/mod/fabric-api
----------

View File

@@ -1,7 +1,7 @@
mkdocs-material == 9.6.1
mkdocs-autorefs == 1.3.0
mkdocs-material == 9.5.47
mkdocs-autorefs == 1.2.0
mkdocstrings == 0.27.0
mkdocs-literate-nav == 0.6.1
mdx-gh-links == 0.4
mkdocs-click == 0.8.1
mkdocs-static-i18n == 1.3.0
mkdocs-static-i18n == 1.2.3

View File

@@ -1,9 +1,5 @@
# Bukkit/Spigot
!!! failure "GetBukkit site no longer supports automated downloads"
The downloads provider <https://getbukkit.org> seems to no longer support automated downloads. As such, it is highly recommended to switch to [Paper](paper.md) instead since it is actively maintained and fully compatible with Bukkit/Spigot plugins.
Run a Bukkit/Spigot server type by setting the environment variable `TYPE` to "BUKKIT" or "SPIGOT".
!!! example

View File

@@ -1,13 +1,5 @@
A [Forge server](http://www.minecraftforge.net/) can be automatically downloaded, upgraded, and run by setting the environment variable `TYPE` to "FORGE".
!!! note "A note from the installer"
> Please do not automate the download and installation of Forge.
Our efforts are supported by ads from the download page.
If you MUST automate this, please consider supporting the project through <https://www.patreon.com/LexManos/>
Since my project also relies on donations, please pass it along and consider contributing to the Patreon above.
!!! example
```
@@ -22,7 +14,6 @@ A [Forge server](http://www.minecraftforge.net/) can be automatically downloaded
The overall version is specified by `VERSION`, [as described in the section above](../../versions/minecraft.md) and provides the same benefits of upgrading as new versions are released. By default, the recommended version of Forge for that Minecraft version will be selected. The latest version can be selected instead by setting the environment variable `FORGE_VERSION` to "latest". You can also choose a specific Forge version by setting `FORGE_VERSION` with that version, such as "14.23.5.2854".
!!! example
```
@@ -64,22 +55,3 @@ Support for [NeoForge](https://neoforged.net/) is also provided. A NeoForge serv
VERSION: "1.20.4"
NEOFORGE_VERSION: "beta"
```
### Cleanroom
[Cleanroom](https://github.com/CleanroomMC/Cleanroom) isn't fully automated, but can be utilized by...
1. choose the desired release at https://github.com/CleanroomMC/Cleanroom/releases
2. grab the link to the `*-installer.jar` file in that release
3. with `TYPE` set to "FORGE", set `FORGE_INSTALLER_URL` to the installer jar's link
!!! example
In docker compose `environment`
```yaml
TYPE: FORGE
FORGE_INSTALLER_URL: https://github.com/CleanroomMC/Cleanroom/releases/download/0.2.4-alpha/cleanroom-0.2.4-alpha-installer.jar
```
[Full example](https://github.com/itzg/docker-minecraft-server/tree/master/examples/cleanroom)

View File

@@ -6,8 +6,6 @@ To allow for the selection of experimental builds, set `PAPER_CHANNEL` to "exper
!!! example
Using `docker run` command line
```
docker run ... -e TYPE=PAPER ...
@@ -17,26 +15,6 @@ To allow for the selection of experimental builds, set `PAPER_CHANNEL` to "exper
docker run ... -e TYPE=PAPER -e PAPER_CHANNEL=experimental ...
```
Using a compose file:
```yaml
environment:
TYPE: PAPER
```
```yaml
environment:
TYPE: PAPER
VERSION: 1.20.6
PAPER_BUILD: 140
```
```yaml
environment:
TYPE: PAPER
PAPER_CHANNEL: experimental
```
!!! tip

View File

@@ -14,8 +14,6 @@ where `<tag>` refers to the first column of this table:
|------------------|--------------|--------|--------------------|---------------------|
| latest | 21 | Ubuntu | Hotspot | amd64, arm64 |
| stable | 21 | Ubuntu | Hotspot | amd64, arm64 |
| java23 | 23 | Ubuntu | Hotspot | amd64, arm64 |
| java23-graalvm | 23 | Oracle | Oracle GraalVM[^1] | amd64, arm64 |
| java21 | 21 | Ubuntu | Hotspot | amd64, arm64 |
| java21-jdk | 21 | Ubuntu | Hotspot+JDK | amd64, arm64 |
| java21-alpine | 21 | Alpine | Hotspot | amd64, arm64 |

View File

@@ -1,13 +0,0 @@
services:
mc:
image: itzg/minecraft-server:java8
environment:
EULA: true
TYPE: canyon
VERSION: b1.7.3
ports:
- "25565:25565"
volumes:
- mc-data:/data
volumes:
mc-data:

View File

@@ -1,15 +0,0 @@
# Provides an example of running CleanroomMC from https://github.com/CleanroomMC/Cleanroom,
# which is a Forge fork
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
TYPE: FORGE
FORGE_INSTALLER_URL: https://github.com/CleanroomMC/Cleanroom/releases/download/0.2.4-alpha/cleanroom-0.2.4-alpha-installer.jar
ports:
- "25565:25565"
volumes:
- mc-data:/data
volumes:
mc-data:

View File

@@ -1,34 +0,0 @@
services:
mc:
image: itzg/minecraft-server
tty: true
stdin_open: true
ports:
- "25565:25565"
environment:
EULA: true
ALLOW_FLIGHT: true
MOD_PLATFORM: AUTO_CURSEFORGE
# allocate from https://console.curseforge.com/ and set in .env file
CF_API_KEY: ${CF_API_KEY}
CF_SLUG: craftoria
MEMORY: 8G
CF_EXCLUDE_MODS: |
737481
363363
394468
986380
844662
568563
915902
690971
455508
1089803
511319
volumes:
# Use managed volume by default, but can change to a relative path like
# ./data:/data
# to use a host directory
- mc-data:/data
volumes:
mc-data:

View File

@@ -1,25 +0,0 @@
services:
mc:
# make sure this java version matches with pack java version
image: itzg/minecraft-server:java21
tty: true
stdin_open: true
ports:
- "25565:25565"
environment:
EULA: "TRUE"
TYPE: CUSTOM
GENERIC_PACKS: GT_New_Horizons_2.7.2_Server_Java_17-21
GENERIC_PACKS_SUFFIX: .zip
GENERIC_PACKS_PREFIX: https://downloads.gtnewhorizons.com/ServerPacks/
# if this isn't true, then the container tries to download the modpack every run
SKIP_GENERIC_PACK_UPDATE_CHECK: "true"
MEMORY: 6G
# Make sure that this matches what is in your pack's startserver bash file
JVM_OPTS: -Dfml.readTimeout=180 @java9args.txt
CUSTOM_JAR_EXEC: -jar lwjgl3ify-forgePatches.jar nogui
volumes:
# attach a managed volume, change to a relative or absolute host directory if needed
- mc-data:/data
volumes:
mc-data:

View File

@@ -4,7 +4,7 @@ services:
environment:
EULA: true
MOTD: |
A §l§cMinecraft§r server
line one
line two
# or
# MOTD: "line one\nline two"

View File

@@ -14,8 +14,11 @@ services:
#CF_FILENAME_MATCHER: "0.2.34"
CF_EXCLUDE_MODS: |
controlling
craftpresence
creative-core
default-options
equipment-compare
item-borders
itemphysic-lite
konkrete
oauth

View File

@@ -1,19 +0,0 @@
services:
mc:
image: itzg/minecraft-server
environment:
EULA: true
# https://docker-minecraft-server.readthedocs.io/en/latest/types-and-platforms/mod-platforms/auto-curseforge/
MODPACK_PLATFORM: AUTO_CURSEFORGE
# 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
CF_API_KEY: ${CF_API_KEY}
MEMORY: 4G
ports:
- "25565:25565"
volumes:
- mc-data:/data
volumes:
mc-data:

View File

@@ -1,18 +1,17 @@
services:
mc:
image: itzg/minecraft-server:java17
image: itzg/minecraft-server
ports:
- "25565:25565"
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
# allocate from https://console.curseforge.com/
CF_API_KEY: ${CF_API_KEY}
CF_API_KEY: # allocate from https://console.curseforge.com/
CF_SLUG: vault-hunters-1-18-2
MOTD: "§4----- §2 Vault Hunters: 1.18.2 §4 -----§r\\n §4------ §e vaulthunters.gg §4------"
CF_FILENAME_MATCHER: "Update-10.0.0"
MOTD: "§4----- §2 Vault Hunters: 1.18.2u10.0.0 §4 -----§r\\n §4------ §e vaulthunters.gg §4------"
MEMORY: 6G # 4G for base server + 2G per player
CF_EXCLUDE_MODS: |
reauth
CF_EXCLUDE_MODS: reauth
ALLOW_FLIGHT: true
ENABLE_COMMAND_BLOCK: true
DIFFICULTY: hard
@@ -20,4 +19,4 @@ services:
- mc-data:/data
volumes:
mc-data: {}
mc-data: {}

View File

@@ -26,7 +26,6 @@
"clickable-advancements",
"configured",
"controlling",
"craftpresence",
"ctm",
"custom-main-menu",
"dark-mode-everywhere",
@@ -45,7 +44,6 @@
"entity-collision-fps-fix",
"entity-texture-features-fabric",
"entityculling",
"equipment-compare",
"extreme-sound-muffler",
"ezzoom",
"fading-night-vision",
@@ -63,8 +61,6 @@
"inmisaddon",
"iris-flywheel-compat",
"irisshaders",
"item-borders",
"item-highlighter",
"item-obliterator",
"itemphysic-lite",
"itemzoom",
@@ -72,6 +68,7 @@
"just-enough-mekanism-multiblocks",
"just-enough-resources-jer",
"just-zoom",
"konkrete",
"legendary-tooltips",
"lighty",
"loot-capacitor-tooltips",
@@ -113,7 +110,6 @@
"sodium-extra",
"sodium-options-api",
"sodium-rubidium-occlusion-culling-fix",
"sound-reloader",
"sound-filters",
"sound-physics-remastered",
"stellar-sky",
@@ -129,27 +125,17 @@
"vanillafix",
"visuality",
"waila-harvestability",
"wawla",
"xaeroplus",
"yungs-menu-tweaks",
"zume"
],
"modpacks": {
"all-of-fabric-6": {
"forceIncludes": ["revelationary"]
},
"create-arcane-engineering": {
"forceIncludes": ["just-enough-resources-jer"]
},
"skyfactory-5": {
"forceIncludes": [
"colored-torches",
"dye-mob-dye",
"openstairs"
]
},
"valhelsia-5": {
"excludes": ["modernfix"]
},
"create-arcane-engineering": {
"forceIncludes": ["just-enough-resources-jer"]
}
}
}

View File

@@ -22,10 +22,7 @@
"cherishedworlds",
"citresewn",
"clickadv",
"connectedness",
"connector",
"craftpresence",
"cwb",
"DisableCustomWorldsAdvice",
"drippyloadingscreen",
"eating-animation",
@@ -39,8 +36,6 @@
"fancymenu",
"fast-ip-ping",
"FauxCustomEntityData",
"feytweaks",
"figura",
"GeckoLibIrisCompat",
"gpumemleakfix",
"Highlighter",
@@ -65,11 +60,9 @@
"PickUpNotifier",
"PresenceFootsteps",
"Prism",
"reforgium",
"reeses_sodium_options",
"ResourcePackOverrides",
"ryoamiclights",
"screenshot_viewer",
"Searchables",
"seasonhud",
"ShoulderSurfing",
@@ -80,8 +73,7 @@
"VR-Combat",
"YeetusExperimentus",
"yungsmenutweaks",
"Zoomify",
"zume"
"Zoomify"
],
"globalForceIncludes": [],
"modpacks": {}

View File

@@ -18,10 +18,10 @@ githubUrl="https://github.com/KoboDev/SupplyAndDemand/releases/download"
canyonBuildJSON=$(curl -fsSL "${canyonJob}/${CANYON_BUILD}/api/json")
buildRelPath=$(
jq -r '.artifacts[0].relativePath' <<< "$canyonBuildJSON"
jq '.artifacts[0].relativePath' <<< "$canyonBuildJSON"
)
buildNumber=$(
jq -r '.number'<<< "$canyonBuildJSON"
jq '.number'<<< "$canyonBuildJSON"
)
baseName=$(basename "${buildRelPath}")
@@ -50,7 +50,7 @@ if [ ! -f "$SERVER" ]; then
fi
curl -fsSL -o "$SERVER" "$downloadUrl"
if [ ! -f "$SERVER" ]; then
logError "Failed to download from $downloadUrl"
logError "Failed to download from $downloadUrl (status=$?)"
exit 3
fi
fi

View File

@@ -62,11 +62,8 @@ elif ! [[ ${FTB_MODPACK_VERSION_ID} =~ [0-9]+ ]]; then
exit 1
fi
if isTrue "$FTB_FORCE_REINSTALL" ||
! [ -f "${ftbManifest}" ] ||
! [ -f "${ftbInstallMarker}" ] ||
[ "$(cat "${ftbInstallMarker}")" != "${FTB_MODPACK_ID}=${FTB_MODPACK_VERSION_ID}" ]; then
ftbInstaller=/data/ftb-installer-v2
if isTrue "$FTB_FORCE_REINSTALL" || ! [ -f "${ftbManifest}" ] || ! [ -f "${ftbInstallMarker}" ] || [ "$(cat "${ftbInstallMarker}")" != "${FTB_MODPACK_ID}=${FTB_MODPACK_VERSION_ID}" ]; then
ftbInstaller=/data/ftb-installer
arm=
if ! [[ -f "${ftbInstaller}" ]]; then
if [ "$(uname -m)" == "aarch64" ]; then
@@ -106,7 +103,6 @@ export VERSION
variants=(
run.sh
fabric-server-launch.jar
"${modLoader}-${mcVersion}-${modLoaderVersion}-universal.jar"
"${modLoader}-${mcVersion}-${modLoaderVersion}-${mcVersion}-universal.jar"
"${modLoader}-${mcVersion}-${modLoaderVersion}-server-launch.jar"

View File

@@ -21,20 +21,6 @@ if [[ ${FORGE_INSTALLER} ]]; then
logError "Failed to installForge given installer ${FORGE_INSTALLER}"
exit 1
fi
elif [[ ${FORGE_INSTALLER_URL:-} ]]; then
mkdir -p tmp
if ! installer=$(get -o tmp --output-filename "${FORGE_INSTALLER_URL}"); then
logError "Failed to download installer from $FORGE_INSTALLER_URL"
exit 1
fi
# shellcheck disable=SC2064
trap "rm $installer" EXIT
if ! mc-image-helper-forge --forge-installer="${installer}" ; then
logError "Failed to install forge from ${FORGE_INSTALLER_URL}"
exit 1
fi
else
if ! mc-image-helper-forge --forge-version="${FORGE_VERSION}"; then
logError "Failed to install Forge"

View File

@@ -17,12 +17,12 @@ export SERVER
resolveVersion
EXTRA_ARGS+=" -minecraftVersion $VERSION"
EXTRA_ARGS+="-minecraftVersion $VERSION"
if [[ ${KETTING_VERSION:-} ]]; then
EXTRA_ARGS+=" -kettingVersion $KETTING_VERSION"
EXTRA_ARGS+="-kettingVersion $KETTING_VERSION"
fi
if [[ ${FORGE_VERSION:-} ]]; then
EXTRA_ARGS+=" -forgeVersion $FORGE_VERSION"
EXTRA_ARGS+="-forgeVersion $FORGE_VERSION"
fi
export EXTRA_ARGS

View File

@@ -9,46 +9,39 @@ isDebugging && set -x
resolveVersion
: "${MOHIST_BUILD:=lastSuccessfulBuild}"
mohistBaseUrl="https://mohistmc.com/api/v2/projects/mohist/"
mohistApiUrl="${mohistBaseUrl}${VERSION}/builds/"
mohistBaseUrl=https://ci.codemc.io/job/MohistMC/
mohistJobs=${mohistBaseUrl}job/
mohistJob=${mohistJobs}Mohist-${VERSION}/
function logMohistAvailableVerisons(){
logError " check ${mohistBaseUrl} for available versions"
logError " and set VERSION accordingly"
}
if ! get --exists "${mohistApiUrl}"; then
if ! get --exists "${mohistJob}"; then
logError "Mohist builds do not exist for ${VERSION}"
logMohistAvailableVerisons
exit 1
fi
if [[ "${MOHIST_BUILD}" == "lastSuccessfulBuild" ]]; then
# Get the latest build number from the API
buildNumber=$(
get --json-path '$.builds[-1].number' "${mohistApiUrl}"
)
MOHIST_BUILD="${buildNumber}"
fi
downloadUrl=$(
get --json-path "$.builds[?(@.number==${MOHIST_BUILD})].url" "${mohistApiUrl}"
buildRelPath=$(
get --json-path '$.artifacts[0].relativePath' "${mohistJob}${MOHIST_BUILD}/api/json"
)
if [[ -z "${downloadUrl}" ]]; then
logError "Could not find build ${MOHIST_BUILD} for version ${VERSION}"
baseName=$(basename "${buildRelPath}")
if [[ ${baseName} != *-server.jar* ]]; then
logError "Mohist build for ${VERSION} is not a valid server jar, found ${baseName}"
logMohistAvailableVerisons
exit 1
fi
SERVER="/data/mohist-${VERSION}-${MOHIST_BUILD}-server.jar"
export SERVER="/data/${baseName}"
if [ ! -f "${SERVER}" ]; then
log "Downloading Mohist build ${MOHIST_BUILD} for ${VERSION}"
get -o "${SERVER}" "${downloadUrl}"
log "Downloading ${baseName}"
get -o "${SERVER}" "${mohistJob}${MOHIST_BUILD}/artifact/${buildRelPath}"
fi
export FAMILY=HYBRID
export SERVER
exec "${SCRIPTS:-/}start-spiget" "$@"

View File

@@ -42,18 +42,11 @@ else
applyResultsFile ${resultsFile}
fi
defaultTopLevelConfigs="bukkit.yml spigot.yml"
if versionLessThan 1.19; then
defaultTopLevelConfigs+=" paper.yml"
else
# Download default configs to allow for consistent patching
DOWNLOAD_DEFAULT_CONFIGS=$(buildDownloadList "$PAPER_CONFIG_DEFAULTS_REPO" "$VERSION" paper-global.yml paper-world-defaults.yml)
export DOWNLOAD_DEFAULT_CONFIGS
fi
# Download top-level configs to allow for consistent patching
DOWNLOAD_DEFAULTS=$(buildDownloadList "$PAPER_CONFIG_DEFAULTS_REPO" "$VERSION" $defaultTopLevelConfigs)
export DOWNLOAD_DEFAULTS
# Download default configs to allow for consistent patching
for c in paper-global.yml paper-world-defaults.yml spigot.yml; do
DOWNLOAD_DEFAULT_CONFIGS+=",${PAPER_CONFIG_DEFAULTS_REPO}/${VERSION}/$c"
done
export DOWNLOAD_DEFAULT_CONFIGS
# Normalize on Spigot for downstream operations
export FAMILY=SPIGOT

View File

@@ -41,13 +41,8 @@ if [[ "$DATAPACKS" ]]; then
exit 2
fi
elif [[ -d "$i" ]]; then
if [[ -f "$i/pack.mcmeta" ]]; then
log "Copying datapack from $i"
cp -r "$i" "${out_dir}"
else
log "Copying datapacks from $i ..."
cp "$i"/*.zip "${out_dir}"
fi
log "Copying datapacks from $i ..."
cp "$i"/*.zip "${out_dir}"
else
logError "Invalid URL or path given in DATAPACKS: $i"
exit 2

View File

@@ -36,15 +36,6 @@ if [[ $DOWNLOAD_DEFAULT_CONFIGS ]]; then
logWarning "One or more default config files were not available from $DOWNLOAD_DEFAULT_CONFIGS"
fi
fi
if [[ $DOWNLOAD_DEFAULTS ]]; then
log "Downloading default top-level configs, if needed"
if ! mc-image-helper mcopy \
--to /data \
--skip-existing --skip-up-to-date=false \
"$DOWNLOAD_DEFAULTS" 2> /dev/null; then
logWarning "One or more default files were not available from $DOWNLOAD_DEFAULTS"
fi
fi
if [[ ${PATCH_DEFINITIONS} ]]; then
log "Applying patch definitions from ${PATCH_DEFINITIONS}"

View File

@@ -155,7 +155,6 @@ function handleGenericPacks() {
: "${GENERIC_PACKS:=${GENERIC_PACK}}"
: "${GENERIC_PACKS_PREFIX:=}"
: "${GENERIC_PACKS_SUFFIX:=}"
: "${GENERIC_PACKS_DISABLE_MODS:=}"
if [[ "${GENERIC_PACKS}" ]]; then
IFS=',' read -ra packs <<< "${GENERIC_PACKS}"
@@ -193,12 +192,6 @@ function handleGenericPacks() {
extract "${pack}" "${base_dir}"
done
# Disable mods
for mod in ${GENERIC_PACKS_DISABLE_MODS}; do
log Disabling $mod
find "${base_dir}" -name "$mod" -exec mv {} {}.disabled -v \;
done
# Remove any eula file since container manages it
rm -f "${base_dir}/eula.txt"

View File

@@ -77,18 +77,13 @@ if [[ -v WHITELIST_FILE ]]; then
fi
if [[ -v WHITELIST ]]; then
args=()
if isTrue "${APPEND_WHITELIST:-false}" || isFalse "${OVERRIDE_WHITELIST:-true}"; then
args+=(--append-only)
fi
existing="$EXISTING_WHITELIST_FILE"
if [[ "$EXISTING_WHITELIST_FILE" = SYNC_FILE_MERGE_LIST ]]; then
existing=MERGE
fi
# legacy option
if [[ -v APPEND_WHITELIST ]] && isTrue "${APPEND_WHITELIST}"; then
existing=MERGE
fi
# legacy option
if [[ -v OVERRIDE_WHITELIST ]] && isFalse "${OVERRIDE_WHITELIST}"; then
existing=SKIP
fi
# shellcheck disable=SC2086
mc-image-helper manage-users \
"${sharedArgs[@]}" "${args[@]}" \

View File

@@ -513,17 +513,3 @@ function ensureRemoveAllModsOff() {
REMOVE_OLD_MODS=false
fi
}
function buildDownloadList() {
repoUrl=${1?}
version=${2?}
shift 2
result=
for c in "${@}"; do
if [[ $result ]]; then
result+=","
fi
result+="${repoUrl}/${version}/$c"
done
echo "$result"
}

View File

@@ -5,7 +5,7 @@ services:
EULA: "true"
SETUP_ONLY: "true"
TYPE: FABRIC
VERSION: 1.21.4
VERSION: 1.19.1
MODRINTH_PROJECTS: fabric-api,cloth-config
volumes:
- ./data:/data