[GH-ISSUE #585] [LGSM] Skeleton directory #470

Closed
opened 2026-02-27 02:01:42 +03:00 by kerem · 10 comments
Owner

Originally created by @dgibbs64 on GitHub (Dec 28, 2015).
Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/585

Originally assigned to: @dgibbs64 on GitHub.

An idea that I like is from an issue raised a long while ago #185. Which was the ability for a user to create there own skeleton directory that could be copied post install allowing them to deploy there custom scripts and configs right away. I already do this with my nmrih servers mainly as a backup. I have all my custom files in a bitbucket repo that I just download when required. This would be great for speeding up deployment of servers and backing up of configs/custom files that differ from the vanilla install.

Originally created by @dgibbs64 on GitHub (Dec 28, 2015). Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/585 Originally assigned to: @dgibbs64 on GitHub. An idea that I like is from an issue raised a long while ago #185. Which was the ability for a user to create there own skeleton directory that could be copied post install allowing them to deploy there custom scripts and configs right away. I already do this with my nmrih servers mainly as a backup. I have all my custom files in a bitbucket repo that I just download when required. This would be great for speeding up deployment of servers and backing up of configs/custom files that differ from the vanilla install.
kerem 2026-02-27 02:01:42 +03:00
Author
Owner

@JimTR commented on GitHub (Dec 31, 2015):

You could also just deploy (install) a game to a directory and just symlink the contents to a user via a script ... this does give some permission problems (who updates the original install and has the user got the correct privs to the directory) however with my web thing I have done symlinks & a root cron to make sure the game is up to date in the skeleton.. this does need some core function editing as (I guess) we are all aware that LGSM will not allow you to 'run as root' and TBF root should own skeleton ... after 2 months of testing with this I have found that if the game coder adds an extra file to a directory symlinking the directory fails (ubuntu 14.04) and you need to run update or validate as the user

<!-- gh-comment-id:168241122 --> @JimTR commented on GitHub (Dec 31, 2015): You could also just deploy (install) a game to a directory and just symlink the contents to a user via a script ... this does give some permission problems (who updates the original install and has the user got the correct privs to the directory) however with my web thing I have done symlinks & a root cron to make sure the game is up to date in the skeleton.. this does need some core function editing as (I guess) we are all aware that LGSM will not allow you to 'run as root' and TBF root should own skeleton ... after 2 months of testing with this I have found that if the game coder adds an extra file to a directory symlinking the directory fails (ubuntu 14.04) and you need to run update or validate as the user
Author
Owner

@jaredballou commented on GitHub (Jan 6, 2016):

This is an interesting idea, maybe something like this:
User downloads script
User runs install
Before installation happens, user is asked if they want us to drop a template skeleton directory
If so, create the structure in ~/templates/$GAME/ that mirrors the install directory structure
Users put their own custom content into the template (support ZIP/BZIP or just flat files?)
User runs install again, continues as normal, and after game is installed rsync or symlink the files from template to the installed directory
Maybe make the symlink or rsync choice a user controlled option (or even have ~/templates/$GAME/symlink and rsync folders to sllow both), so they can share files among installs but also allow customization once they get deployed?
Do we need to have a "refresh" feature, so if I update my skeleton plugins I can deploy the changes to all my servers by the script?

<!-- gh-comment-id:169227041 --> @jaredballou commented on GitHub (Jan 6, 2016): This is an interesting idea, maybe something like this: User downloads script User runs install Before installation happens, user is asked if they want us to drop a template skeleton directory If so, create the structure in ~/templates/$GAME/ that mirrors the install directory structure Users put their own custom content into the template (support ZIP/BZIP or just flat files?) User runs install again, continues as normal, and after game is installed rsync or symlink the files from template to the installed directory Maybe make the symlink or rsync choice a user controlled option (or even have ~/templates/$GAME/symlink and rsync folders to sllow both), so they can share files among installs but also allow customization once they get deployed? Do we need to have a "refresh" feature, so if I update my skeleton plugins I can deploy the changes to all my servers by the script?
Author
Owner

@UltimateByte commented on GitHub (Jan 8, 2016):

I'm so motivated adding support for custom modules, more and more reasons to do it !
We would define some standard variables and file structure to use, so that you can use commands directly from the game script... We could also add an "lgsm-extensions" to include them all. Some could be auto-downloaded from the github lgsm main repository, and some could be coded and added by the user himself. That would definitely take things to the next level i guess.

<!-- gh-comment-id:170009951 --> @UltimateByte commented on GitHub (Jan 8, 2016): I'm so motivated adding support for custom modules, more and more reasons to do it ! We would define some standard variables and file structure to use, so that you can use commands directly from the game script... We could also add an "lgsm-extensions" to include them all. Some could be auto-downloaded from the github lgsm main repository, and some could be coded and added by the user himself. That would definitely take things to the next level i guess.
Author
Owner

@JimTR commented on GitHub (Jan 8, 2016):

some could be coded and added by the user himself. = sexist :) but on a serious note I am working on a script (ran by Root) that uses LSGM validation to the skel install ... further cron jobs (per user) updates the user install ( writing symlinks etc ) but I guess this is a project on its own

<!-- gh-comment-id:170111043 --> @JimTR commented on GitHub (Jan 8, 2016): <quote Ulitmatebyte> some could be coded and added by the user himself.</quote> = sexist :) but on a serious note I am working on a script (ran by Root) that uses LSGM validation to the skel install ... further cron jobs (per user) updates the user install ( writing symlinks etc ) but I guess this is a project on its own
Author
Owner

@UltimateByte commented on GitHub (Jan 9, 2016):

