Compare commits

...

11 Commits

Author SHA1 Message Date
MickLesk b71fb0317d remove portainer update in docker ct and homeassistant 2026-08-01 21:39:15 +02:00
MickLesk aeb6b7ddc5 formatting alpine docker 2026-08-01 21:37:00 +02:00
MickLesk 3bf067e81c remove portainer from alpine-docker 2026-08-01 21:36:41 +02:00
MickLesk 2b0f5e6e2e remove comment in tools.func and remove portainer from docker setup 2026-08-01 21:36:01 +02:00
MickLesk a203fe69db remove portainer from tools.func 2026-08-01 21:35:21 +02:00
community-scripts-pr-app[bot] 382ef231d8 Update CHANGELOG.md (#16199)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-01 19:19:51 +00:00
community-scripts-pr-app[bot] de122d075f Update CHANGELOG.md (#16198)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-01 19:19:37 +00:00
Sam Heinz cffbe03b20 Update bazarr-install.sh (#16191) 2026-08-01 21:19:28 +02:00
community-scripts-pr-app[bot] f11aab9f17 Update CHANGELOG.md (#16197)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-01 19:19:15 +00:00
Sam Heinz f12751cbd9 add CLEANUPARR_CONFIG_PATH, CLEANUPARR_LOGS_PATH vars (#16193) 2026-08-01 21:19:08 +02:00
Sam Heinz 73b804bce7 fix romm missing 7z (#16194) 2026-08-01 21:18:48 +02:00
11 changed files with 63 additions and 106 deletions
+13
View File
@@ -508,6 +508,19 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details> </details>
## 2026-08-01
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Update bazarr-install.sh [@asylumexp](https://github.com/asylumexp) ([#16191](https://github.com/community-scripts/ProxmoxVE/pull/16191))
- fix romm missing 7z [@asylumexp](https://github.com/asylumexp) ([#16194](https://github.com/community-scripts/ProxmoxVE/pull/16194))
- #### 🔧 Refactor
- add CLEANUPARR_CONFIG_PATH, CLEANUPARR_LOGS_PATH vars [@asylumexp](https://github.com/asylumexp) ([#16193](https://github.com/community-scripts/ProxmoxVE/pull/16193))
## 2026-07-31 ## 2026-07-31
### 🚀 Updated Scripts ### 🚀 Updated Scripts
+13 -1
View File
@@ -33,7 +33,19 @@ function update_script() {
systemctl stop cleanuparr systemctl stop cleanuparr
msg_ok "Stopped Service" msg_ok "Stopped Service"
create_backup /opt/cleanuparr/config if [[ ! -d /etc/cleanuparr ]]; then
msg_info "Migrating Configuration to /etc/cleanuparr"
mv /opt/cleanuparr/config /etc/cleanuparr
mkdir -p /etc/cleanuparr /var/log/cleanuparr
rm -rf /etc/cleanuparr/logs
sed -i -e 's|^Environment="CONFIG_DIR=.*|Environment="CLEANUPARR_CONFIG_PATH=/etc/cleanuparr"|' \
-e '/^Environment="CLEANUPARR_CONFIG_PATH=/a Environment="CLEANUPARR_LOGS_PATH=/var/log/cleanuparr"' \
/etc/systemd/system/cleanuparr.service
systemctl daemon-reload
msg_ok "Migrated Configuration to /etc/cleanuparr"
fi
create_backup /etc/cleanuparr
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
+5 -16
View File
@@ -37,20 +37,9 @@ function update_script() {
fi fi
if docker ps -a --format '{{.Image}}' | grep -q '^portainer/portainer-ce:latest$'; then if docker ps -a --format '{{.Image}}' | grep -q '^portainer/portainer-ce:latest$'; then
msg_info "Updating Portainer" msg_warn "Portainer is now managed by a dedicated addon script and is no longer updated here."
$STD docker pull portainer/portainer-ce:latest echo -e "${TAB}Update/migrate it with:"
$STD docker stop portainer echo -e "${TAB}${TAB}${GN}bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)\"${CL}"
$STD docker rm portainer
$STD docker volume create portainer_data >/dev/null 2>&1
$STD docker run -d \
-p 8000:8000 \
-p 9443:9443 \
--name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
msg_ok "Updated Portainer"
fi fi
if docker ps -a --format '{{.Names}}' | grep -q '^portainer_agent$'; then if docker ps -a --format '{{.Names}}' | grep -q '^portainer_agent$'; then
@@ -77,5 +66,5 @@ description
msg_ok "Completed successfully!\n" 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} If you installed Portainer, access it at the following URL:${CL}" echo -e "${INFO}${YW} Portainer is available as a separate addon. Install it with:${CL}"
echo -e "${GATEWAY}${BGN}https://${IP}:9443${CL}" echo -e "${GATEWAY}${BGN}bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)\"${CL}"
+6
View File
@@ -30,6 +30,12 @@ function update_script() {
exit exit
fi fi
if [[ ! -x /usr/bin/7zz || ! -x /usr/bin/bsdtar ]]; then
msg_info "Installing Archive Tools"
$STD apt install -y 7zip-standalone libarchive-tools
msg_ok "Installed Archive Tools"
fi
NODE_VERSION="24" setup_nodejs NODE_VERSION="24" setup_nodejs
if check_for_gh_release "romm" "rommapp/romm"; then if check_for_gh_release "romm" "rommapp/romm"; then
+11 -22
View File
@@ -26,23 +26,21 @@ msg_ok "Installed Docker"
get_latest_release() { get_latest_release() {
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4 curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
} }
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose") DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose")
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent") PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION" msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
docker volume create portainer_data >/dev/null DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$STD docker run -d \ mkdir -p "$DOCKER_CONFIG"/cli-plugins
-p 8000:8000 \ curl -fsSL https://github.com/docker/compose/releases/download/"$DOCKER_COMPOSE_LATEST_VERSION"/docker-compose-linux-$(arch_resolve "x86_64" "aarch64") -o ~/.docker/cli-plugins/docker-compose
-p 9443:9443 \ chmod +x "$DOCKER_CONFIG"/cli-plugins/docker-compose
--name=portainer \ msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
--restart=always \ fi
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \ if prompt_confirm "${TAB3}Would you like to install Portainer (UI) via the community-scripts addon?" "n" 60; then
portainer/portainer-ce:latest bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)" <<<"y"
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
else else
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
@@ -57,15 +55,6 @@ else
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION" msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
fi fi
fi fi
read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p "$DOCKER_CONFIG"/cli-plugins
curl -fsSL https://github.com/docker/compose/releases/download/"$DOCKER_COMPOSE_LATEST_VERSION"/docker-compose-linux-$(arch_resolve "x86_64" "aarch64") -o ~/.docker/cli-plugins/docker-compose
chmod +x "$DOCKER_CONFIG"/cli-plugins/docker-compose
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
fi
read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
+1
View File
@@ -22,6 +22,7 @@ chmod 775 /opt/bazarr /var/lib/bazarr/
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
$STD uv venv --clear /opt/bazarr/venv --python 3.12 $STD uv venv --clear /opt/bazarr/venv --python 3.12
$STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3 $STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3
$STD uv pip install psycopg2-binary --python /opt/bazarr/venv/bin/python3
msg_ok "Installed Bazarr" msg_ok "Installed Bazarr"
msg_info "Creating Service" msg_info "Creating Service"
+3 -1
View File
@@ -16,6 +16,7 @@ update_os
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip" fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
msg_info "Creating Service" msg_info "Creating Service"
mkdir -p /etc/cleanuparr /var/log/cleanuparr
cat <<EOF >/etc/systemd/system/cleanuparr.service cat <<EOF >/etc/systemd/system/cleanuparr.service
[Unit] [Unit]
Description=Cleanuparr Daemon Description=Cleanuparr Daemon
@@ -29,7 +30,8 @@ ExecStart=/opt/cleanuparr/Cleanuparr
Restart=on-failure Restart=on-failure
RestartSec=5 RestartSec=5
Environment="PORT=11011" Environment="PORT=11011"
Environment="CONFIG_DIR=/opt/cleanuparr/config" Environment="CLEANUPARR_CONFIG_PATH=/etc/cleanuparr"
Environment="CLEANUPARR_LOGS_PATH=/var/log/cleanuparr"
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
+4 -4
View File
@@ -15,11 +15,11 @@ update_os
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent") PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
read -r -p "${TAB3}Would you like to add Portainer (UI)? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
DOCKER_PORTAINER="true" setup_docker
else
setup_docker setup_docker
if prompt_confirm "${TAB3}Would you like to install Portainer (UI) via the community-scripts addon?" "n" 60; then
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)" <<<"y"
else
read -r -p "${TAB3}Would you like to install the Portainer Agent (for remote management)? <y/N> " prompt_agent read -r -p "${TAB3}Would you like to install the Portainer Agent (for remote management)? <y/N> " prompt_agent
if [[ ${prompt_agent,,} =~ ^(y|yes)$ ]]; then if [[ ${prompt_agent,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer Agent $PORTAINER_AGENT_LATEST_VERSION" msg_info "Installing Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
+2 -1
View File
@@ -32,7 +32,8 @@ get_latest_release() {
CORE_LATEST_VERSION=$(get_latest_release "home-assistant/core") CORE_LATEST_VERSION=$(get_latest_release "home-assistant/core")
DOCKER_PORTAINER="true" setup_docker setup_docker
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)" <<<"y"
msg_info "Pulling Home Assistant $CORE_LATEST_VERSION Image" msg_info "Pulling Home Assistant $CORE_LATEST_VERSION Image"
$STD docker pull ghcr.io/home-assistant/home-assistant:stable $STD docker pull ghcr.io/home-assistant/home-assistant:stable
+2
View File
@@ -37,6 +37,8 @@ $STD apt install -y \
redis-server \ redis-server \
redis-tools \ redis-tools \
p7zip-full \ p7zip-full \
7zip-standalone \
libarchive-tools \
tzdata tzdata
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
+2 -60
View File
@@ -4599,20 +4599,17 @@ setup_composer() {
# - By default uses distro repository (docker.io) for stability # - By default uses distro repository (docker.io) for stability
# - Optionally uses official Docker repository for latest features # - Optionally uses official Docker repository for latest features
# - Detects and migrates old Docker installations # - Detects and migrates old Docker installations
# - Optional: Installs/Updates Portainer CE
# - Updates running containers interactively # - Updates running containers interactively
# - Cleans up legacy repository files # - Cleans up legacy repository files
# #
# Usage: # Usage:
# setup_docker # Uses official Docker repo (recommended) # setup_docker # Uses official Docker repo (recommended)
# USE_DOCKER_REPO=false setup_docker # Uses distro docker.io package # USE_DOCKER_REPO=false setup_docker # Uses distro docker.io package
# DOCKER_PORTAINER="true" setup_docker
# DOCKER_LOG_DRIVER="json-file" setup_docker # DOCKER_LOG_DRIVER="json-file" setup_docker
# #
# Variables: # Variables:
# USE_DOCKER_REPO - Set to "false" to use distro docker.io package # USE_DOCKER_REPO - Set to "false" to use distro docker.io package
# (default: true, uses official Docker repository) # (default: true, uses official Docker repository)
# DOCKER_PORTAINER - Install Portainer CE (optional, "true" to enable)
# DOCKER_LOG_DRIVER - Log driver (optional, default: "journald") # DOCKER_LOG_DRIVER - Log driver (optional, default: "journald")
# DOCKER_SKIP_UPDATES - Skip container update check (optional, "true" to skip) # DOCKER_SKIP_UPDATES - Skip container update check (optional, "true" to skip)
# #
@@ -4623,7 +4620,7 @@ setup_composer() {
# - Interactive per-container update prompt (Y/N, 60 s auto-no) # - Interactive per-container update prompt (Y/N, 60 s auto-no)
# - Compose-managed containers: full restart via docker compose # - Compose-managed containers: full restart via docker compose
# - Standalone containers: image pull only, no destructive stop/rm # - Standalone containers: image pull only, no destructive stop/rm
# - Portainer installation and update support # - Portainer is no longer managed here; use tools/addon/portainer.sh
# - Set DOCKER_NONINTERACTIVE=1 to skip interactive prompts (CI/unattended) # - Set DOCKER_NONINTERACTIVE=1 to skip interactive prompts (CI/unattended)
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
_docker_is_noninteractive() { _docker_is_noninteractive() {
@@ -4632,7 +4629,6 @@ _docker_is_noninteractive() {
setup_docker() { setup_docker() {
local docker_installed=false local docker_installed=false
local portainer_installed=false
local USE_DOCKER_REPO="${USE_DOCKER_REPO:-true}" local USE_DOCKER_REPO="${USE_DOCKER_REPO:-true}"
# Check if Docker is already installed # Check if Docker is already installed
@@ -4642,12 +4638,6 @@ setup_docker() {
msg_info "Docker $DOCKER_CURRENT_VERSION detected" msg_info "Docker $DOCKER_CURRENT_VERSION detected"
fi fi
# Check if Portainer is running
if docker ps --format '{{.Names}}' 2>/dev/null | grep -q '^portainer$'; then
portainer_installed=true
msg_info "Portainer container detected"
fi
# Scenario 1: Use distro repository (opt-out via USE_DOCKER_REPO=false) # Scenario 1: Use distro repository (opt-out via USE_DOCKER_REPO=false)
if [[ "$USE_DOCKER_REPO" != "true" && "$USE_DOCKER_REPO" != "TRUE" && "$USE_DOCKER_REPO" != "1" ]]; then if [[ "$USE_DOCKER_REPO" != "true" && "$USE_DOCKER_REPO" != "TRUE" && "$USE_DOCKER_REPO" != "1" ]]; then
@@ -4761,54 +4751,6 @@ EOF
systemctl enable -q --now docker systemctl enable -q --now docker
fi fi
# Portainer Management (common for both modes)
if [[ "${DOCKER_PORTAINER:-}" == "true" ]]; then
if [ "$portainer_installed" = true ]; then
msg_info "Checking for Portainer updates"
PORTAINER_CURRENT=$(docker inspect portainer --format='{{.Config.Image}}' 2>/dev/null | cut -d':' -f2)
PORTAINER_LATEST=$(curl -fsSL https://registry.hub.docker.com/v2/repositories/portainer/portainer-ce/tags?page_size=100 | grep -oP '"name":"\K[0-9]+\.[0-9]+\.[0-9]+"' | head -1 | tr -d '"')
if [ "$PORTAINER_CURRENT" != "$PORTAINER_LATEST" ]; then
if _docker_is_noninteractive; then
msg_info "Skipping Portainer update prompt (non-interactive)"
else
read -r -p "${TAB3}Update Portainer $PORTAINER_CURRENT$PORTAINER_LATEST? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Updating Portainer"
docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest
docker run -d \
-p 9000:9000 \
-p 9443:9443 \
--name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
msg_ok "Updated Portainer to $PORTAINER_LATEST"
fi
fi
else
msg_ok "Portainer is up-to-date ($PORTAINER_CURRENT)"
fi
else
msg_info "Installing Portainer"
docker volume create portainer_data
docker run -d \
-p 9000:9000 \
-p 9443:9443 \
--name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
LOCAL_IP=$(hostname -I | awk '{print $1}')
msg_ok "Installed Portainer (http://${LOCAL_IP}:9000)"
fi
fi
# Container Update Check # Container Update Check
# - Skipped entirely when running unattended / non-interactive # - Skipped entirely when running unattended / non-interactive
# - Compose-managed containers: offered via Y/N → docker compose pull + up -d # - Compose-managed containers: offered via Y/N → docker compose pull + up -d
@@ -4824,7 +4766,7 @@ EOF
name=$(echo "$line" | awk '{print $1}') name=$(echo "$line" | awk '{print $1}')
image=$(echo "$line" | awk '{print $2}') image=$(echo "$line" | awk '{print $2}')
# Portainer containers are handled by the dedicated block above # Portainer is managed by its own addon script, not this generic loop
[[ "$name" == "portainer" || "$name" == "portainer_agent" ]] && continue [[ "$name" == "portainer" || "$name" == "portainer_agent" ]] && continue
current_digest=$(docker inspect "$name" --format='{{.Image}}' 2>/dev/null | cut -d':' -f2 | cut -c1-12) current_digest=$(docker inspect "$name" --format='{{.Image}}' 2>/dev/null | cut -d':' -f2 | cut -c1-12)