Proxmox® is a registered trademark of Proxmox Server Solutions GmbH.
I am no member of the Proxmox Server Solutions GmbH. This is not an official program from Proxmox!
This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
IN CASE OF EMERGENCY, I HOPE YOU HAVE BACKUPS FROM YOUR MACHINES!
YOU HAVE BEEN WARNED!
- The script makes system updates with apt/dnf/pacman/apk or yum on all nodes/LXCs and VMs (if VMs prepared for that)
- Make a snapshot before update (if your storage support it - look here). If not supported, you can choose to make a real backup, but this must be enabled in
update.conf
by user (take long time!) - After all, the updater makes a little cleaning (like
apt autoremove
) - If the script detects "extra" installations, it could update this also. Look in config file, for that.
- NEW: use your own scripts during update if you like. Look here
- Update Proxmox VE (the host / all cluster nodes / all included LXCs and VMs)
- LXC distriburion upgrade (deb12 -> deb13) with
update -dist-upgrade
- Snapshot / Backup support (for Snapshot, your system must prepared for it)
- Normal run is "Interactive" / Headless Mode can be run with
update -s
- Logging - location can be change in config file
- Exit tracking, so you can send additional commands for finish or failure (edit files in
/etc/ultimate-updater/exit
) - Config file
- Use TAG/ID/Range for "Only" / "Exclude" LXC/VM
- send email after update/check
- Trim filesystem on ext4 nodes
Info can be found with update -h
Changelog: here
In Proxmox GUI Host Shell or as root on proxmox host terminal:
bash <(curl -s https://raw.githubusercontent.com/BassT23/Proxmox/master/install.sh)
- If you want to run the updater globally for all nodes/lxc/vm only run
update
- If you want to update only one specific lxc/vm run
update <ID>
! For Cluster Installation, you only need to install on one Host !
The nodes need to know each other. For that please edit the /etc/hosts
file on each node. Otherwise, you can use the GUI. (NODE -> System -> Hosts)
Example add:
192.168.1.10 pve1
192.168.1.11 pve2
192.168.1.12 pve3
...
IP and Name must match with node ip and its hostname.
- IP can be found in node terminal with
hostname -I
- hostname can be found in node terminal with
hostname
After that make the fingerprints.
The used sequence can be check, if you run awk '/ring0_addr/{print $2}' "/etc/corosync/corosync.conf"
from the host, on which Proxmox-Updater is installed.
So connect from first node (on which you install the Proxmox-Updater) to node2 with ssh pve2
. Then from node2 ssh pve3
, and so on.
-
Use the "light and easy" QEMU option
more infos here: QEMU Guest Agent
-
Use ssh connection with Key-Based Authentication (a little more work, but nicer output and "extra" support)
more infos here: SSH Connection
update -up
If update run into issue, please remove first with:
bash <(curl -s https://raw.githubusercontent.com/BassT23/Proxmox/master/install.sh) uninstall
and install new
The config file is stored under /etc/ultimate-updater/update.conf
With this file, you can manage the updater. For example; if you don't want to update PiHole, comment the line out with #, or change true
to false
.
- Host / LXC / VM
- Headless Mode
- Extra updates
- "stopped" or "running" LXC/VM
- "only" or "exclude" LXC/VM - see below
Expands ONLY/EXCLUDE into a space-separated list of numeric VMIDs. Supports:
- Plain VMIDs: 101 202
- Delimiters: commas / semicolons / pipes / spaces intermixed (e.g. 101,202;203|204)
- Ranges: 120-125 (inclusive)
- Mixed IDs + ranges + tags: 110 testing 111 200-202
- Uppercase user tag input (config tags assumed already lowercase) Tag tokens are any token not matching ^[0-9]+$ or ^[0-9]+-[0-9]+$.
- OR matching across tag tokens.
Behavior summary:
- Tokenize ONLY if set/matched; else tokenized EXCLUDE.
- For each token: number -> add as VMID range a-b -> expand (a..b) tag -> collect tag for later resolution
- Resolve tags to IDs (any tag match) and append, de-duplicating while preserving first-seen order (input order then discovery order for tags).
- Assign final space-separated list back to ONLY / EXCLUDE variable.
- If ONLY provided, EXCLUDE is ignored.
Usage examples:
- ONLY="backup,windows"
- ONLY="101,102,105-107"
- ONLY="110 testtag 111 120-121"
- ONLY="" EXCLUDE="old 300-302"
If updater detects installation: (disable, if you want in /etc/ultimate-updater/update.conf
)
- PiHole
- ioBroker
- Pterodactyl
- Octoprint
- Docker Compose (v1 and v2)
How to use user scripts:
In "/etc/ultimate-updater/scripts.d" create an folder for each LXC/VM who should use it like this: (000 is the example ID)
/etc/ultimate-updater/scripts.d/000/
here you can put in any script you like, which will be run during update also. !!! DON'T use free spaces in file name !!! ("file 1.sh" -> "file-1.sh")
these files are used in the "extra update" section at the end of the LXC/VM
The Welcome Screen is an extra for you. It's optional!
- The Welcome-Screen brings an update-checker with it. It check on 07am and 07pm for updates via crontab. The result will show up in Welcome-Screen (Only if updates are available).
- The update-checker also uses the config file!
- To force the check, you can run
/etc/ultimate-updater/check-updates.sh
in Terminal. - You can choose, if screenfetch will be show also (if screenfetch is not installed, script will make it automatically)
If anybody wants to help with failure search, please test our beta (if available).
Install beta update with update beta -up
To go back to master, choose update -up
BassT23 💻 🚧 |
Gauvino 💻 📖 |
elbim 💻 |