@JimTR It's a project for deploying a massive amount of servers, but i like it. The native skeleton thing could allow an easier use of your kind of script.

<!-- gh-comment-id:170161122 --> @UltimateByte commented on GitHub (Jan 9, 2016): @JimTR It's a project for deploying a massive amount of servers, but i like it. The native skeleton thing could allow an easier use of your kind of script.
Author
Owner

@UltimateByte commented on GitHub (Jan 9, 2016):

BTW, for example, what kind of functions would you need to run your custom scripts @JimTR ?
Bypass echoing/wait/display functions ? Then... ? Being able to run additional commands into functions, change variables ?

<!-- gh-comment-id:170161511 --> @UltimateByte commented on GitHub (Jan 9, 2016): BTW, for example, what kind of functions would you need to run your custom scripts @JimTR ? Bypass echoing/wait/display functions ? Then... ? Being able to run additional commands into functions, change variables ?
Author
Owner

@dgibbs64 commented on GitHub (Apr 19, 2018):

OK for for this I think it should do two things. firstly generate a skeleton dir by simply copying all directory's empty to a skeleton dir. plus also have the ability to copy the skeleton directory to serverfiles and lgsm configs as well. It wont automate everything but it will help

<!-- gh-comment-id:382822491 --> @dgibbs64 commented on GitHub (Apr 19, 2018): OK for for this I think it should do two things. firstly generate a skeleton dir by simply copying all directory's empty to a skeleton dir. plus also have the ability to copy the skeleton directory to serverfiles and lgsm configs as well. It wont automate everything but it will help
Author
Owner

@dgibbs64 commented on GitHub (Oct 28, 2019):

new command recommended ./gameserver skeleton that will replicate all directories but be empty.

another command ./gameserver skeleton-copy to use git to download files from a git repo

<!-- gh-comment-id:547022956 --> @dgibbs64 commented on GitHub (Oct 28, 2019): new command recommended `./gameserver skeleton` that will replicate all directories but be empty. another command `./gameserver skeleton-copy` to use git to download files from a git repo
Author
Owner

@dgibbs64 commented on GitHub (Oct 10, 2020):

for reference

find . -type d | cpio -pdvm skel
<!-- gh-comment-id:706617906 --> @dgibbs64 commented on GitHub (Oct 10, 2020): for reference ``` find . -type d | cpio -pdvm skel ```
Author
Owner

@github-actions[bot] commented on GitHub (Jan 30, 2022):

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

<!-- gh-comment-id:1025010465 --> @github-actions[bot] commented on GitHub (Jan 30, 2022): This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Sign in to join this conversation.
No labels
Atomic
Epic
cannot reproduce
command: backup
command: console
command: debug
command: details
command: fast-dl
command: install
command: mods
command: monitor
command: post-details
command: restart
command: send
command: start
command: stop
command: update
command: update-lgsm
command: validate
command: wipe
distro: AlmaLinux
distro: Arch Linux
distro: CentOS
distro: Debian
distro: Fedora
distro: RedHat
distro: Rocky Linux
distro: Ubuntu
distro: openSUSE
engine: goldsrc
engine: source
game: 7 Days to Die
game: ARMA 3
game: Ark: Survival Evolved
game: Assetto Corsa
game: Avorion
game: BATTALION: Legacy
game: Barotrauma
game: Battalion 1944
game: Battlefield 1942
game: Black Mesa: Deathmatch
game: Blade Symphony
game: Call of Duty 2
game: Call of Duty 4
game: Call of Duty: United Offensive
game: Counter-Strike 1.6
game: Counter-Strike 2
game: Counter-Strike: Global Offensive
game: Counter-Strike: Source
game: Day of Infamy
game: Dayz
game: Death Match Classic
game: Don't Starve Together
game: ET: Legacy
game: Eco
game: Factorio
game: Factorio
game: Garry's Mod
game: Half-Life
game: Hurtword
game: Insurgecy
game: Insurgecy
game: Insurgency: Sandstorm
game: Just Cause 3
game: Killing Floor
game: Killing Floor 2
game: Left 4 Dead 2
game: Minecraft
game: Minecraft Bedrock
game: Mordhau
game: Multi Theft Auto
game: Mumble
game: Natural Selection 2
game: No More Room in Hell
game: Pavlov VR
game: Post Scriptum
game: Project Zomboid
game: Quake 3
game: QuakeWorld
game: Red Orchestra: Ostfront 41-45
game: Return to Castle Wolfenstein
game: Rising World
game: Rust
game: San Andreas Multiplayer
game: Satisfactory
game: Soldat
game: Soldier of Fortune 2
game: Squad
game: Squad 44
game: Starbound
game: Stationeers
game: Sven Co-op
game: Team Fortress 2
game: Teamspeak 3
game: Teeworlds
game: Terraria
game: The Front
game: Unreal Tournament 2004
game: Unreal Tournament 3
game: Unreal Tournament 99
game: Unturned
game: Valheim
game: Wurm Unlimited
game: Zombie Master Reborn
game: label missing
good first issue
help wanted
info: alerts
info: dependency
info: docker
info: docs
info: email
info: query
info: steamcmd
info: systemd
info: tmux
info: website
info: website
needs more info
outcome: duplicate
outcome: issue resolved
outcome: issue resolved
outcome: issue unresolved
outcome: pr accepted
outcome: pr rejected
outcome: unconfirmed
outcome: wontfix
outcome: wrong forum
potential-duplicate
priority
pull-request
type: bug
type: feature
type: feature
type: feature request
type: game server request
type: refactor
waiting response
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/LinuxGSM#470
No description provided.