Skip to content

Fix NanoLimbo port not applying to an existing settings.yml - #4201

Merged
itzg merged 2 commits into
itzg:masterfrom
OowhitecatoO:fix-nanolimbo-settings-patch
Jul 31, 2026
Merged

Fix NanoLimbo port not applying to an existing settings.yml#4201
itzg merged 2 commits into
itzg:masterfrom
OowhitecatoO:fix-nanolimbo-settings-patch

Conversation

@OowhitecatoO

Copy link
Copy Markdown
Contributor

Short version first; the collapsed section below has the detail if it is useful.

Impact: SERVER_PORT is ignored for TYPE=NANOLIMBO when /data/settings.yml already exists. NanoLimbo keeps binding the old port, which then no longer matches the published port or the health check.

When: changing SERVER_PORT on a limbo server that has been started before. A fresh /data is unaffected — the generated template already carries the port.

Cause: nanolimbo-settings-patch.json is a patch definition, but mc-image-helper patch is given it as a single file, where a patch set is expected. Loading fails with exit 2 on every start, and the script has no errexit, so nothing acts on it.

After this change: an existing settings.yml gets the port, and the error leaves the startup log. The patch is now skipped for a fresh /data, where the template has already interpolated SERVER_PORT.

Test: a new setup-only scenario seeds a settings.yml before the server starts and asserts the port is applied; it fails on current master and passes with this change.


Details, if useful

Why it cannot load. mc-image-helper patch accepts either form, but not interchangeably:

argument expected content
directory one PatchDefinition per *.json{"file": …, "ops": […]}
single file one PatchSet{"patches": [ … ]}

The file is in the first form and is passed in the second position, so every start logs:

ERROR : Failed to load patch definitions from /image/nanolimbo-settings-patch.json:
        Unrecognized field "file" (class me.itzg.helpers.patch.model.PatchSet),
        not marked as ignorable (one known property: "patches")

Wrapping the existing definition in patches is the whole fix; the invocation is unchanged.

Why it went unnoticed. The patch arrived with the if [ ! -f ] guard in #3799. The exit code is discarded because the script has no errexit, and a fresh /data never needs the patch, since the template interpolates SERVER_PORT directly. The existing nanolimbo scenario always starts from an empty /data, so nothing covered this path.

Verified against itzg/minecraft-server:java21 (build 8fde0ca) with SETUP_ONLY=true and SERVER_PORT=25599, mounting the changed script and patch file:

scenario before after
existing settings.yml at 25565 error logged, port stays 25565 no error, port 25599
fresh /data error logged, port 25599 from template no error, port 25599, not rewritten

@itzg itzg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I really appreciate you providing the abbreviated version...and the detail.

That reminds me that I really want to improve that patch operation to be tolerant of either format.

@itzg itzg added the bug label Jul 31, 2026
@itzg
itzg merged commit 749f8f6 into itzg:master Jul 31, 2026
6 checks passed
gabrielcosi pushed a commit to gabrielcosi/home-ops that referenced this pull request Aug 4, 2026
… ➔ 2026.8.0) (#267)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/itzg/minecraft-server](https://github.com/itzg/docker-minecraft-server) | minor | `2026.7.2-java25` → `2026.8.0-java25` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/2) for more information.

---

### Release Notes

<details>
<summary>itzg/docker-minecraft-server (ghcr.io/itzg/minecraft-server)</summary>

### [`v2026.8.0`](https://github.com/itzg/docker-minecraft-server/releases/tag/2026.8.0)

[Compare Source](itzg/docker-minecraft-server@2026.7.2...2026.8.0)

<!-- Release notes generated using configuration in .github/release.yml at 1e2d375dba72a0730365c29dd5f1990f9764da5a -->

##### What's Changed

##### Enhancements

- Implement GTNH daily build support by [@&#8203;SgtMate](https://github.com/SgtMate) in [#&#8203;4190](itzg/docker-minecraft-server#4190)

##### Bug Fixes

- Update dependency itzg/mc-image-helper to v1.63.1 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4189](itzg/docker-minecraft-server#4189)
- Move knockd config out of /tmp by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4193](itzg/docker-minecraft-server#4193)
- Use Metalcape knockd by default for java25 by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4194](itzg/docker-minecraft-server#4194)
- Fix NanoLimbo port not applying to an existing settings.yml by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4201](itzg/docker-minecraft-server#4201)
- Ensure debugging starts after loading CF\_API\_KEY\_FILE by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4208](itzg/docker-minecraft-server#4208)

##### Documentation

- build(deps): bump the patches group in /docs with 2 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4187](itzg/docker-minecraft-server#4187)
- Add daily build options to gtnh example by [@&#8203;SgtMate](https://github.com/SgtMate) in [#&#8203;4191](itzg/docker-minecraft-server#4191)
- docs: add seedloaf sponsor by [@&#8203;jasperchess](https://github.com/jasperchess) in [#&#8203;4197](itzg/docker-minecraft-server#4197)
- Enhance SECURITY.md with automated scan information by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4212](itzg/docker-minecraft-server#4212)

##### Other Changes

- Update dependency itzg/mc-image-helper to v1.63.0 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4184](itzg/docker-minecraft-server#4184)
- build(deps): bump actions/stale from 10 to 11 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4196](itzg/docker-minecraft-server#4196)
- build(deps): bump docker/login-action from 4.4.0 to 4.5.2 in the updates group by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4195](itzg/docker-minecraft-server#4195)
- Update dependency itzg/mc-image-helper to v1.63.2 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4198](itzg/docker-minecraft-server#4198)
- Fix build workflow conditionals that always evaluated true by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4203](itzg/docker-minecraft-server#4203)
- Update dependency itzg/mc-image-helper to v1.64.0 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4202](itzg/docker-minecraft-server#4202)
- Fix GraalVM flag selection when USE\_MEOWICE\_FLAGS is not set by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4204](itzg/docker-minecraft-server#4204)
- Add SECURITY.md for security policy and reporting by [@&#8203;itzg](https://github.com/itzg) in [#&#8203;4207](itzg/docker-minecraft-server#4207)
- Restore the GraalVM image variants by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4205](itzg/docker-minecraft-server#4205)
- Update dependency itzg/mc-monitor to v0.17.0 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4209](itzg/docker-minecraft-server#4209)
- Enable compact object headers on Java 24+ by [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) in [#&#8203;4211](itzg/docker-minecraft-server#4211)
- Update dependency itzg/mc-image-helper to v1.64.1 by [@&#8203;renovate](https://github.com/renovate)\[bot] in [#&#8203;4213](itzg/docker-minecraft-server#4213)

##### New Contributors

- [@&#8203;OowhitecatoO](https://github.com/OowhitecatoO) made their first contribution in [#&#8203;4201](itzg/docker-minecraft-server#4201)

**Full Changelog**: <itzg/docker-minecraft-server@2026.7.2...2026.8.0>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Berlin)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC41LjMiLCJ1cGRhdGVkSW5WZXIiOiI0NC41LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbInJlbm92YXRlL2NvbnRhaW5lciIsInR5cGUvbWlub3IiXX0=-->

Reviewed-on: https://git.xcd.dev/gabrielcosi/home-ops/pulls/267
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants