mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-02-17 23:16:24 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ea7d5851d | ||
|
|
161ca91ab3 | ||
|
|
619cee5ae5 | ||
|
|
b73fb88b3b | ||
|
|
ca393c4fcf | ||
|
|
5729324195 | ||
|
|
a3b02ca3e3 | ||
|
|
815608929c | ||
|
|
7cb2c0ddc7 | ||
|
|
7a9e625935 | ||
|
|
9e49840a26 | ||
|
|
6f08613340 | ||
|
|
aec644dc3f |
2
.github/workflows/build-multiarch.yml
vendored
2
.github/workflows/build-multiarch.yml
vendored
@@ -118,7 +118,7 @@ jobs:
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5.4.0
|
||||
uses: docker/metadata-action@v5.5.0
|
||||
with:
|
||||
# NOTE for forks: if your Docker Hub organization doesn't match your Github repo's,
|
||||
# then the use of ${{ github.repository_owner }} will need to be replaced.
|
||||
|
||||
@@ -44,12 +44,12 @@ 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.9.1
|
||||
ARG MC_SERVER_RUNNER_VERSION=1.11.0
|
||||
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.37.6
|
||||
ARG MC_HELPER_VERSION=1.37.9
|
||||
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
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
. "/start-utils"
|
||||
: "${CONSOLE_IN_NAMED_PIPE:=/tmp/minecraft-console-in}"
|
||||
|
||||
if isFalse "${CREATE_CONSOLE_IN_PIPE:-false}"; then
|
||||
echo "ERROR: console pipe needs to be enabled by setting CREATE_CONSOLE_IN_PIPE to true"
|
||||
fi
|
||||
|
||||
|
||||
if [ $# = 0 ]; then
|
||||
echo "ERROR: pass console commands as arguments"
|
||||
exit 1
|
||||
|
||||
@@ -187,9 +187,13 @@ The server icon which has been set doesn't get overridden by default. It can be
|
||||
|
||||
RCON is **enabled by default** to allow for graceful shut down the server and coordination of save state during backups. RCON can be disabled by setting `ENABLE_RCON` to "false".
|
||||
|
||||
The default password is randomly generated if `RCON_PASSWORD` has not been set.
|
||||
!!! warning
|
||||
|
||||
**DO NOT MAP THE RCON PORT EXTERNALLY** unless you aware of all the consequences and have set a **secure password** with `RCON_PASSWORD`.
|
||||
Disabling RCON will remove and limit some features, such as interactive and color console support.
|
||||
|
||||
The default password is randomly generated on each startup; however, a specific one can be set with `RCON_PASSWORD`.
|
||||
|
||||
**DO NOT MAP THE RCON PORT EXTERNALLY** unless you are aware of all the consequences and have set a **secure password** with `RCON_PASSWORD`.
|
||||
|
||||
!!! info
|
||||
|
||||
|
||||
@@ -25,4 +25,50 @@ services:
|
||||
- ./data:/data
|
||||
```
|
||||
|
||||
[Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/geyser/docker-compose.yml)
|
||||
[Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/geyser/docker-compose.yml)
|
||||
|
||||
## Lazytainer - Stop Minecraft container based on traffic
|
||||
Monitors network traffic to the Minecraft containers. If there is traffic, the container runs, otherwise the container is stopped/paused.
|
||||
|
||||
By using [Lazytainer](https://github.com/vmorganp/Lazytainer) with the [docker-minecraft-server](https://github.com/itzg/docker-minecraft-server) a somehow similar behaviour to [Lazymc](https://github.com/timvisee/lazymc) can be archived.
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
services:
|
||||
lazytainer:
|
||||
container_name: lazytainer
|
||||
image: ghcr.io/vmorganp/lazytainer:master
|
||||
environment:
|
||||
- VERBOSE=false
|
||||
ports:
|
||||
- 25565:25565
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
labels:
|
||||
- lazytainer.group.minecraft.sleepMethod=stop
|
||||
- lazytainer.group.minecraft.ports=25565
|
||||
- lazytainer.group.minecraft.minPacketThreshold=2 # Start after two incomming packets
|
||||
- lazytainer.group.minecraft.inactiveTimeout=600 # 10 minutes, to allow the server to bootstrap. You can probably make this lower later if you want.
|
||||
restart: unless-stopped
|
||||
network_mode: bridge
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
environment:
|
||||
- EULA=TRUE
|
||||
- TYPE=PURPUR
|
||||
- MEMORY=4G
|
||||
- TZ=Europe/Berlin
|
||||
- OVERRIDE_SERVER_PROPERTIES=TRUE
|
||||
volumes:
|
||||
- /opt/container_volumes/minecraft/data:/data
|
||||
labels:
|
||||
- lazytainer.group=minecraft
|
||||
depends_on:
|
||||
- lazytainer
|
||||
network_mode: service:lazytainer
|
||||
tty: true
|
||||
stdin_open: true
|
||||
restart: unless-stopped
|
||||
networks: {}
|
||||
```
|
||||
[Source](https://github.com/itzg/docker-minecraft-server/blob/master/examples/lazytainer/docker-compose.yml)
|
||||
@@ -1,6 +1,6 @@
|
||||
mkdocs == 1.5.3
|
||||
mkdocs-material-extensions == 1.3.1
|
||||
mkdocs-material == 9.5.3
|
||||
mkdocs-material == 9.5.4
|
||||
mkdocs-autorefs == 0.5.0
|
||||
mkdocstrings == 0.24.0
|
||||
mkdocs-literate-nav == 0.6.1
|
||||
|
||||
@@ -108,6 +108,56 @@ For mod, modpacks, and world files that are not allowed for automated download,
|
||||
|
||||
If you wish to use a unpublished modpack zip, set the container path to the file in `CF_MODPACK_ZIP`. Similarly, the container path to a modpack manifest JSON can be passed to `CF_MODPACK_MANIFEST`. In either case, **the modpack slug or page URL must still be provided**.
|
||||
|
||||
!!! example
|
||||
|
||||
```yaml
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
environment:
|
||||
EULA: true
|
||||
MOD_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_MODPACK_MANIFEST: /manifests/manifest.json
|
||||
CF_SLUG: "custom"
|
||||
volumes:
|
||||
- ./manifests:/manifests:ro
|
||||
```
|
||||
|
||||
where an exported manifest file should look like:
|
||||
|
||||
```json
|
||||
{
|
||||
"minecraft": {
|
||||
"version": "1.20.4",
|
||||
"modLoaders": [
|
||||
{
|
||||
"id": "fabric-0.15.3",
|
||||
"primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"manifestType": "minecraftModpack",
|
||||
"manifestVersion": 1,
|
||||
"name": "Custom",
|
||||
"author": "",
|
||||
"files": [
|
||||
{
|
||||
"projectID": 351725,
|
||||
"fileID": 4973035,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"projectID": 306612,
|
||||
"fileID": 5010374,
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"overrides": "overrides"
|
||||
}
|
||||
```
|
||||
|
||||
## Exclude client mods
|
||||
|
||||
Quite often there are mods that need to be excluded, such as ones that did not properly declare as a client mod via the file's game versions. Similarly, there are some mods that are incorrectly tagged as client only. The following describes two options to exclude/include mods:
|
||||
|
||||
@@ -9,11 +9,17 @@ The desired modpack project is specified with the `MODRINTH_MODPACK` environment
|
||||
- The project "slug", which is located in the URL shown here:
|
||||
|
||||

|
||||
|
||||
- The project ID, which is located in the bottom of the left panel, shown here
|
||||
|
||||

|
||||
|
||||
- The project page URL, such as <https://modrinth.com/modpack/cobblemon-fabric>. As described below, this can further be the page URL of a modpack's version page.
|
||||
|
||||
- A custom URL of a hosted [mrpack file](https://support.modrinth.com/en/articles/8802351-modrinth-modpack-format-mrpack)
|
||||
|
||||
- The container path to a local [mrpack file](https://support.modrinth.com/en/articles/8802351-modrinth-modpack-format-mrpack)
|
||||
|
||||
## Modpack version
|
||||
|
||||
The automatic modpack version resolving can be narrowed in a few ways:
|
||||
|
||||
@@ -540,7 +540,7 @@ alternatively, you can mount: <code>/etc/localtime:/etc/localtime:ro
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>ENABLE_RCON</code></td>
|
||||
<td>Should RCON be enabled</td>
|
||||
<td>Enable/disable RCON support; however, be aware that disabling RCON will remove and limit some features, such as interactive and color console support.</td>
|
||||
<td><code>true</code></td>
|
||||
<td>⬜️</td>
|
||||
</tr>
|
||||
|
||||
19
examples/auto-cf/modpack-manifest/docker-compose.yml
Normal file
19
examples/auto-cf/modpack-manifest/docker-compose.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
environment:
|
||||
EULA: true
|
||||
MOD_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_MODPACK_MANIFEST: /manifests/manifest.json
|
||||
CF_SLUG: "custom"
|
||||
MEMORY: 2G
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
- ./manifests:/manifests:ro
|
||||
ports:
|
||||
- "25565:25565"
|
||||
|
||||
volumes:
|
||||
mc-data: {}
|
||||
28
examples/auto-cf/modpack-manifest/manifests/manifest.json
Normal file
28
examples/auto-cf/modpack-manifest/manifests/manifest.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"minecraft": {
|
||||
"version": "1.20.4",
|
||||
"modLoaders": [
|
||||
{
|
||||
"id": "fabric-0.15.3",
|
||||
"primary": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"manifestType": "minecraftModpack",
|
||||
"manifestVersion": 1,
|
||||
"name": "Custom",
|
||||
"author": "",
|
||||
"files": [
|
||||
{
|
||||
"projectID": 351725,
|
||||
"fileID": 4973035,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"projectID": 306612,
|
||||
"fileID": 5010374,
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"overrides": "overrides"
|
||||
}
|
||||
51
examples/auto-cf/using-excludes/docker-compose.yml
Normal file
51
examples/auto-cf/using-excludes/docker-compose.yml
Normal file
@@ -0,0 +1,51 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server:java8-multiarch
|
||||
ports:
|
||||
- "25565:25565"
|
||||
environment:
|
||||
EULA: "true"
|
||||
MOD_PLATFORM: AUTO_CURSEFORGE
|
||||
# allocate from https://console.curseforge.com/ and set in .env file
|
||||
CF_API_KEY: ${CF_API_KEY}
|
||||
CF_PAGE_URL: https://www.curseforge.com/minecraft/modpacks/minecraft-eternal/files/4102634
|
||||
CF_EXCLUDE_MODS: |
|
||||
cherished-worlds
|
||||
controlling
|
||||
ctm
|
||||
custom-main-menu
|
||||
ding
|
||||
minecraft-rich-presence
|
||||
enchantment-descriptions
|
||||
just-enough-harvestcraft
|
||||
just-enough-resources-jer
|
||||
menumobs
|
||||
more-overlays
|
||||
mouse-tweaks
|
||||
oldjavawarning
|
||||
overloaded-armor-bar
|
||||
reauth
|
||||
thaumic-jei
|
||||
tips
|
||||
armor-toughness-bar
|
||||
waila-harvestability
|
||||
ambientsounds
|
||||
biomeinfo
|
||||
block-drops-jei-addon
|
||||
loot-capacitor-tooltips
|
||||
no-recipe-book
|
||||
packmodemenu
|
||||
resource-reloader
|
||||
|
||||
# blockdrops
|
||||
|
||||
CF_FORCE_SYNCHRONIZE: "true"
|
||||
MEMORY: 4G
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
- ./downloads:/downloads
|
||||
|
||||
volumes:
|
||||
mc-data: {}
|
||||
@@ -1,18 +1,20 @@
|
||||
# NOTE
|
||||
# This file is named spiget with an "e"
|
||||
# since it provides an example of the
|
||||
# feature https://docker-minecraft-server.readthedocs.io/en/latest/mods-and-plugins/spiget/
|
||||
# which uses the Spiget API at https://spiget.org/
|
||||
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
mc:
|
||||
# Only using IMAGE variable to allow for local testing
|
||||
image: itzg/minecraft-server
|
||||
# image: ${IMAGE:-itzg/minecraft-server}
|
||||
ports:
|
||||
- "25565:25565"
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
TYPE: SPIGOT
|
||||
# SPIGET_RESOURCES: 34315,3836
|
||||
SPIGET_RESOURCES: ""
|
||||
REMOVE_OLD_MODS: "true"
|
||||
TYPE: PAPER
|
||||
SPIGET_RESOURCES: 34315,3836
|
||||
volumes:
|
||||
- data:/data
|
||||
|
||||
|
||||
14
examples/jline/docker-compose.yml
Normal file
14
examples/jline/docker-compose.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
tty: true
|
||||
stdin_open: true
|
||||
environment:
|
||||
EULA: true
|
||||
TYPE: FABRIC
|
||||
MODRINTH_PROJECTS: |
|
||||
jline4mcdsrv
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
volumes:
|
||||
mc-data: {}
|
||||
37
examples/lazytainer/docker_compose.yml
Normal file
37
examples/lazytainer/docker_compose.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
version: "3"
|
||||
services:
|
||||
lazytainer:
|
||||
container_name: lazytainer
|
||||
image: ghcr.io/vmorganp/lazytainer:master
|
||||
environment:
|
||||
- VERBOSE=false
|
||||
ports:
|
||||
- 25565:25565
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
labels:
|
||||
- lazytainer.group.minecraft.sleepMethod=stop
|
||||
- lazytainer.group.minecraft.ports=25565
|
||||
- lazytainer.group.minecraft.minPacketThreshold=2 # Start after two incomming packets
|
||||
- lazytainer.group.minecraft.inactiveTimeout=600 # 10 minutes, to allow the server to bootstrap. You can probably make this lower later if you want.
|
||||
restart: unless-stopped
|
||||
network_mode: bridge
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
environment:
|
||||
- EULA=TRUE
|
||||
- TYPE=PURPUR
|
||||
- MEMORY=4G
|
||||
- TZ=Europe/Berlin
|
||||
- OVERRIDE_SERVER_PROPERTIES=TRUE
|
||||
volumes:
|
||||
- /opt/container_volumes/minecraft/data:/data
|
||||
labels:
|
||||
- lazytainer.group=minecraft
|
||||
depends_on:
|
||||
- lazytainer
|
||||
network_mode: service:lazytainer
|
||||
tty: true
|
||||
stdin_open: true
|
||||
restart: unless-stopped
|
||||
networks: {}
|
||||
15
examples/modrinth/local-modpack/docker-compose.yml
Normal file
15
examples/modrinth/local-modpack/docker-compose.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
services:
|
||||
mc:
|
||||
image: itzg/minecraft-server
|
||||
environment:
|
||||
EULA: true
|
||||
MOD_PLATFORM: MODRINTH
|
||||
# Download the mrpack file from https://modrinth.com/modpack/cobblemon-fabric/version/1.4.1 and place in
|
||||
# modpacks directory next to this compose file.
|
||||
MODRINTH_MODPACK: /modpacks/Cobblemon Modpack [Fabric] 1.4.1.mrpack
|
||||
volumes:
|
||||
- mc-data:/data
|
||||
- ./modpacks:/modpacks:ro
|
||||
|
||||
volumes:
|
||||
mc-data: {}
|
||||
@@ -24,7 +24,9 @@ java_clients_connections() {
|
||||
local connections
|
||||
if java_running ; then
|
||||
if ! connections=$(mc-monitor status --host localhost --port "$SERVER_PORT" --show-player-count); then
|
||||
connections=0
|
||||
# consider it a non-zero player count if the ping fails
|
||||
# otherwise a laggy server with players connected could get paused
|
||||
connections=1
|
||||
fi
|
||||
else
|
||||
connections=0
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
: "${UID:=1000}"
|
||||
: "${GID:=1000}"
|
||||
|
||||
umask 0002
|
||||
umask "${UMASK:=0002}"
|
||||
|
||||
# Remove from previous run and do this as elevated user since file used to be created before demoting
|
||||
rm -f "$HOME/.rcon-cli.env"
|
||||
|
||||
@@ -231,11 +231,16 @@ fi
|
||||
|
||||
mcServerRunnerArgs=(
|
||||
--stop-duration "${STOP_DURATION:-60}s"
|
||||
--named-pipe "${CONSOLE_IN_NAMED_PIPE:-/tmp/minecraft-console-in}"
|
||||
)
|
||||
if isTrue "${CREATE_CONSOLE_IN_PIPE:-false}"; then
|
||||
mcServerRunnerArgs+=(--named-pipe "${CONSOLE_IN_NAMED_PIPE:-/tmp/minecraft-console-in}")
|
||||
fi
|
||||
if [[ ${STOP_SERVER_ANNOUNCE_DELAY} ]]; then
|
||||
mcServerRunnerArgs+=(--stop-server-announce-delay "${STOP_SERVER_ANNOUNCE_DELAY}s")
|
||||
fi
|
||||
if isTrue "${ENABLE_SSH}"; then
|
||||
mcServerRunnerArgs+=(--remote-console)
|
||||
fi
|
||||
|
||||
if [[ ${TYPE} == "CURSEFORGE" && "${SERVER}" ]]; then
|
||||
copyFilesForCurseForge
|
||||
|
||||
Reference in New Issue
Block a user