Compare commits

..

2 Commits

Author SHA1 Message Date
Geoff Bourne
6894bcc0fb Try paths-ignore again 2026-02-15 12:39:08 -06:00
Geoff Bourne
b15a6cc59c Fix enabledManagers in renovate config 2026-02-15 12:37:00 -06:00
27 changed files with 110 additions and 159 deletions

1
.github/release.yml vendored
View File

@@ -2,7 +2,6 @@ changelog:
exclude:
authors:
- dependabot
- renovate
categories:
- title: Enhancements
labels:

View File

@@ -138,7 +138,7 @@ jobs:
uses: docker/setup-qemu-action@v3.7.0
- name: Build for test
uses: docker/build-push-action@v6.19.2
uses: docker/build-push-action@v6.18.0
with:
platforms: linux/amd64
tags: ${{ env.IMAGE_TO_TEST }}
@@ -178,7 +178,7 @@ jobs:
password: ${{ github.token }}
- name: Build and push
uses: docker/build-push-action@v6.19.2
uses: docker/build-push-action@v6.18.0
if: github.actor == github.repository_owner
with:
platforms: ${{ matrix.platforms }}

View File

@@ -1,17 +1,33 @@
name: Issues notify
name: Issue labels
on:
issues:
types:
- opened
- labeled
- unlabeled
- closed
types: [labeled, reopened, closed, deleted]
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_ISSUES_WEBHOOK }}
jobs:
notify:
uses: itzg/github-workflows/.github/workflows/issues-notify-discord.yml@main
with:
triageLabel: 'status/needs triage'
secrets:
discordWebhook: "${{secrets.DISCORD_ISSUES_WEBHOOK}}"
labelNotify:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: notify on label
if: >
github.event.label.name == 'enhancement'
|| github.event.label.name == 'bug'
|| github.event.label.name == 'help wanted'
|| github.event.label.name == 'priority/high'
|| github.event.label.name == 'question'
|| github.event.label.name == 'status/waiting on upstream'
uses: Ilshidur/action-discord@master
with:
args: "[${{ github.event.issue.title }} (#${{ github.event.issue.number }})](<${{ github.event.issue.html_url }}>) added `${{ github.event.label.name }}` label"
- name: notify on action change
if: >
github.event.action == 'closed'
|| github.event.action == 'reopened'
|| github.event.action == 'deleted'
uses: Ilshidur/action-discord@master
with:
args: "[${{ github.event.issue.title }} (#${{ github.event.issue.number }})](<${{ github.event.issue.html_url }}>) has been `${{ github.event.action }}` by `${{ github.event.sender.login }}`"

View File

@@ -62,7 +62,7 @@ jobs:
uses: docker/setup-buildx-action@v3.12.0
- name: Confirm multi-arch build
uses: docker/build-push-action@v6.19.2
uses: docker/build-push-action@v6.18.0
with:
platforms: ${{ matrix.platforms }}
# ensure latest base image is used
@@ -73,7 +73,7 @@ jobs:
cache-from: type=gha,scope=${{ matrix.variant }}
- name: Build for test
uses: docker/build-push-action@v6.19.2
uses: docker/build-push-action@v6.18.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

@@ -1,15 +1,19 @@
version: 2
python:
install:
- requirements: docs/requirements.txt
build:
os: ubuntu-24.04
tools:
python: "3.14"
python: latest
jobs:
# We recommend using a requirements file for reproducible builds.
# This is just a quick example to get started.
# https://docs.readthedocs.io/page/guides/reproducible-builds.html
install:
- pip install -r docs/requirements.txt
- pip install zensical
build:
html:
- zensical build

View File

@@ -25,37 +25,32 @@ EXPOSE 25565
ARG APPS_REV=1
ARG GITHUB_BASEURL=https://github.com
# renovate: datasource=github-releases packageName=itzg/easy-add
ARG EASY_ADD_VERSION=0.8.11
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
# renovate: datasource=github-releases packageName=itzg/restify
ARG RESTIFY_VERSION=1.7.12
ARG RESTIFY_VERSION=1.7.11
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
# renovate: datasource=github-releases packageName=itzg/rcon-cli
ARG RCON_CLI_VERSION=1.7.4
ARG RCON_CLI_VERSION=1.7.3
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
# renovate: datasource=github-releases packageName=itzg/mc-monitor
ARG MC_MONITOR_VERSION=0.16.1
ARG MC_MONITOR_VERSION=0.16.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
# renovate: datasource=github-releases packageName=itzg/mc-server-runner
ARG MC_SERVER_RUNNER_VERSION=1.14.3
ARG MC_SERVER_RUNNER_VERSION=1.14.1
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
# renovate: datasource=github-releases packageName=itzg/mc-image-helper versioning=loose
ARG MC_HELPER_VERSION=1.55.2
ARG MC_HELPER_VERSION=1.54.0
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

View File

@@ -31,7 +31,6 @@ apk add --no-cache -U \
libpcap \
libwebp \
libcap \
numactl \
${EXTRA_ALPINE_PACKAGES}
# Download and install patched knockd

View File

@@ -27,7 +27,6 @@ apt-get install -y \
lbzip2 \
nfs-common \
libpcap0.8 \
libnuma1 \
${EXTRA_DEB_PACKAGES}
# Install Git LFS

View File

@@ -1,15 +0,0 @@
services:
mc-dev:
build:
context: .
environment:
EULA: true
volumes:
- ./scripts:/image/scripts:ro
- data:/data
ports:
- "25565:25565"
stdin_open: true
tty: true
volumes:
data:

View File

@@ -166,7 +166,7 @@ such as:
## HTTP 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/proxied/compose.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`.
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`.
## Using "noconsole" option

View File

@@ -1,84 +1,4 @@
## Simple image additions
You can easily build upon the base image using an inline Dockerfile.
```yaml title="compose.yaml"
services:
mc:
build:
context: .
dockerfile_inline: |
FROM itzg/minecraft-server:latest
RUN apt-get update && apt-get install -y \
webp \
&& rm -rf /var/lib/apt/lists/*
pull: true # Always pull new base image
pull_policy: build
restart: unless-stopped
environment:
EULA: true
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data
```
Here is an example to add Nvidia GPU support for C2ME:
??? Example "C2ME GPU example"
```yaml title="compose.yaml"
services:
mc:
build:
context: .
dockerfile_inline: |
FROM itzg/minecraft-server:java25
# Install OpenCL loader and NVIDIA driver capabilities
RUN apt-get update && apt-get install -y \
ocl-icd-libopencl1 \
opencl-headers \
clinfo \
&& rm -rf /var/lib/apt/lists/*
# 1. Create the vendor directory
# 2. Tell OpenCL to use the NVIDIA library
RUN mkdir -p /etc/OpenCL/vendors && \
echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
# Tell the NVIDIA container runtime to expose all GPU capabilities (including compute/utility)
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility,graphics,video
COPY ./mods /mods
pull: true # Always pull new base image
pull_policy: build
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
environment:
EULA: true
TYPE: "FABRIC"
VERSION: 1.21.10
MEMORY: 8G
MODRINTH_PROJECTS: |-
fabric-api
c2me
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data
```
!!! tip "For advanced use only"
This page describes a capability that is not applicable to most users. It is only intended for rare cases when a very specific Java base image is needed or additional packages need to be installed that are not generally applicable or would bloat the image size.

View File

@@ -11,15 +11,61 @@ Adding a new server `TYPE` can vary due to the complexity of obtaining and confi
## Iterative script development
The included `compose-dev.yml` will mount the local `scripts` code into the container and allow for iterative development. Replace `[-e key=value]` with any environment variables you wish to set for testing the modified scripts.
Individual scripts can be iteratively developed, debugged, and tested using the following procedure.
```shell
docker compose -f compose-dev.yml run --rm -it [-e key=value] mc-dev
First, build a baseline of the image to include the packages needed by existing or new scripts:
PowerShell: (Example of building and testing ForgeAPI)
```powershell
$env:FOLDER_TO_TEST="forgeapimods_projectids"
$env:IMAGE_TO_TEST="mc-dev"
docker build -t $env:IMAGE_TO_TEST .
pushd "tests/setuponlytests/$env:FOLDER_TO_TEST/"
docker compose run mc
docker compose down -v --remove-orphans
popd
```
!!! tip
PowerShell: Building different images of Java for testing
```powershell
$env:BASE_IMAGE='eclipse-temurin:8u312-b07-jre'
$env:IMAGE_TO_TEST="mc-dev"
docker build --build-arg BASE_IMAGE=$env:BASE_IMAGE -t $env:IMAGE_TO_TEST .
```
To speed up the development cycle, it is recommended to set `SETUP_ONLY` to `true` as part of the run command above.
Bash: (Example of building and testing ForgeAPI)
```bash
export FOLDER_TO_TEST="forgeapimods_file"
export IMAGE_TO_TEST="mc-dev"
docker build -t $IMAGE_TO_TEST .
pushd tests/setuponlytests/$FOLDER_TO_TEST/
docker compose run mc
docker compose down -v --remove-orphans
popd
```
Using the baseline image, an interactive container can be started to iteratively run the scripts to be developed. By attaching the current workspace directory, you can use the local editor of your choice to iteratively modify scripts while using the container to run them.
```shell
docker run -it --rm -v ${PWD}:/image/scripts --entrypoint bash mc-dev
```
From within the container you can run individual scripts via the attached `/image/scripts/` path; however, be sure to set any environment variables expected by the scripts by either `export`ing them manually:
```shell
export VERSION=1.12.2
/image/scripts/start-deployFabric
```
...or pre-pending script execution:
```shell
VERSION=1.12.2 /image/scripts/start-deployFabric
```
!!! note
You may want to temporarily add an `exit` statement near the end of your script to isolate execution to just the script you're developing.
## Using development copy of tools

View File

@@ -2,24 +2,24 @@ click==8.3.1
colorama==0.4.6
deepmerge==2.0
ghp-import==2.1.0
griffe==2.0.0
griffe==1.15.0
Jinja2==3.1.6
Markdown==3.10.2
Markdown==3.10.1
MarkupSafe==3.0.3
mergedeep==1.3.4
mkdocs==1.6.1
mkdocs-autorefs==1.4.4
mkdocs-autorefs==1.4.3
mkdocs-get-deps==0.2.0
mkdocstrings==1.0.3
mkdocstrings-python==2.0.3
mkdocstrings-python==2.0.1
packaging==26.0
pathspec==1.0.4
platformdirs==4.9.4
platformdirs==4.5.1
Pygments==2.19.2
pymdown-extensions==10.21
pymdown-extensions==10.20.1
python-dateutil==2.9.0.post0
PyYAML==6.0.3
pyyaml_env_tag==1.1
six==1.17.0
watchdog==6.0.0
zensical==0.0.24
# zensical @ file:///

View File

@@ -2,7 +2,7 @@
{
"tag": "latest",
"notes": "Always tracks the most recent commit on the main branch",
"java": "25",
"java": "21",
"distribution": "ubuntu",
"jvm": "hotspot",
"architectures": ["amd64", "arm64"],
@@ -141,5 +141,4 @@
{"tag": "java8-jdk", "deprecated": true},
{"tag": "java8-openj9", "deprecated": true},
{"tag": "java8-graalvm-ce", "deprecated": true}
]
]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

@@ -8,9 +8,8 @@
"customType": "regex",
"managerFilePatterns": ["/^Dockerfile$/"],
"matchStrings": [
"# renovate: datasource=(?<datasource>[a-z-]+?)(?: packageName=(?<packageName>.+?))?(?: versioning=(?<versioning>[a-z-]+))?\\s(?:ENV|ARG) .+?_VERSION=(?<currentValue>.+?)\\s"
"# renovate: datasource=(?<datasource>[a-z-]+?)(?: packageName=(?<packageName>.+?))? (?: versioning=(?<versioning>[a-z-]+?))?\\s(?:ENV|ARG) .+?_VERSION=(?<currentValue>.+?)\\s"
]
}
],
"labels": ["dependencies"]
]
}

View File

@@ -54,8 +54,8 @@ fi
if isTrue "${DEBUG_MEMORY:-false}"; then
log "Memory usage and availability (in MB)"
uname -pars | applyLogPrefix
free -m | applyLogPrefix
uname -pars
free -m
fi
##########################################

0
scripts/start-deployAutoCF Executable file → Normal file
View File

0
scripts/start-deployFolia Executable file → Normal file
View File

8
scripts/start-deployGTNH Executable file → Normal file
View File

@@ -8,14 +8,10 @@ function getGTNHdownloadPath(){
gtnh_download_path=""
current_java_version=$(mc-image-helper java-release)
if ! packs_data="$(
curl -fsSL "https://downloads.gtnewhorizons.com/versions.json" \
| jq -r '.versions[]?.server? | .[]? | select(type=="string" and test("Server"))'
)"; then
logError "Failed to retrieve data from https://downloads.gtnewhorizons.com/versions.json"
if ! mapfile -t packs < <(curl -sfL 'http://downloads.gtnewhorizons.com/ServerPacks/?raw'); then
logError "Failed to retrieve data from http://downloads.gtnewhorizons.com/ServerPacks/?raw"
exit 1
fi
mapfile -t packs <<< "$packs_data"
log "Start locating server files..."
for pack in "${packs[@]}"; do

0
scripts/start-deployLeaf Executable file → Normal file
View File

0
scripts/start-deployModrinth Executable file → Normal file
View File

0
scripts/start-deployNeoForge Executable file → Normal file
View File

0
scripts/start-deployPoseidon Executable file → Normal file
View File

0
scripts/start-rconcmds Executable file → Normal file
View File

0
scripts/start-setupRbac Executable file → Normal file
View File

View File

@@ -125,12 +125,6 @@ function logn() {
echo -n "[init] $*"
}
# Use as
# cmd | applyLogPrefix
function applyLogPrefix() {
sed 's/^/[init] /'
}
function log() {
local oldState
# The return status when listing options is zero if all optnames are enabled, non- zero otherwise.