Because Rocky is still working out the tweaks, and not everything from v8 is being supported in v9 the same (or at all - quotas, mailman), I've been installing each version as it comes out, and am now getting ready to migrate some old servers to new ones. As such, I've been making sure I get installations that are consistent and that the differences in the Perfect Server CentOS 8 instructions are noted and worked around. The main snag still present is a bug in amavisd-new that doesn't like configuration changes - I've found I have to uninstall/reinstall it to get it to restart cleanly after a changed config. This is true on my CentOS 8 install as well - very annoying. A new issue with Rocky 9.5 is that a kernel update from the minimal install will cause it to start throwing dracut timeouts during a later reboot, so that's annoying. The apparent fix (mainly proven by repeated R9.5 installs) is to use dracut to recreate the image for the kernel after the update and it's smooth sailing. (https://forums.rockylinux.org/t/clo...fails-to-boot-dracut-initqueque-error/14727/3) [ that last paragraph is a summary of what I've figured out, it does not mean I fully understand the ins/outs of any of it - but it works ] Because I've have been reinstalling servers trying to get a clean, error-free install (typos cause the most headaches), I've created some scripts that do almost everything for me. all the config files that need to be modified or created are done so automatically, and updated packages that are downloaded outside of dnf are pulled in, unzipped, and installed automatically as well. There are multiple scripts as there are spots where reboots are necessary to continue. Run a script, it reboots, you log back in, run the next script, repeat. At this point, I can now install a fresh Rocky 9.5 server up to the point of installing ISPConfig in about 15-20 minutes just by running 10 scripts from the command line (including the manual minimal ISO install - download and reboot times are the most time consuming). The only manual parts are entering the data for the SSL certificate, updating the MySQL daemon password, and configuring RoundCube (and I've even simplified some of that). The initial install is done similarly to acme.sh - a CURL call downloads a bash script that downloads all the batch bash scripts, as well as text files that contain the default config data for some packages (fail2ban, freshclam, roundcube, etc) and some instructional text files. The "batch" scripts do all the installing and configuring, and leave a "done_batch_##" text file behind so you know which one was last run. The installations are done in the order of the Perfect Server CentOS 8 guide, so parts that aren't wanted can be commented out. The "instructions" file indicates which order to run things, where reboots will occur and when manual input is required. The "minimal instructions" file indicates the settings I used for the initial minimal install of Rocky (partition sizing, etc). The "roundcube instructions" file has step-by-step instructions on how to get the latest version of roundcube configured correctly - it requires jumping between a browser interface and the command line to get things done correctly - I did not spend time trying to automate it, but it is greatly simplified. The "chunk_" files are the content used to create the default configurations for some packages, as well a script for MySQL configuration. If you have specific tweaks you do to the default ISPConfig-recommended configs, you could make them here as well. I've also broken out some functions into separate scripts as they may need to be rerun later to fix update issues. There's a "dracut" script that reimages the kernel (again, not 100% clear what that means/does, or if it's explained correctly). There's an "amavisd" script that uninstalls/reinstalls/reenables only amavisd-new (leaving it's dependencies untouched). There's a "check" script that can be used to show the status of all the daemons that the setup installed and enabled (http, myssqld, postfix, etc.). And I included a "local" script that can be used to migrate stuff from old servers like .bashrc and .vimrc settings, or whatever it is you need to migrate. I've run through the scripts in sequence about 8 times now, and am finally confident they do what they are expected to do. If anyone is interested in trying them out, message me and I'll send you a download link to the starting script (which you can download manually before running and see that it contains nothing nefarious). after it downloads all the other files, those files can all be checked as well before running them. 100% transparency, all simple bash scripting, there are no other downloads from any site other than the expected sources for the desired packages being installed. For comparison, the hardware I'm using to install this on are HP Z4 G4 workstations with dual 500GB SSD (RAID1) and 32GB RAM.
I should note that, after initially running through the regular, non-automated installation process based on the Perfect Server CentOS 8 instructions, I did image the installation at that point for restoration on another server, but the dracut timeouts start appearing after the restoratoin, so I assumed that the cloning was not working properly. after repeating the install and seeing it happen without doing the cloning, that's when I figured there must be something else going on. I had already started figuring out the automation process, so I did not try imaging/restoring again. might do that now to see if the dracut problem reappears, but honestly, it takes about as long to image/restore as it does to run the scripts, and the install gets all the updates, so ....