mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-04-10 15:48:50 +00:00
Compare commits
24 Commits
2025.8.0
...
misc/rcon-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a465d759b8 | ||
|
|
75082daa1d | ||
|
|
b1d68a65aa | ||
|
|
11414c83c1 | ||
|
|
720006b445 | ||
|
|
9d2cd1475e | ||
|
|
acfd6fadf8 | ||
|
|
ba172b2aa9 | ||
|
|
e4859fb23a | ||
|
|
eb682118ff | ||
|
|
2fbc804f3e | ||
|
|
5bd6287f52 | ||
|
|
b6a8b95159 | ||
|
|
0d834dd992 | ||
|
|
0a5ac8aba6 | ||
|
|
37d2aebb1e | ||
|
|
d5d1592c38 | ||
|
|
dedacfb94e | ||
|
|
c6e970c8d2 | ||
|
|
fa56741869 | ||
|
|
2abae7462c | ||
|
|
a569d63cf3 | ||
|
|
e305782a8f | ||
|
|
24c352949c |
7
.github/workflows/build-multiarch.yml
vendored
7
.github/workflows/build-multiarch.yml
vendored
@@ -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
.github/workflows/verify-pr.yml
vendored
1
.github/workflows/verify-pr.yml
vendored
@@ -11,6 +11,7 @@ on:
|
|||||||
- "kustomize/**"
|
- "kustomize/**"
|
||||||
- "docker-compose*.yml"
|
- "docker-compose*.yml"
|
||||||
- "mkdocs.yml"
|
- "mkdocs.yml"
|
||||||
|
- "images.json"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
@@ -24,9 +24,16 @@ healthcheck:
|
|||||||
retries: 20
|
retries: 20
|
||||||
```
|
```
|
||||||
|
|
||||||
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 healthchecks 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`.
|
||||||
|
|
||||||
### Healthchecks for older versions
|
The [health check in a Compose service declaration](https://docs.docker.com/reference/compose-file/services/#healthcheck) can also be disabled using:
|
||||||
|
|
||||||
This container disables Healthchecks for Versions before b1.8 as those versions do not support any kind of server pinging.
|
```yaml
|
||||||
For more information see [Server List Ping](https://wiki.vg/Server_List_Ping#Beta_1.8_to_1.3)
|
healthcheck:
|
||||||
|
disable: true
|
||||||
|
test: ["NONE"]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Health checks for older versions
|
||||||
|
|
||||||
|
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).
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
16
examples/auto-curseforge/skyfactory4/compose.yml
Normal file
16
examples/auto-curseforge/skyfactory4/compose.yml
Normal file
@@ -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:
|
|
||||||
@@ -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: {}
|
|
||||||
@@ -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"
|
||||||
@@ -157,6 +157,7 @@
|
|||||||
"vanillafix",
|
"vanillafix",
|
||||||
"visuality",
|
"visuality",
|
||||||
"waila-harvestability",
|
"waila-harvestability",
|
||||||
|
"waila-stages",
|
||||||
"wakes-reforged",
|
"wakes-reforged",
|
||||||
"wawla",
|
"wawla",
|
||||||
"welcome-screen",
|
"welcome-screen",
|
||||||
|
|||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
0
bin/mc-health → files/shims/mc-health
Executable file → Normal file
0
bin/mc-health → files/shims/mc-health
Executable file → Normal file
0
bin/mc-send-to-console → files/shims/mc-send-to-console
Executable file → Normal file
0
bin/mc-send-to-console → files/shims/mc-send-to-console
Executable file → Normal file
0
bin/mcstatus → files/shims/mcstatus
Executable file → Normal file
0
bin/mcstatus → files/shims/mcstatus
Executable file → Normal file
134
images.json
Normal file
134
images.json
Normal 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}
|
||||||
|
]
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user