mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-08-06 21:03:25 +02:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3a9aa287b1 | |||
| a92cba7525 |
@@ -518,24 +518,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-08-06
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- paperless: change update abort message (endless spinner) [@MickLesk](https://github.com/MickLesk) ([#16299](https://github.com/community-scripts/ProxmoxVE/pull/16299))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Vikunja: remove version pin, v2.5.0 fixes the systemd syscall filter crash [@MickLesk](https://github.com/MickLesk) ([#16300](https://github.com/community-scripts/ProxmoxVE/pull/16300))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- build.func: filter templates by host architecture during search [@MickLesk](https://github.com/MickLesk) ([#16302](https://github.com/community-scripts/ProxmoxVE/pull/16302))
|
||||
|
||||
## 2026-08-05
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
@@ -42,20 +42,6 @@ function update_script() {
|
||||
echo -e "${TAB}${TAB}${GN}bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)\"${CL}"
|
||||
fi
|
||||
|
||||
if docker ps -a --format '{{.Names}}' | grep -q '^portainer_agent$'; then
|
||||
msg_info "Updating Portainer Agent"
|
||||
$STD docker pull portainer/agent:latest
|
||||
$STD docker stop portainer_agent
|
||||
$STD docker rm portainer_agent
|
||||
$STD docker run -d \
|
||||
-p 9001:9001 \
|
||||
--name=portainer_agent \
|
||||
--restart=always \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
|
||||
portainer/agent
|
||||
msg_ok "Updated Portainer Agent"
|
||||
fi
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ function update_script() {
|
||||
read -rp "Do you want to continue with the update? (y/N): " MIGRATE
|
||||
echo
|
||||
if [[ ! "$MIGRATE" =~ ^[Yy]$ ]]; then
|
||||
msg_custom "⚠️" "Update aborted. Decrypt all documents before upgrading to v3."
|
||||
msg_info "Update aborted. Decrypt all documents before upgrading to v3."
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
+3
-2
@@ -46,7 +46,8 @@ function update_script() {
|
||||
[[ "$CONFIRM2" =~ ^[yY]$ ]] || exit 0
|
||||
fi
|
||||
|
||||
if check_for_gh_release "vikunja" "go-vikunja/vikunja"; then
|
||||
RELEASE="v2.3.0"
|
||||
if check_for_gh_release "vikunja" "go-vikunja/vikunja" "${RELEASE}" "v2.4.0 is killed at startup by the systemd SystemCallFilter shipped in the .deb (upstream go-vikunja/vikunja#3252); pinned until a fixed release is out"; then
|
||||
echo
|
||||
msg_warn "The package update may include config file changes."
|
||||
echo -e "${TAB}${YW}How do you want to handle /etc/vikunja/config.yml?${CL}"
|
||||
@@ -65,7 +66,7 @@ function update_script() {
|
||||
systemctl stop vikunja
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary" "latest" "" "vikunja-*-$(arch_resolve "x86_64" "aarch64").deb"
|
||||
fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary" "${RELEASE}" "" "vikunja-*-$(arch_resolve "x86_64" "aarch64").deb"
|
||||
$STD systemctl daemon-reload
|
||||
|
||||
msg_info "Starting Service"
|
||||
|
||||
@@ -13,7 +13,8 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary" "latest" "" "vikunja-*-$(arch_resolve "x86_64" "aarch64").deb"
|
||||
RELEASE="v2.3.0"
|
||||
fetch_and_deploy_gh_release "vikunja" "go-vikunja/vikunja" "binary" "${RELEASE}" "" "vikunja-*-$(arch_resolve "x86_64" "aarch64").deb"
|
||||
|
||||
msg_info "Setting up Vikunja"
|
||||
sed -i 's|^# \(service:\)|\1|' /etc/vikunja/config.yml
|
||||
|
||||
+3
-8
@@ -922,10 +922,8 @@ choose_and_set_storage_for_file() {
|
||||
_list_os_versions() {
|
||||
local ostype="${1:-}"
|
||||
[[ -n "$ostype" ]] || return 0
|
||||
local arch
|
||||
arch="$(dpkg --print-architecture 2>/dev/null || echo amd64)"
|
||||
pveam available -section system 2>/dev/null |
|
||||
grep -E "_${arch}\.(tar\.zst|tar\.xz|tar\.gz)$" |
|
||||
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
|
||||
awk '{print $2}' |
|
||||
sed -nE "s/^${ostype}-([0-9]+(\.[0-9]+)?).*/\1/p" |
|
||||
sort -u -V || true
|
||||
@@ -938,10 +936,8 @@ _list_os_versions() {
|
||||
_list_templates() {
|
||||
local search="${1:-}" pattern="${2:-}"
|
||||
[[ -n "$search" ]] || return 0
|
||||
local arch
|
||||
arch="$(dpkg --print-architecture 2>/dev/null || echo amd64)"
|
||||
pveam available -section system 2>/dev/null |
|
||||
grep -E "_${arch}\.(tar\.zst|tar\.xz|tar\.gz)$" |
|
||||
grep -E '\.(tar\.zst|tar\.xz|tar\.gz)$' |
|
||||
awk '{print $2}' |
|
||||
grep -E "^${search}.*${pattern}" |
|
||||
sort -t - -k 2 -V || true
|
||||
@@ -6725,8 +6721,7 @@ create_lxc_container() {
|
||||
# Step 1: Check local templates first (instant)
|
||||
mapfile -t LOCAL_TEMPLATES < <(
|
||||
pveam list "$TEMPLATE_STORAGE" 2>/dev/null |
|
||||
awk -v search="${TEMPLATE_SEARCH}" -v pattern="${TEMPLATE_PATTERN}" -v arch="${ARCH}" \
|
||||
'$1 ~ search && $1 ~ pattern && $1 ~ ("_" arch "\\.(tar\\.zst|tar\\.xz|tar\\.gz)$") {print $1}' |
|
||||
awk -v search="${TEMPLATE_SEARCH}" -v pattern="${TEMPLATE_PATTERN}" '$1 ~ search && $1 ~ pattern {print $1}' |
|
||||
sed 's|.*/||' | sort -t - -k 2 -V
|
||||
)
|
||||
|
||||
|
||||
+5
-32
@@ -4801,8 +4801,8 @@ EOF
|
||||
|
||||
# Container Update Check
|
||||
# - Skipped entirely when running unattended / non-interactive
|
||||
# - Compose-managed containers: offered via Y/N → docker compose pull + up -d
|
||||
# - Standalone containers: offered via Y/N → image pull only (no stop/rm)
|
||||
# - Lists containers with a newer image available and the command to update
|
||||
# them; does not pull/recreate anything itself
|
||||
if [ "$docker_installed" = true ] && ! _docker_is_noninteractive; then
|
||||
msg_info "Checking for container updates"
|
||||
|
||||
@@ -4840,41 +4840,14 @@ EOF
|
||||
if [[ ${#compose_updates[@]} -eq 0 && ${#standalone_updates[@]} -eq 0 ]]; then
|
||||
msg_ok "All containers are up-to-date"
|
||||
else
|
||||
local reply
|
||||
msg_warn "Updates available (not applied automatically):"
|
||||
for entry in "${compose_updates[@]}"; do
|
||||
IFS='|' read -r name image compose_workdir compose_service <<<"$entry"
|
||||
reply=""
|
||||
if read -r -t 60 -p "${TAB3}Update ${name} (${image}) via Compose? <y/N> (auto-no in 60s): " reply </dev/tty; then
|
||||
echo ""
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
if [[ "${reply,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Updating $name"
|
||||
if (cd "$compose_workdir" && $STD docker compose pull "$compose_service" && $STD docker compose up -d "$compose_service"); then
|
||||
msg_ok "Updated $name"
|
||||
else
|
||||
msg_warn "Could not update $name — try manually in $compose_workdir"
|
||||
fi
|
||||
fi
|
||||
echo -e "${TAB3}${name} (${image}) — update via: cd ${compose_workdir} && docker compose pull ${compose_service} && docker compose up -d ${compose_service}"
|
||||
done
|
||||
|
||||
for entry in "${standalone_updates[@]}"; do
|
||||
IFS='|' read -r name image <<<"$entry"
|
||||
reply=""
|
||||
if read -r -t 60 -p "${TAB3}Pull new image for ${name} (${image})? <y/N> (auto-no in 60s): " reply </dev/tty; then
|
||||
echo ""
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
if [[ "${reply,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Pulling new image for $name"
|
||||
if $STD docker pull "$image"; then
|
||||
msg_ok "New image available for $name — recreate the container to apply the update"
|
||||
else
|
||||
msg_warn "Failed to pull image for $name"
|
||||
fi
|
||||
fi
|
||||
echo -e "${TAB3}${name} (${image}) — update via: docker pull ${image} && docker restart ${name}"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -49,6 +49,22 @@ function uninstall() {
|
||||
msg_ok "${APP} has been uninstalled"
|
||||
}
|
||||
|
||||
# ==============================================================================
|
||||
# UPDATE SCRIPT HELPER
|
||||
# ==============================================================================
|
||||
function ensure_update_script() {
|
||||
[[ -f /usr/local/bin/update_portainer ]] && return 0
|
||||
|
||||
msg_info "Creating update script"
|
||||
cat <<'UPDATEEOF' >/usr/local/bin/update_portainer
|
||||
#!/usr/bin/env bash
|
||||
# Portainer Update Script
|
||||
type=update bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)"
|
||||
UPDATEEOF
|
||||
chmod +x /usr/local/bin/update_portainer
|
||||
msg_ok "Created update script (/usr/local/bin/update_portainer)"
|
||||
}
|
||||
|
||||
# ==============================================================================
|
||||
# UPDATE
|
||||
# ==============================================================================
|
||||
@@ -62,6 +78,8 @@ function update() {
|
||||
$STD docker compose up -d --remove-orphans
|
||||
msg_ok "Restarted ${APP}"
|
||||
|
||||
ensure_update_script
|
||||
|
||||
msg_ok "Updated successfully"
|
||||
exit
|
||||
}
|
||||
@@ -115,15 +133,7 @@ function install() {
|
||||
$STD docker compose up -d
|
||||
msg_ok "Started ${APP}"
|
||||
|
||||
# Create update script
|
||||
msg_info "Creating update script"
|
||||
cat <<'UPDATEEOF' >/usr/local/bin/update_portainer
|
||||
#!/usr/bin/env bash
|
||||
# Portainer Update Script
|
||||
type=update bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)"
|
||||
UPDATEEOF
|
||||
chmod +x /usr/local/bin/update_portainer
|
||||
msg_ok "Created update script (/usr/local/bin/update_portainer)"
|
||||
ensure_update_script
|
||||
|
||||
echo ""
|
||||
msg_ok "${APP} is reachable at: ${BL}https://${LOCAL_IP}:${DEFAULT_PORT}${CL}"
|
||||
@@ -150,6 +160,9 @@ fi
|
||||
header_info
|
||||
get_lxc_ip
|
||||
|
||||
check_docker
|
||||
check_existing_container
|
||||
|
||||
# Check if already installed
|
||||
if [[ -f "$COMPOSE_FILE" ]]; then
|
||||
msg_warn "${APP} is already installed."
|
||||
|
||||
@@ -125,6 +125,12 @@ EOF
|
||||
no) msg_error "Selected no to Correcting Proxmox VE Sources" ;;
|
||||
esac
|
||||
|
||||
if [[ "$(dpkg --print-architecture 2>/dev/null)" == "arm64" ]]; then
|
||||
msg_ok "ARM64 detected - skipping Proxmox repository setup"
|
||||
post_routines_common
|
||||
return
|
||||
fi
|
||||
|
||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PVE-ENTERPRISE" --menu "The 'pve-enterprise' repository is only available to users who have purchased a Proxmox VE subscription.\n \nDisable 'pve-enterprise' repository?" 14 58 2 \
|
||||
"yes" " " \
|
||||
"no" " " 3>&2 2>&1 1>&3)
|
||||
@@ -282,6 +288,12 @@ EOF
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ "$(dpkg --print-architecture 2>/dev/null)" == "arm64" ]]; then
|
||||
msg_ok "ARM64 detected - skipping Proxmox repository setup"
|
||||
post_routines_common
|
||||
return
|
||||
fi
|
||||
|
||||
# ---- PVE-ENTERPRISE ----
|
||||
if component_exists_in_sources "pve-enterprise"; then
|
||||
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" \
|
||||
|
||||
Reference in New Issue
Block a user