Compare commits

..

24 Commits

Author SHA1 Message Date
Geoff Bourne a465d759b8 deps: upgrade rcon-cli to 1.7.2 2025-08-17 17:09:24 -05:00
Geoff Bourne 75082daa1d modrinth: fix force include handling of default-excluded project (#3622) 2025-08-16 16:50:43 -05:00
Geoff Bourne b1d68a65aa deps: upgrade helper for Reactor Netty 1.2.9 (#3620) 2025-08-14 20:34:34 -05:00
Geoff Bourne 11414c83c1 Provide option to disable HTTP/2 use (#3619) 2025-08-13 18:45:02 -05:00
Geoff Bourne 720006b445 Revert "Properly retry download when fabric installer is invalid" (#3618) 2025-08-13 11:52:25 -05:00
Geoff Bourne 9d2cd1475e Properly retry download when fabric installer is invalid (#3617) 2025-08-13 06:43:20 -05:00
dependabot[bot] acfd6fadf8 build(deps): bump docker/login-action from 3.4.0 to 3.5.0 in the updates group (#3615) 2025-08-12 11:16:37 -05:00
Geoff Bourne ba172b2aa9 Added all image tags to images.json (#3613) 2025-08-10 22:11:54 -05:00
Geoff Bourne e4859fb23a Add images.json (#3612) 2025-08-10 22:06:31 -05:00
Geoff Bourne eb682118ff Add Modrinth default exclusions needed for cobbleverse (#3609) 2025-08-10 12:17:46 -05:00
Geoff Bourne 2fbc804f3e misc: organize more of examples into subdirs as compose projects (#3608) 2025-08-10 09:06:58 -05:00
Geoff Bourne 5bd6287f52 misc: refactored bin content into files/shims (#3607) 2025-08-10 09:05:10 -05:00
Geoff Bourne b6a8b95159 Validate Fabric launcher jar and use HTTP/2 (#3606) 2025-08-09 17:35:15 -05:00
Geoff Bourne 0d834dd992 Fixed VERSION_FROM_MODRINTH_PROJECTS when a project has a shorter list (#3605) 2025-08-09 13:41:20 -05:00
Geoff Bourne 0a5ac8aba6 Analyze CF_API_KEY key when auth failures (#3604) 2025-08-08 20:14:36 -05:00
Geoff Bourne 37d2aebb1e Populate MODPACK_NAME and MODPACK_VERSION from FTB modpacks (#3602) 2025-08-08 13:18:31 -05:00
Geoff Bourne d5d1592c38 Pass proxy properties via MC_IMAGE_HELPER_OPTS (#3601) 2025-08-07 08:11:56 -05:00
Geoff Bourne dedacfb94e Fixed noise with picking up JAVA_TOOL_OPTIONS (#3599) 2025-08-06 20:25:12 -05:00
Geoff Bourne c6e970c8d2 Fixed HTTP proxy handling for operations using mc-image-helper (#3598) 2025-08-06 19:57:56 -05:00
Geoff Bourne fa56741869 Limit/config concurrent downloads for CF and Modrinth (#3596) 2025-08-05 18:55:26 -05:00
EmilyxFox 2abae7462c Add clarifying information for CurseForge API keys (#3594) 2025-08-04 19:42:11 -05:00
dependabot[bot] a569d63cf3 build(deps): bump docker/metadata-action from 5.7.0 to 5.8.0 in the updates group (#3589) 2025-08-04 06:51:00 -05:00
Geoff Bourne e305782a8f Forge promotions and maven repo URLs are configurable (#3587) 2025-08-03 19:29:30 -05:00
Geoff Bourne 24c352949c Added skyfactory 4 example and excluding waila-stages (#3586) 2025-08-03 17:10:49 -05:00
52 changed files with 280 additions and 209 deletions
+4 -3
View File
@@ -12,6 +12,7 @@ on:
- "examples/**" - "examples/**"
- "notes/**" - "notes/**"
- "kustomize/**" - "kustomize/**"
- "images.json"
jobs: jobs:
build: build:
@@ -125,7 +126,7 @@ jobs:
- name: Docker meta - name: Docker meta
id: meta id: meta
uses: docker/metadata-action@v5.7.0 uses: docker/metadata-action@v5.8.0
with: with:
# NOTE for forks: if your Docker Hub organization doesn't match your Github repo's, # 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. # then the use of ${{ github.repository_owner }} will need to be replaced.
@@ -185,14 +186,14 @@ jobs:
tests/test.sh tests/test.sh
- name: Login to DockerHub - name: Login to DockerHub
uses: docker/login-action@v3.4.0 uses: docker/login-action@v3.5.0
if: env.HAS_IMAGE_REPO_ACCESS if: env.HAS_IMAGE_REPO_ACCESS
with: with:
username: ${{ secrets.DOCKER_USER }} username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GHCR - name: Login to GHCR
uses: docker/login-action@v3.4.0 uses: docker/login-action@v3.5.0
if: env.HAS_IMAGE_REPO_ACCESS if: env.HAS_IMAGE_REPO_ACCESS
with: with:
registry: ghcr.io registry: ghcr.io
+1
View File
@@ -11,6 +11,7 @@ on:
- "kustomize/**" - "kustomize/**"
- "docker-compose*.yml" - "docker-compose*.yml"
- "mkdocs.yml" - "mkdocs.yml"
- "images.json"
jobs: jobs:
build: build:
+3 -4
View File
@@ -33,7 +33,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${RESTIFY_VERSION} --var app=restify --file {{.app}} \ --var version=${RESTIFY_VERSION} --var app=restify --file {{.app}} \
--from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG RCON_CLI_VERSION=1.7.1 ARG RCON_CLI_VERSION=1.7.2
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${RCON_CLI_VERSION} --var app=rcon-cli --file {{.app}} \ --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 --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
@@ -48,7 +48,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
--var version=${MC_SERVER_RUNNER_VERSION} --var app=mc-server-runner --file {{.app}} \ --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 --from ${GITHUB_BASEURL}/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
ARG MC_HELPER_VERSION=1.48.1 ARG MC_HELPER_VERSION=1.48.10
ARG MC_HELPER_BASE_URL=${GITHUB_BASEURL}/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION} 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 # used for cache busting local copy of mc-image-helper
ARG MC_HELPER_REV=1 ARG MC_HELPER_REV=1
@@ -65,8 +65,7 @@ STOPSIGNAL SIGTERM
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 LC_ALL=en_US.UTF-8
COPY --chmod=755 scripts/start* / COPY --chmod=755 scripts/start* /
COPY --chmod=755 bin/ /usr/local/bin/ COPY --chmod=755 files/shims/ /usr/local/bin/
COPY --chmod=755 bin/mc-health /health.sh
COPY --chmod=755 files/* /image/ COPY --chmod=755 files/* /image/
COPY --chmod=755 files/auto /auto COPY --chmod=755 files/auto /auto
+1 -5
View File
@@ -107,11 +107,7 @@ such as:
## HTTP Proxy ## HTTP Proxy
You may configure the use of an HTTP/HTTPS proxy by passing the proxy's URL via the `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`.
environment variable. In [the example compose file](https://github.com/itzg/docker-minecraft-server/blob/master/examples/docker-compose-proxied.yml) it references
a companion squid proxy by setting the equivalent of
-e PROXY=proxy:3128
## Using "noconsole" option ## Using "noconsole" option
+11 -4
View File
@@ -7,14 +7,14 @@ CONTAINER ID IMAGE COMMAND CREATED
b418af073764 mc "/start" 43 seconds ago Up 41 seconds (healthy) 0.0.0.0:25565->25565/tcp, 25575/tcp mc b418af073764 mc "/start" 43 seconds ago Up 41 seconds (healthy) 0.0.0.0:25565->25565/tcp, 25575/tcp mc
``` ```
You can also query the container's health in a script friendly way: You can also query the container's health in a script-friendly way:
``` shell ``` shell
> docker container inspect -f "{{.State.Health.Status}}" mc > docker container inspect -f "{{.State.Health.Status}}" mc
healthy healthy
``` ```
There's actually a wrapper script called `mc-health` that takes care of calling `mc-monitor status` with the correct arguments. If needing to customize the health checks parameters, such as in a compose file, then use something like the following in the service declaration: There's actually a wrapper script called `mc-health` that takes care of calling `mc-monitor status` with the correct arguments. If needing to customize the health checks parameters, such as in a Compose file, then use something like the following in the service declaration:
``` yaml ``` yaml
healthcheck: healthcheck:
@@ -26,7 +26,14 @@ healthcheck:
Some orchestration systems, such as Portainer, don't allow for disabling the default `HEALTHCHECK` declared by this image. In those cases you can approximate the disabling of health checks by setting the environment variable `DISABLE_HEALTHCHECK` to `true`. Some orchestration systems, such as Portainer, don't allow for disabling the default `HEALTHCHECK` declared by this image. In those cases you can approximate the disabling of health checks by setting the environment variable `DISABLE_HEALTHCHECK` to `true`.
The [health check in a Compose service declaration](https://docs.docker.com/reference/compose-file/services/#healthcheck) can also be disabled using:
```yaml
healthcheck:
disable: true
test: ["NONE"]
```
### Health checks for older versions ### Health checks for older versions
This container disables Healthchecks for Versions before b1.8 as those versions do not support any kind of server pinging. This container disables health checks for Minecraft versions before b1.8 as those versions do not support any kind of server pinging. For more information see [Server List Ping](https://minecraft.wiki/w/Java_Edition_protocol/Server_List_Ping#Beta_1.8_to_1.3).
For more information see [Server List Ping](https://wiki.vg/Server_List_Ping#Beta_1.8_to_1.3)
@@ -12,6 +12,7 @@ To manage a CurseForge modpack automatically with upgrade support, pinned or lat
Example if your key is `$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa`: Example if your key is `$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa`:
```yaml ```yaml
# compose.yaml
environment: environment:
CF_API_KEY: '$$11$$22$$33aaaaaaaaaaaaaaaaaaaaaaaaaa' CF_API_KEY: '$$11$$22$$33aaaaaaaaaaaaaaaaaaaaaaaaaa'
``` ```
@@ -21,12 +22,30 @@ To manage a CurseForge modpack automatically with upgrade support, pinned or lat
docker run ... -e CF_API_KEY='$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa' docker run ... -e CF_API_KEY='$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa'
``` ```
To avoid exposing the API key, it is highly recommended to use a `.env` file, which is [loaded automatically by docker compose](https://docs.docker.com/compose/environment-variables/set-environment-variables/#substitute-with-an-env-file). `$`'s in the value still need to escaped with a second `$` and the variable needs to be referenced from the compose file, such as: To avoid exposing the API key, it is highly recommended to use a `.env` file, which is [loaded automatically by docker compose](https://docs.docker.com/compose/environment-variables/set-environment-variables/#substitute-with-an-env-file). You **do not** need to escape `$`'s with a second `$` in the `.env` file **as long as the key is wrapped in single quotes**.
```
# .env
CF_API_KEY='$11$22$33aaaaaaaaaaaaaaaaaaaaaaaaaa'
```
The variable should to be referenced from the compose file, such as:
```yaml ```yaml
# compose.yaml
environment: environment:
CF_API_KEY: ${CF_API_KEY} CF_API_KEY: ${CF_API_KEY}
``` ```
The .env file should be placed in the same directory as your compose file like so:
```
/minecraft-server
├── .env
├── compose.yaml
├── /data
```
To use the equivalent with `docker run` you need to specify the `.env` file explicitly: To use the equivalent with `docker run` you need to specify the `.env` file explicitly:
``` ```
docker run --env-file=.env itzg/minecraft-server docker run --env-file=.env itzg/minecraft-server
@@ -45,6 +45,11 @@ In both of the cases above, there is no need for the `VERSION` or `FORGE_VERSION
If an error occurred while installing Forge, it might be possible to resolve by temporarily setting `FORGE_FORCE_REINSTALL` to "true". Be sure to remove that variable after successfully starting the server. If an error occurred while installing Forge, it might be possible to resolve by temporarily setting `FORGE_FORCE_REINSTALL` to "true". Be sure to remove that variable after successfully starting the server.
URLs configurable via environment variables:
- `FORGE_PROMOTIONS_URL`: default is https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json
- `FORGE_MAVEN_REPO_URL`: default is https://maven.minecraftforge.net
## Alternatives ## Alternatives
### NeoForge ### NeoForge
+4
View File
@@ -139,3 +139,7 @@ The following image tags have been deprecated and are no longer receiving update
- java23-* - java23-*
- java8-multiarch is still built and pushed, but please move to java8 instead - java8-multiarch is still built and pushed, but please move to java8 instead
- java8-alpine, java8-jdk, java8-openj9, java8-graalvm-ce - java8-alpine, java8-jdk, java8-openj9, java8-graalvm-ce
## JSON Listing
Information about the image tags is available programmatically at <https://raw.githubusercontent.com/itzg/docker-minecraft-server/refs/heads/master/images.json>
@@ -0,0 +1,16 @@
services:
mc:
image: itzg/minecraft-server:java8
environment:
EULA: "true"
MODPACK_PLATFORM: AUTO_CURSEFORGE
CF_SLUG: skyfactory-4
CF_FILENAME_MATCHER: 4.2.4
CF_API_KEY: ${CF_API_KEY}
MEMORY: 3G
ports:
- "25565:25565"
volumes:
- mc-data:/data
volumes:
mc-data:
@@ -1,157 +0,0 @@
####################################################################
# FORGE GENERIC_PACK #
# #
# Date: 20220828 #
# #
# Mod: TNP Limitless 5 v2.19.0 #
# #
# Notes: Verify that there is no EULA file in the modpack.zip #
# if you do not delete it the EULA flag below will be #
# overwritten when the modpack is copied and the server #
# will not start. #
# #
####################################################################
services:
####################################################################
# Service Name #
# #
# Define Service Name here. If using RCON this name will be #
# referenced again as RWA_RCON_HOST below. #
# #
# Example: 'name:' or 'mc_atm6:' #
####################################################################
mc_tnp5:
####################################################################
# Image & Container Name #
# #
# Specify Image Name and Java Version. The 'image' will always be #
# 'itzg/minecraft-server' however the tag added to the end is #
# where you can specify the java version or container architecture.#
# See readme.md for a full list. #
# #
# 'container_name:' This can be anything you like. This is the name#
# that will show when you run 'docker ps' commands. #
####################################################################
image: itzg/minecraft-server
container_name: mc_tnp5
####################################################################
# Server Ports #
# #
# Specify external port. #
####################################################################
ports:
- 25565:25565
####################################################################
# Automatic Server Restart #
# #
# Define a restart policy here. #
# - 'no' = Do not restart. #
# - 'on-failure' = Restart if container exits because an error. #
# - 'always' = Regardless of stop reason. #
# - 'unless-stopped' = Similar to always except if stopped. #
####################################################################
restart: unless-stopped
####################################################################
# Volume and Folder Access #
# #
# This section defines what folders and volumes you want to give #
# this container access to. It is recommended to leaves these set #
# to the default values unless you know what you are doing. #
# #
# Place your mod zip file in a folder called 'modpacks' in the #
# same directory you place this docker-compose file. #
# #
# Specify the data volume name or directory here as well. #
# In this example the volume name is 'data'. When docker creates #
# the volume it will add what ever name you give it here to the #
# end of the container name specified above. In this example it #
# would be named 'mc_atm6_data'. If you change this be sure to #
# update the volume name at the bottom of this config. #
####################################################################
volumes:
- ./modpacks:/modpacks:ro
- data:/data
####################################################################
# EULA #
# #
# Accept EULA by setting to "true" #
####################################################################
environment:
EULA: "true"
####################################################################
# FORGE INSTALL #
# #
# Sets install type to FORGE and specifys the zip folder name #
# and location of your mod pack. #
# #
# TYPE: Defines the install type as FORGE #
# #
# VERSION: Defines the version of MC the modpack is based on. #
# #
# FORGE_VERSION: Defines the version of FORGE the modpack uses. #
# This can usually be found in the modpack.zip as #
# installer.jar #
# #
# GENERIC_PACK: Define where the modpack.zip is located. #
# #
# Place your mod zip file in a folder called 'modpacks' in the #
# same directory you place this docker-compose file. #
####################################################################
TYPE: FORGE
VERSION: 1.18.2
FORGE_VERSION: 40.1.73
GENERIC_PACK: /modpacks/tnp5.zip
####################################################################
# Server Memory #
# #
# Set Maximum amount of memory allowed for your server. #
####################################################################
MEMORY: "8G"
####################################################################
# Logging Options #
# #
# Set to "true" to delete old logs #
####################################################################
ENABLE_ROLLING_LOGS: "true"
####################################################################
# Server Timezone #
# #
# Specify server Timezone #
####################################################################
TZ: "America/New_York"
####################################################################
# Minecraft Game Options #
# #
# List any game options you want to define here. A full list can #
# be found on the readme.md page on github. #
####################################################################
OVERRIDE_SERVER_PROPERTIES: "true"
DIFFICULTY: "easy"
MAX_TICK_TIME: "-1"
VIEW_DISTANCE: "6"
ALLOW_FLIGHT: "true"
OPS: ""
MAX_PLAYERS: 10
PVP: "false"
LEVEL_TYPE: "biomesoplenty"
MOTD: "Welcome Home"
####################################################################
# Volumes #
# #
# Define data volume name here. You should leave this set to the #
# default. #
####################################################################
volumes:
data:
-19
View File
@@ -1,19 +0,0 @@
services:
mc:
image: itzg/minecraft-server:${IMAGE_TAG:-latest}
volumes:
- data:/data
- ./modpacks:/modpacks:ro
environment:
EULA: "true"
TYPE: FORGE
DEBUG: "${DEBUG:-false}"
VERSION: ${VERSION:-1.17.1}
FORGE_VERSION: ${FORGE_VERSION:-37.0.90}
GENERIC_PACK: /modpacks/${MODPACK:-Server-Files-0.0.21.zip}
REMOVE_OLD_MODS: "${REMOVE_OLD_MODS:-false}"
ports:
- "25565:25565"
volumes:
data: {}
+3
View File
@@ -12,6 +12,9 @@ services:
# Use Pack ID from https://www.feed-the-beast.com/modpacks/119-ftb-presents-direwolf20-120?tab=about # Use Pack ID from https://www.feed-the-beast.com/modpacks/119-ftb-presents-direwolf20-120?tab=about
FTB_MODPACK_ID: "119" FTB_MODPACK_ID: "119"
# FTB_MODPACK_VERSION_ID: "" # FTB_MODPACK_VERSION_ID: ""
MOTD: |
An FTB server running
%MODPACK_NAME% version %MODPACK_VERSION%
MEMORY: 4G MEMORY: 4G
volumes: volumes:
# use a named, managed volume for data volume # use a named, managed volume for data volume
@@ -10,6 +10,6 @@ services:
griefprevention griefprevention
discordsrv discordsrv
VERSION_FROM_MODRINTH_PROJECTS: true VERSION_FROM_MODRINTH_PROJECTS: true
SETUP_ONLY: true MEMORY: 2G
ports: ports:
- "25565:25565" - "25565:25565"
+1
View File
@@ -157,6 +157,7 @@
"vanillafix", "vanillafix",
"visuality", "visuality",
"waila-harvestability", "waila-harvestability",
"waila-stages",
"wakes-reforged", "wakes-reforged",
"wawla", "wawla",
"welcome-screen", "welcome-screen",
+21 -3
View File
@@ -10,8 +10,9 @@
"axolotlbuckets", "axolotlbuckets",
"BadOptimizations", "BadOptimizations",
"BetterAdvancements", "BetterAdvancements",
"BetterGrassify",
"betterbeds", "betterbeds",
"BetterF3",
"BetterGrassify",
"BetterThirdPerson", "BetterThirdPerson",
"BHMenu", "BHMenu",
"blur", "blur",
@@ -23,16 +24,21 @@
"cherishedworlds", "cherishedworlds",
"citresewn", "citresewn",
"clickadv", "clickadv",
"cobblemon-ui-tweaks",
"compass-coords", "compass-coords",
"connectedness", "connectedness",
"connector", "connector",
"continuity", "continuity",
"controlling",
"craftpresence", "craftpresence",
"cwb", "cwb",
"DisableCustomWorldsAdvice", "DisableCustomWorldsAdvice",
"distraction_free_recipes", "distraction_free_recipes",
"drippyloadingscreen", "drippyloadingscreen",
"eating-animation", "eating-animation",
"emi",
"emi_loot",
"emi_trade",
"emiffect", "emiffect",
"emitrades", "emitrades",
"entity_model_features", "entity_model_features",
@@ -52,6 +58,7 @@
"Highlighter", "Highlighter",
"ImmediatelyFast", "ImmediatelyFast",
"indium", "indium",
"inventory-profiles-next",
"iris", "iris",
"iris-flywheel", "iris-flywheel",
"ItemBorders", "ItemBorders",
@@ -71,9 +78,10 @@
"PickUpNotifier", "PickUpNotifier",
"PresenceFootsteps", "PresenceFootsteps",
"Prism", "Prism",
"reforgium",
"reeses_sodium_options", "reeses_sodium_options",
"reforgium",
"ResourcePackOverrides", "ResourcePackOverrides",
"roughly-enough-items",
"ryoamiclights", "ryoamiclights",
"screenshot_viewer", "screenshot_viewer",
"Searchables", "Searchables",
@@ -82,14 +90,24 @@
"skinlayers3d", "skinlayers3d",
"sodium", "sodium",
"sorted_enchantments", "sorted_enchantments",
"tooltipfix",
"visuality", "visuality",
"VR-Combat", "VR-Combat",
"WailaStages",
"welcomescreen", "welcomescreen",
"Xaeros_Minimap",
"XaerosWorldMap",
"YeetusExperimentus", "YeetusExperimentus",
"yungsmenutweaks", "yungsmenutweaks",
"Zoomify", "Zoomify",
"zume" "zume"
], ],
"globalForceIncludes": [], "globalForceIncludes": [],
"modpacks": {} "modpacks": {
"cobbleverse": {
"excludes": [
"cloth-config"
]
}
}
} }
View File
View File
View File
+134
View File
@@ -0,0 +1,134 @@
[
{
"tag": "latest",
"notes": "Always tracks the most recent commit on the main branch",
"java": "21",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
"lts": true
},
{
"tag": "stable",
"notes": "Always tracks the most recent release",
"java": "21",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
"lts": true
},
{
"tag": "java24",
"java": "24",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java24-graalvm",
"java": "24",
"distribution": "oracle",
"jvm": "graalvm",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java21",
"java": "21",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
"lts": true
},
{
"tag": "java21-alpine",
"java": "21",
"distribution": "alpine",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java21-graalvm",
"java": "21",
"distribution": "oracle",
"jvm": "graalvm",
"architectures": ["amd64", "arm64"],
},
{
"tag": "java21-jdk",
"java": "21",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
"jdk": true
},
{
"tag": "java21-graalvm",
"java": "21",
"distribution": "oracle",
"jvm": "graalvm",
"architectures": ["amd64", "arm64"],
},
{
"tag": "java17",
"java": "17",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
"lts": true
},
{
"tag": "java17-alpine",
"java": "17",
"distribution": "alpine",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java17-graalvm",
"java": "17",
"distribution": "oracle",
"jvm": "graalvm",
"architectures": ["amd64", "arm64"]
},
{
"tag": "java16",
"java": "16",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64", "armv7"]
},
{
"tag": "java11",
"java": "11",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64", "armv7"],
"lts": true
},
{
"tag": "java8",
"java": "8",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64", "armv7"],
"lts": true
},
{"tag": "adopt13", "deprecated": true},
{"tag": "adopt14", "deprecated": true},
{"tag": "adopt15", "deprecated": true},
{"tag": "openj9-nightly", "deprecated": true},
{"tag": "multiarch-latest", "deprecated": true},
{"tag": "java16-openj9", "deprecated": true},
{"tag": "java17-graalvm-ce", "deprecated": true},
{"tag": "java17-openj9", "deprecated": true},
{"tag": "java19", "deprecated": true},
{"tag": "java20-graalvm", "deprecated": true},
{"tag": "java20", "deprecated": true},
{"tag": "java20-alpine", "deprecated": true},
{"tag": "java23", "deprecated": true},
{"tag": "java8-multiarch", "deprecated": true},
{"tag": "java8-alpine", "deprecated": true},
{"tag": "java8-jdk", "deprecated": true},
{"tag": "java8-openj9", "deprecated": true},
{"tag": "java8-graalvm-ce", "deprecated": true}
]
+23 -6
View File
@@ -50,7 +50,7 @@ fi
if isTrue "${DEBUG_MEMORY:-false}"; then if isTrue "${DEBUG_MEMORY:-false}"; then
log "Memory usage and availability (in MB)" log "Memory usage and availability (in MB)"
uname -a uname -parts
free -m free -m
fi fi
@@ -101,21 +101,38 @@ if isTrue "${ENABLE_AUTOPAUSE}" && isTrue "${ENABLE_AUTOSTOP}"; then
exit 1 exit 1
fi fi
proxyArgs=()
if [[ $PROXY ]]; then if [[ $PROXY ]]; then
export http_proxy="$PROXY" export http_proxy="$PROXY"
export https_proxy="$PROXY" export https_proxy="$PROXY"
export JAVA_TOOL_OPTIONS+="-Djava.net.useSystemProxies=true"
log "INFO: Giving proxy time to startup..." IFS=":"
sleep 5 read -ra parts <<< "$PROXY"
IFS=" "
: "${PROXY_HOST=$(firstArrayElement parts)}"
shiftArray parts
: "${PROXY_PORT=$(firstArrayElement parts)}"
fi fi
# https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html
proxyArgs=()
function addToProxyArgs() {
if [[ $2 ]]; then
proxyArgs+=("-D$1=$2")
fi
}
addToProxyArgs http.proxyHost "${PROXY_HOST:-}"
addToProxyArgs http.proxyPort "${PROXY_PORT:-}"
addToProxyArgs http.nonProxyHosts "${PROXY_NON_PROXY_HOSTS:-}"
export MC_IMAGE_HELPER_OPTS+=" ${proxyArgs[*]}"
function fixJavaPath() { function fixJavaPath() {
# Some Docker management UIs grab all the image declared variables and present them for configuration. # Some Docker management UIs grab all the image declared variables and present them for configuration.
# When upgrading images across Java versions, that creates a mismatch in PATH's expected by base image. # When upgrading images across Java versions, that creates parts mismatch in PATH's expected by base image.
if ! which java > /dev/null; then if ! which java > /dev/null; then
logError " Your Docker provider has an annoying flaw where it" logError " Your Docker provider has an annoying flaw where it"
logError " tries to set PATH even though the container establishes" logError " tries to set PATH even though the container establishes"
logError " a very specific value." logError " parts very specific value."
sleep 2 sleep 2
# now find where java might be # now find where java might be
for d in /opt/java/openjdk/bin /usr/bin; do for d in /opt/java/openjdk/bin /usr/bin; do
+9 -1
View File
@@ -36,6 +36,12 @@ function getModLoaderVersion() {
function getMinecraftVersion() { function getMinecraftVersion() {
jq -r ".modPackTargets.mcVersion" ${ftbManifest} jq -r ".modPackTargets.mcVersion" ${ftbManifest}
} }
function getModpackName() {
jq -r ".name" ${ftbManifest}
}
function getModpackVersion() {
jq -r ".versionName" ${ftbManifest}
}
if [[ $(getDistro) = alpine ]]; then if [[ $(getDistro) = alpine ]]; then
logError "The FTBA installer is not supported on Alpine. Use the java8-multiarch image tag instead." logError "The FTBA installer is not supported on Alpine. Use the java8-multiarch image tag instead."
@@ -102,7 +108,9 @@ modLoader="$(getModLoaderName)"
modLoaderVersion="$(getModLoaderVersion)" modLoaderVersion="$(getModLoaderVersion)"
mcVersion=$(getMinecraftVersion) mcVersion=$(getMinecraftVersion)
VERSION="$mcVersion" VERSION="$mcVersion"
export VERSION MODPACK_NAME=$(getModpackName)
MODPACK_VERSION=$(getModpackVersion)
export VERSION MODPACK_NAME MODPACK_VERSION
variants=( variants=(
run.sh run.sh
+4
View File
@@ -14,6 +14,7 @@ resultsFile=/data/.install-modrinth.env
: "${MODRINTH_FORCE_INCLUDE_FILES=}" : "${MODRINTH_FORCE_INCLUDE_FILES=}"
: "${MODRINTH_OVERRIDES_EXCLUSIONS=}" : "${MODRINTH_OVERRIDES_EXCLUSIONS=}"
: "${MODRINTH_DEFAULT_EXCLUDE_INCLUDES=/image/modrinth-exclude-include.json}" : "${MODRINTH_DEFAULT_EXCLUDE_INCLUDES=/image/modrinth-exclude-include.json}"
: "${MODRINTH_FORCE_MODLOADER_REINSTALL:=${FORCE_MODLOADER_REINSTALL:-false}}"
if [[ ! $MODRINTH_MODPACK ]]; then if [[ ! $MODRINTH_MODPACK ]]; then
logError "MODRINTH_MODPACK must be set when using TYPE/MODPACK_PLATFORM/MOD_PLATFORM of MODRINTH" logError "MODRINTH_MODPACK must be set when using TYPE/MODPACK_PLATFORM/MOD_PLATFORM of MODRINTH"
@@ -33,6 +34,9 @@ args=(
if [[ $MODRINTH_IGNORE_MISSING_FILES ]]; then if [[ $MODRINTH_IGNORE_MISSING_FILES ]]; then
args+=(--ignore-missing-files "$MODRINTH_IGNORE_MISSING_FILES") args+=(--ignore-missing-files "$MODRINTH_IGNORE_MISSING_FILES")
fi fi
if isTrue "${MODRINTH_FORCE_MODLOADER_REINSTALL}"; then
args+=(--force-modloader-reinstall)
fi
case "${VERSION^^}" in case "${VERSION^^}" in
LATEST) LATEST)
+14
View File
@@ -539,3 +539,17 @@ function buildDownloadList() {
done done
echo "$result" echo "$result"
} }
function firstArrayElement {
local -n a="$1"
if (( ${#a[@]} )); then
echo "${a[0]}"
fi
}
function shiftArray {
local -n a="$1"
if (( ${#a[@]} )); then
a=("${a[@]:1}")
fi
}