Skip to content

Add support for the arm architecture, respect Hytale's default folder location & add support for hytale's updater#69

Open
zzahkaboom24 wants to merge 6 commits intopterodactyl:masterfrom
zzahkaboom24:new-folder-structure
Open

Add support for the arm architecture, respect Hytale's default folder location & add support for hytale's updater#69
zzahkaboom24 wants to merge 6 commits intopterodactyl:masterfrom
zzahkaboom24:new-folder-structure

Conversation

@zzahkaboom24
Copy link

PTERO-EGGS UPDATE NECESSARY FIRST!!!!
More as to why this is so important later in this post.

This adds support for building docker images for arm.
I believe waiting for official support to be futile because enough time has passed, and there is no wrongdoing in using QEMU to support arm.
Even if official support gets in at some point in the future, it will still work with QEMU and can be removed later on regardless.

Now on to Hytale's default folder location.
What we've been doing so far was not good.
Essentially, the server should generate it's files inside /home/container/Server, not /home/container.
Best way to replicate it is by running the following commands on a running server that is authenticated:
/auth login device
/update check
/update patchline pre-release
/update check
/update download
This command above is what will warn that it expects Assets.zip + launcher scripts in parent directory, and that's fine, we can force it with the next command
/update download --force
But that's where it's game over for us.
Hytale's updater tries to go 1 directory back, then into the updater directory, however there are no permissions to go inside /home, there it fails with "Read-only file system":
image

My PR attempts to fix that by changing Hytale's Dockerfile by literally removing the COPY command COPY --from=ghcr.io/pterodactyl/yolks:java_25 entrypoint.sh /java.sh and manually recreating the file with the correct directory Hytale needs.
I dont know if there's a better solution, but this one is what worked and I dont see many downsides from it.

Additionally, any user that has files inside /home/container that should belong to /home/container/Server will be having them moved over to the Server directory.

Since we now have to default to a specific directory, this is where the dependency of an update to Hytale's egg is necessary.
The current egg uses Server/HytaleServer.jar to launch the Server, but it needs to be updated to ./HytaleServer.jar, as the current working directory needs to be /home/container/Server anyways, therefore this update also does not let anyone boot their server unless they either update the egg, or the startup script to not contain any of the launch arguments + Server/HytaleServer.jar

The updater logic is reimplemented from the start.sh file Hytale provides ever since version 2026.01.24-6e2d4fc36, therefore that's where it can be found.

Refactor entrypoint script to migrate server files to a new directory structure, handle updates, and improve error handling for outdated startup commands.
@zzahkaboom24
Copy link
Author

zzahkaboom24 commented Jan 26, 2026

Do not merge at least until I made a PR for ptero-eggs and it gets noticed.
Merging this PR without updating the egg will have people not know what startup command to use.
In an ideal world, both PRs (if they are fine) would be merged at the same time kinda.

If this gets merged and ptero-eggs takes too long to notice and wanna know the startup command, try this:

java $( ((USE_AOT_CACHE)) && printf %s "-XX:AOTCache=./HytaleServer.aot" ) -Xms128M $( ((SERVER_MEMORY)) && printf %s "-Xmx${SERVER_MEMORY}M" ) -jar ./HytaleServer.jar $( ((HYTALE_ALLOW_OP)) && printf %s "--allow-op" ) $( ((HYTALE_ACCEPT_EARLY_PLUGINS)) && printf %s "--accept-early-plugins" ) $( ((DISABLE_SENTRY)) && printf %s "--disable-sentry" ) --auth-mode ${HYTALE_AUTH_MODE} --assets ../Assets.zip --bind 0.0.0.0:${SERVER_PORT}

Add error handling to mv commands for server files
zzahkaboom24 added a commit to zzahkaboom24/game-eggs that referenced this pull request Jan 26, 2026
Updates the Hytale egg to support the new changes from this PR -> pterodactyl/yolks#69
@khancerberus
Copy link

khancerberus commented Jan 31, 2026

This solves the auth.enc file creation fails at the /auth login device command execution?

@zzahkaboom24
Copy link
Author

zzahkaboom24 commented Feb 3, 2026

This solves the auth.enc file creation fails at the /auth login device command execution?

No.
auth.enc should have worked with this egg even before this update.
Make sure Wings is running at least version 1.12.1 and that you run /auth persistence Encrypted after /auth login device or /auth login browser, otherwise I can't say anything else rlly

@WilliamVenner
Copy link
Member

Hey, #71 should supersede this

Kind of surprised the downloader still doesn't have an arm build...(?)

Luckily the community has simply figured out how to reimplement the downloader themselves, so we can just remove our dependency on it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants