mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-12-16 20:23:32 +01:00
Compare commits
7 Commits
2025-02-08
...
2025-02-09
| Author | SHA1 | Date | |
|---|---|---|---|
| f94d727af7 | |||
| 054829c4d5 | |||
| d20c92bd4f | |||
| 64b9fa090a | |||
| 5abc84b776 | |||
| 2b0666bcf8 | |||
| 2ef6ac2fe4 |
@ -80,7 +80,4 @@ msg_info "Cleaning up"
|
|||||||
rm -f ${RELEASE}.zip
|
rm -f ${RELEASE}.zip
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
17
CHANGELOG.md
17
CHANGELOG.md
@ -17,6 +17,23 @@ All LXC instances created using this repository come pre-installed with Midnight
|
|||||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
||||||
|
|
||||||
|
|
||||||
|
## 2025-02-09
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### ✨ New Scripts
|
||||||
|
|
||||||
|
- New Script: pbs_microcode.sh [@DonPablo1010](https://github.com/DonPablo1010) ([#2166](https://github.com/community-scripts/ProxmoxVE/pull/2166))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Keep the same hass_config volume for Home Assistant [@genehand](https://github.com/genehand) ([#2160](https://github.com/community-scripts/ProxmoxVE/pull/2160))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Website: Set new Logo for Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2194](https://github.com/community-scripts/ProxmoxVE/pull/2194))
|
||||||
|
- Fix: Barcode Buddy Logo & Title [@MickLesk](https://github.com/MickLesk) ([#2183](https://github.com/community-scripts/ProxmoxVE/pull/2183))
|
||||||
|
|
||||||
## 2025-02-08
|
## 2025-02-08
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
@ -49,7 +49,7 @@ function update_script() {
|
|||||||
LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
|
LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
|
||||||
if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then
|
if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then
|
||||||
echo "Updating ${container} image ${CONTAINER_IMAGE}"
|
echo "Updating ${container} image ${CONTAINER_IMAGE}"
|
||||||
DOCKER_COMMAND="$(runlike "${container}")"
|
DOCKER_COMMAND="$(runlike --use-volume-id "${container}")"
|
||||||
docker rm --force "${container}"
|
docker rm --force "${container}"
|
||||||
eval ${DOCKER_COMMAND}
|
eval ${DOCKER_COMMAND}
|
||||||
fi
|
fi
|
||||||
@ -113,4 +113,4 @@ msg_ok "Completed Successfully!\n"
|
|||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}HA: http://${IP}:8123${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}HA: http://${IP}:8123${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}"
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Barcode buddy",
|
"name": "Barcode Buddy",
|
||||||
"slug": "barcode-buddy",
|
"slug": "barcode-buddy",
|
||||||
"categories": [
|
"categories": [
|
||||||
24
|
24
|
||||||
@ -11,7 +11,7 @@
|
|||||||
"interface_port": 80,
|
"interface_port": 80,
|
||||||
"documentation": "https://barcodebuddy-documentation.readthedocs.io/en/latest/",
|
"documentation": "https://barcodebuddy-documentation.readthedocs.io/en/latest/",
|
||||||
"website": "https://github.com/Forceu/barcodebuddy",
|
"website": "https://github.com/Forceu/barcodebuddy",
|
||||||
"logo": null,
|
"logo": "https://raw.githubusercontent.com/Forceu/barcodebuddy/refs/heads/master/incl/img/favicon/android-icon-192x192.png",
|
||||||
"description": "Barcode Buddy for Grocy is an extension for Grocy, allowing to pass barcodes to Grocy. It supports barcodes for products and chores. If you own a physical barcode scanner, it can be integrated, so that all barcodes scanned are automatically pushed to BarcodeBuddy/Grocy.",
|
"description": "Barcode Buddy for Grocy is an extension for Grocy, allowing to pass barcodes to Grocy. It supports barcodes for products and chores. If you own a physical barcode scanner, it can be integrated, so that all barcodes scanned are automatically pushed to BarcodeBuddy/Grocy.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@ -32,8 +32,8 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "After install enable the option \"Use Redis cache\" on the settings page.",
|
"text": "After install enable the option \"Use Redis cache\" on the settings page.",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
"interface_port": 3000,
|
"interface_port": 3000,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/clusterzx/paperless-ai",
|
"website": "https://github.com/clusterzx/paperless-ai",
|
||||||
"logo": "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/resources/logo/web/svg/square.svg",
|
"logo": "https://raw.githubusercontent.com/clusterzx/paperless-ai/refs/heads/main/icon.png",
|
||||||
"description": "An automated document analyzer for Paperless-ngx using OpenAI API, Ollama and all OpenAI API compatible Services to automatically analyze and tag your documents.It features: Automode, Manual Mode, Ollama and OpenAI, a Chat function to query your documents with AI, a modern and intuitive Webinterface.",
|
"description": "An automated document analyzer for Paperless-ngx using OpenAI API, Ollama and all OpenAI API compatible Services to automatically analyze and tag your documents.It features: Automode, Manual Mode, Ollama and OpenAI, a Chat function to query your documents with AI, a modern and intuitive Webinterface.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
@ -31,4 +31,4 @@
|
|||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": []
|
||||||
}
|
}
|
||||||
|
|||||||
43
json/pbs-microcode.json
Normal file
43
json/pbs-microcode.json
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"name": "Proxmox Backup Server Processor Microcode",
|
||||||
|
"slug": "pbs-microcode",
|
||||||
|
"categories": [
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"date_created": "2025-02-07",
|
||||||
|
"type": "misc",
|
||||||
|
"updateable": false,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": null,
|
||||||
|
"documentation": null,
|
||||||
|
"website": null,
|
||||||
|
"logo": "https://github.com/community-scripts/ProxmoxVE/blob/main/misc/images/processor.png?raw=true",
|
||||||
|
"description": "Processor Microcode is a layer of low-level software that runs on the processor and provides patches or updates to its firmware. Microcode updates can fix hardware bugs, improve performance, and enhance security features of the processor. This script is adapted for the Proxmox Backup Server environment and will only run on bare metal systems. If running in a virtualized environment, the script will exit. Note that firmware update mechanisms, such as Intel's Management Engine (ME) or AMD's Platform Security Processor (PSP), may vary depending on your processor and its implementation. Please consult your processor's documentation to verify if firmware updates can be applied through the operating system.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "misc/pbs_microcode.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": null,
|
||||||
|
"ram": null,
|
||||||
|
"hdd": null,
|
||||||
|
"os": null,
|
||||||
|
"version": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Execute within the Proxmox Backup Server shell on a bare metal system. The script will exit if it detects that it is running in a virtualized environment.",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "After a reboot, you can check whether any microcode updates are currently in effect by running the following command: `journalctl -k | grep -E \"microcode\" | head -n 1`",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
176
misc/pbs_microcode.sh
Normal file
176
misc/pbs_microcode.sh
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright (c) 2021-2025 tteck
|
||||||
|
# Copyright (c) 2025 DonPablo1010
|
||||||
|
# Adapted for the Proxmox Backup Server - Baremetal Only
|
||||||
|
# License: MIT
|
||||||
|
# This script searches for CPU microcode packages (Intel/AMD) and offers the option to install them.
|
||||||
|
# A system reboot is required to apply the changes.
|
||||||
|
# IMPORTANT: This script will only proceed if running on bare metal. If running in a VM, it will exit.
|
||||||
|
|
||||||
|
function header_info {
|
||||||
|
clear
|
||||||
|
cat <<"EOF"
|
||||||
|
____ __ ____ __
|
||||||
|
/ __ \_________ ________ ______________ _____ / |/ (_)_____________ _________ ____/ /__
|
||||||
|
/ /_/ / ___/ __ \/ ___/ _ \/ ___/ ___/ __ \/ ___/ / /|_/ / / ___/ ___/ __ \/ ___/ __ \/ __ / _ \
|
||||||
|
/ ____/ / / /_/ / /__/ __(__ |__ ) /_/ / / / / / / / /__/ / / /_/ / /__/ /_/ / /_/ / __/
|
||||||
|
/_/ /_/ \____/\___/\___/____/____/\____/_/ /_/ /_/_/\___/_/ \____/\___/\____/\__,_/\___/
|
||||||
|
|
||||||
|
Proxmox Backup Server Processor Microcode Updater
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Color definitions
|
||||||
|
RD=$(echo "\033[01;31m")
|
||||||
|
YW=$(echo "\033[33m")
|
||||||
|
GN=$(echo "\033[1;92m")
|
||||||
|
CL=$(echo "\033[m")
|
||||||
|
BFR="\\r\\033[K"
|
||||||
|
HOLD="-"
|
||||||
|
CM="${GN}✓${CL}"
|
||||||
|
CROSS="${RD}✗${CL}"
|
||||||
|
|
||||||
|
msg_info() { echo -ne " ${HOLD} ${YW}$1..."; }
|
||||||
|
msg_ok() { echo -e "${BFR} ${CM} ${GN}$1${CL}"; }
|
||||||
|
msg_error() { echo -e "${BFR} ${CROSS} ${RD}$1${CL}"; }
|
||||||
|
|
||||||
|
header_info
|
||||||
|
|
||||||
|
# Check if running on bare metal using systemd-detect-virt.
|
||||||
|
virt=$(systemd-detect-virt)
|
||||||
|
if [ "$virt" != "none" ]; then
|
||||||
|
msg_error "This script must be run on bare metal. Detected virtual environment: $virt"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Attempt to obtain the current loaded microcode revision
|
||||||
|
current_microcode=$(journalctl -k | grep -i 'microcode: Current revision:' | grep -oP 'Current revision: \K0x[0-9a-f]+')
|
||||||
|
[ -z "$current_microcode" ] && current_microcode="Not found."
|
||||||
|
|
||||||
|
intel() {
|
||||||
|
if ! dpkg -s iucode-tool >/dev/null 2>&1; then
|
||||||
|
msg_info "Installing iucode-tool (Intel microcode updater)"
|
||||||
|
apt-get install -y iucode-tool &>/dev/null
|
||||||
|
msg_ok "Installed iucode-tool"
|
||||||
|
else
|
||||||
|
msg_ok "Intel iucode-tool is already installed"
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
intel_microcode=$(curl -fsSL "https://ftp.debian.org/debian/pool/non-free-firmware/i/intel-microcode/" | grep -o 'href="[^"]*amd64.deb"' | sed 's/href="//;s/"//')
|
||||||
|
[ -z "$intel_microcode" ] && {
|
||||||
|
whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Found" --msgbox "No microcode packages were found.\nTry again later." 10 68
|
||||||
|
msg_info "Exiting"
|
||||||
|
sleep 1
|
||||||
|
msg_ok "Done"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
MICROCODE_MENU=()
|
||||||
|
MSG_MAX_LENGTH=0
|
||||||
|
|
||||||
|
while read -r TAG ITEM; do
|
||||||
|
OFFSET=2
|
||||||
|
(( ${#ITEM} + OFFSET > MSG_MAX_LENGTH )) && MSG_MAX_LENGTH=$(( ${#ITEM} + OFFSET ))
|
||||||
|
MICROCODE_MENU+=("$TAG" "$ITEM " "OFF")
|
||||||
|
done < <(echo "$intel_microcode")
|
||||||
|
|
||||||
|
microcode=$(whiptail --backtitle "Proxmox Backup Server Helper Scripts" \
|
||||||
|
--title "Current Microcode Revision: ${current_microcode}" \
|
||||||
|
--radiolist "\nSelect a microcode package to install:\n" \
|
||||||
|
16 $((MSG_MAX_LENGTH + 58)) 6 "${MICROCODE_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"') || exit
|
||||||
|
|
||||||
|
[ -z "$microcode" ] && {
|
||||||
|
whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Selected" --msgbox "No microcode package was selected." 10 68
|
||||||
|
msg_info "Exiting"
|
||||||
|
sleep 1
|
||||||
|
msg_ok "Done"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
msg_info "Downloading Intel processor microcode package $microcode"
|
||||||
|
wget -q http://ftp.debian.org/debian/pool/non-free-firmware/i/intel-microcode/$microcode
|
||||||
|
msg_ok "Downloaded Intel processor microcode package $microcode"
|
||||||
|
|
||||||
|
msg_info "Installing $microcode (this might take a while)"
|
||||||
|
dpkg -i $microcode &>/dev/null
|
||||||
|
msg_ok "Installed $microcode"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm $microcode
|
||||||
|
msg_ok "Clean up complete"
|
||||||
|
echo -e "\nA system reboot is required to apply the changes.\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
amd() {
|
||||||
|
amd_microcode=$(curl -fsSL "https://ftp.debian.org/debian/pool/non-free-firmware/a/amd64-microcode/" | grep -o 'href="[^"]*amd64.deb"' | sed 's/href="//;s/"//')
|
||||||
|
|
||||||
|
[ -z "$amd_microcode" ] && {
|
||||||
|
whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Found" --msgbox "No microcode packages were found.\nTry again later." 10 68
|
||||||
|
msg_info "Exiting"
|
||||||
|
sleep 1
|
||||||
|
msg_ok "Done"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
MICROCODE_MENU=()
|
||||||
|
MSG_MAX_LENGTH=0
|
||||||
|
|
||||||
|
while read -r TAG ITEM; do
|
||||||
|
OFFSET=2
|
||||||
|
(( ${#ITEM} + OFFSET > MSG_MAX_LENGTH )) && MSG_MAX_LENGTH=$(( ${#ITEM} + OFFSET ))
|
||||||
|
MICROCODE_MENU+=("$TAG" "$ITEM " "OFF")
|
||||||
|
done < <(echo "$amd_microcode")
|
||||||
|
|
||||||
|
microcode=$(whiptail --backtitle "Proxmox Backup Server Helper Scripts" \
|
||||||
|
--title "Current Microcode Revision: ${current_microcode}" \
|
||||||
|
--radiolist "\nSelect a microcode package to install:\n" \
|
||||||
|
16 $((MSG_MAX_LENGTH + 58)) 6 "${MICROCODE_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"') || exit
|
||||||
|
|
||||||
|
[ -z "$microcode" ] && {
|
||||||
|
whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Selected" --msgbox "No microcode package was selected." 10 68
|
||||||
|
msg_info "Exiting"
|
||||||
|
sleep 1
|
||||||
|
msg_ok "Done"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
msg_info "Downloading AMD processor microcode package $microcode"
|
||||||
|
wget -q https://ftp.debian.org/debian/pool/non-free-firmware/a/amd64-microcode/$microcode
|
||||||
|
msg_ok "Downloaded AMD processor microcode package $microcode"
|
||||||
|
|
||||||
|
msg_info "Installing $microcode (this might take a while)"
|
||||||
|
dpkg -i $microcode &>/dev/null
|
||||||
|
msg_ok "Installed $microcode"
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
rm $microcode
|
||||||
|
msg_ok "Clean up complete"
|
||||||
|
echo -e "\nA system reboot is required to apply the changes.\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check if this is a Proxmox Backup Server by verifying the presence of the datastore config.
|
||||||
|
if [ ! -f /etc/proxmox-backup/datastore.cfg ]; then
|
||||||
|
header_info
|
||||||
|
msg_error "Proxmox Backup Server not detected!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
whiptail --backtitle "Proxmox Backup Server Helper Scripts" \
|
||||||
|
--title "Proxmox Backup Server Processor Microcode" \
|
||||||
|
--yesno "This script searches for CPU microcode packages and offers the option to install them.\nProceed?" 10 68 || exit
|
||||||
|
|
||||||
|
msg_info "Checking CPU vendor"
|
||||||
|
cpu=$(lscpu | grep -oP 'Vendor ID:\s*\K\S+' | head -n 1)
|
||||||
|
if [ "$cpu" == "GenuineIntel" ]; then
|
||||||
|
msg_ok "${cpu} detected"
|
||||||
|
sleep 1
|
||||||
|
intel
|
||||||
|
elif [ "$cpu" == "AuthenticAMD" ]; then
|
||||||
|
msg_ok "${cpu} detected"
|
||||||
|
sleep 1
|
||||||
|
amd
|
||||||
|
else
|
||||||
|
msg_error "CPU vendor ${cpu} is not supported"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user