- PHP 96.7%
- Blade 2.6%
- Python 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FxyWetDCrTSqGRYYZ3WQft |
||
| dist | ||
| ezservercreate | ||
| scripts | ||
| tests | ||
| .gitignore | ||
| CLAUDE.md | ||
| composer.json | ||
| composer.lock | ||
| HANDOFF.md | ||
| INSTRUCTIONS.TXT | ||
| phpunit.xml.dist | ||
| placeholder.txt | ||
| README.md | ||
| update.json | ||
EZ Server Create
A plugin for the Pelican game server panel that creates servers for a Minecraft network in one step and configures every proxy involved.
What it does
The network runs a Gate proxy in lite mode in front of several Velocity proxies, and each
Velocity proxy has Purpur servers behind it. Adding a server normally means creating it in
the panel and then editing Gate's config.yml, the proxy's velocity.toml and the new
server's own config files by hand. The plugin does all of that.
It adds a green sparkles button next to the regular create button on the admin server list. The page behind it has one tab per server type:
- Velocity creates a new proxy, binds it to a free port, turns on modern player info forwarding (needed by the Purpur servers behind it) and adds a Gate route for its domains.
- Proxied Purpur creates a Purpur server behind an existing proxy, accepts the EULA, runs it once to generate its configs, sets up Velocity modern forwarding, registers it in the proxy and adds its domains to Gate.
Both tabs also choose the node, the owner, the port and the docker image. The owner is the current user unless another user is selected; the owner of a Purpur server can read the proxy's forwarding secret, so another owner must be allowed to update the proxy. The port defaults to the next free port in the configured range; a port that belongs to another server, is still used by a Gate route or proxy entry, or is requested by another creation in progress is refused. The docker image defaults to the egg image for the Java version the server needs; another egg image can be picked from the list, or any image typed in. New servers must run on the node of the Gate server, because Gate reaches them through that node's Docker bridge.
A Purpur server can be added to the proxy's try list. The page then shows the current try list with the new server highlighted in green, and the entries can be dragged into order. If someone edits the try list by hand before the server is registered, the hand-edited order is kept and the new server is placed next to the neighbours chosen on the page.
How config files are changed
Config files on this network are also edited by hand. The plugin never rewrites a whole file. It reads the live file, changes only the lines it needs, checks that the result parses and contains exactly the intended change, keeps a copy of the original, and then writes it back. If a file has a shape the plugin does not understand, it stops and reports the problem instead of guessing.
Progress, retries and undo
Creating a server takes a few minutes because the server is installed and started once. The page after "Create" lists every step with its result and updates itself. If a step fails, the reason is shown and the step can be retried once the problem is fixed; finished steps are not repeated. An operation can also be undone: the plugin removes the domains and proxy entries it added, puts the try list back into its old order when nobody changed it since, stops the server and deletes it. Undo only removes what the operation itself added, and only while the server it created still exists. A proxy that still has servers behind it cannot be undone. An operation that stops making progress, for example because the queue worker is down, can be marked as failed after 30 minutes and then retried or undone.
Settings
The plugin settings on the plugin page choose the Gate server, the default node, the Velocity and
Purpur eggs, the address containers use to reach each other (Docker bridge gateway, default
172.18.0.1), the port range for new servers, resource limits and timeouts. Empty choices are
detected automatically when the panel has exactly one matching node, egg or Gate server.
Requirements
- Pelican panel 1.0.0-beta38 or newer with a queue worker kept running by supervisord or systemd. After a plugin update the plugin asks the workers to restart so they load the new code.
- A Gate server with lite mode enabled, Velocity and Purpur eggs on the panel.
Installation and updates
Import the plugin zip from the admin plugin page and press Install. The plugin has an update URL, so new versions show up on the plugin page and can be installed with one click.
Permissions
The EZ button and page are only available to signed-in users who may create servers; guests are sent to the login page. Creating a Purpur server also requires permission to update the proxy and the Gate server, because their files are changed. Servers can only be given to users the creator may manage (admins who are not root admins cannot pick root admins).
Development
The plugin lives in ezservercreate/. Unit tests live in tests/ and run with PHPUnit
inside Docker:
docker run --rm -u $(id -u):$(id -g) -v "$PWD":/app -w /app ezsc-php:8.4 vendor/bin/phpunit
Changelog
- 2026-09-13 14:35 CEST —
071621c— First version of the README. - 2026-09-13 15:03 CEST —
2fd5958— Progress, retries and undo section. - 2026-09-13 16:16 CEST —
857cbf0— Changelog entries with time and commit hash. - 2026-09-13 16:49 CEST —
caf1e89— Undo only removes what the operation added; stalled operations; queue worker requirement. - 2026-09-13 17:24 CEST —
0ab4933— Velocity tab enables modern player info forwarding. - 2026-09-13 19:36 CEST —
e4af84f— Sparkles button, node/owner/port/image fields, try list order, owner rule, guests redirected to login.