Skip to content

feat: support Purpur and Pufferfish config repos & optimize server.properties handling#3914

Merged
itzg merged 2 commits into
itzg:masterfrom
Alpha018:master
Feb 9, 2026
Merged

feat: support Purpur and Pufferfish config repos & optimize server.properties handling#3914
itzg merged 2 commits into
itzg:masterfrom
Alpha018:master

Conversation

@Alpha018

@Alpha018 Alpha018 commented Feb 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Building on the work from PR #3076 (adding PAPER_CONFIG_REPO), this PR extends the optimized configuration support to Purpur and Pufferfish server types and significantly improves how server.properties is handled.

Changes

  • New Environment Variables: Added PURPUR_CONFIG_REPO and PUFFERFISH_CONFIG_REPO to automatically download optimized configurations (purpur.yml, pufferfish.yml, etc.) for these server types.
  • Refactored start-setupServerProperties:
    • Centralized the server.properties download logic (previously scattered in deploy scripts).
    • Added Smart URL Handling for SERVER_PROPERTIES_REPO_URL:
      • If a base URL is provided (e.g., repo root), it automatically appends /${VERSION}/server.properties.
      • If a full URL (ending in .properties) is provided, it uses it directly.
    • Added Existence Check: It now checks if server.properties exists before downloading, preventing it from checking/overwriting on every restart if the file is already present.
  • Documentation: Renamed examples/optimized-paper-config to examples/optimized-server-config and updated the README with examples for Paper, Purpur, and Pufferfish.

Motivation

This allows users to maintain a centralized configuration repository for multiple server types (Paper, Purpur, Pufferfish) and version-control their server.properties base, while still allowing the Docker container to apply necessary environment variable overrides (like RCON, MOTD, etc.) at runtime.

Introduce `PURPUR_CONFIG_REPO` and `PUFFERFISH_CONFIG_REPO` for downloading configurations.
Ensure automatic fetching of `bukkit.yml`, `spigot.yml`, `purpur.yml`, and `pufferfish.yml`.
Allow optional download of `server.properties` from a specified repository URL.
Update Docker Compose and README files to reflect these changes.

@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! Just a minor tweak.

It would be great to also add a few docs here https://github.com/itzg/docker-minecraft-server/blob/41e50d3e9fbdb4897c27ae679f3814472ced9659/docs/types-and-platforms/server-types/paper.md, but I can do that separately.

Comment thread scripts/start-setupServerProperties Outdated
Comment on lines +141 to +142
# shellcheck source=start-utils
. "$(dirname "$0")/start-utils"

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.

Please remove. This is already at the top of the file

# shellcheck source=start-utils
. "$(dirname "$0")/start-utils"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

done 😄

@Alpha018

Alpha018 commented Feb 8, 2026

Copy link
Copy Markdown
Contributor Author

I can do it

Update the Paper server type documentation to improve clarity and detail.
Include new sections on configuration repositories and server properties, providing comprehensive
guidance on automatic file downloads and setting repository URLs.

refactor: remove unused source command in setup script

Remove the unused `source` command for `start-utils` in `start-setupServerProperties` script.
This refactor simplifies the script by eliminating unnecessary code.

@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!

@itzg itzg merged commit 6e05807 into itzg:master Feb 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants