Is there a mod repository ? How to make mods ?

What you mainly seem to be looking for is automated means to create standard, often-used VMs on Proxmox.

And even for that I think that using docker-compose or ansible-playbooks would be a better way then some hellish scripts.

(although they are not point-and-click. For that, use Unraid).

In general if one just wants to set up some services for a home network a NAS os with docker support (doesn't really matter which) is imho more novice-friendly and less-maintenance effort than ProxmoxVE. YMMV
 
  • Like
Reactions: cave and meyergru
Correct, but basically, the scripts are on Github, open for scrutinization. Ansible playbooks can hold the same amount of hellishness as any script.
Considering IDK of any inherent Proxmox "qm" support in Ansible, I suspect that you would have to resort to shell calls anyway in such playbooks.

I do not say anything about the quality of those scripts, but they may be the way to go for someone who does not want to follow the all-available instructions to set up any of the standard tools as VMs, LXCs or docker containers. All you need to have available is a standard Linux (probably Debian) template as a basis.

You are correct in pointing out that whoever does not want or cannot follow such instructions should not be using Proxmox anyway and use Unraid or a NAS box that already comes with an "app store" for these purposes. Proxmox is not the right tool for those people.
 
"whoever does not want or cannot follow such instructions should not be using Proxmox"

"Proxmox is not the right tool for those people."

Well fine then stay difficult
 
It is not me "staying difficult". I am not responsible for Proxmox development - I only realize that there are two kinds of tools for almost any purpose:

a. user-friendly, easy to manage tools. Those are often quite limited in what you can achieve with them - otherwise they needed to be more complex to offer a larger degree of freedom.
b. expert tools. Those are often more complex to configure, yet they offer much more flexibility.

As examples, tools in category a are Unraid or for firewalls, Fritzboxen.
Tools in category b are Proxmox VE and for firewalls, pfSense or OpnSense.

You can't have the cake and eat it, although you obviously do not like that answer. Or you theoretically could, but the effort needed to make a tool of type b user-friendly takes more development effort than is commercially viable. And people who actually pay for these expert products (i.e. buy the business license) do not need this kind of end-user flexibility.
 
Well fine then stay difficult
Mate, it's super simple: use the API to interact with PVE and make your tool to do whatever you need. A script, a GUI, a docker, a full blown app... and let everyone to be happy. There are lots of examples with this approach.

IMHO: no one wants PVE to become "the wordpress of hypervisors", specially given how fragile and unsafe any app that allows code mods is. Just the idea of it gives me chills! :p
 
I don't understand, you prefer to run random scripts from github repositories and have no way to remove them, revert them, changing their application orders ?

I find that doing these modifications is hugely time consuming, irreversible, break things and then you have to wipe the disk clean and start over from nothing.

I understand that keeping thing difficult increases job security for operators and prevents their users from doing useful things without having to ask their admin for stuff.

I just think not having a system to at least add and remove mods in a standard way shows a rigid stubbornness that is anything but useful.

With all the time I have to open the console (and it's often breaking copy paste functions), I might as well just do everything with the qemu cli directly.

At some point fiddling around in the homelab, twiddling thumbs waiting for the proxmox installer to re-wipe the disk

has to make way for the actual getting of things dones, some people have things to do beside reinstall proxmox for the 3rd time
 
you prefer to run random scripts from github repositories
Personally, I never ever run any script from anywhere. Not even from known sources like ttek / community scripts[1]. Never really had the need for it, neither in my homelabs nor in any of the clusters I manage.

and have no way to remove them, revert them, changing their application orders ?
No idea what are you referring to. You apply them in which ever order you want and you are responsible of knowing what they do, what they modify, etc. If you run a script that modifies core PVE files, it's your responsibility and you would be doing something that from a maintainability and safety should not be done.

I understand that keeping thing difficult increases job security for operators and prevents their users from doing useful things without having to ask their admin for stuff.
Absolutely nothing prevents you to implement whatever functionality you want in your app and use the API to interact with PVE. Some examples in no particular order here [2]

I just think not having a system to at least add and remove mods in a standard way shows a rigid stubbornness that is anything but useful.
If even after this you still feel like that, let's just agree that we disagree. IMHO you should try to change your point of view and adapt to PVE instead of trying to adapt PVE to yourself.

[1] https://github.com/tteck/Proxmox and https://github.com/community-scripts/ProxmoxVE
[2] https://github.com/gyptazy/ProxLB https://github.com/ansible-collections/community.proxmox https://www.modulesgarden.com/products/whmcs/proxmox-ve-vps-and-cloud https://corsinvest.it/cv4pve-cv4-tools-proxmox-suite-open-source/
 
If even after this you still feel like that, let's just agree that we disagree. IMHO you should try to change your point of view and adapt to PVE instead of trying to adapt PVE to yourself.
Well, you can do that, iff that is within your range of capabilities - I just would not expect anybody else to do it for you.
 
  • Like
Reactions: Johannes S
Hey @shodan , i have made may be exactly what you're looking for: http://pve-electrified.net.
It's a fork of the proxmox-manager package (the user interface) which offers a plugin system for community plugins. The plugin api also has a hook for adding such tree columns. See the plugin development guide.
Just saying that this exists but sorry that i could not follow the philosophical conversation here. It felt for me as a human reader like wasting too much energy when you, at some point when you used chatgpt to make your arguments.
 
  • Like
Reactions: LnxBil
@Squ1sh !!
AWESOME !!! :)
Frankly this is the response I hoped to see one day when I made this post.
To hear of someone else who also sees a modding system as a way to unleash the potential of proxmox by making it easier to modify and that will encourage all the people who make their own little private mods to put them in the repository !

Here are modifications that I do manually to every proxmox servers that could be mods.

Some of these might be ~possible~ to do via the Web UI by now, it has been a long time since I last used proxmox but I am excited to get back into messing around with it.

in no particular order

1. Add ssh login keys to /root/.ssh/authorized_keys
2. install nag buster
3. Make root fs a thin volume
4. Make network interface DHCP (See below)
5. Reroute Web UI to ports 80 and 443 (See below)
6. add net-tools back
7. Make kernel not quiet
8. install dmidecode lshw lm_sensors turbostat webmin tpm2-tools cuda nvidia-container depending on hardware
9 update CPU microcode
10. Add IP addresses as tags to LXC containers
11. PVE CPU scaling governor
12. Setup proxmox in whatever ways to make nvidia/amd/intel GPU work as Single-GPU and Multi-GPU passthrough (blacklist drivers, create device reference etc.. )
13. autodownload latest virtio iso
14. enable the hardware watchdog timer if present
15. Create a thin volume just for the ISO and mount it correctly
16. Create a SMB share of the ISO for other promox on network (single iso repository)
17. Create a virtual USB stick repository, and share it as well
18. Create separe thin volumes for LXC, templates, backups
19. Setup RATAR mount for tar deduplication of ISO (when you have MANY near identical ISOs)
20. Disable braketed paste
21. Setup NOVNC to always do Local Scaling by default (infuriating bad default!!! )
22. Enable automatic trim
23. Make LXC console model SHELL by default
24. Add pipe to clipboard shell alias
25. make writeback default setting (and change default settings for VM and LXC to be more "modern")
26. Add community-scripts builtin support into GUI for ONE CLICK VM and LXC creation and other "best settings" config template
27. In WebUI, all nodes expanded on login already
28. Enable ARG setting in VMs from the WebUI
29. Mod system must be usable from airgapped system+usb, also making community-script installation able to work airgapped

Code:
#make network dhcp
apt install isc-dhcp-client -y
sed -i '/iface vmbr0 inet static/c\iface vmbr0 inet dhcp' /etc/network/interfaces
#remove  static address and gateway
sed -i '/^[[:space:]]*address[[:space:]]\+/d' /etc/network/interfaces
sed -i '/^[[:space:]]*gateway[[:space:]]\+/d' /etc/network/interfaces
#remove static hosts definition (CHANGE REMOVE_HOST VALUE)
REMOVE_HOST="192.168.1.31"; sed -i "/^${REMOVE_HOST//./\\.}[[:space:]]/d" /etc/hosts
#auto update console banner
bash -c 'echo "[Unit]"; echo "Description=Update /etc/issue with current IP"; echo "After=network-online.target"; echo "Wants=network-online.target"; echo ""; echo "[Service]"; echo "Type=oneshot"; echo "ExecStart=/bin/bash -c '\''ip=\$(ip -4 addr show vmbr0 | grep -oP \"(?<=inet\\\\s)\\\\d+(\\\\.\\\\d+){3}\"); if [[ -n \$ip ]]; then echo \"------------------------------------------------------------------------------\" > /etc/issue; echo \"\" >> /etc/issue; echo \"Welcome to the Proxmox Virtual Environment. Please use your web browser to\" >> /etc/issue; echo \"configure this server - connect to:\" >> /etc/issue; echo \"\" >> /etc/issue; echo \"  https://\$ip:8006/\" >> /etc/issue; echo \"\" >> /etc/issue; echo \"------------------------------------------------------------------------------\" >> /etc/issue; fi'\''"; echo ""; echo "[Install]"; echo "WantedBy=multi-user.target";' > /etc/systemd/system/update-issue.service && systemctl daemon-reexec && systemctl daemon-reload && systemctl enable update-issue.service
TODO  Modify APP ARMOR settings to suppress warnings


Code:
#re-route port 443 to 8006
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8006
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8006
#make above rule permanent
echo iptables-persistent iptables-persistent/autosave_v4 boolean true | debconf-set-selections
echo iptables-persistent iptables-persistent/autosave_v6 boolean true | debconf-set-selections
apt update ; apt install iptables-persistent -y

Code:
#add ifconfig back
apt install net-tools -y

Code:
#remove quiet kernel parameter
sed -i 's/^\(GRUB_CMDLINE_LINUX_DEFAULT="\)\(.*\)\(quiet *\)\(.*"\)/\1\2\4/' /etc/default/grub
update-grub

Code:
# Install dmidecode to obtain motherboard information
apt install dmidecode -y
dmidecode -t baseboard > /root/motherboard.info.txt
dmidecode -t bios > /root/bios.info.txt

Code:
#install lshw
apt install lshw -y

Code:
#setup webmin
curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
sh setup-repos.sh
apt-get install webmin --install-recommends

Code:
#update the microcode
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/microcode.sh)"


Code:
#automatically adds IP address as tags to LXC container
#bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/add-iptag.sh)"

Code:
#PVE CPU Scaling Governor (default is performance)
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/scaling-governor.sh)"

Code:
#add pipe to clipboard function in .bashrc
echo -e '\nfunction wcl {\n  echo -ne '"'"'\e''[5i'"'"'\n  cat "$@"\n  echo -ne '"'"'\e''[4i'"'"'\n  echo "Copied to Windows clipboard" 1>&2\n}' >> ~/.bashrc
 
Last edited:
Hi Shodan,
that's nice to hear;) Here are **some** answers. May be for the rest/unanswered you could make an individual post and see if other people think the same or like to work on that feature.
2. install nag buster
Ok, login nag is removed (didn't want to hang this out so much, but i think the proxmox guys here can agree with me that the number of people who install electrified and are interested in commercial support ist very small)
4. Make network interface DHCP (See below)
This is planned for soon (with the upcoming diagnosis feature) to pop up a warning with a button to do so.
5. Reroute Web UI to ports 80 and 443 (See below)
Good point. I could add an option, that the server listens on 80 and 443 in the first place, so no firewall rules would be needed.
9 update CPU microcode
Same as above: This is planned for soon (with the upcoming diagnosis feature) to pop up a warning with a button to do so.
12. Setup proxmox in whatever ways to make nvidia/amd/intel GPU work as Single-GPU and Multi-GPU passthrough (blacklist drivers, create device reference etc.. )
Same as above: This is planned for soon (with the upcoming diagnosis feature) to pop up a warning with a button to do so.
24. Add pipe to clipboard shell alias
Interesting. Can you explain more what it does.
26. Add community-scripts builtin support into GUI for ONE CLICK VM and LXC creation and other "best settings" config template
Yes, that's good. I'd prefer a way to not have to download and trust each script, from a security perspective, so it's much work to collect these images and settings out of the script. I personally won't find time for it soon.
27. In WebUI, all nodes expanded on login already
Ok, will add that on the todo list. Should be done quick.
28. Enable ARG setting in VMs from the WebUI
You mean qemu command line arguments?
29. Mod system must be usable from airgapped system+usb, also making community-script installation able to work airgapped
Can you explain more? I'm also a fan of installing a graphical terminal (via gnome + browser) on the proxmox host and access it from there and thought about integrating the install script + auto-login / not having to login twice.
 
in no particular order

1. Add ssh login keys to /root/.ssh/authorized_keys
2. install nag buster
3. Make root fs a thin volume
4. Make network interface DHCP (See below)
5. Reroute Web UI to ports 80 and 443 (See below)
6. add net-tools back
7. Make kernel not quiet
8. install dmidecode lshw lm_sensors turbostat webmin tpm2-tools cuda nvidia-container depending on hardware
9 update CPU microcode
10. Add IP addresses as tags to LXC containers
11. PVE CPU scaling governor
12. Setup proxmox in whatever ways to make nvidia/amd/intel GPU work as Single-GPU and Multi-GPU passthrough (blacklist drivers, create device reference etc.. )
13. autodownload latest virtio iso
14. enable the hardware watchdog timer if present
15. Create a thin volume just for the ISO and mount it correctly
16. Create a SMB share of the ISO for other promox on network (single iso repository)
17. Create a virtual USB stick repository, and share it as well
18. Create separe thin volumes for LXC, templates, backups
19. Setup RATAR mount for tar deduplication of ISO (when you have MANY near identical ISOs)
20. Disable braketed paste
21. Setup NOVNC to always do Local Scaling by default (infuriating bad default!!! )
22. Enable automatic trim
23. Make LXC console model SHELL by default
24. Add pipe to clipboard shell alias
25. make writeback default setting (and change default settings for VM and LXC to be more "modern")
26. Add community-scripts builtin support into GUI for ONE CLICK VM and LXC creation and other "best settings" config template
27. In WebUI, all nodes expanded on login already
28. Enable ARG setting in VMs from the WebUI
29. Mod system must be usable from airgapped system+usb, also making community-script installation able to work airgapped
I dont really understand. What stops you from doing this? not a single one of your asks is necessary for the operation of a pve node or cluster, but a lot of what you ask (and some you didnt) is included by my general purpose post install script.

Where is it and why cant you use it? because it is specific for my environments and contains data I dont wish to share. its generic enough that if you ask claude, it will assemble the post install script to do exactly that.

As for mods.... Since you dont understand what a security and functional nightmare that entails for the devs- why not fork the code and write it yourself?
 
I dont really understand. What stops you from doing this? not a single one of your asks is necessary for the operation of a pve node or cluster, but a lot of what you ask (and some you didnt) is included by my general purpose post install script.

I know many of these are very easy changes, I burned a weekend or two making them, you did too, probably thousands of other proxmox user also made their own private scripts to make these changes efficiently whenever their bork their servers or do a clean install.

The point of having a mod repository is, I can make a modification and everyone else can find it and use it. My setup script doesn't help anyone when it sits in my document folder. I could put it in some github repo and it probably wouldn't even show up on google.

Since nobody is ever gonna find my script, I'm not going to bother making it clean, efficient, reliable and resilient. It's just for me, if you send me your script and I tried to run as is, it would probably break if run without modification and I suspect you didn't write comments or documentation unless you're very diligent (which I am not).

And what of more complicated things like "changing novnc scaling to local scaling", I tried and I never found where that was and it became easier to manually toggle this each time instead of really spending the time and fixing that once and for all. So that script, I never made it for myself.

But if there was a mod manager/repository, it makes it worth my time to actually do it, not just for myself but for every other user who wants the same thing. And if I do this, and it makes sense, it means other users will also spend their time fixing some vexing issue they've been having and then uploading that to the repository.

This is the logic behind every game mod manager and game mod community, it doesn't exist if everyone is staying in their little bubble coding private scripts. And we just end up wasting weekends discovering the same problems and then programming the same fixes.

I think this logic is very self evident and if you want proof just google "helper script"

1776018558049.png

Of all the software in the world and of all things that could have "helper scripts", proxmox is the top result.

This is how much there is a need for users to build and share workaround and fixes for the rather tedious task of smoothing out all of the kinks that come out of running LXCs and QEMU VMs via the web interface.

I wish that when I made this thread the proxmox employees would have figured out just how much free labour their could have gotten from just adding for mod-loading interface in the webui and having an easy place for users to exchange their mods but I got near universal resistance from people afraid of change.

So I'm curious to know if this is where we're going to see proxmox modding take off. Because personnally I think the future of desktops will be to transparently run hypervisor desktops that let you switch between operating system at will and near instantly without rebooting.

But right now there are just too many kinks to smooth out for each individual user to privately do on their own.


Where is it and why cant you use it? because it is specific for my environments and contains data I dont wish to share. its generic enough that if you ask claude, it will assemble the post install script to do exactly that.

Yes, well like I said, if we had a designated place to share and one-click-install and one-click-revert such mods, it would make sense for each of us to put just a little bit more polish to that our hard work can be of use to other users. Which in turn means we are living in an environement where other users do that for us too. So instead of me having to code out the kinks for every single thing that annoys me with proxmox, I could focus on JUST making the sickest node summary page that I can make, while someone else makes the one-click action to switch the whole node to DHCP and yet someone else takes care of overhauling the VM creation page so that it integrated an offline copy of communityscripts and so on.

I understand this is not exactly obvious to us the loner-heard-of-cats that we are as developpers, but this is the collaboration logic that built the internet and basically every component that proxmox is made out of ...

As for mods.... Since you dont understand what a security and functional nightmare that entails for the devs- why not fork the code and write it yourself?
Yes, that's what I've been doing, I hope I'm done some time before I die in 2047, oh and of course I need to do this for basically every piece of software that I use, proxmox is just the software that runs the other piece so I'm not sure at this rate any of this will be done by the time the sun burns out if every one tries to do it privately on their own
 
Yes, that's what I've been doing, I hope I'm done some time before I die in 2047, oh and of course I need to do this for basically every piece of software that I use, proxmox is just the software that runs the other piece so I'm not sure at this rate any of this will be done by the time the sun burns out if every one tries to do it privately on their own
That is as succinct a description of the problem as you or I have posited so far.

You want a system in place provided by the devs, but when looking at what it would take you correctly (if hyperbolically) estimate the work as requiring a "sun burning out" timeframe. The devs, rationally, consider their time better spent on other things. As for me, I already solved the problem in a way that required neither- and that's only because I deploy new hardware fairly regularly and benefit from the post install automation. For single hosts I never bother.

and yes, I do comment my code.
 
Why are you part of the "it should be easier to modify stuff" discussion, if you don't have anything to modify ?

"I don't need to collaborate with anyone to fix anything because I don't have any problems"
Like, good for you that whatever you're doing is working out for you, please don't get in the way of people trying to get shit done
 
where, pray tell, have I gotten in the way of such people?

all I pointed out that you could already do what you asked.
By continuing making the case that having a mod manager or mod repository is not worth the trouble.
Of course, without any way to coordinate and publish, every proxmox user is going to stay in their own bubble, making their own private fixed of the same thing that has been fixed over and over again.

I suspect more time has already been collectively wasted fixing the same things over and over again, has as been spent making proxmox itself.

I once spent an entire weekend just to discover there is a bugged setting on Ryzen 1 cpus that causes proxmox to hang.
I would have posted that fix to a repository, somewhere people with the hardware could have searched.
But no, there is no repository to post to nor search.
How many more people will waste time solving that same problem ?

One of my friend describe doing this as "walking through the papercut forest".
Just trying to get things to work smoothly, taking days and days, it is so tedious and when you're done you can't even make it useful for anyone else because the people who would need it wouldn't even be able to find it.

I suspect most proxmox users don't even use the web user interface. it's just easier to make a whole custom VM creation script than to jump through all the hoops to make it work one click at a time.

We could have a repository with all the solution but no, instead every user has to talk through the forest of paper cut and after weeks and weeks of bleeding have something that is basically just calling QEMU directly to do everything because at that point it's just easier to start over !
 
I would have posted that fix to a repository, somewhere people with the hardware could have searched.
But no, there is no repository to post to nor search.
How many more people will waste time solving that same problem ?
What are you talking about? All our code is fully open source, we encourage and support upstream contributions to actually make things better for all by default over some third party modification hacks. So posting fixes to our official submission channels is always an option and can already help others. We also have open issue tracker that also supports attaching patches, and obviously a community forum, as you found. Those are also indexed in all major search engines and nowadays basically all LLMs FWIW.

We could have a repository with all the solution but no, instead every user has to talk through the forest of paper cut and after weeks and weeks of bleeding have something that is basically just calling QEMU directly to do everything because at that point it's just easier to start over !
You could start leveraging actual open source software and contribute directly, and with that I don't mean "just" fixes or code, but actual good and elaborate bug reports with a reproducer, or posts for others to read instead of inventing supply chain attack channels, and complaining about dark forests that aren't there.

Your actions might be well intended, and trying to improve the Proxmox ecosystem can be great, but the way done here, which might sound like a good idea only so long until one actually pays for adding a ton of complexity, i.e. not only code one but also management work for admins for long term maintenance, is IMO definitively not the best way to do it. It definitely doesn't tick the box for getting "shit done", as that's reserved for actual upstream contributions in my book (which we also try to live for the great projects we use and build on top of!).