pterodactyl / panel

Pterodactyl® is a free, open-source game server management panel built with PHP, React, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to end users.
https://pterodactyl.io
Other
6.59k stars 1.65k forks source link

Server updating solution #1292

Open jmgraeffe opened 6 years ago

jmgraeffe commented 6 years ago

Is your feature request related to a problem? Please describe. It is. For example, Maniaplanet servers and probably many more neither install and update through SteamCMD nor have any updating solution which follows the "hey, here is the path, and we're done" principle. That's why it would be good to have a built-in feature for updating gameservers conveniently apart from the current entrypoint.sh updating method in the image itself, which is afaik not possible through eggs already.

Describe the solution you'd like Maybe a new editor beneath the install script in the Script tab when editing an egg would be enough for most cases. It would make creating eggs for Steam-foreign apps much easier and would allow for own "dirty" quick fixes, e.g. "oh the new update does not work if we do not delete or alter this and that file". So you don't need to make a new image for simple changes in updating scripts.

Describe alternatives you've considered Besides that easy solution, I could think of a real versioning system, didn't make any detailed thoughts about that already. Would like to set versions for the gameservers, for example if I decide to downgrade to an older version or something, or just stay at a specific version like in Minecraft.

Additional context For Maniaplanet servers, afaik you pretty much have to search for a link to a ZIP file and extract it while overwriting all existing files. This is a bit of a hassle in my eyes. You could do it with variables, but then I would need to enter the new URL into every server manually. And I could implement my own updating solution, much like SteamCMD, but it would be better to have a native solution for that really.

parkervcp commented 6 years ago

You could build your own docker images with this ability.

jmgraeffe commented 6 years ago

Can you give a more detailed description of your idea?

parkervcp commented 6 years ago

It would literally be part of the entrypoint script. The issue we have is this approach is very single service. Thus a source image is fine as it covers all the games you get through steamcmd. But for other games it doesn't help at all.

jmgraeffe commented 6 years ago

Exactly, and I don't want to alter an image all the time with the new URL to download and so on. At this point, it's possible to have a variable for the URL, but imo it's just not the best system.

parkervcp commented 6 years ago

For many of the services updating is essentially reinstalling due to the way that the files are grabbed (download and extract) and you don't want to do that every time. The reason we run the update for source games is that they have a system that just grabs the difference as an update.

jmgraeffe commented 6 years ago

Installation is installation, updating is updating.

For example, in some programs I know, the installation process needs to move some config files initially and may edit them a bit, maybe it needs to configure some other services running in the background as well, while the updating process shouldn't do that. That's why it feels like an additional update script at least would not be that bad, which you can control manually or let it execute on every startup. Would solve the problem of people not wanting to update something as well.

On the other hand, new idea, why not implementing a more dynamic script system, where you can setup custom scripts and execute them with schedules or manually then?

parkervcp commented 6 years ago

The script idea completely unrelated to the original post and should not be brought up in this but should get it's own issue if anything.

jmgraeffe commented 6 years ago

Last time I posted an unrelated issue which sounded kinda like another issue, it was closed down. But I will create an own issue for it.