mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			28 Commits
		
	
	
		
			2025-09-09
			...
			2025-09-10
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					9ed2507bdc | ||
| 
						 | 
					c617870c2b | ||
| 
						 | 
					eb71d21ea3 | ||
| 
						 | 
					762452b2b3 | ||
| 
						 | 
					31cd3e3119 | ||
| 
						 | 
					c25dba9212 | ||
| 
						 | 
					52cefe4a00 | ||
| 
						 | 
					7b8fcab242 | ||
| 
						 | 
					b733e8b5ea | ||
| 
						 | 
					4a4e67a3cf | ||
| 
						 | 
					b00feea00d | ||
| 
						 | 
					c250cec418 | ||
| 
						 | 
					a0af0f5196 | ||
| 
						 | 
					2f0b6e10ab | ||
| 
						 | 
					a41364d91d | ||
| 
						 | 
					e580a5d9c1 | ||
| 
						 | 
					9d059b2a13 | ||
| 
						 | 
					6e32eebdf0 | ||
| 
						 | 
					7f3ebd4296 | ||
| 
						 | 
					0c4d55bd78 | ||
| 
						 | 
					8f05be3f6b | ||
| 
						 | 
					e06cd4b28c | ||
| 
						 | 
					b9242b3232 | ||
| 
						 | 
					63f6d772ea | ||
| 
						 | 
					652df1f370 | ||
| 
						 | 
					f4b5baf308 | ||
| 
						 | 
					cc36fd5434 | ||
| 
						 | 
					3e182978ad | 
							
								
								
									
										36
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -10,8 +10,44 @@
 | 
			
		||||
> [!CAUTION]
 | 
			
		||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
 | 
			
		||||
 | 
			
		||||
## 2025-09-11
 | 
			
		||||
 | 
			
		||||
## 2025-09-10
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Autocaliweb ([#7515](https://github.com/community-scripts/ProxmoxVE/pull/7515))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Palmr: fix #7556 [@vhsdream](https://github.com/vhsdream) ([#7558](https://github.com/community-scripts/ProxmoxVE/pull/7558))
 | 
			
		||||
    - Wizarr: Fix DB migrations [@vhsdream](https://github.com/vhsdream) ([#7552](https://github.com/community-scripts/ProxmoxVE/pull/7552))
 | 
			
		||||
    - fix: pmg - split no-nag script into separate config files [@MickLesk](https://github.com/MickLesk) ([#7540](https://github.com/community-scripts/ProxmoxVE/pull/7540))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Update Palmr to Support new v3.2.1 [@vhsdream](https://github.com/vhsdream) ([#7526](https://github.com/community-scripts/ProxmoxVE/pull/7526))
 | 
			
		||||
    - add external installer warnings and user confirmation in several LXC's [@MickLesk](https://github.com/MickLesk) ([#7539](https://github.com/community-scripts/ProxmoxVE/pull/7539))
 | 
			
		||||
    - Booklore: Add Bookdrop location to .env [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7533](https://github.com/community-scripts/ProxmoxVE/pull/7533))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor: audiobookshelf [@MickLesk](https://github.com/MickLesk) ([#7538](https://github.com/community-scripts/ProxmoxVE/pull/7538))
 | 
			
		||||
    - Refactor: Blocky [@MickLesk](https://github.com/MickLesk) ([#7537](https://github.com/community-scripts/ProxmoxVE/pull/7537))
 | 
			
		||||
    - Improve npmplus credential retrieval and messaging [@MickLesk](https://github.com/MickLesk) ([#7532](https://github.com/community-scripts/ProxmoxVE/pull/7532))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - Remove Pingvin Share [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7553](https://github.com/community-scripts/ProxmoxVE/pull/7553))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - set updateable to true for several lxc JSON-configs [@MickLesk](https://github.com/MickLesk) ([#7534](https://github.com/community-scripts/ProxmoxVE/pull/7534))
 | 
			
		||||
 | 
			
		||||
## 2025-09-09
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="audiobookshelf"
 | 
			
		||||
var_tags="${var_tags:-podcast;audiobook}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_disk="${var_disk:-5}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -20,15 +20,19 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -f /etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    echo "This application receives updates through the APT package manager."
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /etc/default/audiobookshelf ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  $STD apt-get update
 | 
			
		||||
  $STD apt-get -y upgrade
 | 
			
		||||
  msg_ok "Updated $APP LXC"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -38,4 +42,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:13378${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:13378${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										83
									
								
								ct/autocaliweb.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								ct/autocaliweb.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/gelbphoenix/autocaliweb
 | 
			
		||||
 | 
			
		||||
APP="Autocaliweb"
 | 
			
		||||
var_tags="${var_tags:-ebooks}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/autocaliweb ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  setup_uv
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/gelbphoenix/autocaliweb/releases/latest | jq '.tag_name' | sed 's/^"v//;s/"$//')
 | 
			
		||||
  if check_for_gh_release "autocaliweb" "gelbphoenix/autocaliweb"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
 | 
			
		||||
    msg_ok "Stopped Services"
 | 
			
		||||
 | 
			
		||||
    INSTALL_DIR="/opt/autocaliweb"
 | 
			
		||||
    export VIRTUAL_ENV="${INSTALL_DIR}/venv"
 | 
			
		||||
    $STD tar -cf ~/autocaliweb_bkp.tar "$INSTALL_DIR"/{metadata_change_logs,dirs.json,.env,scripts/ingest_watcher.sh,scripts/auto_zipper_wrapper.sh,scripts/metadata_change_detector_wrapper.sh}
 | 
			
		||||
    fetch_and_deploy_gh_release "autocaliweb" "gelbphoenix/autocaliweb" "tarball" "latest" "/opt/autocaliweb"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd "$INSTALL_DIR"
 | 
			
		||||
    if [[ ! -d "$VIRTUAL_ENV" ]]; then
 | 
			
		||||
      $STD uv venv "$VIRTUAL_ENV"
 | 
			
		||||
    fi
 | 
			
		||||
    $STD uv sync --all-extras --active
 | 
			
		||||
    cd "$INSTALL_DIR"/koreader/plugins
 | 
			
		||||
    PLUGIN_DIGEST="$(find acwsync.koplugin -type f -name "*.lua" -o -name "*.json" | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)"
 | 
			
		||||
    echo "Plugin files digest: $PLUGIN_DIGEST" >acwsync.koplugin/${PLUGIN_DIGEST}.digest
 | 
			
		||||
    echo "Build date: $(date)" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
 | 
			
		||||
    echo "Files included:" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
 | 
			
		||||
    $STD zip -r koplugin.zip acwsync.koplugin/
 | 
			
		||||
    cp -r koplugin.zip "$INSTALL_DIR"/cps/static
 | 
			
		||||
    mkdir -p "$INSTALL_DIR"/metadata_temp
 | 
			
		||||
    $STD tar -xf ~/autocaliweb_bkp.tar --directory /
 | 
			
		||||
    KEPUB_VERSION="$(/usr/bin/kepubify --version)"
 | 
			
		||||
    CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
 | 
			
		||||
    echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
 | 
			
		||||
    echo "${CALIBRE_RELEASE#v}" >/"$INSTALL_DIR"/CALIBRE_RELEASE
 | 
			
		||||
    sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
 | 
			
		||||
    chown -R acw:acw "$INSTALL_DIR"
 | 
			
		||||
    rm ~/autocaliweb_bkp.tar
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl start autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}"
 | 
			
		||||
							
								
								
									
										46
									
								
								ct/blocky.sh
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								ct/blocky.sh
									
									
									
									
									
								
							@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://0xerr0r.github.io/blocky/latest/
 | 
			
		||||
# Source: https://0xerr0r.github.io/blocky
 | 
			
		||||
 | 
			
		||||
APP="Blocky"
 | 
			
		||||
var_tags="${var_tags:-adblock}"
 | 
			
		||||
@@ -20,18 +20,38 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /var ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating $APP LXC"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
    msg_ok "Updated $APP LXC"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/blocky ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if check_for_gh_release "blocky" "0xERR0R/blocky"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop blocky
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Backup Config"
 | 
			
		||||
    mv /opt/blocky/config.yml /opt/config.yml
 | 
			
		||||
    msg_ok "Backed Up Config"
 | 
			
		||||
 | 
			
		||||
    msg_info "Removing Old Version"
 | 
			
		||||
    rm -rf /opt/blocky
 | 
			
		||||
    msg_ok "Removed Old Version"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restore Config"
 | 
			
		||||
    mv /opt/config.yml /opt/blocky/config.yml
 | 
			
		||||
    msg_ok "Restored Config"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start blocky
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -41,4 +61,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4000${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/autocaliweb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/autocaliweb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___         __                   ___               __  
 | 
			
		||||
   /   | __  __/ /_____  _________ _/ (_)      _____  / /_ 
 | 
			
		||||
  / /| |/ / / / __/ __ \/ ___/ __ `/ / / | /| / / _ \/ __ \
 | 
			
		||||
 / ___ / /_/ / /_/ /_/ / /__/ /_/ / / /| |/ |/ /  __/ /_/ /
 | 
			
		||||
/_/  |_\__,_/\__/\____/\___/\__,_/_/_/ |__/|__/\___/_.___/ 
 | 
			
		||||
                                                           
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
    ____  _                   _     
 | 
			
		||||
   / __ \(_)___  ____ __   __(_)___ 
 | 
			
		||||
  / /_/ / / __ \/ __ `/ | / / / __ \
 | 
			
		||||
 / ____/ / / / / /_/ /| |/ / / / / /
 | 
			
		||||
/_/   /_/_/ /_/\__, / |___/_/_/ /_/ 
 | 
			
		||||
              /____/                
 | 
			
		||||
@@ -42,9 +42,9 @@ function update_script() {
 | 
			
		||||
    cd /opt/palmr/apps/server
 | 
			
		||||
    mv /opt/palmr.env /opt/palmr/apps/server/.env
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    $STD pnpm dlx prisma generate
 | 
			
		||||
    $STD pnpm dlx prisma migrate deploy
 | 
			
		||||
    $STD pnpm dlx prisma db push
 | 
			
		||||
    $STD npx prisma generate
 | 
			
		||||
    $STD npx prisma migrate deploy
 | 
			
		||||
    $STD npx prisma db push
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
 | 
			
		||||
    cd /opt/palmr/apps/web
 | 
			
		||||
 
 | 
			
		||||
@@ -1,73 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://stonith404.github.io/pingvin-share/introduction
 | 
			
		||||
 | 
			
		||||
APP="Pingvin"
 | 
			
		||||
var_tags="${var_tags:-sharing}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/pingvin-share ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/pingvin_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/pingvin_version.txt)" ]]; then
 | 
			
		||||
 | 
			
		||||
    msg_info "Stopping Pingvin Share"
 | 
			
		||||
    systemctl stop pm2-root.service
 | 
			
		||||
    msg_ok "Stopped Pingvin Share"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Pingvin Share to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    cp -rf pingvin-share-${RELEASE}/* /opt/pingvin-share
 | 
			
		||||
    cd /opt/pingvin-share
 | 
			
		||||
    cd backend
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    cd ../frontend
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    echo "${RELEASE}" >"/opt/pingvin_version.txt"
 | 
			
		||||
    rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/pingvin-share-${RELEASE}
 | 
			
		||||
    msg_ok "Updated Pingvin Share to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Pingvin Share"
 | 
			
		||||
    systemctl start pm2-root.service
 | 
			
		||||
    msg_ok "Started Pingvin Share"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
    exit
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. Pingvin Share is already at v${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
							
								
								
									
										11
									
								
								ct/wizarr.sh
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								ct/wizarr.sh
									
									
									
									
									
								
							@@ -39,20 +39,23 @@ function update_script() {
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    BACKUP_FILE="/opt/wizarr_backup_$(date +%F).tar.gz"
 | 
			
		||||
    $STD tar -czf "$BACKUP_FILE" /opt/wizarr/{.env,start.sh} /opt/wizarr/database/ &>/dev/null
 | 
			
		||||
    rm -rf /opt/wizarr/migrations/versions/*
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    cd /opt/wizarr
 | 
			
		||||
    $STD /usr/local/bin/uv lock
 | 
			
		||||
    $STD /usr/local/bin/uv sync --locked
 | 
			
		||||
    $STD /usr/local/bin/uv run pybabel compile -d app/translations
 | 
			
		||||
    $STD /usr/local/bin/uv sync --frozen
 | 
			
		||||
    $STD /usr/local/bin/uv run --frozen pybabel compile -d app/translations
 | 
			
		||||
    $STD npm --prefix app/static install
 | 
			
		||||
    $STD npm --prefix app/static run build:css
 | 
			
		||||
    mkdir -p ./.cache
 | 
			
		||||
    $STD tar -xf "$BACKUP_FILE" --directory=/
 | 
			
		||||
    $STD /usr/local/bin/uv run flask db upgrade
 | 
			
		||||
    $STD /usr/local/bin/uv run --frozen flask db upgrade
 | 
			
		||||
    if ! grep -q 'frozen' /opt/wizarr/start.sh; then
 | 
			
		||||
      sed -i 's/run/& --frozen/' /opt/wizarr/start.sh
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-19",
 | 
			
		||||
  "type": "addon",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": "https://docs.netbird.io/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "addon",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": "https://tailscale.com/kb/1017/install",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3142,
 | 
			
		||||
  "documentation": "https://www.unix-ag.uni-kl.de/~bloch/acng/html/index.html",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 13378,
 | 
			
		||||
  "documentation": "https://www.audiobookshelf.org/guides/",
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "hdd": 5,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								frontend/public/json/autocaliweb.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								frontend/public/json/autocaliweb.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Autocaliweb",
 | 
			
		||||
  "slug": "autocaliweb",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    13
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-09-10",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8083,
 | 
			
		||||
  "documentation": "https://github.com/gelbphoenix/autocaliweb/wiki",
 | 
			
		||||
  "config_path": "/etc/autocaliweb",
 | 
			
		||||
  "website": "https://github.com/gelbphoenix/autocaliweb",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/autocaliweb.webp",
 | 
			
		||||
  "description": "A modern web management system for eBooks, eComics and PDFs",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/autocaliweb.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 6,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": "admin",
 | 
			
		||||
    "password": "admin123"
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-01-20",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8090,
 | 
			
		||||
  "documentation": "https://beszel.dev/guide/what-is-beszel",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 4000,
 | 
			
		||||
  "documentation": "https://0xerr0r.github.io/blocky/latest/configuration/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-05-22",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": "https://github.com/favonia/cloudflare-ddns/blob/main/README.markdown",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": "https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 4000,
 | 
			
		||||
  "documentation": "https://dashy.to/docs",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": true,
 | 
			
		||||
  "interface_port": 80,
 | 
			
		||||
  "documentation": "https://github.com/dresden-elektronik/deconz-rest-plugin/wiki",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8112,
 | 
			
		||||
  "documentation": "https://www.deluge-torrent.org/userguide/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8083,
 | 
			
		||||
  "documentation": "https://fhem.de/#Documentation",
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-06-18",
 | 
			
		||||
  "type": "addon",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8080,
 | 
			
		||||
  "documentation": "https://github.com/gtsteffaniak/filebrowser/wiki/Getting-Started",
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "addon",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8080,
 | 
			
		||||
  "documentation": null,
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8581,
 | 
			
		||||
  "documentation": "https://github.com/homebridge/homebridge/wiki",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": true,
 | 
			
		||||
  "interface_port": 8090,
 | 
			
		||||
  "documentation": "https://github.com/awawa-dev/HyperHDR/wiki",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8086,
 | 
			
		||||
  "documentation": "https://docs.influxdata.com/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-07-29",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 80,
 | 
			
		||||
  "documentation": "https://doc.jeedom.com",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-12-26",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8080,
 | 
			
		||||
  "documentation": "https://www.jenkins.io/doc/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 5299,
 | 
			
		||||
  "documentation": "https://lazylibrarian.gitlab.io/lazylibrarian.gitlab.io/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-08-06",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 17170,
 | 
			
		||||
  "documentation": "https://github.com/lldap/lldap/blob/main/README.md",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3306,
 | 
			
		||||
  "documentation": "https://github.com/community-scripts/ProxmoxVE/discussions/192",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-01-30",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8065,
 | 
			
		||||
  "documentation": "https://docs.mattermost.com/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-18",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 27017,
 | 
			
		||||
  "documentation": "https://www.mongodb.com/docs/manual/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": "https://mosquitto.org/documentation/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-03-13",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 81,
 | 
			
		||||
  "documentation": "https://github.com/ZoeyVid/NPMplus/blob/develop/README.md",
 | 
			
		||||
@@ -39,7 +39,7 @@
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": "root",
 | 
			
		||||
    "username": "admin@example.org",
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
@@ -52,7 +52,7 @@
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Application credentials: `cat /opt/.npm_pwd`",
 | 
			
		||||
      "text": "Application credentials: `cat /opt/.npm_pwd` - if file not exist in LXC check docker logs for password with `docker logs npmplus`",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 80,
 | 
			
		||||
  "documentation": "https://docs.ntfy.sh/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 80,
 | 
			
		||||
  "documentation": "https://docs.openmediavault.org/en/stable/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8443,
 | 
			
		||||
  "documentation": "https://www.openhab.org/docs/",
 | 
			
		||||
 
 | 
			
		||||
@@ -33,11 +33,7 @@
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "This LXC is very memory-hungry when updating; it requires at least 6GB RAM, but RAM may be reduced to as low as 2GB when running normally",
 | 
			
		||||
      "type": "warning"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "To use a bind mount for storage, create symlinks to your mount for both `uploads` and `temp-uploads` in `/opt/palmr_data`",
 | 
			
		||||
      "text": "To use a bind mount for storage, create symlinks to your mount for both `uploads` and `temp-uploads` in `/opt/palmr_data`, and uncomment `CUSTOM_PATH` to add the path to your bind mount",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": "https://github.com/leiweibau/Pi.Alert/blob/main/README.md",
 | 
			
		||||
@@ -31,10 +31,5 @@
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
 | 
			
		||||
      "type": "warning"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -35,10 +35,6 @@
 | 
			
		||||
    {
 | 
			
		||||
      "text": "With Privileged/Unprivileged Hardware Acceleration Support",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
 | 
			
		||||
      "type": "warning"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,52 +1,48 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Podman Home Assistant Container",
 | 
			
		||||
    "slug": "podman-homeassistant",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        16
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2024-04-29",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": true,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 8123,
 | 
			
		||||
    "documentation": "https://www.home-assistant.io/docs/",
 | 
			
		||||
    "website": "https://www.home-assistant.io/",
 | 
			
		||||
    "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
 | 
			
		||||
    "config_path": "/var/lib/containers/storage/volumes/hass_config/_data",
 | 
			
		||||
    "description": "A standalone Podman container-based installation of Home Assistant Core means that the Home Assistant Core software is installed inside a container managed by Podman, separate from the host operating system. This provides a flexible and scalable solution for running the software, as the container can be easily moved between host systems or isolated from other processes for security. Podman is a popular open-source tool for managing containers that is similar to Docker, but designed for use on Linux systems without a daemon.\r\n\r\n\ud83d\udec8 If the LXC is created Privileged, the script will automatically set up USB passthrough.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/podman-homeassistant.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 2,
 | 
			
		||||
                "ram": 2048,
 | 
			
		||||
                "hdd": 16,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
  "name": "Podman Home Assistant Container",
 | 
			
		||||
  "slug": "podman-homeassistant",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    16
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-04-29",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8123,
 | 
			
		||||
  "documentation": "https://www.home-assistant.io/docs/",
 | 
			
		||||
  "website": "https://www.home-assistant.io/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
 | 
			
		||||
  "config_path": "/var/lib/containers/storage/volumes/hass_config/_data",
 | 
			
		||||
  "description": "A standalone Podman container-based installation of Home Assistant Core means that the Home Assistant Core software is installed inside a container managed by Podman, separate from the host operating system. This provides a flexible and scalable solution for running the software, as the container can be easily moved between host systems or isolated from other processes for security. Podman is a popular open-source tool for managing containers that is similar to Docker, but designed for use on Linux systems without a daemon.\r\n\r\n\ud83d\udec8 If the LXC is created Privileged, the script will automatically set up USB passthrough.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/podman-homeassistant.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 16,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
 | 
			
		||||
      "type": "warning"
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Options to Install Portainer or Portainer Agent",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
    {
 | 
			
		||||
      "text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Options to Install Portainer or Portainer Agent",
 | 
			
		||||
      "type": "warning"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-02-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 5232,
 | 
			
		||||
  "documentation": "https://radicale.org/master.html#documentation-1",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": "https://oss.oetiker.ch/smokeping/doc/index.en.html",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8384,
 | 
			
		||||
  "documentation": "https://docs.syncthing.net/",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8181,
 | 
			
		||||
  "documentation": "https://github.com/Tautulli/Tautulli/wiki",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8443,
 | 
			
		||||
  "documentation": null,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,119 @@
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wizarrrr/wizarr",
 | 
			
		||||
    "version": "v2025.9.2",
 | 
			
		||||
    "date": "2025-09-10T22:36:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rcourtman/Pulse",
 | 
			
		||||
    "version": "v4.14.0",
 | 
			
		||||
    "date": "2025-09-05T18:28:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.13.3",
 | 
			
		||||
    "date": "2025-09-08T21:45:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "esphome/esphome",
 | 
			
		||||
    "version": "2025.8.4",
 | 
			
		||||
    "date": "2025-09-10T05:03:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TandoorRecipes/recipes",
 | 
			
		||||
    "version": "2.2.0",
 | 
			
		||||
    "date": "2025-09-10T18:36:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "msgbyte/tianji",
 | 
			
		||||
    "version": "v1.24.28",
 | 
			
		||||
    "date": "2025-09-10T16:58:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "YunoHost/yunohost",
 | 
			
		||||
    "version": "debian/12.1.22",
 | 
			
		||||
    "date": "2025-09-10T16:40:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fuma-nama/fumadocs",
 | 
			
		||||
    "version": "fumadocs-mdx@11.9.1",
 | 
			
		||||
    "date": "2025-09-10T15:26:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "linuxserver/Heimdall",
 | 
			
		||||
    "version": "v2.7.5",
 | 
			
		||||
    "date": "2025-09-10T15:16:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v25.3",
 | 
			
		||||
    "date": "2025-09-01T09:47:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r7.0.25-alpha0",
 | 
			
		||||
    "date": "2025-09-10T12:13:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "aceberg/WatchYourLAN",
 | 
			
		||||
    "version": "2.1.4",
 | 
			
		||||
    "date": "2025-09-10T12:08:09Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "glpi-project/glpi",
 | 
			
		||||
    "version": "10.0.20",
 | 
			
		||||
    "date": "2025-09-10T12:00:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "open-webui/open-webui",
 | 
			
		||||
    "version": "v0.6.28",
 | 
			
		||||
    "date": "2025-09-10T10:53:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mattermost/mattermost",
 | 
			
		||||
    "version": "v10.5.11",
 | 
			
		||||
    "date": "2025-09-10T07:28:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cockpit-project/cockpit",
 | 
			
		||||
    "version": "345.1",
 | 
			
		||||
    "date": "2025-09-10T07:10:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v4.1.3",
 | 
			
		||||
    "date": "2025-09-08T13:36:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.22.2451",
 | 
			
		||||
    "date": "2025-09-10T05:43:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.3.2",
 | 
			
		||||
    "date": "2025-08-19T04:08:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jeedom/core",
 | 
			
		||||
    "version": "4.4.20",
 | 
			
		||||
    "date": "2025-09-10T00:27:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "steveiliop56/tinyauth",
 | 
			
		||||
    "version": "v3.6.2",
 | 
			
		||||
    "date": "2025-07-17T12:08:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "authelia/authelia",
 | 
			
		||||
    "version": "v4.39.9",
 | 
			
		||||
    "date": "2025-09-09T22:48:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.0.15",
 | 
			
		||||
    "date": "2025-08-27T12:12:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MediaBrowser/Emby.Releases",
 | 
			
		||||
    "version": "4.9.1.2",
 | 
			
		||||
@@ -29,21 +139,11 @@
 | 
			
		||||
    "version": "v1.5.1",
 | 
			
		||||
    "date": "2025-09-09T16:56:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "open-webui/open-webui",
 | 
			
		||||
    "version": "v0.6.27",
 | 
			
		||||
    "date": "2025-09-09T14:34:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "chrisvel/tududi",
 | 
			
		||||
    "version": "v0.81",
 | 
			
		||||
    "date": "2025-09-09T14:06:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.3.2",
 | 
			
		||||
    "date": "2025-08-19T04:08:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "element-hq/synapse",
 | 
			
		||||
    "version": "v1.138.0",
 | 
			
		||||
@@ -69,16 +169,6 @@
 | 
			
		||||
    "version": "0.20.2",
 | 
			
		||||
    "date": "2025-09-09T06:09:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.22.2444",
 | 
			
		||||
    "date": "2025-09-09T06:00:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TandoorRecipes/recipes",
 | 
			
		||||
    "version": "2.1.2",
 | 
			
		||||
    "date": "2025-09-09T05:55:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gotson/komga",
 | 
			
		||||
    "version": "1.23.4",
 | 
			
		||||
@@ -89,45 +179,20 @@
 | 
			
		||||
    "version": "v2.16.0",
 | 
			
		||||
    "date": "2025-09-09T01:05:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jeedom/core",
 | 
			
		||||
    "version": "4.4.20",
 | 
			
		||||
    "date": "2025-09-09T00:27:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "steveiliop56/tinyauth",
 | 
			
		||||
    "version": "v3.6.2",
 | 
			
		||||
    "date": "2025-07-17T12:08:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "YunoHost/yunohost",
 | 
			
		||||
    "version": "debian/12.1.20",
 | 
			
		||||
    "date": "2025-09-08T23:47:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r8.0.14-rc1",
 | 
			
		||||
    "date": "2025-09-08T22:50:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "diced/zipline",
 | 
			
		||||
    "version": "v4.3.1",
 | 
			
		||||
    "date": "2025-09-08T22:26:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.13.3",
 | 
			
		||||
    "date": "2025-09-08T21:45:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.40.2",
 | 
			
		||||
    "date": "2025-09-08T20:59:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.0.15",
 | 
			
		||||
    "date": "2025-08-27T12:12:03Z"
 | 
			
		||||
    "name": "zerotier/ZeroTierOne",
 | 
			
		||||
    "version": "1.16.0",
 | 
			
		||||
    "date": "2025-09-08T20:17:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "booklore-app/booklore",
 | 
			
		||||
@@ -139,21 +204,11 @@
 | 
			
		||||
    "version": "preview-OIDC",
 | 
			
		||||
    "date": "2025-09-08T18:08:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mattermost/mattermost",
 | 
			
		||||
    "version": "server/public/v0.1.18",
 | 
			
		||||
    "date": "2025-09-08T18:04:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "immich-app/immich",
 | 
			
		||||
    "version": "v1.141.1",
 | 
			
		||||
    "date": "2025-09-08T17:15:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "msgbyte/tianji",
 | 
			
		||||
    "version": "v1.24.27",
 | 
			
		||||
    "date": "2025-09-08T16:23:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Paymenter/Paymenter",
 | 
			
		||||
    "version": "v1.3.1",
 | 
			
		||||
@@ -174,11 +229,6 @@
 | 
			
		||||
    "version": "16.2",
 | 
			
		||||
    "date": "2025-09-08T14:03:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v4.1.3",
 | 
			
		||||
    "date": "2025-09-08T13:36:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "theonedev/onedev",
 | 
			
		||||
    "version": "v12.0.10",
 | 
			
		||||
@@ -204,11 +254,6 @@
 | 
			
		||||
    "version": "v2.0.8",
 | 
			
		||||
    "date": "2025-09-08T08:07:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v25.3",
 | 
			
		||||
    "date": "2025-09-01T09:47:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "webmin/webmin",
 | 
			
		||||
    "version": "2.501",
 | 
			
		||||
@@ -241,8 +286,8 @@
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "runtipi/runtipi",
 | 
			
		||||
    "version": "v4.4.0",
 | 
			
		||||
    "date": "2025-09-02T19:26:18Z"
 | 
			
		||||
    "version": "nightly",
 | 
			
		||||
    "date": "2025-09-07T12:25:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "semaphoreui/semaphore",
 | 
			
		||||
@@ -269,21 +314,11 @@
 | 
			
		||||
    "version": "v2.13.3.4711",
 | 
			
		||||
    "date": "2025-08-28T20:06:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rcourtman/Pulse",
 | 
			
		||||
    "version": "v4.14.0",
 | 
			
		||||
    "date": "2025-09-05T18:28:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bunkerity/bunkerweb",
 | 
			
		||||
    "version": "v1.6.4",
 | 
			
		||||
    "date": "2025-08-18T20:22:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fuma-nama/fumadocs",
 | 
			
		||||
    "version": "create-fumadocs-app@15.7.10",
 | 
			
		||||
    "date": "2025-09-06T10:13:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Luligu/matterbridge",
 | 
			
		||||
    "version": "3.2.6",
 | 
			
		||||
@@ -324,11 +359,6 @@
 | 
			
		||||
    "version": "v5.14.2",
 | 
			
		||||
    "date": "2025-09-05T17:24:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wizarrrr/wizarr",
 | 
			
		||||
    "version": "2025.9.0",
 | 
			
		||||
    "date": "2025-09-05T14:21:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.9.1",
 | 
			
		||||
@@ -404,11 +434,6 @@
 | 
			
		||||
    "version": "v0.15.1",
 | 
			
		||||
    "date": "2025-09-04T10:37:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "esphome/esphome",
 | 
			
		||||
    "version": "2025.8.3",
 | 
			
		||||
    "date": "2025-09-04T10:09:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "emqx/emqx",
 | 
			
		||||
    "version": "v5.8.8",
 | 
			
		||||
@@ -439,11 +464,6 @@
 | 
			
		||||
    "version": "6.1.15",
 | 
			
		||||
    "date": "2025-09-03T14:51:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "glpi-project/glpi",
 | 
			
		||||
    "version": "10.0.19",
 | 
			
		||||
    "date": "2025-07-16T09:45:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "neo4j/neo4j",
 | 
			
		||||
    "version": "5.26.12",
 | 
			
		||||
@@ -454,11 +474,6 @@
 | 
			
		||||
    "version": "v2.4.0p11",
 | 
			
		||||
    "date": "2025-09-03T09:58:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cockpit-project/cockpit",
 | 
			
		||||
    "version": "346",
 | 
			
		||||
    "date": "2025-09-03T09:13:05Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "apache/cassandra",
 | 
			
		||||
    "version": "cassandra-4.1.10",
 | 
			
		||||
@@ -884,11 +899,6 @@
 | 
			
		||||
    "version": "v2.0.116",
 | 
			
		||||
    "date": "2025-08-05T04:45:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "linuxserver/Heimdall",
 | 
			
		||||
    "version": "v2.7.4",
 | 
			
		||||
    "date": "2025-08-02T16:51:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "inspircd/inspircd",
 | 
			
		||||
    "version": "v4.8.0",
 | 
			
		||||
@@ -954,11 +964,6 @@
 | 
			
		||||
    "version": "v2.19.0",
 | 
			
		||||
    "date": "2025-07-27T22:25:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "aceberg/WatchYourLAN",
 | 
			
		||||
    "version": "2.1.3",
 | 
			
		||||
    "date": "2025-07-26T14:19:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "heiher/hev-socks5-server",
 | 
			
		||||
    "version": "2.9.0",
 | 
			
		||||
@@ -1389,11 +1394,6 @@
 | 
			
		||||
    "version": "0.10.1",
 | 
			
		||||
    "date": "2024-11-10T10:25:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zerotier/ZeroTierOne",
 | 
			
		||||
    "version": "1.14.2",
 | 
			
		||||
    "date": "2024-10-29T16:17:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "CorentinTh/it-tools",
 | 
			
		||||
    "version": "v2024.10.22-7ca5933",
 | 
			
		||||
 
 | 
			
		||||
@@ -13,12 +13,18 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing audiobookshelf"
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y ffmpeg
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup audiobookshelf"
 | 
			
		||||
curl -fsSL https://advplyr.github.io/audiobookshelf-ppa/KEY.gpg >/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc
 | 
			
		||||
echo "deb [signed-by=/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc] https://advplyr.github.io/audiobookshelf-ppa ./" >/etc/apt/sources.list.d/audiobookshelf.list
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt install audiobookshelf
 | 
			
		||||
msg_ok "Installed audiobookshelf"
 | 
			
		||||
$STD apt update
 | 
			
		||||
$STD apt install -y audiobookshelf
 | 
			
		||||
echo "FFMPEG_PATH=/usr/bin/ffmpeg" >>/etc/default/audiobookshelf
 | 
			
		||||
echo "FFPROBE_PATH=/usr/bin/ffprobe" >>/etc/default/audiobookshelf
 | 
			
		||||
msg_ok "Setup audiobookshelf"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										330
									
								
								install/autocaliweb-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										330
									
								
								install/autocaliweb-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,330 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2025 Community Scripts ORG
 | 
			
		||||
# Author: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/gelbphoenix/autocaliweb
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing dependencies"
 | 
			
		||||
$STD apt-get install -y --no-install-recommends \
 | 
			
		||||
  python3-dev \
 | 
			
		||||
  sqlite3 \
 | 
			
		||||
  build-essential \
 | 
			
		||||
  libldap2-dev \
 | 
			
		||||
  libssl-dev \
 | 
			
		||||
  libsasl2-dev \
 | 
			
		||||
  imagemagick \
 | 
			
		||||
  ghostscript \
 | 
			
		||||
  libmagic1 \
 | 
			
		||||
  libxi6 \
 | 
			
		||||
  libxslt1.1 \
 | 
			
		||||
  libxtst6 \
 | 
			
		||||
  libxrandr2 \
 | 
			
		||||
  libxkbfile1 \
 | 
			
		||||
  libxcomposite1 \
 | 
			
		||||
  libopengl0 \
 | 
			
		||||
  libnss3 \
 | 
			
		||||
  libxkbcommon0 \
 | 
			
		||||
  libegl1 \
 | 
			
		||||
  libxdamage1 \
 | 
			
		||||
  libgl1 \
 | 
			
		||||
  libglx-mesa0 \
 | 
			
		||||
  xz-utils \
 | 
			
		||||
  xdg-utils \
 | 
			
		||||
  inotify-tools \
 | 
			
		||||
  binutils \
 | 
			
		||||
  unrar-free \
 | 
			
		||||
  zip
 | 
			
		||||
msg_ok "Installed dependencies"
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "kepubify" "pgaskin/kepubify" "singlefile" "latest" "/usr/bin" "kepubify-linux-64bit"
 | 
			
		||||
KEPUB_VERSION="$(/usr/bin/kepubify --version | awk '{print $2}')"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Calibre"
 | 
			
		||||
CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
 | 
			
		||||
CALIBRE_VERSION=${CALIBRE_RELEASE#v}
 | 
			
		||||
curl -fsSL https://github.com/kovidgoyal/calibre/releases/download/${CALIBRE_RELEASE}/calibre-${CALIBRE_VERSION}-x86_64.txz -o /tmp/calibre.txz
 | 
			
		||||
mkdir -p /opt/calibre
 | 
			
		||||
$STD tar -xf /tmp/calibre.txz -C /opt/calibre
 | 
			
		||||
rm /tmp/calibre.txz
 | 
			
		||||
$STD /opt/calibre/calibre_postinstall
 | 
			
		||||
msg_ok "Calibre installed"
 | 
			
		||||
 | 
			
		||||
setup_uv
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "autocaliweb" "gelbphoenix/autocaliweb" "tarball" "latest" "/opt/autocaliweb"
 | 
			
		||||
 | 
			
		||||
msg_info "Configuring Autocaliweb"
 | 
			
		||||
INSTALL_DIR="/opt/autocaliweb"
 | 
			
		||||
CONFIG_DIR="/etc/autocaliweb"
 | 
			
		||||
CALIBRE_LIB_DIR="/opt/calibre-library"
 | 
			
		||||
INGEST_DIR="/opt/acw-book-ingest"
 | 
			
		||||
SERVICE_USER="acw"
 | 
			
		||||
SERVICE_GROUP="acw"
 | 
			
		||||
SCRIPTS_DIR="${INSTALL_DIR}/scripts"
 | 
			
		||||
export VIRTUAL_ENV="${INSTALL_DIR}/venv"
 | 
			
		||||
 | 
			
		||||
mkdir -p "$CONFIG_DIR"/{.config/calibre/plugins,log_archive,.acw_conversion_tmp}
 | 
			
		||||
mkdir -p "$CONFIG_DIR"/processed_books/{converted,imported,failed,fixed_originals}
 | 
			
		||||
mkdir -p "$INSTALL_DIR"/{metadata_change_logs,metadata_temp}
 | 
			
		||||
mkdir -p {"$CALIBRE_LIB_DIR","$INGEST_DIR"}
 | 
			
		||||
echo "$CALIBRE_VERSION" >"$INSTALL_DIR"/CALIBRE_RELEASE
 | 
			
		||||
echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
 | 
			
		||||
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
 | 
			
		||||
 | 
			
		||||
cd "$INSTALL_DIR"
 | 
			
		||||
$STD uv venv "$VIRTUAL_ENV"
 | 
			
		||||
$STD uv sync --all-extras --active
 | 
			
		||||
cat <<EOF >./dirs.json
 | 
			
		||||
{
 | 
			
		||||
  "ingest_folder": "$INGEST_DIR",
 | 
			
		||||
  "calibre_library_dir": "$CALIBRE_LIB_DIR",
 | 
			
		||||
  "tmp_conversion_dir": "$CONFIG_DIR/.acw_conversion_tmp"
 | 
			
		||||
}
 | 
			
		||||
EOF
 | 
			
		||||
useradd -s /usr/sbin/nologin -d "$CONFIG_DIR" -M "$SERVICE_USER"
 | 
			
		||||
ln -sf "$CONFIG_DIR"/.config/calibre/plugins "$CONFIG_DIR"/calibre_plugins
 | 
			
		||||
cat <<EOF >"$INSTALL_DIR"/.env
 | 
			
		||||
ACW_INSTALL_DIR=$INSTALL_DIR
 | 
			
		||||
ACW_CONFIG_DIR=$CONFIG_DIR
 | 
			
		||||
ACW_USER=$SERVICE_USER
 | 
			
		||||
ACW_GROUP=$SERVICE_GROUP
 | 
			
		||||
LIBRARY_DIR=$CALIBRE_LIB_DIR
 | 
			
		||||
EOF
 | 
			
		||||
msg_ok "Configured Autocaliweb"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating ACWSync Plugin for KOReader"
 | 
			
		||||
cd "$INSTALL_DIR"/koreader/plugins
 | 
			
		||||
PLUGIN_DIGEST="$(find acwsync.koplugin -type f -name "*.lua" -o -name "*.json" | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)"
 | 
			
		||||
echo "Plugin files digest: $PLUGIN_DIGEST" >acwsync.koplugin/${PLUGIN_DIGEST}.digest
 | 
			
		||||
echo "Build date: $(date)" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
 | 
			
		||||
echo "Files included:" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
 | 
			
		||||
$STD zip -r koplugin.zip acwsync.koplugin/
 | 
			
		||||
cp -r koplugin.zip "$INSTALL_DIR"/cps/static
 | 
			
		||||
msg_ok "Created ACWSync Plugin"
 | 
			
		||||
 | 
			
		||||
msg_info "Initializing databases"
 | 
			
		||||
KEPUBIFY_PATH=$(command -v kepubify 2>/dev/null || echo "/usr/bin/kepubify")
 | 
			
		||||
EBOOK_CONVERT_PATH=$(command -v ebook-convert 2>/dev/null || echo "/usr/bin/ebook-convert")
 | 
			
		||||
CALIBRE_BIN_DIR=$(dirname "$EBOOK_CONVERT_PATH")
 | 
			
		||||
curl -fsSL https://github.com/gelbphoenix/autocaliweb/raw/refs/heads/main/library/metadata.db -o "$CALIBRE_LIB_DIR"/metadata.db
 | 
			
		||||
curl -fsSL https://github.com/gelbphoenix/autocaliweb/raw/refs/heads/main/library/app.db -o "$CONFIG_DIR"/app.db
 | 
			
		||||
sqlite3 "$CONFIG_DIR/app.db" <<EOS
 | 
			
		||||
UPDATE settings SET
 | 
			
		||||
    config_kepubifypath='$KEPUBIFY_PATH',
 | 
			
		||||
    config_converterpath='$EBOOK_CONVERT_PATH',
 | 
			
		||||
    config_binariesdir='$CALIBRE_BIN_DIR',
 | 
			
		||||
    config_calibre_dir='$CALIBRE_LIB_DIR',
 | 
			
		||||
    config_logfile='$CONFIG_DIR/autocaliweb.log',
 | 
			
		||||
    config_access_logfile='$CONFIG_DIR/access.log'
 | 
			
		||||
WHERE 1=1;
 | 
			
		||||
EOS
 | 
			
		||||
msg_ok "Initialized databases"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating scripts and service files"
 | 
			
		||||
 | 
			
		||||
# auto-ingest watcher
 | 
			
		||||
cat <<EOF >"$SCRIPTS_DIR"/ingest_watcher.sh
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
INSTALL_PATH="$INSTALL_DIR"
 | 
			
		||||
WATCH_FOLDER=\$(grep -o '"ingest_folder": "[^"]*' \${INSTALL_PATH}/dirs.json | grep -o '[^"]*\$')
 | 
			
		||||
echo "[acw-ingest-service] Watching folder: \$WATCH_FOLDER"
 | 
			
		||||
 | 
			
		||||
# Monitor the folder for new files
 | 
			
		||||
/usr/bin/inotifywait -m -r --format="%e %w%f" -e close_write -e moved_to "\$WATCH_FOLDER" |
 | 
			
		||||
while read -r events filepath ; do
 | 
			
		||||
    echo "[acw-ingest-service] New files detected - \$filepath - Starting Ingest Processor..."
 | 
			
		||||
    # Use the Python interpreter from the virtual environment
 | 
			
		||||
    \${INSTALL_PATH}/venv/bin/python \${INSTALL_PATH}/scripts/ingest_processor.py "\$filepath"
 | 
			
		||||
done
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
# auto-zipper
 | 
			
		||||
cat <<EOF >"$SCRIPTS_DIR"/auto_zipper_wrapper.sh
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# Source virtual environment
 | 
			
		||||
source ${INSTALL_DIR}/venv/bin/activate
 | 
			
		||||
 | 
			
		||||
WAKEUP="23:59"
 | 
			
		||||
 | 
			
		||||
while true; do
 | 
			
		||||
    # Replace expr with modern Bash arithmetic (safer and less prone to parsing issues)
 | 
			
		||||
    # fix: expr: non-integer argument and sleep: missing operand
 | 
			
		||||
    SECS=\$(( \$(date -d "\$WAKEUP" +%s) - \$(date -d "now" +%s) ))
 | 
			
		||||
    if [[ \$SECS -lt 0 ]]; then
 | 
			
		||||
        SECS=\$(( \$(date -d "tomorrow \$WAKEUP" +%s) - \$(date -d "now" +%s) ))
 | 
			
		||||
    fi
 | 
			
		||||
    echo "[acw-auto-zipper] Next run in \$SECS seconds."
 | 
			
		||||
    sleep \$SECS &
 | 
			
		||||
    wait \$!
 | 
			
		||||
 | 
			
		||||
    # Use virtual environment python
 | 
			
		||||
    python ${SCRIPTS_DIR}/auto_zip.py
 | 
			
		||||
 | 
			
		||||
    if [[ \$? == 1 ]]; then
 | 
			
		||||
    echo "[acw-auto-zipper] Error occurred during script initialisation."
 | 
			
		||||
    elif [[ \$? == 2 ]]; then
 | 
			
		||||
    echo "[acw-auto-zipper] Error occurred while zipping today's files."
 | 
			
		||||
    elif [[ \$? == 3 ]]; then
 | 
			
		||||
    echo "[acw-auto-zipper] Error occurred while trying to remove zipped files."
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    sleep 60
 | 
			
		||||
done
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
# metadata change detector
 | 
			
		||||
cat <<EOF >"$SCRIPTS_DIR"/metadata_change_detector_wrapper.sh
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
# metadata_change_detector_wrapper.sh - Wrapper for periodic metadata enforcement
 | 
			
		||||
 | 
			
		||||
# Source virtual environment
 | 
			
		||||
source ${INSTALL_DIR}/venv/bin/activate
 | 
			
		||||
 | 
			
		||||
# Configuration
 | 
			
		||||
CHECK_INTERVAL=300  # Check every 5 minutes (300 seconds)
 | 
			
		||||
METADATA_LOGS_DIR="${INSTALL_DIR}/metadata_change_logs"
 | 
			
		||||
 | 
			
		||||
echo "[metadata-change-detector] Starting metadata change detector service..."
 | 
			
		||||
echo "[metadata-change-detector] Checking for changes every \$CHECK_INTERVAL seconds"
 | 
			
		||||
 | 
			
		||||
while true; do
 | 
			
		||||
    # Check if there are any log files to process
 | 
			
		||||
    if [ -d "\$METADATA_LOGS_DIR" ] && [ "\$(ls -A \$METADATA_LOGS_DIR 2>/dev/null)" ]; then
 | 
			
		||||
        echo "[metadata-change-detector] Found metadata change logs, processing..."
 | 
			
		||||
 | 
			
		||||
        # Process each log file
 | 
			
		||||
        for log_file in "\$METADATA_LOGS_DIR"/*.json; do
 | 
			
		||||
            if [ -f "\$log_file" ]; then
 | 
			
		||||
                log_name=\$(basename "\$log_file")
 | 
			
		||||
                echo "[metadata-change-detector] Processing log: \$log_name"
 | 
			
		||||
 | 
			
		||||
                # Call cover_enforcer.py with the log file
 | 
			
		||||
                 ${INSTALL_DIR}/venv/bin/python  ${SCRIPTS_DIR}/cover_enforcer.py --log "\$log_name"
 | 
			
		||||
 | 
			
		||||
                if [ \$? -eq 0 ]; then
 | 
			
		||||
                    echo "[metadata-change-detector] Successfully processed \$log_name"
 | 
			
		||||
                else
 | 
			
		||||
                    echo "[metadata-change-detector] Error processing \$log_name"
 | 
			
		||||
                fi
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
    else
 | 
			
		||||
        echo "[metadata-change-detector] No metadata changes detected"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    echo "[metadata-change-detector] Sleeping for \$CHECK_INTERVAL seconds..."
 | 
			
		||||
    sleep \$CHECK_INTERVAL
 | 
			
		||||
done
 | 
			
		||||
EOF
 | 
			
		||||
chmod +x "$SCRIPTS_DIR"/{ingest_watcher.sh,auto_zipper_wrapper.sh,metadata_change_detector_wrapper.sh}
 | 
			
		||||
chown -R "$SERVICE_USER":"$SERVICE_GROUP" {"$INSTALL_DIR","$CONFIG_DIR","$INGEST_DIR","$CALIBRE_LIB_DIR"}
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/systemd/system/autocaliweb.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Autocaliweb
 | 
			
		||||
After=network.target
 | 
			
		||||
Wants=network-online.target
 | 
			
		||||
After=network-online.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
User=$SERVICE_USER
 | 
			
		||||
Group=$SERVICE_GROUP
 | 
			
		||||
WorkingDirectory=$INSTALL_DIR
 | 
			
		||||
Environment=PATH=$INSTALL_DIR/venv/bin:/usr/bin:/bin
 | 
			
		||||
Environment=PYTHONPATH=$SCRIPTS_DIR:$INSTALL_DIR
 | 
			
		||||
Environment=PYTHONDONTWRITEBYTECODE=1
 | 
			
		||||
Environment=PYTHONUNBUFFERED=1
 | 
			
		||||
Environment=CALIBRE_DBPATH=$CONFIG_DIR
 | 
			
		||||
EnvironmentFile=$INSTALL_DIR/.env
 | 
			
		||||
ExecStart=$INSTALL_DIR/venv/bin/python $INSTALL_DIR/cps.py -p $CONFIG_DIR/app.db
 | 
			
		||||
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=10
 | 
			
		||||
StandardOutput=journal
 | 
			
		||||
StandardError=journal
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/systemd/system/acw-ingest-service.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Autocaliweb Ingest Processor Service
 | 
			
		||||
After=autocaliweb.service
 | 
			
		||||
Requires=autocaliweb.service
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
User=${SERVICE_USER}
 | 
			
		||||
Group=${SERVICE_GROUP}
 | 
			
		||||
WorkingDirectory=${INSTALL_DIR}
 | 
			
		||||
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
 | 
			
		||||
Environment=HOME=${CONFIG_DIR}
 | 
			
		||||
ExecStart=/bin/bash ${SCRIPTS_DIR}/ingest_watcher.sh
 | 
			
		||||
Restart=always
 | 
			
		||||
StandardOutput=journal
 | 
			
		||||
StandardError=journal
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/systemd/system/acw-auto-zipper.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Autocaliweb Auto Zipper Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
User=${SERVICE_USER}
 | 
			
		||||
Group=${SERVICE_GROUP}
 | 
			
		||||
WorkingDirectory=${INSTALL_DIR}
 | 
			
		||||
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
 | 
			
		||||
ExecStart=${SCRIPTS_DIR}/auto_zipper_wrapper.sh
 | 
			
		||||
Restart=always
 | 
			
		||||
StandardOutput=journal
 | 
			
		||||
StandardError=journal
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/systemd/system/metadata-change-detector.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Autocaliweb Metadata Change Detector
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
User=${SERVICE_USER}
 | 
			
		||||
Group=${SERVICE_GROUP}
 | 
			
		||||
WorkingDirectory=${INSTALL_DIR}
 | 
			
		||||
ExecStart=/bin/bash ${SCRIPTS_DIR}/metadata_change_detector_wrapper.sh
 | 
			
		||||
Restart=always
 | 
			
		||||
StandardOutput=journal
 | 
			
		||||
StandardError=journal
 | 
			
		||||
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
 | 
			
		||||
Environment=HOME=${CONFIG_DIR}
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
systemctl -q enable --now autocaliweb acw-ingest-service acw-auto-zipper metadata-change-detector
 | 
			
		||||
msg_ok "Created scripts and service files"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://0xerr0r.github.io/blocky/latest/
 | 
			
		||||
# Source: https://0xerr0r.github.io/blocky
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
@@ -13,14 +13,12 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Blocky"
 | 
			
		||||
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
 | 
			
		||||
 | 
			
		||||
msg_info "Configuring Blocky"
 | 
			
		||||
if systemctl is-active systemd-resolved >/dev/null 2>&1; then
 | 
			
		||||
  systemctl disable -q --now systemd-resolved
 | 
			
		||||
fi
 | 
			
		||||
mkdir /opt/blocky
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/0xERR0R/blocky/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/0xERR0R/blocky/releases/download/v${RELEASE}/blocky_v${RELEASE}_Linux_x86_64.tar.gz" | tar -xzf - -C /opt/blocky/
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/opt/blocky/config.yml
 | 
			
		||||
# configuration documentation: https://0xerr0r.github.io/blocky/latest/configuration/
 | 
			
		||||
 | 
			
		||||
@@ -63,7 +61,7 @@ log:
 | 
			
		||||
  # optional: Log level (one from trace, debug, info, warn, error). Default: info
 | 
			
		||||
  level: info
 | 
			
		||||
EOF
 | 
			
		||||
msg_ok "Installed Blocky"
 | 
			
		||||
msg_ok "Configured Blocky"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/blocky.service
 | 
			
		||||
@@ -77,7 +75,7 @@ ExecStart=/opt/blocky/./blocky --config config.yml
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
$STD systemctl enable --now blocky
 | 
			
		||||
$STD systemctl enable -q --now blocky
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@ $STD npm run build --configuration=production
 | 
			
		||||
msg_ok "Built Frontend"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Environment"
 | 
			
		||||
mkdir -p /opt/booklore_storage{/data,/books}
 | 
			
		||||
mkdir -p /opt/booklore_storage{/data,/books,/bookdrop}
 | 
			
		||||
cat <<EOF >/opt/booklore_storage/.env
 | 
			
		||||
DATABASE_URL=jdbc:mariadb://localhost:3306/$DB_NAME
 | 
			
		||||
DATABASE_USERNAME=$DB_USER
 | 
			
		||||
@@ -55,6 +55,7 @@ BOOKLORE_PORT=6060
 | 
			
		||||
 | 
			
		||||
BOOKLORE_DATA_PATH=/opt/booklore_storage/data
 | 
			
		||||
BOOKLORE_BOOKS_PATH=/opt/booklore_storage/books
 | 
			
		||||
BOOKLORE_BOOKDROP_PATH=/opt/booklore_storage/bookdrop
 | 
			
		||||
EOF
 | 
			
		||||
msg_ok "Created Environment"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,17 @@ $STD apt-get install -y lsb-release
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
msg_info "Installing BunkerWeb v${RELEASE} (Patience)"
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (install-bunkerweb.sh)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
msg_info "Installing BunkerWeb (Patience)"
 | 
			
		||||
curl -fsSL -o install-bunkerweb.sh https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh
 | 
			
		||||
chmod +x install-bunkerweb.sh
 | 
			
		||||
$STD ./install-bunkerweb.sh --yes
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,16 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://casaos.zimaspace.com/)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://get.casaos.io/"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
msg_info "Installing CasaOS (Patience)"
 | 
			
		||||
DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
 | 
			
		||||
mkdir -p $(dirname $DOCKER_CONFIG_PATH)
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,17 @@ $STD apt-get install -y chromium
 | 
			
		||||
$STD apt-get install -y xvfb
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://getchannels.com)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://getchannels.com/dvr/setup.sh"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ "$CTTYPE" == "0" ]]; then
 | 
			
		||||
  msg_info "Setting Up Hardware Acceleration"
 | 
			
		||||
  $STD apt-get -y install \
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,17 @@ msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y ca-certificates
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://iobroker.net/)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://iobroker.net/install.sh"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="22" setup_nodejs
 | 
			
		||||
 | 
			
		||||
msg_info "Installing ioBroker (Patience)"
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,17 @@ $STD apt-get install -y \
 | 
			
		||||
  git
 | 
			
		||||
msg_ok "Dependencies installed"
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://github.com/jeedom/)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://raw.githubusercontent.com/jeedom/core/master/install/install.sh"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
DEFAULT_BRANCH="master"
 | 
			
		||||
REPO_URL="https://github.com/jeedom/core.git"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,20 +13,32 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Kasm Workspaces"
 | 
			
		||||
KASM_VERSION=$(curl -fsSL 'https://www.kasmweb.com/downloads' | grep -o 'https://kasm-static-content.s3.amazonaws.com/kasm_release_[^"]*\.tar\.gz' | head -n 1 | sed -E 's/.*release_(.*)\.tar\.gz/\1/')
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://www.kasmweb.com/)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  install.sh inside tar.gz https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Kasm Workspaces"
 | 
			
		||||
curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
 | 
			
		||||
cd /opt
 | 
			
		||||
tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
 | 
			
		||||
chmod +x /opt/kasm_release/install.sh
 | 
			
		||||
printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh > ~/kasm-install.output 2>&1
 | 
			
		||||
printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh >~/kasm-install.output 2>&1
 | 
			
		||||
awk '
 | 
			
		||||
  /^Kasm UI Login Credentials$/ {capture=1}
 | 
			
		||||
  capture {print}
 | 
			
		||||
  /^Service Registration Token$/ {in_token=1}
 | 
			
		||||
  in_token && /^-+$/ {dash_count++}
 | 
			
		||||
  in_token && dash_count==2 {exit}
 | 
			
		||||
' ~/kasm-install.output > ~/kasm.creds
 | 
			
		||||
' ~/kasm-install.output >~/kasm.creds
 | 
			
		||||
msg_ok "Installed Kasm Workspaces"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,17 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://mattermost.com/)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://deb.packages.mattermost.com/repo-setup.sh"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
PG_VERSION="16" setup_postgresql
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up PostgreSQL"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.turnkeylinux.org/nextcloud
 | 
			
		||||
# Source: https://nextcloudpi.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
@@ -13,8 +13,19 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://nextcloudpi.com/)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing NextCloudPi (Patience)"
 | 
			
		||||
bash <(curl -fsSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh) >/dev/null 2>&1
 | 
			
		||||
$STD bash <(curl -fsSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh)
 | 
			
		||||
msg_ok "Installed NextCloudPi"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
 
 | 
			
		||||
@@ -89,19 +89,36 @@ customize
 | 
			
		||||
 | 
			
		||||
msg_info "Retrieving Default Login (Patience)"
 | 
			
		||||
PASSWORD_FOUND=0
 | 
			
		||||
 | 
			
		||||
for i in {1..60}; do
 | 
			
		||||
  PASSWORD_LINE=$(docker logs "$CONTAINER_ID" 2>&1 | awk '/Creating a new user:/ { print; exit }')
 | 
			
		||||
  if [[ -n "$PASSWORD_LINE" ]]; then
 | 
			
		||||
    PASSWORD=$(echo "$PASSWORD_LINE" | awk -F 'password: ' '{print $2}')
 | 
			
		||||
    echo -e "username: admin@example.org\npassword: $PASSWORD" >/opt/.npm_pwd
 | 
			
		||||
  PASSWORD_LINE=$(
 | 
			
		||||
    { awk '/Creating a new user:/{print; exit}' < <(docker logs "$CONTAINER_ID" 2>&1); } || true
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  if [[ -n "${PASSWORD_LINE:-}" ]]; then
 | 
			
		||||
    PASSWORD="${PASSWORD_LINE#*password: }"
 | 
			
		||||
    printf 'username: admin@example.org\npassword: %s\n' "$PASSWORD" >/opt/.npm_pwd
 | 
			
		||||
    msg_ok "Saved default login to /opt/.npm_pwd"
 | 
			
		||||
    PASSWORD_FOUND=1
 | 
			
		||||
    break
 | 
			
		||||
  fi
 | 
			
		||||
  sleep 2
 | 
			
		||||
done
 | 
			
		||||
if [[ $PASSWORD_FOUND -eq 0 ]]; then
 | 
			
		||||
  PASSWORD_LINE=$(
 | 
			
		||||
    timeout 30s bash -c '
 | 
			
		||||
      docker logs -f --since=0s --tail=0 "$1" 2>&1 | awk "/Creating a new user:/{print; exit}"
 | 
			
		||||
    ' _ "$CONTAINER_ID" || true
 | 
			
		||||
  )
 | 
			
		||||
  if [[ -n "${PASSWORD_LINE:-}" ]]; then
 | 
			
		||||
    PASSWORD="${PASSWORD_LINE#*password: }"
 | 
			
		||||
    printf 'username: admin@example.org\npassword: %s\n' "$PASSWORD" >/opt/.npm_pwd
 | 
			
		||||
    msg_ok "Saved default login to /opt/.npm_pwd (live)"
 | 
			
		||||
    PASSWORD_FOUND=1
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ $PASSWORD_FOUND -eq 0 ]]; then
 | 
			
		||||
  msg_error "Could not retrieve default login after 60 seconds."
 | 
			
		||||
  msg_error "Could not retrieve default login after 120s."
 | 
			
		||||
  echo -e "\nYou can manually check the container logs with:\n  docker logs $CONTAINER_ID | grep 'Creating a new user:'\n"
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
@@ -26,13 +26,15 @@ sed -e 's/_ENCRYPTION=true/_ENCRYPTION=false/' \
 | 
			
		||||
  -e '/^# ENC/s/# //' \
 | 
			
		||||
  -e "s/ENCRYPTION_KEY=.*$/ENCRYPTION_KEY=$PALMR_KEY/" \
 | 
			
		||||
  -e "s|file:.*$|file:$PALMR_DB\"|" \
 | 
			
		||||
  -e '/db"$/a\# Uncomment below when using reverse proxy\
 | 
			
		||||
# SECURE_SITE=true' \
 | 
			
		||||
  -e "\|db\"$|a\\# Uncomment below when using a reverse proxy\\
 | 
			
		||||
# SECURE_SITE=true\\
 | 
			
		||||
# Uncomment and add your path if using symlinks for data storage\\
 | 
			
		||||
# CUSTOM_PATH=<path-to-your-bind-mount>" \
 | 
			
		||||
  .env.example >./.env
 | 
			
		||||
$STD pnpm install
 | 
			
		||||
$STD pnpm dlx prisma generate
 | 
			
		||||
$STD pnpm dlx prisma migrate deploy
 | 
			
		||||
$STD pnpm dlx prisma db push
 | 
			
		||||
$STD npx prisma generate
 | 
			
		||||
$STD npx prisma migrate deploy
 | 
			
		||||
$STD npx prisma db push
 | 
			
		||||
$STD pnpm db:seed
 | 
			
		||||
$STD pnpm build
 | 
			
		||||
msg_ok "Configured palmr backend"
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,17 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://pi-hole.net/)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://install.pi-hole.net"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y ufw
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,52 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Co-Author: michelroegl-brunner
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://stonith404.github.io/pingvin-share/introduction
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  git
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="pm2" setup_nodejs
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Pingvin Share (Patience)"
 | 
			
		||||
cd /opt
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
 | 
			
		||||
$STD unzip v${RELEASE}.zip
 | 
			
		||||
echo "${RELEASE}" >"/opt/pingvin_version.txt"
 | 
			
		||||
mv pingvin-share-${RELEASE} /opt/pingvin-share
 | 
			
		||||
cd /opt/pingvin-share/backend
 | 
			
		||||
$STD npm install
 | 
			
		||||
$STD npm run build
 | 
			
		||||
$STD pm2 start --name="pingvin-share-backend" npm -- run prod
 | 
			
		||||
cd ../frontend
 | 
			
		||||
sed -i '/"admin.config.smtp.allow-unauthorized-certificates":\|admin.config.smtp.allow-unauthorized-certificates.description":/,+1d' ./src/i18n/translations/fr-FR.ts
 | 
			
		||||
$STD npm install
 | 
			
		||||
$STD npm run build
 | 
			
		||||
$STD pm2 start --name="pingvin-share-frontend" npm -- run start
 | 
			
		||||
$STD pm2 startup systemd
 | 
			
		||||
$STD pm2 save
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
msg_ok "Installed Pingvin Share"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -13,6 +13,17 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://runtipi.io/)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://raw.githubusercontent.com/runtipi/runtipi/master/scripts/install.sh"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Runtipi (Patience)"
 | 
			
		||||
DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
 | 
			
		||||
mkdir -p "$(dirname "$DOCKER_CONFIG_PATH")"
 | 
			
		||||
 
 | 
			
		||||
@@ -13,9 +13,18 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Fetching Latest Wazuh Version"
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '"tag_name"' | awk -F '"' '{print substr($4, 2, length($2)-4)}')
 | 
			
		||||
msg_ok "Latest Wazuh Version: $RELEASE"
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://wazuh.com/)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://packages.wazuh.com/$RELEASE/wazuh-install.sh "
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Setup Wazuh"
 | 
			
		||||
curl -fsSL https://packages.wazuh.com/$RELEASE/wazuh-install.sh -o wazuh-install.sh
 | 
			
		||||
 
 | 
			
		||||
@@ -23,13 +23,12 @@ fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
 | 
			
		||||
 | 
			
		||||
msg_info "Configure ${APPLICATION}"
 | 
			
		||||
cd /opt/wizarr
 | 
			
		||||
$STD /usr/local/bin/uv lock
 | 
			
		||||
$STD /usr/local/bin/uv sync --locked
 | 
			
		||||
$STD /usr/local/bin/uv run pybabel compile -d app/translations
 | 
			
		||||
$STD /usr/local/bin/uv sync --frozen
 | 
			
		||||
$STD /usr/local/bin/uv run --frozen pybabel compile -d app/translations
 | 
			
		||||
$STD npm --prefix app/static install
 | 
			
		||||
$STD npm --prefix app/static run build:css
 | 
			
		||||
mkdir -p ./.cache
 | 
			
		||||
$STD /usr/local/bin/uv run flask db upgrade
 | 
			
		||||
$STD /usr/local/bin/uv run --frozen flask db upgrade
 | 
			
		||||
msg_ok "Configure ${APPLICATION}"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating env, start script and service"
 | 
			
		||||
@@ -43,7 +42,7 @@ EOF
 | 
			
		||||
cat <<EOF >/opt/wizarr/start.sh
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
uv run gunicorn \
 | 
			
		||||
uv run --frozen gunicorn \
 | 
			
		||||
    --config gunicorn.conf.py \
 | 
			
		||||
    --preload \
 | 
			
		||||
    --workers 4 \
 | 
			
		||||
 
 | 
			
		||||
@@ -14,11 +14,23 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y apt-transport-https
 | 
			
		||||
$STD apt-get install -y lsb-release
 | 
			
		||||
$STD apt-get install -y ca-certificates
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  apt-transport-https \
 | 
			
		||||
  lsb-release \
 | 
			
		||||
  ca-certificates
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://yunohost.org/)."
 | 
			
		||||
msg_warn "The following code is NOT maintained or audited by our repository."
 | 
			
		||||
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
			
		||||
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://install.yunohost.org"
 | 
			
		||||
echo
 | 
			
		||||
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
			
		||||
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
			
		||||
  msg_error "Aborted by user. No changes have been made."
 | 
			
		||||
  exit 10
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing YunoHost (Patience)"
 | 
			
		||||
touch /etc/.pve-ignore.resolv.conf
 | 
			
		||||
curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
 | 
			
		||||
 
 | 
			
		||||
@@ -250,15 +250,12 @@ EOF
 | 
			
		||||
    whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" \
 | 
			
		||||
      "Supporting the software's development team is essential.\nPlease consider buying a subscription." 10 58
 | 
			
		||||
    msg_info "Disabling subscription nag"
 | 
			
		||||
    cat <<'EOF' >/etc/apt/apt.conf.d/no-nag-script
 | 
			
		||||
DPkg::Post-Invoke {
 | 
			
		||||
  "if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then
 | 
			
		||||
     sed -i '/data\.status/{s/\\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js;
 | 
			
		||||
   fi";
 | 
			
		||||
  "if [ -s /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; then
 | 
			
		||||
     sed -i '/data\.status/{s/\\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js;
 | 
			
		||||
   fi";
 | 
			
		||||
};
 | 
			
		||||
    cat >/etc/apt/apt.conf.d/no-nag-script <<'EOF'
 | 
			
		||||
DPkg::Post-Invoke { "if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; fi"; };
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
    cat >/etc/apt/apt.conf.d/no-nag-script-pmgmanagerlib-mobile <<'EOF'
 | 
			
		||||
DPkg::Post-Invoke { "if [ -s /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; then sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; fi"; };
 | 
			
		||||
EOF
 | 
			
		||||
    msg_ok "Disabled subscription nag (clear browser cache!)"
 | 
			
		||||
    ;;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user