mbround18 / valheim-docker

Valheim Docker powered by Odin. The Valheim dedicated gameserver manager which is designed with resiliency in mind by providing automatic updates, world backup support, and a user friendly cli interface.
https://hub.docker.com/r/mbround18/valheim
BSD 3-Clause "New" or "Revised" License
762 stars 81 forks source link

[Enhancement] MODS environment variable #272

Closed mbround18 closed 3 years ago

mbround18 commented 3 years ago

Acceptance Criteria:

mbround18 commented 3 years ago

Edited: Please ignore, looks like DockerHub was being dumb and whatever CDN they use didn't update for my country until literal 10 mins after I posted this.

I did check dockerhub to see when the image was there but yeah.. their CDN....

Lol, got it working now? :P

ouvoun commented 3 years ago

@mbround18 Awesome, great to see this merged.

At some point I think there was a regression, though. Tested using TYPE=ValheimPlus, and every time the server restarts the valheim_plus.cfg config within BepInEx/config gets reset to the default. Maybe that's intended, but I'd assume that it is not. :)

CosmicHorrorDev commented 3 years ago

@ouvoun Thanks for the heads up!

The server will overwrite all files from mods when it updates which can happen on startup depending on your configuration. This is undesirable behavior for config files though. Thinking on it more do you think doing something like writing potential config files with a .new appended instead of overwriting them would be appropriate, that way you have easy access to the most recent config file shipped with the mod if you need to make changes to that and start using it?

So essentially instead of overwriting valheim_plus.cfg it would copy it over as a new valheim_plus.cfg.new next to the existing config file that you could make changes to and start using if required.

In an ideal world it could automagically merge the old config file with any changes in the new one, but that's unlikely to happen since it would require specific knowledge of the config files and what changes are valid.

ouvoun commented 3 years ago

Hey @LovecraftianHorror! Thanks for the reply.

I like the idea of appending a suffix to the new versions of the config files without actually overwriting them. I think doing a merge would be nearly impossible to generalize to mods outside of V+, so the strategy of keeping both configs seems the most reasonable.

One other functionality that I’ve seen another similar container do is to effectively rsync a config directory within the saves directory to the BepInEx/config directory, such that the server directory could be easily wiped and nothing of value would be lost, since all stateful data is contained within the saves directory. I’d imagine if the config directory is already getting unique treatment, this could be something to consider.

Would you imagine this would be an explicit behavior specifically for the BepInEx/config directory?

CosmicHorrorDev commented 3 years ago

I was planning on just applying this behavior to all files that fit a set of file extensions likely to be configs since I assumed many mods could have config files in different locations, but maybe that's not the case.

I'll have to sample a large set of mods to see if I can glean any extra information. I like the ability to backup mod configs, but want to see if there are any potentially better or more flexible techniques that we could try

All in all thanks for the input, it helped give me quite a few new ideas!

ouvoun commented 3 years ago

Sounds legit! Thanks for your work on this.