mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			34 Commits
		
	
	
		
			2025-05-05
			...
			2025-05-07
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					9cddbbd986 | ||
| 
						 | 
					31c7c9301c | ||
| 
						 | 
					c9aad3a54d | ||
| 
						 | 
					ebc17e120e | ||
| 
						 | 
					1ebb1782fa | ||
| 
						 | 
					cce3ca1996 | ||
| 
						 | 
					eb6018ac01 | ||
| 
						 | 
					3b54371d5c | ||
| 
						 | 
					67cd29e9f2 | ||
| 
						 | 
					0f4c14ff41 | ||
| 
						 | 
					5d9795139e | ||
| 
						 | 
					0bbbd5de10 | ||
| 
						 | 
					8963d8dec9 | ||
| 
						 | 
					eeb7766f36 | ||
| 
						 | 
					e7d4630fa5 | ||
| 
						 | 
					0f19440864 | ||
| 
						 | 
					d0a3510b96 | ||
| 
						 | 
					0946b5220f | ||
| 
						 | 
					d5a64ee41c | ||
| 
						 | 
					067d60978c | ||
| 
						 | 
					4b89174542 | ||
| 
						 | 
					0a2a1b4692 | ||
| 
						 | 
					4d99838209 | ||
| 
						 | 
					27ac2633c7 | ||
| 
						 | 
					1bff7fe861 | ||
| 
						 | 
					a9c36a9417 | ||
| 
						 | 
					8e26cd4d9d | ||
| 
						 | 
					237c920893 | ||
| 
						 | 
					354d95eb2d | ||
| 
						 | 
					e7f0f09dee | ||
| 
						 | 
					093a1aacf6 | ||
| 
						 | 
					afbac8e2f0 | ||
| 
						 | 
					17c3163a2a | ||
| 
						 | 
					f0a96b9a7b | 
							
								
								
									
										27
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -14,6 +14,33 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
 | 
				
			|||||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
 | 
					All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-07
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Alpine scripts: Set minimum disk space to 0.5GB [@tremor021](https://github.com/tremor021) ([#4288](https://github.com/community-scripts/ProxmoxVE/pull/4288))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - SuwayomiServer: Bump Java to v21, code formating [@tremor021](https://github.com/tremor021) ([#3987](https://github.com/community-scripts/ProxmoxVE/pull/3987))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-06
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - alpine-transmission ([#4277](https://github.com/community-scripts/ProxmoxVE/pull/4277))
 | 
				
			||||||
 | 
					- streamlink-webui ([#4262](https://github.com/community-scripts/ProxmoxVE/pull/4262))
 | 
				
			||||||
 | 
					- Fumadocs ([#4263](https://github.com/community-scripts/ProxmoxVE/pull/4263))
 | 
				
			||||||
 | 
					- alpine-rclone ([#4265](https://github.com/community-scripts/ProxmoxVE/pull/4265))
 | 
				
			||||||
 | 
					- alpine-tinyauth ([#4264](https://github.com/community-scripts/ProxmoxVE/pull/4264))
 | 
				
			||||||
 | 
					- Re-Add: ActualBudget [@MickLesk](https://github.com/MickLesk) ([#4228](https://github.com/community-scripts/ProxmoxVE/pull/4228))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🧰 Maintenance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - whiptail menu - cancel button now exists the advanced menu [@MickLesk](https://github.com/MickLesk) ([#4259](https://github.com/community-scripts/ProxmoxVE/pull/4259))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 2025-05-05
 | 
					## 2025-05-05
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 🆕 New Scripts
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										67
									
								
								ct/actualbudget.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								ct/actualbudget.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					#!/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: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://actualbudget.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Actual Budget"
 | 
				
			||||||
 | 
					var_tags="finance"
 | 
				
			||||||
 | 
					var_cpu="2"
 | 
				
			||||||
 | 
					var_ram="2048"
 | 
				
			||||||
 | 
					var_disk="4"
 | 
				
			||||||
 | 
					var_os="debian"
 | 
				
			||||||
 | 
					var_version="12"
 | 
				
			||||||
 | 
					var_unprivileged="1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  check_container_storage
 | 
				
			||||||
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -d /opt/actualbudget ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  NODE_VERSION="22"
 | 
				
			||||||
 | 
					  install_node_and_modules
 | 
				
			||||||
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					  if [[ -f /opt/actualbudget-data/config.json ]]; then
 | 
				
			||||||
 | 
					    if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
 | 
				
			||||||
 | 
					      msg_info "Stopping ${APP}"
 | 
				
			||||||
 | 
					      systemctl stop actualbudget
 | 
				
			||||||
 | 
					      msg_ok "${APP} Stopped"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      msg_info "Updating ${APP} to ${RELEASE}"
 | 
				
			||||||
 | 
					      $STD npm update -g @actual-app/sync-server
 | 
				
			||||||
 | 
					      echo "${RELEASE}" >/opt/actualbudget_version.txt
 | 
				
			||||||
 | 
					      msg_ok "Updated ${APP} to ${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      msg_info "Starting ${APP}"
 | 
				
			||||||
 | 
					      systemctl start actualbudget
 | 
				
			||||||
 | 
					      msg_ok "Restarted ${APP}"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      msg_info "${APP} is already up to date"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_info "Old Installation Found, you need to migrate your data and recreate to a new container"
 | 
				
			||||||
 | 
					    msg_info "Please follow the instructions on the ${APP} website to migrate your data"
 | 
				
			||||||
 | 
					    msg_info "https://actualbudget.org/docs/backup-restore/backup"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  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}https://${IP}:5006${CL}"
 | 
				
			||||||
@@ -9,7 +9,7 @@ APP="Alpine-IT-Tools"
 | 
				
			|||||||
var_tags="${var_tags:-alpine;development}"
 | 
					var_tags="${var_tags:-alpine;development}"
 | 
				
			||||||
var_cpu="${var_cpu:-1}"
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
var_ram="${var_ram:-256}"
 | 
					var_ram="${var_ram:-256}"
 | 
				
			||||||
var_disk="${var_disk:-0.2}"
 | 
					var_disk="${var_disk:-0.5}"
 | 
				
			||||||
var_os="${var_os:-alpine}"
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
var_version="${var_version:-3.21}"
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
@@ -20,32 +20,32 @@ color
 | 
				
			|||||||
catch_errors
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
    header_info
 | 
					  header_info
 | 
				
			||||||
    check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
    check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [ ! -d /usr/share/nginx/html ]; then
 | 
					  if [ ! -d /usr/share/nginx/html ]; then
 | 
				
			||||||
        msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit 1
 | 
					    exit 1
 | 
				
			||||||
    fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
 | 
				
			||||||
    if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
 | 
					  if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
 | 
				
			||||||
        DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
 | 
					    DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
 | 
				
			||||||
        msg_info "Updating ${APP} LXC"
 | 
					    msg_info "Updating ${APP} LXC"
 | 
				
			||||||
        curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
					    curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
				
			||||||
        mkdir -p /usr/share/nginx/html
 | 
					    mkdir -p /usr/share/nginx/html
 | 
				
			||||||
        rm -rf /usr/share/nginx/html/*
 | 
					    rm -rf /usr/share/nginx/html/*
 | 
				
			||||||
        unzip -q it-tools.zip -d /tmp/it-tools
 | 
					    unzip -q it-tools.zip -d /tmp/it-tools
 | 
				
			||||||
        cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
					    cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
				
			||||||
        rm -rf /tmp/it-tools
 | 
					    rm -rf /tmp/it-tools
 | 
				
			||||||
        rm -f it-tools.zip
 | 
					    rm -f it-tools.zip
 | 
				
			||||||
        msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
    else
 | 
					  else
 | 
				
			||||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
    fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    exit 0
 | 
					  exit 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
@@ -55,4 +55,4 @@ description
 | 
				
			|||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
 | 
					echo -e "${INFO}${YW} Access it using the following IP:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										55
									
								
								ct/alpine-rclone.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								ct/alpine-rclone.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					#!/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: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/rclone/rclone
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Alpine-rclone"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-alpine;backup}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-256}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-1}"
 | 
				
			||||||
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
 | 
					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/rclone ]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					  if [ "${RELEASE}" != "$(cat /opt/rclone_version.txt)" ] || [ ! -f /opt/rclone_version.txt ]; then
 | 
				
			||||||
 | 
					    msg_info "Updating ${APP} LXC"
 | 
				
			||||||
 | 
					    temp_file=$(mktemp)
 | 
				
			||||||
 | 
					    curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file"
 | 
				
			||||||
 | 
					    $STD unzip -o "$temp_file" '*/**' -d /opt/rclone
 | 
				
			||||||
 | 
					    rm -f "$temp_file"
 | 
				
			||||||
 | 
					    echo "${RELEASE}" >/opt/rclone_version.txt
 | 
				
			||||||
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  exit 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 IP:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
				
			||||||
							
								
								
									
										70
									
								
								ct/alpine-tinyauth.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								ct/alpine-tinyauth.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/steveiliop56/tinyauth
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Alpine-tinyauth"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-alpine;auth}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-512}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-3}"
 | 
				
			||||||
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  if [[ ! -d /opt/tinyauth ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
 | 
					  $STD apk update
 | 
				
			||||||
 | 
					  $STD apk upgrade
 | 
				
			||||||
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating tinyauth"
 | 
				
			||||||
 | 
					  RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					  if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
 | 
				
			||||||
 | 
					    $STD service tinyauth stop
 | 
				
			||||||
 | 
					    temp_file=$(mktemp)
 | 
				
			||||||
 | 
					    cp /opt/tinyauth/.env /opt
 | 
				
			||||||
 | 
					    rm -rf /opt/tinyauth
 | 
				
			||||||
 | 
					    mkdir -p /opt/tinyauth
 | 
				
			||||||
 | 
					    curl -fsSL "https://github.com/steveiliop56/tinyauth/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
				
			||||||
 | 
					    tar -xzf "$temp_file" -C /opt/tinyauth --strip-components=1
 | 
				
			||||||
 | 
					    cd /opt/tinyauth/frontend
 | 
				
			||||||
 | 
					    $STD bun install
 | 
				
			||||||
 | 
					    $STD bun run build
 | 
				
			||||||
 | 
					    mv dist /opt/tinyauth/internal/assets/
 | 
				
			||||||
 | 
					    cd /opt/tinyauth
 | 
				
			||||||
 | 
					    $STD go mod download
 | 
				
			||||||
 | 
					    CGO_ENABLED=0 go build -ldflags "-s -w"
 | 
				
			||||||
 | 
					    cp /opt/.env /opt/tinyauth
 | 
				
			||||||
 | 
					    echo "${RELEASE}" >/opt/tinyauth_version.txt
 | 
				
			||||||
 | 
					    rm -f "$temp_file"
 | 
				
			||||||
 | 
					    msg_info "Restarting tinyauth"
 | 
				
			||||||
 | 
					    $STD service tinyauth start
 | 
				
			||||||
 | 
					    msg_ok "Restarted tinyauth"
 | 
				
			||||||
 | 
					    msg_ok "Updated tinyauth"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  exit 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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}"
 | 
				
			||||||
							
								
								
									
										45
									
								
								ct/alpine-transmission.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ct/alpine-transmission.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://transmissionbt.com/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Alpine-Transmission"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-alpine;torrent}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-256}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-1}"
 | 
				
			||||||
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating Transmission"
 | 
				
			||||||
 | 
					  $STD apk upgrade transmission-daemon
 | 
				
			||||||
 | 
					  msg_ok "Updated Transmission"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Restarting Transmission"
 | 
				
			||||||
 | 
					  $STD rc-service transmission-daemon restart
 | 
				
			||||||
 | 
					  msg_ok "Restarted Transmission"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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}:9091${CL}"
 | 
				
			||||||
							
								
								
									
										12
									
								
								ct/alpine.sh
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								ct/alpine.sh
									
									
									
									
									
								
							@@ -9,7 +9,7 @@ APP="Alpine"
 | 
				
			|||||||
var_tags="${var_tags:-os;alpine}"
 | 
					var_tags="${var_tags:-os;alpine}"
 | 
				
			||||||
var_cpu="${var_cpu:-1}"
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
var_ram="${var_ram:-512}"
 | 
					var_ram="${var_ram:-512}"
 | 
				
			||||||
var_disk="${var_disk:-0.1}"
 | 
					var_disk="${var_disk:-0.5}"
 | 
				
			||||||
var_os="${var_os:-alpine}"
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
var_version="${var_version:-3.21}"
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
@@ -20,9 +20,11 @@ color
 | 
				
			|||||||
catch_errors
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
  UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
 | 
					  UPD=$(
 | 
				
			||||||
    "1" "Check for Alpine Updates" ON \
 | 
					    whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
 | 
				
			||||||
    3>&1 1>&2 2>&3)
 | 
					      "1" "Check for Alpine Updates" ON \
 | 
				
			||||||
 | 
					      3>&1 1>&2 2>&3
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  header_info
 | 
					  header_info
 | 
				
			||||||
  if [ "$UPD" == "1" ]; then
 | 
					  if [ "$UPD" == "1" ]; then
 | 
				
			||||||
@@ -35,4 +37,4 @@ start
 | 
				
			|||||||
build_container
 | 
					build_container
 | 
				
			||||||
description
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										72
									
								
								ct/fumadocs.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								ct/fumadocs.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,72 @@
 | 
				
			|||||||
 | 
					#!/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: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/fuma-nama/fumadoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Fumadocs"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-documentation}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-2048}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-5}"
 | 
				
			||||||
 | 
					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/fumadocs ]]; then
 | 
				
			||||||
 | 
					    msg_error "No installation found in /opt/fumadocs!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -f /opt/fumadocs/.projectname ]]; then
 | 
				
			||||||
 | 
					    msg_error "Project name file not found: /opt/fumadocs/.projectname!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  NODE_VERSION="22" NODE_MODULE="pnpm@latest" install_node_and_modules
 | 
				
			||||||
 | 
					  PROJECT_NAME=$(</opt/fumadocs/.projectname)
 | 
				
			||||||
 | 
					  PROJECT_DIR="/opt/fumadocs/${PROJECT_NAME}"
 | 
				
			||||||
 | 
					  SERVICE_NAME="fumadocs_${PROJECT_NAME}.service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -d "$PROJECT_DIR" ]]; then
 | 
				
			||||||
 | 
					    msg_error "Project directory does not exist: $PROJECT_DIR"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Stopping service $SERVICE_NAME"
 | 
				
			||||||
 | 
					  systemctl stop "$SERVICE_NAME"
 | 
				
			||||||
 | 
					  msg_ok "Stopped service $SERVICE_NAME"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating dependencies using pnpm"
 | 
				
			||||||
 | 
					  cd "$PROJECT_DIR"
 | 
				
			||||||
 | 
					  $STD pnpm up --latest
 | 
				
			||||||
 | 
					  $STD pnpm build
 | 
				
			||||||
 | 
					  msg_ok "Updated dependencies using pnpm"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Starting service $SERVICE_NAME"
 | 
				
			||||||
 | 
					  systemctl start "$SERVICE_NAME"
 | 
				
			||||||
 | 
					  msg_ok "Started service $SERVICE_NAME"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_ok "Fumadocs successfully updated"
 | 
				
			||||||
 | 
					  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}:3000${CL}"
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/actualbudget
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/actualbudget
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___        __              __   ____            __           __ 
 | 
				
			||||||
 | 
					   /   | _____/ /___  ______ _/ /  / __ )__  ______/ /___ ____  / /_
 | 
				
			||||||
 | 
					  / /| |/ ___/ __/ / / / __ `/ /  / __  / / / / __  / __ `/ _ \/ __/
 | 
				
			||||||
 | 
					 / ___ / /__/ /_/ /_/ / /_/ / /  / /_/ / /_/ / /_/ / /_/ /  __/ /_  
 | 
				
			||||||
 | 
					/_/  |_\___/\__/\__,_/\__,_/_/  /_____/\__,_/\__,_/\__, /\___/\__/  
 | 
				
			||||||
 | 
					                                                  /____/            
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/alpine-rclone
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-rclone
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___    __      _                            __               
 | 
				
			||||||
 | 
					   /   |  / /___  (_)___  ___        __________/ /___  ____  ___ 
 | 
				
			||||||
 | 
					  / /| | / / __ \/ / __ \/ _ \______/ ___/ ___/ / __ \/ __ \/ _ \
 | 
				
			||||||
 | 
					 / ___ |/ / /_/ / / / / /  __/_____/ /  / /__/ / /_/ / / / /  __/
 | 
				
			||||||
 | 
					/_/  |_/_/ .___/_/_/ /_/\___/     /_/   \___/_/\____/_/ /_/\___/ 
 | 
				
			||||||
 | 
					        /_/                                                      
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/alpine-tinyauth
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-tinyauth
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___    __      _                  __  _                         __  __  
 | 
				
			||||||
 | 
					   /   |  / /___  (_)___  ___        / /_(_)___  __  ______ ___  __/ /_/ /_ 
 | 
				
			||||||
 | 
					  / /| | / / __ \/ / __ \/ _ \______/ __/ / __ \/ / / / __ `/ / / / __/ __ \
 | 
				
			||||||
 | 
					 / ___ |/ / /_/ / / / / /  __/_____/ /_/ / / / / /_/ / /_/ / /_/ / /_/ / / /
 | 
				
			||||||
 | 
					/_/  |_/_/ .___/_/_/ /_/\___/      \__/_/_/ /_/\__, /\__,_/\__,_/\__/_/ /_/ 
 | 
				
			||||||
 | 
					        /_/                                   /____/                        
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/alpine-transmission
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-transmission
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___    __      _                ______                                _           _           
 | 
				
			||||||
 | 
					   /   |  / /___  (_)___  ___      /_  __/________ _____  _________ ___  (_)_________(_)___  ____ 
 | 
				
			||||||
 | 
					  / /| | / / __ \/ / __ \/ _ \______/ / / ___/ __ `/ __ \/ ___/ __ `__ \/ / ___/ ___/ / __ \/ __ \
 | 
				
			||||||
 | 
					 / ___ |/ / /_/ / / / / /  __/_____/ / / /  / /_/ / / / (__  ) / / / / / (__  |__  ) / /_/ / / / /
 | 
				
			||||||
 | 
					/_/  |_/_/ .___/_/_/ /_/\___/     /_/ /_/   \__,_/_/ /_/____/_/ /_/ /_/_/____/____/_/\____/_/ /_/ 
 | 
				
			||||||
 | 
					        /_/                                                                                       
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/fumadocs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/fumadocs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ______                          __               
 | 
				
			||||||
 | 
					   / ____/_  ______ ___  ____ _____/ /___  __________
 | 
				
			||||||
 | 
					  / /_  / / / / __ `__ \/ __ `/ __  / __ \/ ___/ ___/
 | 
				
			||||||
 | 
					 / __/ / /_/ / / / / / / /_/ / /_/ / /_/ / /__(__  ) 
 | 
				
			||||||
 | 
					/_/    \__,_/_/ /_/ /_/\__,_/\__,_/\____/\___/____/  
 | 
				
			||||||
 | 
					                                                     
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/streamlink-webui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/streamlink-webui
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					         __                            ___       __                      __          _ 
 | 
				
			||||||
 | 
					   _____/ /_________  ____ _____ ___  / (_)___  / /__     _      _____  / /_  __  __(_)
 | 
				
			||||||
 | 
					  / ___/ __/ ___/ _ \/ __ `/ __ `__ \/ / / __ \/ //_/____| | /| / / _ \/ __ \/ / / / / 
 | 
				
			||||||
 | 
					 (__  ) /_/ /  /  __/ /_/ / / / / / / / / / / / ,< /_____/ |/ |/ /  __/ /_/ / /_/ / /  
 | 
				
			||||||
 | 
					/____/\__/_/   \___/\__,_/_/ /_/ /_/_/_/_/ /_/_/|_|      |__/|__/\___/_.___/\__,_/_/   
 | 
				
			||||||
 | 
					                                                                                       
 | 
				
			||||||
							
								
								
									
										73
									
								
								ct/streamlink-webui.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								ct/streamlink-webui.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
				
			|||||||
 | 
					#!/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: CrazyWolf13
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/CrazyWolf13/streamlink-webui
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="streamlink-webui"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-download,streaming}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-2048}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-10}"
 | 
				
			||||||
 | 
					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 [[ ! -f /opt/streamlink-webui ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/CrazyWolf13/streamlink-webui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
 | 
					  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
				
			||||||
 | 
					    msg_info "Stopping $APP"
 | 
				
			||||||
 | 
					    systemctl stop ${APP}
 | 
				
			||||||
 | 
					    msg_ok "Stopped $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rm -rf /opt/${APP}
 | 
				
			||||||
 | 
					    NODE_VERSION="22"
 | 
				
			||||||
 | 
					    NODE_MODULE="npm@latest,yarn@latest"
 | 
				
			||||||
 | 
					    install_node_and_modules
 | 
				
			||||||
 | 
					    setup_uv
 | 
				
			||||||
 | 
					    fetch_and_deploy_gh_release "CrazyWolf13/streamlink-webui"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating $APP to v${RELEASE}"
 | 
				
			||||||
 | 
					    $STD uv venv /opt/"${APPLICATION}"/backend/src/.venv
 | 
				
			||||||
 | 
					    source /opt/"${APPLICATION}"/backend/src/.venv/bin/activate
 | 
				
			||||||
 | 
					    $STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/"${APPLICATION}"/backend/src/.venv
 | 
				
			||||||
 | 
					    cd /opt/"${APPLICATION}"/frontend/src
 | 
				
			||||||
 | 
					    $STD yarn install
 | 
				
			||||||
 | 
					    $STD yarn build
 | 
				
			||||||
 | 
					    chmod +x /opt/"${APPLICATION}"/start.sh
 | 
				
			||||||
 | 
					    msg_ok "Updated $APP to v${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting $APP"
 | 
				
			||||||
 | 
					    systemctl start ${APP}
 | 
				
			||||||
 | 
					    msg_ok "Started $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Update Successful"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
 | 
					  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}:8000${CL}"
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
# Author: tremor021
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
# Source: https://github.com/Suwayomi/Suwayomi-Server
 | 
					# Source: https://github.com/Suwayomi/Suwayomi-Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -20,38 +20,47 @@ color
 | 
				
			|||||||
catch_errors
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
    header_info
 | 
					  header_info
 | 
				
			||||||
    check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
    check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ ! -f /usr/bin/suwayomi-server ]]; then
 | 
					  if [[ ! -f /usr/bin/suwayomi-server ]]; then
 | 
				
			||||||
        msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					 | 
				
			||||||
    if [[ "${RELEASE}" != "$(cat /opt/suwayomi-server_version.txt)" ]] || [[ ! -f /opt/suwayomi-server_version.txt ]]; then
 | 
					 | 
				
			||||||
        msg_info "Updating $APP"
 | 
					 | 
				
			||||||
        msg_info "Stopping $APP"
 | 
					 | 
				
			||||||
        systemctl stop suwayomi-server
 | 
					 | 
				
			||||||
        msg_ok "Stopped $APP"
 | 
					 | 
				
			||||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
					 | 
				
			||||||
        cd /tmp
 | 
					 | 
				
			||||||
        URL=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "browser_download_url" | awk '{print substr($2, 2, length($2)-2) }' | tail -n+2 | head -n 1)
 | 
					 | 
				
			||||||
        curl -fsSL "$URL" -o $(basename "$URL")
 | 
					 | 
				
			||||||
        $STD dpkg -i /tmp/*.deb
 | 
					 | 
				
			||||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
					 | 
				
			||||||
        msg_info "Starting $APP"
 | 
					 | 
				
			||||||
        systemctl start suwayomi-server
 | 
					 | 
				
			||||||
        msg_ok "Started $APP"
 | 
					 | 
				
			||||||
        msg_info "Cleaning Up"
 | 
					 | 
				
			||||||
        rm -f *.deb
 | 
					 | 
				
			||||||
        msg_ok "Cleanup Completed"
 | 
					 | 
				
			||||||
        echo "${RELEASE}" >/opt/suwayomi-server_version.txt.txt
 | 
					 | 
				
			||||||
        msg_ok "Update Successful"
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  if dpkg -l | grep -q "openjdk-17-jre"; then
 | 
				
			||||||
 | 
					    $STD apt-get remove -y openjdk-17-jre
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  JAVA_VERSION=21 install_java
 | 
				
			||||||
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
 | 
					  if [[ "${RELEASE}" != "$(cat /opt/suwayomi-server_version.txt)" ]] || [[ ! -f /opt/suwayomi-server_version.txt ]]; then
 | 
				
			||||||
 | 
					    msg_info "Updating $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Stopping $APP"
 | 
				
			||||||
 | 
					    systemctl stop suwayomi-server
 | 
				
			||||||
 | 
					    msg_ok "Stopped $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating $APP to v${RELEASE}"
 | 
				
			||||||
 | 
					    temp_file=$(mktemp)
 | 
				
			||||||
 | 
					    RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
 | 
					    curl -fsSL "https://github.com/Suwayomi/Suwayomi-Server/releases/download/${RELEASE}/Suwayomi-Server-${RELEASE}-debian-all.deb" -o "$temp_file"
 | 
				
			||||||
 | 
					    $STD dpkg -i "$temp_file"
 | 
				
			||||||
 | 
					    msg_ok "Updated $APP to v${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting $APP"
 | 
				
			||||||
 | 
					    systemctl start suwayomi-server
 | 
				
			||||||
 | 
					    msg_ok "Started $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Cleaning Up"
 | 
				
			||||||
 | 
					    rm -f "$temp_file"
 | 
				
			||||||
 | 
					    msg_ok "Cleanup Completed"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "${RELEASE}" >/opt/suwayomi-server_version.txt.txt
 | 
				
			||||||
 | 
					    msg_ok "Update Successful"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								frontend/public/json/actualbudget.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								frontend/public/json/actualbudget.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "name": "Actual Budget",
 | 
				
			||||||
 | 
					    "slug": "actualbudget",
 | 
				
			||||||
 | 
					    "categories": [
 | 
				
			||||||
 | 
					        23
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "date_created": "2025-05-06",
 | 
				
			||||||
 | 
					    "type": "ct",
 | 
				
			||||||
 | 
					    "updateable": true,
 | 
				
			||||||
 | 
					    "privileged": false,
 | 
				
			||||||
 | 
					    "interface_port": 5006,
 | 
				
			||||||
 | 
					    "documentation": "https://github.com/community-scripts/ProxmoxVE/discussions/807",
 | 
				
			||||||
 | 
					    "website": "https://actualbudget.org/",
 | 
				
			||||||
 | 
					    "config_path": "/opt/actualbudget-data/config.json",
 | 
				
			||||||
 | 
					    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/actual-budget.svg",
 | 
				
			||||||
 | 
					    "description": "Actual Budget is a super fast and privacy-focused app for managing your finances. At its heart is the well proven and much loved Envelope Budgeting methodology.",
 | 
				
			||||||
 | 
					    "install_methods": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "type": "default",
 | 
				
			||||||
 | 
					            "script": "ct/actualbudget.sh",
 | 
				
			||||||
 | 
					            "resources": {
 | 
				
			||||||
 | 
					                "cpu": 2,
 | 
				
			||||||
 | 
					                "ram": 2048,
 | 
				
			||||||
 | 
					                "hdd": 4,
 | 
				
			||||||
 | 
					                "os": "debian",
 | 
				
			||||||
 | 
					                "version": "12"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "default_credentials": {
 | 
				
			||||||
 | 
					        "username": null,
 | 
				
			||||||
 | 
					        "password": null
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "notes": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
  "name": "Alpine-IT-Tools",
 | 
					  "name": "Alpine-IT-Tools",
 | 
				
			||||||
  "slug": "alpine-it-tools",
 | 
					  "slug": "alpine-it-tools",
 | 
				
			||||||
  "categories": [
 | 
					  "categories": [
 | 
				
			||||||
      20
 | 
					    20
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "date_created": "2025-01-30",
 | 
					  "date_created": "2025-01-30",
 | 
				
			||||||
  "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
@@ -15,33 +15,32 @@
 | 
				
			|||||||
  "config_path": "",
 | 
					  "config_path": "",
 | 
				
			||||||
  "description": "IT-Tools is a web-based suite of utilities designed to streamline and simplify various IT tasks, providing tools for developers and system administrators to manage their workflows efficiently.",
 | 
					  "description": "IT-Tools is a web-based suite of utilities designed to streamline and simplify various IT tasks, providing tools for developers and system administrators to manage their workflows efficiently.",
 | 
				
			||||||
  "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
      {
 | 
					    {
 | 
				
			||||||
          "type": "default",
 | 
					      "type": "default",
 | 
				
			||||||
          "script": "ct/alpine-it-tools.sh",
 | 
					      "script": "ct/alpine-it-tools.sh",
 | 
				
			||||||
          "resources": {
 | 
					      "resources": {
 | 
				
			||||||
              "cpu": 1,
 | 
					        "cpu": 1,
 | 
				
			||||||
              "ram": 256,
 | 
					        "ram": 256,
 | 
				
			||||||
              "hdd": 0.2,
 | 
					        "hdd": 0.5,
 | 
				
			||||||
              "os": "alpine",
 | 
					        "os": "alpine",
 | 
				
			||||||
              "version": "3.21"
 | 
					        "version": "3.21"
 | 
				
			||||||
         }
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
          "type": "alpine",
 | 
					 | 
				
			||||||
          "script": "ct/alpine-it-tools.sh",
 | 
					 | 
				
			||||||
          "resources": {
 | 
					 | 
				
			||||||
              "cpu": 1,
 | 
					 | 
				
			||||||
              "ram": 256,
 | 
					 | 
				
			||||||
              "hdd": 0.2,
 | 
					 | 
				
			||||||
              "os": "alpine",
 | 
					 | 
				
			||||||
              "version": "3.21"
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "alpine",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-it-tools.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 0.5,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "default_credentials": {
 | 
					  "default_credentials": {
 | 
				
			||||||
      "username": null,
 | 
					    "username": null,
 | 
				
			||||||
      "password": null
 | 
					    "password": null
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "notes": []
 | 
					  "notes": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										55
									
								
								frontend/public/json/alpine-rclone.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								frontend/public/json/alpine-rclone.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Alpine-rclone",
 | 
				
			||||||
 | 
					  "slug": "alpine-rclone",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    11
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-06",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 3000,
 | 
				
			||||||
 | 
					  "documentation": "https://rclone.org/docs/",
 | 
				
			||||||
 | 
					  "website": "https://rclone.org/",
 | 
				
			||||||
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/rclone.svg",
 | 
				
			||||||
 | 
					  "config_path": "~/.config/rclone/rclone.conf",
 | 
				
			||||||
 | 
					  "description": "Rclone is a command-line program to manage files on cloud storage. It is a feature-rich alternative to cloud vendors' web storage interfaces",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-rclone.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 1,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "alpine",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-rclone.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 1,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "info",
 | 
				
			||||||
 | 
					      "text": "`cat ~/rclone.creds` to view login credentials"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "info",
 | 
				
			||||||
 | 
					      "text": "`htpasswd -b -B /opt/rclone/login.pwd newuser newuserpassword` to add more users."
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										51
									
								
								frontend/public/json/alpine-tinyauth.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								frontend/public/json/alpine-tinyauth.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Alpine-tinyauth",
 | 
				
			||||||
 | 
					  "slug": "alpine-tinyauth",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    6
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-06",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 3000,
 | 
				
			||||||
 | 
					  "documentation": "https://tinyauth.app/docs/getting-started.html",
 | 
				
			||||||
 | 
					  "website": "https://tinyauth.app/",
 | 
				
			||||||
 | 
					  "logo": "https://raw.githubusercontent.com/steveiliop56/tinyauth/refs/heads/main/frontend/public/android-chrome-192x192.png",
 | 
				
			||||||
 | 
					  "config_path": "/opt/tinyauth/.env",
 | 
				
			||||||
 | 
					  "description": "Tinyauth is a simple authentication middleware that adds simple username/password login or OAuth with Google, Github and any generic provider to all of your docker apps. It is designed for traefik but it can be extended to work with all reverse proxies like caddy and nginx.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-tinyauth.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 3,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "alpine",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-tinyauth.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 3,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "info",
 | 
				
			||||||
 | 
					      "text": "`cat ~/tinyauth.creds` to view login credentials"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,52 +1,51 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "name": "Alpine",
 | 
					  "name": "Alpine",
 | 
				
			||||||
    "slug": "alpine",
 | 
					  "slug": "alpine",
 | 
				
			||||||
    "categories": [
 | 
					  "categories": [
 | 
				
			||||||
        2
 | 
					    2
 | 
				
			||||||
    ],
 | 
					  ],
 | 
				
			||||||
    "date_created": "2024-05-02",
 | 
					  "date_created": "2024-05-02",
 | 
				
			||||||
    "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
    "updateable": false,
 | 
					  "updateable": false,
 | 
				
			||||||
    "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
    "interface_port": null,
 | 
					  "interface_port": null,
 | 
				
			||||||
    "documentation": null,
 | 
					  "documentation": null,
 | 
				
			||||||
    "website": "https://www.alpinelinux.org/",
 | 
					  "website": "https://www.alpinelinux.org/",
 | 
				
			||||||
    "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/alpinelinux.svg",
 | 
					  "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/alpinelinux.svg",
 | 
				
			||||||
    "config_path": "",
 | 
					  "config_path": "",
 | 
				
			||||||
    "description": "A security-oriented, lightweight Linux distribution based on musl and BusyBox.\r\nBy default, the root password is set to alpine. If you choose to use advanced settings, you will need to define a password, autologin is currently unavailable.",
 | 
					  "description": "A security-oriented, lightweight Linux distribution based on musl and BusyBox.\r\nBy default, the root password is set to alpine. If you choose to use advanced settings, you will need to define a password, autologin is currently unavailable.",
 | 
				
			||||||
    "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
        {
 | 
					    {
 | 
				
			||||||
            "type": "default",
 | 
					      "type": "default",
 | 
				
			||||||
            "script": "ct/alpine.sh",
 | 
					      "script": "ct/alpine.sh",
 | 
				
			||||||
            "resources": {
 | 
					      "resources": {
 | 
				
			||||||
                "cpu": 1,
 | 
					        "cpu": 1,
 | 
				
			||||||
                "ram": 512,
 | 
					        "ram": 512,
 | 
				
			||||||
                "hdd": 0.1,
 | 
					        "hdd": 0.5,
 | 
				
			||||||
                "os": "alpine",
 | 
					        "os": "alpine",
 | 
				
			||||||
                "version": "3.21"
 | 
					        "version": "3.21"
 | 
				
			||||||
            }
 | 
					      }
 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "type": "alpine",
 | 
					 | 
				
			||||||
            "script": "ct/alpine.sh",
 | 
					 | 
				
			||||||
            "resources": {
 | 
					 | 
				
			||||||
                "cpu": 1,
 | 
					 | 
				
			||||||
                "ram": 512,
 | 
					 | 
				
			||||||
                "hdd": 0.1,
 | 
					 | 
				
			||||||
                "os": "alpine",
 | 
					 | 
				
			||||||
                "version": "3.21"
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "default_credentials": {
 | 
					 | 
				
			||||||
        "username": null,
 | 
					 | 
				
			||||||
        "password": "alpine"
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "notes": [
 | 
					    {
 | 
				
			||||||
        {
 | 
					      "type": "alpine",
 | 
				
			||||||
            "text": "To Update Alpine: `apk update && apk upgrade`",
 | 
					      "script": "ct/alpine.sh",
 | 
				
			||||||
            "type": "info"
 | 
					      "resources": {
 | 
				
			||||||
        }
 | 
					        "cpu": 1,
 | 
				
			||||||
    ]
 | 
					        "ram": 512,
 | 
				
			||||||
 | 
					        "hdd": 0.5,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": "alpine"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "To Update Alpine: `apk update && apk upgrade`",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								frontend/public/json/fumadocs.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								frontend/public/json/fumadocs.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Fumadocs",
 | 
				
			||||||
 | 
					  "slug": "fumadocs",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    10
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-06",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 3000,
 | 
				
			||||||
 | 
					  "documentation": "https://fumadocs.vercel.app/docs/ui",
 | 
				
			||||||
 | 
					  "website": "https://fumadocs.vercel.app/",
 | 
				
			||||||
 | 
					  "logo": "https://raw.githubusercontent.com/fuma-nama/fumadocs/refs/heads/dev/documents/logo.png",
 | 
				
			||||||
 | 
					  "config_path": "",
 | 
				
			||||||
 | 
					  "description": "Fumadocs is a flexible and high-performance framework for creating well-structured documentation websites using Next.js. It allows developers to write content and transform it into structured data. Fumadocs supports various content sources, including MDX and Content Collections, and integrates search solutions like Orama and Algolia. It also provides interactive components to enhance the user experience.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/fumadocs.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 2,
 | 
				
			||||||
 | 
					        "ram": 2048,
 | 
				
			||||||
 | 
					        "hdd": 5,
 | 
				
			||||||
 | 
					        "os": "Debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,35 +1,35 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "name": "Open WebUI",
 | 
					  "name": "Open WebUI",
 | 
				
			||||||
    "slug": "openwebui",
 | 
					  "slug": "openwebui",
 | 
				
			||||||
    "categories": [
 | 
					  "categories": [
 | 
				
			||||||
        20
 | 
					    20
 | 
				
			||||||
    ],
 | 
					  ],
 | 
				
			||||||
    "date_created": "2024-10-24",
 | 
					  "date_created": "2024-10-24",
 | 
				
			||||||
    "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
    "updateable": true,
 | 
					  "updateable": true,
 | 
				
			||||||
    "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
    "interface_port": 8080,
 | 
					  "interface_port": 8080,
 | 
				
			||||||
    "documentation": null,
 | 
					  "documentation": "https://docs.openwebui.com/",
 | 
				
			||||||
    "website": "https://openwebui.com/",
 | 
					  "website": "https://openwebui.com/",
 | 
				
			||||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/open-webui.svg",
 | 
					  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/open-webui.svg",
 | 
				
			||||||
    "config_path": "/opt/open-webui/.env",
 | 
					  "config_path": "/opt/open-webui/.env",
 | 
				
			||||||
    "description": "OpenWebUI is a self-hosted, web-based interface that allows you to run AI models entirely offline. It integrates with various LLM runners, such as OpenAI and Ollama, and supports features like markdown and LaTeX rendering, model management, and voice/video calls. It also offers multilingual support and the ability to generate images using APIs like DALL-E or ComfyUI",
 | 
					  "description": "OpenWebUI is a self-hosted, web-based interface that allows you to run AI models entirely offline. It integrates with various LLM runners, such as OpenAI and Ollama, and supports features like markdown and LaTeX rendering, model management, and voice/video calls. It also offers multilingual support and the ability to generate images using APIs like DALL-E or ComfyUI",
 | 
				
			||||||
    "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
        {
 | 
					    {
 | 
				
			||||||
            "type": "default",
 | 
					      "type": "default",
 | 
				
			||||||
            "script": "ct/openwebui.sh",
 | 
					      "script": "ct/openwebui.sh",
 | 
				
			||||||
            "resources": {
 | 
					      "resources": {
 | 
				
			||||||
                "cpu": 4,
 | 
					        "cpu": 4,
 | 
				
			||||||
                "ram": 4096,
 | 
					        "ram": 4096,
 | 
				
			||||||
                "hdd": 16,
 | 
					        "hdd": 16,
 | 
				
			||||||
                "os": "debian",
 | 
					        "os": "debian",
 | 
				
			||||||
                "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
            }
 | 
					      }
 | 
				
			||||||
        }
 | 
					    }
 | 
				
			||||||
    ],
 | 
					  ],
 | 
				
			||||||
    "default_credentials": {
 | 
					  "default_credentials": {
 | 
				
			||||||
        "username": null,
 | 
					    "username": null,
 | 
				
			||||||
        "password": null
 | 
					    "password": null
 | 
				
			||||||
    },
 | 
					  },
 | 
				
			||||||
    "notes": []
 | 
					  "notes": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										40
									
								
								frontend/public/json/streamlink-webui.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/streamlink-webui.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Streamlink WebUI",
 | 
				
			||||||
 | 
					  "slug": "streamlink-webui",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    11
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-06",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 8000,
 | 
				
			||||||
 | 
					  "documentation": "https://github.com/CrazyWolf13/streamlink-webui",
 | 
				
			||||||
 | 
					  "config_path": "/opt/streamlink-webui.env",
 | 
				
			||||||
 | 
					  "website": "https://github.com/CrazyWolf13/streamlink-webui",
 | 
				
			||||||
 | 
					  "logo": null,
 | 
				
			||||||
 | 
					  "description": "a simple web-ui to the well-known streamlink cli application, which allows you to save twitch streams to your local disk.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/streamlink-webui.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 2,
 | 
				
			||||||
 | 
					        "ram": 2048,
 | 
				
			||||||
 | 
					        "hdd": 5,
 | 
				
			||||||
 | 
					        "os": "Debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": "null",
 | 
				
			||||||
 | 
					    "password": "null"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "This app requires a Twitch cliend_ID and client_secret, set it in the config file. Look in the application documentation on how to obtain it.",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,35 +1,55 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "name": "Transmission",
 | 
					  "name": "Transmission",
 | 
				
			||||||
    "slug": "transmission",
 | 
					  "slug": "transmission",
 | 
				
			||||||
    "categories": [
 | 
					  "categories": [
 | 
				
			||||||
        11
 | 
					    11
 | 
				
			||||||
    ],
 | 
					  ],
 | 
				
			||||||
    "date_created": "2024-05-02",
 | 
					  "date_created": "2025-05-02",
 | 
				
			||||||
    "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
    "updateable": false,
 | 
					  "updateable": true,
 | 
				
			||||||
    "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
    "interface_port": 9091,
 | 
					  "interface_port": 9091,
 | 
				
			||||||
    "documentation": null,
 | 
					  "documentation": "https://github.com/transmission/transmission/blob/main/docs/README.md",
 | 
				
			||||||
    "website": "https://transmissionbt.com/",
 | 
					  "website": "https://transmissionbt.com/",
 | 
				
			||||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/transmission.svg",
 | 
					  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/transmission.svg",
 | 
				
			||||||
    "config_path": "/etc/transmission-daemon/settings.json",
 | 
					  "config_path": "Debian `/etc/transmission-daemon/settings.json` | Alpine `/var/lib/transmission/config/settings.json`",
 | 
				
			||||||
    "description": "Transmission is a free, open-source BitTorrent client known for its fast download speeds and ease of use. It supports various platforms such as Windows, Linux, and macOS and has features like web interface, peer exchange, and encrypted transfers.",
 | 
					  "description": "Transmission is a free, open-source BitTorrent client known for its fast download speeds and ease of use. It supports various platforms such as Windows, Linux, and macOS and has features like web interface, peer exchange, and encrypted transfers.",
 | 
				
			||||||
    "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
        {
 | 
					    {
 | 
				
			||||||
            "type": "default",
 | 
					      "type": "default",
 | 
				
			||||||
            "script": "ct/transmission.sh",
 | 
					      "script": "ct/transmission.sh",
 | 
				
			||||||
            "resources": {
 | 
					      "resources": {
 | 
				
			||||||
                "cpu": 2,
 | 
					        "cpu": 2,
 | 
				
			||||||
                "ram": 2048,
 | 
					        "ram": 2048,
 | 
				
			||||||
                "hdd": 8,
 | 
					        "hdd": 8,
 | 
				
			||||||
                "os": "debian",
 | 
					        "os": "debian",
 | 
				
			||||||
                "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
            }
 | 
					      }
 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "default_credentials": {
 | 
					 | 
				
			||||||
        "username": "transmission",
 | 
					 | 
				
			||||||
        "password": "transmission"
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "notes": []
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "alpine",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-transmission.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 1,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "info",
 | 
				
			||||||
 | 
					      "text": "Script disables whitelisting by default. Change config to suit your needs."
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "info",
 | 
				
			||||||
 | 
					      "text": "Alpine script sets initial disk size to 1GB. Please adjust for your needs after installation ends."
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,44 +1,249 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "docker/compose",
 | 
				
			||||||
 | 
					    "version": "v2.36.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-07T11:54:14Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "Graylog2/graylog2-server",
 | 
				
			||||||
 | 
					    "version": "6.2.2",
 | 
				
			||||||
 | 
					    "date": "2025-05-07T11:36:20Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "openobserve/openobserve",
 | 
				
			||||||
 | 
					    "version": "v0.14.7",
 | 
				
			||||||
 | 
					    "date": "2025-05-07T11:32:23Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "home-assistant/core",
 | 
				
			||||||
 | 
					    "version": "2025.4.4",
 | 
				
			||||||
 | 
					    "date": "2025-04-25T07:47:57Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "grokability/snipe-it",
 | 
				
			||||||
 | 
					    "version": "v8.1.3",
 | 
				
			||||||
 | 
					    "date": "2025-05-07T11:09:21Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "cockpit-project/cockpit",
 | 
				
			||||||
 | 
					    "version": "338",
 | 
				
			||||||
 | 
					    "date": "2025-05-07T10:43:29Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "zabbix/zabbix",
 | 
				
			||||||
 | 
					    "version": "7.4.0beta2",
 | 
				
			||||||
 | 
					    "date": "2025-05-07T10:39:21Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "zwave-js/zwave-js-ui",
 | 
				
			||||||
 | 
					    "version": "v10.4.1",
 | 
				
			||||||
 | 
					    "date": "2025-05-07T09:22:38Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "jupyter/notebook",
 | 
				
			||||||
 | 
					    "version": "@jupyter-notebook/ui-components@7.5.0-alpha.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-07T09:12:08Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "Jackett/Jackett",
 | 
				
			||||||
 | 
					    "version": "v0.22.1874",
 | 
				
			||||||
 | 
					    "date": "2025-05-07T05:56:30Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "cross-seed/cross-seed",
 | 
				
			||||||
 | 
					    "version": "v6.12.2",
 | 
				
			||||||
 | 
					    "date": "2025-04-28T17:44:49Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "open-webui/open-webui",
 | 
				
			||||||
 | 
					    "version": "v0.6.7",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T23:08:38Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "influxdata/influxdb",
 | 
				
			||||||
 | 
					    "version": "v1.12.1rc0",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T20:56:30Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "keycloak/keycloak",
 | 
					    "name": "keycloak/keycloak",
 | 
				
			||||||
    "version": "26.2.3",
 | 
					    "version": "26.2.3",
 | 
				
			||||||
    "date": "2025-05-05T11:12:36Z"
 | 
					    "date": "2025-05-05T11:12:36Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "grokability/snipe-it",
 | 
					    "name": "pocket-id/pocket-id",
 | 
				
			||||||
    "version": "v8.1.2",
 | 
					    "version": "v0.52.0",
 | 
				
			||||||
    "date": "2025-05-05T10:28:17Z"
 | 
					    "date": "2025-05-06T20:14:44Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "runtipi/runtipi",
 | 
				
			||||||
 | 
					    "version": "v4.0.2",
 | 
				
			||||||
 | 
					    "date": "2025-05-01T16:10:58Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "redis/redis",
 | 
				
			||||||
 | 
					    "version": "8.0.1-int",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T18:40:34Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "Athou/commafeed",
 | 
				
			||||||
 | 
					    "version": "5.8.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T18:33:07Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "sysadminsmedia/homebox",
 | 
				
			||||||
 | 
					    "version": "v0.19.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T18:05:42Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "HabitRPG/habitica",
 | 
				
			||||||
 | 
					    "version": "v5.36.2",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T17:32:30Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "wazuh/wazuh",
 | 
				
			||||||
 | 
					    "version": "coverity-w19-4.13.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T15:59:45Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "jenkinsci/jenkins",
 | 
				
			||||||
 | 
					    "version": "jenkins-2.509",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T15:37:10Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "MariaDB/server",
 | 
				
			||||||
 | 
					    "version": "mariadb-11.4.6",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T15:30:49Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "bluenviron/mediamtx",
 | 
				
			||||||
 | 
					    "version": "v1.12.2",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T15:30:10Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "AdguardTeam/AdGuardHome",
 | 
				
			||||||
 | 
					    "version": "v0.107.61",
 | 
				
			||||||
 | 
					    "date": "2025-04-22T12:42:26Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "zitadel/zitadel",
 | 
				
			||||||
 | 
					    "version": "v2.65.8",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T13:57:49Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "element-hq/synapse",
 | 
				
			||||||
 | 
					    "version": "v1.129.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T12:28:54Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "nzbgetcom/nzbget",
 | 
				
			||||||
 | 
					    "version": "v24.8",
 | 
				
			||||||
 | 
					    "date": "2025-03-18T07:33:51Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "n8n-io/n8n",
 | 
				
			||||||
 | 
					    "version": "n8n@1.91.2",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T12:59:51Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "Luligu/matterbridge",
 | 
				
			||||||
 | 
					    "version": "3.0.1",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T10:24:43Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "syncthing/syncthing",
 | 
				
			||||||
 | 
					    "version": "v1.29.6",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T07:57:02Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "mattermost/mattermost",
 | 
				
			||||||
 | 
					    "version": "v9.11.14",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T17:50:53Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "Checkmk/checkmk",
 | 
				
			||||||
 | 
					    "version": "v2.4.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T06:47:16Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "morpheus65535/bazarr",
 | 
				
			||||||
 | 
					    "version": "v1.5.1",
 | 
				
			||||||
 | 
					    "date": "2025-01-01T16:15:52Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "linkwarden/linkwarden",
 | 
				
			||||||
 | 
					    "version": "v2.10.2",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T03:12:53Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "fallenbagel/jellyseerr",
 | 
				
			||||||
 | 
					    "version": "preview-tvdb",
 | 
				
			||||||
 | 
					    "date": "2025-05-06T01:32:52Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "autobrr/autobrr",
 | 
				
			||||||
 | 
					    "version": "v1.62.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T20:35:18Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "postgres/postgres",
 | 
				
			||||||
 | 
					    "version": "REL_13_21",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T20:34:49Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "msgbyte/tianji",
 | 
				
			||||||
 | 
					    "version": "v1.20.9",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T19:24:09Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "grafana/grafana",
 | 
				
			||||||
 | 
					    "version": "v12.0.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T18:28:19Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "BookStackApp/BookStack",
 | 
				
			||||||
 | 
					    "version": "v25.02.3",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T17:39:11Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "apache/couchdb",
 | 
				
			||||||
 | 
					    "version": "3.5.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T16:28:24Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "icereed/paperless-gpt",
 | 
				
			||||||
 | 
					    "version": "v0.18.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T15:34:40Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "apache/tika",
 | 
				
			||||||
 | 
					    "version": "2.9.4",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T15:17:27Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "neo4j/neo4j",
 | 
				
			||||||
 | 
					    "version": "5.26.6",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T13:59:36Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "traefik/traefik",
 | 
				
			||||||
 | 
					    "version": "v3.4.0",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T13:59:23Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "semaphoreui/semaphore",
 | 
				
			||||||
 | 
					    "version": "v2.14.9",
 | 
				
			||||||
 | 
					    "date": "2025-05-05T12:20:38Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "theonedev/onedev",
 | 
					    "name": "theonedev/onedev",
 | 
				
			||||||
    "version": "v11.9.3",
 | 
					    "version": "v11.9.3",
 | 
				
			||||||
    "date": "2025-05-05T10:22:11Z"
 | 
					    "date": "2025-05-05T10:22:11Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "traefik/traefik",
 | 
					 | 
				
			||||||
    "version": "v3.3.7",
 | 
					 | 
				
			||||||
    "date": "2025-05-05T08:53:40Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "icereed/paperless-gpt",
 | 
					 | 
				
			||||||
    "version": "v0.17.0",
 | 
					 | 
				
			||||||
    "date": "2025-05-05T08:27:55Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "evcc-io/evcc",
 | 
					    "name": "evcc-io/evcc",
 | 
				
			||||||
    "version": "0.203.5",
 | 
					    "version": "0.203.5",
 | 
				
			||||||
    "date": "2025-05-05T06:41:02Z"
 | 
					    "date": "2025-05-05T06:41:02Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "mattermost/mattermost",
 | 
					 | 
				
			||||||
    "version": "v10.6.3",
 | 
					 | 
				
			||||||
    "date": "2025-04-29T07:03:19Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "Jackett/Jackett",
 | 
					 | 
				
			||||||
    "version": "v0.22.1865",
 | 
					 | 
				
			||||||
    "date": "2025-05-05T05:54:54Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "MediaBrowser/Emby.Releases",
 | 
					    "name": "MediaBrowser/Emby.Releases",
 | 
				
			||||||
    "version": "4.8.11.0",
 | 
					    "version": "4.8.11.0",
 | 
				
			||||||
@@ -64,21 +269,6 @@
 | 
				
			|||||||
    "version": "v0.25.1",
 | 
					    "version": "v0.25.1",
 | 
				
			||||||
    "date": "2025-02-25T17:30:48Z"
 | 
					    "date": "2025-02-25T17:30:48Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "semaphoreui/semaphore",
 | 
					 | 
				
			||||||
    "version": "v2.14.8",
 | 
					 | 
				
			||||||
    "date": "2025-05-04T19:28:20Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "runtipi/runtipi",
 | 
					 | 
				
			||||||
    "version": "nightly",
 | 
					 | 
				
			||||||
    "date": "2025-05-04T18:23:57Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "bluenviron/mediamtx",
 | 
					 | 
				
			||||||
    "version": "v1.12.1",
 | 
					 | 
				
			||||||
    "date": "2025-05-04T18:23:38Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "Lidarr/Lidarr",
 | 
					    "name": "Lidarr/Lidarr",
 | 
				
			||||||
    "version": "v2.11.2.4629",
 | 
					    "version": "v2.11.2.4629",
 | 
				
			||||||
@@ -99,30 +289,15 @@
 | 
				
			|||||||
    "version": "v5.22.4.9896",
 | 
					    "version": "v5.22.4.9896",
 | 
				
			||||||
    "date": "2025-04-23T18:51:12Z"
 | 
					    "date": "2025-04-23T18:51:12Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "home-assistant/core",
 | 
					 | 
				
			||||||
    "version": "2025.4.4",
 | 
					 | 
				
			||||||
    "date": "2025-04-25T07:47:57Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "bastienwirtz/homer",
 | 
					    "name": "bastienwirtz/homer",
 | 
				
			||||||
    "version": "v25.05.1",
 | 
					    "version": "v25.05.1",
 | 
				
			||||||
    "date": "2025-05-04T12:17:00Z"
 | 
					    "date": "2025-05-04T12:17:00Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "morpheus65535/bazarr",
 | 
					 | 
				
			||||||
    "version": "v1.5.1",
 | 
					 | 
				
			||||||
    "date": "2025-01-01T16:15:52Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "ollama/ollama",
 | 
					    "name": "ollama/ollama",
 | 
				
			||||||
    "version": "v0.6.7-rc2",
 | 
					    "version": "v0.6.8",
 | 
				
			||||||
    "date": "2025-04-30T20:57:45Z"
 | 
					    "date": "2025-05-03T22:56:44Z"
 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "pocket-id/pocket-id",
 | 
					 | 
				
			||||||
    "version": "v0.51.1",
 | 
					 | 
				
			||||||
    "date": "2025-05-03T21:42:51Z"
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "FreshRSS/FreshRSS",
 | 
					    "name": "FreshRSS/FreshRSS",
 | 
				
			||||||
@@ -144,11 +319,6 @@
 | 
				
			|||||||
    "version": "v2.0.111",
 | 
					    "version": "v2.0.111",
 | 
				
			||||||
    "date": "2025-05-03T16:25:30Z"
 | 
					    "date": "2025-05-03T16:25:30Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "linkwarden/linkwarden",
 | 
					 | 
				
			||||||
    "version": "v2.10.1",
 | 
					 | 
				
			||||||
    "date": "2025-05-03T16:03:26Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "dgtlmoon/changedetection.io",
 | 
					    "name": "dgtlmoon/changedetection.io",
 | 
				
			||||||
    "version": "0.49.16",
 | 
					    "version": "0.49.16",
 | 
				
			||||||
@@ -194,11 +364,6 @@
 | 
				
			|||||||
    "version": "v0.304.0-rc.0",
 | 
					    "version": "v0.304.0-rc.0",
 | 
				
			||||||
    "date": "2025-05-02T17:29:18Z"
 | 
					    "date": "2025-05-02T17:29:18Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "influxdata/influxdb",
 | 
					 | 
				
			||||||
    "version": "v3.0.2",
 | 
					 | 
				
			||||||
    "date": "2025-05-02T18:11:39Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "forgejo/forgejo",
 | 
					    "name": "forgejo/forgejo",
 | 
				
			||||||
    "version": "v11.0.1",
 | 
					    "version": "v11.0.1",
 | 
				
			||||||
@@ -214,50 +379,20 @@
 | 
				
			|||||||
    "version": "v3.5.4",
 | 
					    "version": "v3.5.4",
 | 
				
			||||||
    "date": "2025-05-02T13:42:06Z"
 | 
					    "date": "2025-05-02T13:42:06Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "zitadel/zitadel",
 | 
					 | 
				
			||||||
    "version": "v2.71.9",
 | 
					 | 
				
			||||||
    "date": "2025-05-02T12:48:14Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "nzbgetcom/nzbget",
 | 
					 | 
				
			||||||
    "version": "v24.8",
 | 
					 | 
				
			||||||
    "date": "2025-03-18T07:33:51Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "motioneye-project/motioneye",
 | 
					    "name": "motioneye-project/motioneye",
 | 
				
			||||||
    "version": "0.42.1",
 | 
					    "version": "0.42.1",
 | 
				
			||||||
    "date": "2020-06-07T07:27:04Z"
 | 
					    "date": "2020-06-07T07:27:04Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "msgbyte/tianji",
 | 
					 | 
				
			||||||
    "version": "v1.20.8",
 | 
					 | 
				
			||||||
    "date": "2025-05-02T11:37:05Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "redis/redis",
 | 
					 | 
				
			||||||
    "version": "8.0.0",
 | 
					 | 
				
			||||||
    "date": "2025-05-02T11:20:31Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "emqx/emqx",
 | 
					    "name": "emqx/emqx",
 | 
				
			||||||
    "version": "e5.9.0",
 | 
					    "version": "e5.9.0",
 | 
				
			||||||
    "date": "2025-05-02T11:07:10Z"
 | 
					    "date": "2025-05-02T11:07:10Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "apache/couchdb",
 | 
					 | 
				
			||||||
    "version": "3.5.0-RC1",
 | 
					 | 
				
			||||||
    "date": "2025-05-02T04:34:23Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "syncthing/syncthing",
 | 
					 | 
				
			||||||
    "version": "v2.0.0-rc.14",
 | 
					 | 
				
			||||||
    "date": "2025-05-01T23:50:42Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "stackblitz-labs/bolt.diy",
 | 
					    "name": "stackblitz-labs/bolt.diy",
 | 
				
			||||||
    "version": "v0.0.7-hf1",
 | 
					    "version": "v1.0.0-draft",
 | 
				
			||||||
    "date": "2025-03-10T20:49:39Z"
 | 
					    "date": "2025-05-01T18:33:44Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "Koenkk/zigbee2mqtt",
 | 
					    "name": "Koenkk/zigbee2mqtt",
 | 
				
			||||||
@@ -269,26 +404,11 @@
 | 
				
			|||||||
    "version": "v4.3.0",
 | 
					    "version": "v4.3.0",
 | 
				
			||||||
    "date": "2025-05-01T16:46:17Z"
 | 
					    "date": "2025-05-01T16:46:17Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "fallenbagel/jellyseerr",
 | 
					 | 
				
			||||||
    "version": "preview-plex-home-profile",
 | 
					 | 
				
			||||||
    "date": "2025-05-01T14:59:46Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "n8n-io/n8n",
 | 
					 | 
				
			||||||
    "version": "n8n@1.91.0",
 | 
					 | 
				
			||||||
    "date": "2025-04-28T15:38:56Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "NodeBB/NodeBB",
 | 
					    "name": "NodeBB/NodeBB",
 | 
				
			||||||
    "version": "v4.3.0",
 | 
					    "version": "v4.3.0",
 | 
				
			||||||
    "date": "2025-05-01T04:13:41Z"
 | 
					    "date": "2025-05-01T04:13:41Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "HabitRPG/habitica",
 | 
					 | 
				
			||||||
    "version": "v5.36.1",
 | 
					 | 
				
			||||||
    "date": "2025-04-30T19:44:44Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "readeck/readeck",
 | 
					    "name": "readeck/readeck",
 | 
				
			||||||
    "version": "0.18.1",
 | 
					    "version": "0.18.1",
 | 
				
			||||||
@@ -304,21 +424,6 @@
 | 
				
			|||||||
    "version": "1.6.13",
 | 
					    "version": "1.6.13",
 | 
				
			||||||
    "date": "2025-04-30T16:38:35Z"
 | 
					    "date": "2025-04-30T16:38:35Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "element-hq/synapse",
 | 
					 | 
				
			||||||
    "version": "v1.129.0rc1",
 | 
					 | 
				
			||||||
    "date": "2025-04-16T15:18:13Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "Graylog2/graylog2-server",
 | 
					 | 
				
			||||||
    "version": "6.3.0-alpha.2",
 | 
					 | 
				
			||||||
    "date": "2025-04-30T14:55:15Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "jenkinsci/jenkins",
 | 
					 | 
				
			||||||
    "version": "jenkins-2.504.1",
 | 
					 | 
				
			||||||
    "date": "2025-04-30T14:33:59Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "cloudflare/cloudflared",
 | 
					    "name": "cloudflare/cloudflared",
 | 
				
			||||||
    "version": "2025.4.2",
 | 
					    "version": "2025.4.2",
 | 
				
			||||||
@@ -334,26 +439,11 @@
 | 
				
			|||||||
    "version": "version/2025.4.0",
 | 
					    "version": "version/2025.4.0",
 | 
				
			||||||
    "date": "2025-04-30T12:34:14Z"
 | 
					    "date": "2025-04-30T12:34:14Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "Checkmk/checkmk",
 | 
					 | 
				
			||||||
    "version": "v2.4.0-rc1",
 | 
					 | 
				
			||||||
    "date": "2025-04-30T11:01:56Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "wazuh/wazuh",
 | 
					 | 
				
			||||||
    "version": "coverity-w18-4.12.0",
 | 
					 | 
				
			||||||
    "date": "2025-04-30T09:30:26Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "Stirling-Tools/Stirling-PDF",
 | 
					    "name": "Stirling-Tools/Stirling-PDF",
 | 
				
			||||||
    "version": "v0.46.0",
 | 
					    "version": "v0.46.0",
 | 
				
			||||||
    "date": "2025-04-30T07:05:42Z"
 | 
					    "date": "2025-04-30T07:05:42Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "Luligu/matterbridge",
 | 
					 | 
				
			||||||
    "version": "3.0.0",
 | 
					 | 
				
			||||||
    "date": "2025-04-30T06:24:07Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "go-gitea/gitea",
 | 
					    "name": "go-gitea/gitea",
 | 
				
			||||||
    "version": "v1.25.0-dev",
 | 
					    "version": "v1.25.0-dev",
 | 
				
			||||||
@@ -374,11 +464,6 @@
 | 
				
			|||||||
    "version": "v1.4.7",
 | 
					    "version": "v1.4.7",
 | 
				
			||||||
    "date": "2025-04-29T15:00:18Z"
 | 
					    "date": "2025-04-29T15:00:18Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "apache/tika",
 | 
					 | 
				
			||||||
    "version": "2.9.4-rc1",
 | 
					 | 
				
			||||||
    "date": "2025-04-29T13:06:08Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "esphome/esphome",
 | 
					    "name": "esphome/esphome",
 | 
				
			||||||
    "version": "2025.4.1",
 | 
					    "version": "2025.4.1",
 | 
				
			||||||
@@ -399,11 +484,6 @@
 | 
				
			|||||||
    "version": "v1.2.0",
 | 
					    "version": "v1.2.0",
 | 
				
			||||||
    "date": "2025-04-28T17:55:01Z"
 | 
					    "date": "2025-04-28T17:55:01Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "cross-seed/cross-seed",
 | 
					 | 
				
			||||||
    "version": "v6.12.2",
 | 
					 | 
				
			||||||
    "date": "2025-04-28T17:44:49Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "immich-app/immich",
 | 
					    "name": "immich-app/immich",
 | 
				
			||||||
    "version": "v1.132.3",
 | 
					    "version": "v1.132.3",
 | 
				
			||||||
@@ -449,11 +529,6 @@
 | 
				
			|||||||
    "version": "v3.1.9",
 | 
					    "version": "v3.1.9",
 | 
				
			||||||
    "date": "2025-03-01T02:24:33Z"
 | 
					    "date": "2025-03-01T02:24:33Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "zwave-js/zwave-js-ui",
 | 
					 | 
				
			||||||
    "version": "v10.3.3",
 | 
					 | 
				
			||||||
    "date": "2025-04-26T21:44:00Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "TandoorRecipes/recipes",
 | 
					    "name": "TandoorRecipes/recipes",
 | 
				
			||||||
    "version": "1.5.34",
 | 
					    "version": "1.5.34",
 | 
				
			||||||
@@ -499,11 +574,6 @@
 | 
				
			|||||||
    "version": "v1.4.0",
 | 
					    "version": "v1.4.0",
 | 
				
			||||||
    "date": "2025-04-24T16:20:17Z"
 | 
					    "date": "2025-04-24T16:20:17Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "openobserve/openobserve",
 | 
					 | 
				
			||||||
    "version": "v0.14.6-rc8",
 | 
					 | 
				
			||||||
    "date": "2025-04-24T15:39:41Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "glpi-project/glpi",
 | 
					    "name": "glpi-project/glpi",
 | 
				
			||||||
    "version": "10.0.18",
 | 
					    "version": "10.0.18",
 | 
				
			||||||
@@ -524,26 +594,6 @@
 | 
				
			|||||||
    "version": "v3.5.2",
 | 
					    "version": "v3.5.2",
 | 
				
			||||||
    "date": "2025-04-23T18:41:46Z"
 | 
					    "date": "2025-04-23T18:41:46Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "grafana/grafana",
 | 
					 | 
				
			||||||
    "version": "v11.6.1",
 | 
					 | 
				
			||||||
    "date": "2025-04-23T17:04:02Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "cockpit-project/cockpit",
 | 
					 | 
				
			||||||
    "version": "337",
 | 
					 | 
				
			||||||
    "date": "2025-04-23T08:26:31Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "zabbix/zabbix",
 | 
					 | 
				
			||||||
    "version": "7.2.6",
 | 
					 | 
				
			||||||
    "date": "2025-04-23T08:06:23Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "jupyter/notebook",
 | 
					 | 
				
			||||||
    "version": "v7.4.1",
 | 
					 | 
				
			||||||
    "date": "2025-04-23T06:40:34Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "minio/minio",
 | 
					    "name": "minio/minio",
 | 
				
			||||||
    "version": "RELEASE.2025-04-22T22-12-26Z",
 | 
					    "version": "RELEASE.2025-04-22T22-12-26Z",
 | 
				
			||||||
@@ -559,11 +609,6 @@
 | 
				
			|||||||
    "version": "2025.4.22",
 | 
					    "version": "2025.4.22",
 | 
				
			||||||
    "date": "2025-04-22T14:18:11Z"
 | 
					    "date": "2025-04-22T14:18:11Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "AdguardTeam/AdGuardHome",
 | 
					 | 
				
			||||||
    "version": "v0.107.61",
 | 
					 | 
				
			||||||
    "date": "2025-04-22T12:42:26Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "OctoPrint/OctoPrint",
 | 
					    "name": "OctoPrint/OctoPrint",
 | 
				
			||||||
    "version": "1.11.0",
 | 
					    "version": "1.11.0",
 | 
				
			||||||
@@ -619,16 +664,6 @@
 | 
				
			|||||||
    "version": "v12.6.1",
 | 
					    "version": "v12.6.1",
 | 
				
			||||||
    "date": "2025-04-17T17:35:02Z"
 | 
					    "date": "2025-04-17T17:35:02Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "docker/compose",
 | 
					 | 
				
			||||||
    "version": "v2.35.1",
 | 
					 | 
				
			||||||
    "date": "2025-04-17T14:29:11Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "neo4j/neo4j",
 | 
					 | 
				
			||||||
    "version": "2025.04.0",
 | 
					 | 
				
			||||||
    "date": "2025-04-17T11:13:20Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "IceWhaleTech/CasaOS",
 | 
					    "name": "IceWhaleTech/CasaOS",
 | 
				
			||||||
    "version": "v0.4.15",
 | 
					    "version": "v0.4.15",
 | 
				
			||||||
@@ -649,16 +684,6 @@
 | 
				
			|||||||
    "version": "15.2",
 | 
					    "version": "15.2",
 | 
				
			||||||
    "date": "2025-04-14T15:37:12Z"
 | 
					    "date": "2025-04-14T15:37:12Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "open-webui/open-webui",
 | 
					 | 
				
			||||||
    "version": "v0.6.5",
 | 
					 | 
				
			||||||
    "date": "2025-04-14T09:13:36Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "autobrr/autobrr",
 | 
					 | 
				
			||||||
    "version": "v1.61.0",
 | 
					 | 
				
			||||||
    "date": "2025-04-13T21:14:40Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "Ombi-app/Ombi",
 | 
					    "name": "Ombi-app/Ombi",
 | 
				
			||||||
    "version": "v4.47.1",
 | 
					    "version": "v4.47.1",
 | 
				
			||||||
@@ -749,21 +774,11 @@
 | 
				
			|||||||
    "version": "v0.55.2",
 | 
					    "version": "v0.55.2",
 | 
				
			||||||
    "date": "2025-04-05T12:07:32Z"
 | 
					    "date": "2025-04-05T12:07:32Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "Athou/commafeed",
 | 
					 | 
				
			||||||
    "version": "5.7.0",
 | 
					 | 
				
			||||||
    "date": "2025-04-04T18:10:16Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "apache/tomcat",
 | 
					    "name": "apache/tomcat",
 | 
				
			||||||
    "version": "9.0.104",
 | 
					    "version": "9.0.104",
 | 
				
			||||||
    "date": "2025-04-04T12:58:11Z"
 | 
					    "date": "2025-04-04T12:58:11Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "BookStackApp/BookStack",
 | 
					 | 
				
			||||||
    "version": "v25.02.2",
 | 
					 | 
				
			||||||
    "date": "2025-04-02T16:39:50Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "MagicMirrorOrg/MagicMirror",
 | 
					    "name": "MagicMirrorOrg/MagicMirror",
 | 
				
			||||||
    "version": "v2.31.0",
 | 
					    "version": "v2.31.0",
 | 
				
			||||||
@@ -964,11 +979,6 @@
 | 
				
			|||||||
    "version": "tc_v0.6.4",
 | 
					    "version": "tc_v0.6.4",
 | 
				
			||||||
    "date": "2025-03-05T15:43:40Z"
 | 
					    "date": "2025-03-05T15:43:40Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "sysadminsmedia/homebox",
 | 
					 | 
				
			||||||
    "version": "v0.18.0",
 | 
					 | 
				
			||||||
    "date": "2025-03-04T15:35:27Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "heiher/hev-socks5-server",
 | 
					    "name": "heiher/hev-socks5-server",
 | 
				
			||||||
    "version": "2.8.0",
 | 
					    "version": "2.8.0",
 | 
				
			||||||
@@ -1009,11 +1019,6 @@
 | 
				
			|||||||
    "version": "v28.0",
 | 
					    "version": "v28.0",
 | 
				
			||||||
    "date": "2025-02-18T15:49:57Z"
 | 
					    "date": "2025-02-18T15:49:57Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "postgres/postgres",
 | 
					 | 
				
			||||||
    "version": "REL_13_20",
 | 
					 | 
				
			||||||
    "date": "2025-02-17T21:17:13Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "sbondCo/Watcharr",
 | 
					    "name": "sbondCo/Watcharr",
 | 
				
			||||||
    "version": "v2.0.2",
 | 
					    "version": "v2.0.2",
 | 
				
			||||||
@@ -1039,11 +1044,6 @@
 | 
				
			|||||||
    "version": "v1.27.0",
 | 
					    "version": "v1.27.0",
 | 
				
			||||||
    "date": "2025-02-13T15:55:36Z"
 | 
					    "date": "2025-02-13T15:55:36Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "MariaDB/server",
 | 
					 | 
				
			||||||
    "version": "mariadb-11.7.2",
 | 
					 | 
				
			||||||
    "date": "2025-02-13T04:13:46Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "homebridge/homebridge",
 | 
					    "name": "homebridge/homebridge",
 | 
				
			||||||
    "version": "v1.9.0",
 | 
					    "version": "v1.9.0",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										91
									
								
								install/actualbudget-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								install/actualbudget-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,91 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://actualbudget.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					verb_ip6
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					setting_up_container
 | 
				
			||||||
 | 
					network_check
 | 
				
			||||||
 | 
					update_os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing Actual Budget"
 | 
				
			||||||
 | 
					cd /opt
 | 
				
			||||||
 | 
					RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					NODE_VERSION="22"
 | 
				
			||||||
 | 
					install_node_and_modules
 | 
				
			||||||
 | 
					mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
 | 
				
			||||||
 | 
					chown -R root:root /opt/actualbudget-data
 | 
				
			||||||
 | 
					chmod -R 755 /opt/actualbudget-data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat <<EOF >/opt/actualbudget-data/config.json
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "port": 5006,
 | 
				
			||||||
 | 
					  "hostname": "::",
 | 
				
			||||||
 | 
					  "serverFiles": "/opt/actualbudget-data/server-files",
 | 
				
			||||||
 | 
					  "userFiles": "/opt/actualbudget-data/user-files",
 | 
				
			||||||
 | 
					  "trustedProxies": [
 | 
				
			||||||
 | 
					    "10.0.0.0/8",
 | 
				
			||||||
 | 
					    "172.16.0.0/12",
 | 
				
			||||||
 | 
					    "192.168.0.0/16",
 | 
				
			||||||
 | 
					    "127.0.0.0/8",
 | 
				
			||||||
 | 
					    "::1/128",
 | 
				
			||||||
 | 
					    "fc00::/7"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "https": {
 | 
				
			||||||
 | 
					    "key": "/opt/actualbudget/selfhost.key",
 | 
				
			||||||
 | 
					    "cert": "/opt/actualbudget/selfhost.crt"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mkdir -p /opt/actualbudget
 | 
				
			||||||
 | 
					cd /opt/actualbudget
 | 
				
			||||||
 | 
					$STD npm install --location=global @actual-app/sync-server
 | 
				
			||||||
 | 
					$STD openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfhost.key -out selfhost.crt <<EOF
 | 
				
			||||||
 | 
					US
 | 
				
			||||||
 | 
					California
 | 
				
			||||||
 | 
					San Francisco
 | 
				
			||||||
 | 
					My Organization
 | 
				
			||||||
 | 
					My Unit
 | 
				
			||||||
 | 
					localhost
 | 
				
			||||||
 | 
					myemail@example.com
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					echo "${RELEASE}" >"/opt/actualbudget_version.txt"
 | 
				
			||||||
 | 
					msg_ok "Installed Actual Budget"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Creating Service"
 | 
				
			||||||
 | 
					cat <<EOF >/etc/systemd/system/actualbudget.service
 | 
				
			||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Actual Budget Service
 | 
				
			||||||
 | 
					After=network.target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					Type=simple
 | 
				
			||||||
 | 
					User=root
 | 
				
			||||||
 | 
					Group=root
 | 
				
			||||||
 | 
					WorkingDirectory=/opt/actualbudget
 | 
				
			||||||
 | 
					Environment=ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB=20
 | 
				
			||||||
 | 
					Environment=ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB=50
 | 
				
			||||||
 | 
					Environment=ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB=20
 | 
				
			||||||
 | 
					ExecStart=/usr/bin/actual-server --config /opt/actualbudget-data/config.json
 | 
				
			||||||
 | 
					Restart=always
 | 
				
			||||||
 | 
					RestartSec=10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					systemctl enable -q --now actualbudget
 | 
				
			||||||
 | 
					msg_ok "Created Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					motd_ssh
 | 
				
			||||||
 | 
					customize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Cleaning up"
 | 
				
			||||||
 | 
					$STD apt-get -y autoremove
 | 
				
			||||||
 | 
					$STD apt-get -y autoclean
 | 
				
			||||||
 | 
					msg_ok "Cleaned"
 | 
				
			||||||
							
								
								
									
										68
									
								
								install/alpine-rclone-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								install/alpine-rclone-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/rclone/rclone
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					verb_ip6
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					setting_up_container
 | 
				
			||||||
 | 
					network_check
 | 
				
			||||||
 | 
					update_os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing dependencies"
 | 
				
			||||||
 | 
					$STD apk add --no-cache \
 | 
				
			||||||
 | 
					  unzip \
 | 
				
			||||||
 | 
					  apache2-utils
 | 
				
			||||||
 | 
					msg_ok "Installed dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing rclone"
 | 
				
			||||||
 | 
					temp_file=$(mktemp)
 | 
				
			||||||
 | 
					mkdir -p /opt/rclone
 | 
				
			||||||
 | 
					RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file"
 | 
				
			||||||
 | 
					$STD unzip -j "$temp_file" '*/**' -d /opt/rclone
 | 
				
			||||||
 | 
					cd /opt/rclone
 | 
				
			||||||
 | 
					RCLONE_PASSWORD=$(head -c 16 /dev/urandom | xxd -p -c 16)
 | 
				
			||||||
 | 
					$STD htpasswd -cb -B login.pwd admin "$RCLONE_PASSWORD"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  echo "rclone-Credentials"
 | 
				
			||||||
 | 
					  echo "rclone User Name: admin"
 | 
				
			||||||
 | 
					  echo "rclone Password: $RCLONE_PASSWORD"
 | 
				
			||||||
 | 
					} >>~/rclone.creds
 | 
				
			||||||
 | 
					echo "${RELEASE}" >/opt/rclone_version.txt
 | 
				
			||||||
 | 
					rm -f "$temp_file"
 | 
				
			||||||
 | 
					msg_ok "Installed rclone"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Enabling rclone Service"
 | 
				
			||||||
 | 
					cat <<EOF >/etc/init.d/rclone
 | 
				
			||||||
 | 
					#!/sbin/openrc-run
 | 
				
			||||||
 | 
					description="rclone Service"
 | 
				
			||||||
 | 
					command="/opt/rclone/rclone"
 | 
				
			||||||
 | 
					command_args="rcd --rc-web-gui --rc-web-gui-no-open-browser --rc-addr :3000 --rc-htpasswd /opt/rclone/login.pwd"
 | 
				
			||||||
 | 
					command_background="true"
 | 
				
			||||||
 | 
					command_user="root"
 | 
				
			||||||
 | 
					pidfile="/var/run/rclone.pid"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					depend() {
 | 
				
			||||||
 | 
					    use net
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					chmod +x /etc/init.d/rclone
 | 
				
			||||||
 | 
					$STD rc-update add rclone default
 | 
				
			||||||
 | 
					msg_ok "Enabled rclone Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Starting rclone"
 | 
				
			||||||
 | 
					$STD service rclone start
 | 
				
			||||||
 | 
					msg_ok "Started rclone"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					motd_ssh
 | 
				
			||||||
 | 
					customize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Cleaning up"
 | 
				
			||||||
 | 
					rm -rf "$temp_file"
 | 
				
			||||||
 | 
					$STD apk cache clean
 | 
				
			||||||
 | 
					msg_ok "Cleaned"
 | 
				
			||||||
							
								
								
									
										83
									
								
								install/alpine-tinyauth-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								install/alpine-tinyauth-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/steveiliop56/tinyauth
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					verb_ip6
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					setting_up_container
 | 
				
			||||||
 | 
					network_check
 | 
				
			||||||
 | 
					update_os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing Dependencies"
 | 
				
			||||||
 | 
					$STD apk add --no-cache \
 | 
				
			||||||
 | 
					  npm \
 | 
				
			||||||
 | 
					  curl \
 | 
				
			||||||
 | 
					  go
 | 
				
			||||||
 | 
					msg_ok "Installed Dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing tinyauth"
 | 
				
			||||||
 | 
					temp_file=$(mktemp)
 | 
				
			||||||
 | 
					$STD npm install -g bun
 | 
				
			||||||
 | 
					mkdir -p /opt/tinyauth
 | 
				
			||||||
 | 
					RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					curl -fsSL "https://github.com/steveiliop56/tinyauth/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
				
			||||||
 | 
					tar -xzf "$temp_file" -C /opt/tinyauth --strip-components=1
 | 
				
			||||||
 | 
					cd /opt/tinyauth/frontend
 | 
				
			||||||
 | 
					$STD bun install
 | 
				
			||||||
 | 
					$STD bun run build
 | 
				
			||||||
 | 
					mv dist /opt/tinyauth/internal/assets/
 | 
				
			||||||
 | 
					cd /opt/tinyauth
 | 
				
			||||||
 | 
					$STD go mod download
 | 
				
			||||||
 | 
					CGO_ENABLED=0 go build -ldflags "-s -w"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  echo "tinyauth Credentials"
 | 
				
			||||||
 | 
					  echo "Username: admin@example.com"
 | 
				
			||||||
 | 
					  echo "Password: admin"
 | 
				
			||||||
 | 
					} >>~/tinyauth.creds
 | 
				
			||||||
 | 
					echo "${RELEASE}" >/opt/tinyauth_version.txt
 | 
				
			||||||
 | 
					msg_ok "Installed tinyauth"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Enabling tinyauth Service"
 | 
				
			||||||
 | 
					SECRET=$(head -c 16 /dev/urandom | xxd -p -c 16 | tr -d '\n')
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  echo "SECRET=${SECRET}"
 | 
				
			||||||
 | 
					  echo "USERS=admin@example.com:\$2a\$10\$CrTK.W7WXSClo3ZY1yJUFupg5UdV8WNcynEhZhJFNjhGQB.Ga0ZDm"
 | 
				
			||||||
 | 
					  echo "APP_URL=http://localhost:3000"
 | 
				
			||||||
 | 
					} >>/opt/tinyauth/.env
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat <<EOF >/etc/init.d/tinyauth
 | 
				
			||||||
 | 
					#!/sbin/openrc-run
 | 
				
			||||||
 | 
					description="tinyauth Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					command="/opt/tinyauth/tinyauth"
 | 
				
			||||||
 | 
					directory="/opt/tinyauth"
 | 
				
			||||||
 | 
					command_user="root"
 | 
				
			||||||
 | 
					command_background="true"
 | 
				
			||||||
 | 
					pidfile="/var/run/tinyauth.pid"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start_pre() {
 | 
				
			||||||
 | 
					    if [ -f "/opt/tinyauth/.env" ]; then
 | 
				
			||||||
 | 
					        export \$(grep -v '^#' /opt/tinyauth/.env | xargs)
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					depend() {
 | 
				
			||||||
 | 
					    use net
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					chmod +x /etc/init.d/tinyauth
 | 
				
			||||||
 | 
					$STD rc-update add tinyauth default
 | 
				
			||||||
 | 
					msg_ok "Enabled tinyauth Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Starting tinyauth"
 | 
				
			||||||
 | 
					$STD service tinyauth start
 | 
				
			||||||
 | 
					msg_ok "Started tinyauth"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					motd_ssh
 | 
				
			||||||
 | 
					customize
 | 
				
			||||||
							
								
								
									
										32
									
								
								install/alpine-transmission-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								install/alpine-transmission-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://transmissionbt.com/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					verb_ip6
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					setting_up_container
 | 
				
			||||||
 | 
					network_check
 | 
				
			||||||
 | 
					update_os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing Transmission"
 | 
				
			||||||
 | 
					$STD apk add --no-cache transmission-cli transmission-daemon
 | 
				
			||||||
 | 
					$STD rc-service transmission-daemon start
 | 
				
			||||||
 | 
					$STD rc-service transmission-daemon stop
 | 
				
			||||||
 | 
					sed -i '{s/"rpc-whitelist-enabled": true/"rpc-whitelist-enabled": false/g; s/"rpc-host-whitelist-enabled": true,/"rpc-host-whitelist-enabled": false,/g}' /var/lib/transmission/config/settings.json
 | 
				
			||||||
 | 
					msg_ok "Installed Transmission"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Enabling Transmission Service"
 | 
				
			||||||
 | 
					$STD rc-update add transmission-daemon default
 | 
				
			||||||
 | 
					msg_ok "Enabled Transmission Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Starting Transmission"
 | 
				
			||||||
 | 
					$STD rc-service transmission-daemon start
 | 
				
			||||||
 | 
					msg_ok "Started Transmission"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					motd_ssh
 | 
				
			||||||
 | 
					customize
 | 
				
			||||||
							
								
								
									
										53
									
								
								install/fumadocs-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								install/fumadocs-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 \
 | 
				
			||||||
 | 
					  ca-certificates
 | 
				
			||||||
 | 
					msg_ok "Installed Dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NODE_VERSION="22" NODE_MODULE="pnpm@latest" install_node_and_modules
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing Fumadocs"
 | 
				
			||||||
 | 
					mkdir -p /opt/fumadocs
 | 
				
			||||||
 | 
					cd /opt/fumadocs
 | 
				
			||||||
 | 
					pnpm create fumadocs-app
 | 
				
			||||||
 | 
					PROJECT_NAME=$(find . -maxdepth 1 -type d ! -name '.' ! -name '..' | sed 's|^\./||')
 | 
				
			||||||
 | 
					echo "$PROJECT_NAME" >/opt/fumadocs/.projectname
 | 
				
			||||||
 | 
					msg_ok "Installed Fumadocs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Creating Service"
 | 
				
			||||||
 | 
					cat <<EOF >/etc/systemd/system/fumadocs_$PROJECT_NAME.service
 | 
				
			||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Fumadocs Documentation Server
 | 
				
			||||||
 | 
					After=network.target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					WorkingDirectory=/opt/fumadocs/$PROJECT_NAME
 | 
				
			||||||
 | 
					ExecStart=/usr/bin/pnpm run dev
 | 
				
			||||||
 | 
					Restart=always
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					systemctl enable -q --now fumadocs_$PROJECT_NAME
 | 
				
			||||||
 | 
					msg_ok "Created Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					motd_ssh
 | 
				
			||||||
 | 
					customize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Cleaning up"
 | 
				
			||||||
 | 
					$STD apt-get -y autoremove
 | 
				
			||||||
 | 
					$STD apt-get -y autoclean
 | 
				
			||||||
 | 
					msg_ok "Cleaned"
 | 
				
			||||||
							
								
								
									
										66
									
								
								install/streamlink-webui-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								install/streamlink-webui-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: CrazyWolf13
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/CrazyWolf13/streamlink-webui
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Import Functions und Setup
 | 
				
			||||||
 | 
					source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					verb_ip6
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					setting_up_container
 | 
				
			||||||
 | 
					network_check
 | 
				
			||||||
 | 
					update_os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NODE_VERSION="22"
 | 
				
			||||||
 | 
					NODE_MODULE="npm@latest,yarn@latest"
 | 
				
			||||||
 | 
					install_node_and_modules
 | 
				
			||||||
 | 
					setup_uv
 | 
				
			||||||
 | 
					fetch_and_deploy_gh_release "CrazyWolf13/streamlink-webui"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Setup ${APPLICATION}"
 | 
				
			||||||
 | 
					mkdir -p "/opt/${APPLICATION}-download"
 | 
				
			||||||
 | 
					$STD uv venv /opt/"${APPLICATION}"/backend/src/.venv
 | 
				
			||||||
 | 
					source /opt/"${APPLICATION}"/backend/src/.venv/bin/activate
 | 
				
			||||||
 | 
					$STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/"${APPLICATION}"/backend/src/.venv
 | 
				
			||||||
 | 
					cd /opt/"${APPLICATION}"/frontend/src
 | 
				
			||||||
 | 
					$STD yarn install
 | 
				
			||||||
 | 
					$STD yarn build
 | 
				
			||||||
 | 
					chmod +x /opt/"${APPLICATION}"/start.sh
 | 
				
			||||||
 | 
					msg_ok "Setup ${APPLICATION}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Creating Service"
 | 
				
			||||||
 | 
					cat <<'EOF' >/opt/"${APPLICATION}".env
 | 
				
			||||||
 | 
					CLIENT_ID='your_client_id'
 | 
				
			||||||
 | 
					CLIENT_SECRET='your_client_secret'
 | 
				
			||||||
 | 
					DOWNLOAD_PATH='/opt/streamlink-webui-download'
 | 
				
			||||||
 | 
					# BASE_URL='https://sub.domain.com' \
 | 
				
			||||||
 | 
					# REVERSE_PROXY=True \
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat <<EOF >/etc/systemd/system/"${APPLICATION}".service
 | 
				
			||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=${APPLICATION} Service
 | 
				
			||||||
 | 
					After=network.target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					EnvironmentFile=/opt/${APPLICATION}.env
 | 
				
			||||||
 | 
					WorkingDirectory=/opt/${APPLICATION}/backend/src
 | 
				
			||||||
 | 
					ExecStart=/bin/bash -c 'source /opt/${APPLICATION}/backend/src/.venv/bin/activate && exec /opt/${APPLICATION}/start.sh'
 | 
				
			||||||
 | 
					Restart=always
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					systemctl enable -q --now "${APPLICATION}"
 | 
				
			||||||
 | 
					msg_ok "Created Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					motd_ssh
 | 
				
			||||||
 | 
					customize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Cleaning up"
 | 
				
			||||||
 | 
					$STD apt-get -y autoremove
 | 
				
			||||||
 | 
					$STD apt-get -y autoclean
 | 
				
			||||||
 | 
					msg_ok "Cleaned"
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
# Author: tremor021
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
# Source: https://github.com/Suwayomi/Suwayomi-Server
 | 
					# Source: https://github.com/Suwayomi/Suwayomi-Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -14,18 +14,19 @@ network_check
 | 
				
			|||||||
update_os
 | 
					update_os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Installing Dependencies"
 | 
					msg_info "Installing Dependencies"
 | 
				
			||||||
$STD apt-get install -y \
 | 
					$STD apt-get install -y libc++-dev
 | 
				
			||||||
  openjdk-17-jre \
 | 
					 | 
				
			||||||
  libc++-dev
 | 
					 | 
				
			||||||
msg_ok "Installed Dependencies"
 | 
					msg_ok "Installed Dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					JAVA_VERSION=21 install_java
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Settting up Suwayomi-Server"
 | 
					msg_info "Settting up Suwayomi-Server"
 | 
				
			||||||
URL=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "browser_download_url" | awk '{print substr($2, 2, length($2)-2) }' | tail -n+2 | head -n 1)
 | 
					temp_file=$(mktemp)
 | 
				
			||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
curl -fsSL "$URL" -o $(basename "$URL")
 | 
					curl -fsSL "https://github.com/Suwayomi/Suwayomi-Server/releases/download/${RELEASE}/Suwayomi-Server-${RELEASE}-debian-all.deb" -o "$temp_file"
 | 
				
			||||||
$STD dpkg -i *.deb
 | 
					$STD dpkg -i "$temp_file"
 | 
				
			||||||
echo ${RELEASE} >/opt/suwayomi-server_version.txt
 | 
					echo "${RELEASE}" >/opt/suwayomi-server_version.txt
 | 
				
			||||||
msg_ok "Done setting up Suwayomi-Server"
 | 
					msg_ok "Done setting up Suwayomi-Server"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Creating Service"
 | 
					msg_info "Creating Service"
 | 
				
			||||||
cat <<EOF >/etc/systemd/system/suwayomi-server.service
 | 
					cat <<EOF >/etc/systemd/system/suwayomi-server.service
 | 
				
			||||||
[Unit]
 | 
					[Unit]
 | 
				
			||||||
@@ -41,10 +42,12 @@ WantedBy=multi-user.target
 | 
				
			|||||||
EOF
 | 
					EOF
 | 
				
			||||||
systemctl enable -q --now suwayomi-server
 | 
					systemctl enable -q --now suwayomi-server
 | 
				
			||||||
msg_ok "Created Service"
 | 
					msg_ok "Created Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
motd_ssh
 | 
					motd_ssh
 | 
				
			||||||
customize
 | 
					customize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Cleaning up"
 | 
					msg_info "Cleaning up"
 | 
				
			||||||
rm -f *.deb
 | 
					rm -f "$temp_file"
 | 
				
			||||||
$STD apt-get -y autoremove
 | 
					$STD apt-get -y autoremove
 | 
				
			||||||
$STD apt-get -y autoclean
 | 
					$STD apt-get -y autoclean
 | 
				
			||||||
msg_ok "Cleaned"
 | 
					msg_ok "Cleaned"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -477,7 +477,7 @@ advanced_settings() {
 | 
				
			|||||||
      echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}$CT_ID${CL}"
 | 
					      echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}$CT_ID${CL}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    exit
 | 
					    exit_script
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if CT_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 "$NSAPP" --title "HOSTNAME" 3>&1 1>&2 2>&3); then
 | 
					  if CT_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 "$NSAPP" --title "HOSTNAME" 3>&1 1>&2 2>&3); then
 | 
				
			||||||
@@ -1441,7 +1441,7 @@ silent() {
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exit_script() {
 | 
					api_exit_script() {
 | 
				
			||||||
  exit_code=$? # Capture the exit status of the last executed command
 | 
					  exit_code=$? # Capture the exit status of the last executed command
 | 
				
			||||||
  #200 exit codes indicate error in create_lxc.sh
 | 
					  #200 exit codes indicate error in create_lxc.sh
 | 
				
			||||||
  #100 exit codes indicate error in install.func
 | 
					  #100 exit codes indicate error in install.func
 | 
				
			||||||
@@ -1465,7 +1465,7 @@ exit_script() {
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
trap 'exit_script' EXIT
 | 
					trap 'api_exit_script' EXIT
 | 
				
			||||||
trap 'post_update_to_api "failed" "$BASH_COMMAND"' ERR
 | 
					trap 'post_update_to_api "failed" "$BASH_COMMAND"' ERR
 | 
				
			||||||
trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT
 | 
					trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT
 | 
				
			||||||
trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 | 
					trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,6 @@ NSAPP="arch-linux-vm"
 | 
				
			|||||||
var_os="arch-linux"
 | 
					var_os="arch-linux"
 | 
				
			||||||
var_version=" "
 | 
					var_version=" "
 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
YW=$(echo "\033[33m")
 | 
					YW=$(echo "\033[33m")
 | 
				
			||||||
BL=$(echo "\033[36m")
 | 
					BL=$(echo "\033[36m")
 | 
				
			||||||
@@ -76,6 +75,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -161,7 +177,7 @@ function exit-script() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function default_settings() {
 | 
					function default_settings() {
 | 
				
			||||||
  VMID="$NEXTID"
 | 
					  VMID=$(get_valid_nextid)
 | 
				
			||||||
  FORMAT=",efitype=4m"
 | 
					  FORMAT=",efitype=4m"
 | 
				
			||||||
  MACHINE=""
 | 
					  MACHINE=""
 | 
				
			||||||
  DISK_SIZE="4G"
 | 
					  DISK_SIZE="4G"
 | 
				
			||||||
@@ -194,10 +210,11 @@ function default_settings() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function advanced_settings() {
 | 
					function advanced_settings() {
 | 
				
			||||||
  METHOD="advanced"
 | 
					  METHOD="advanced"
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID=$(get_valid_nextid)
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,6 @@ EOF
 | 
				
			|||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "\n Loading..."
 | 
					echo -e "\n Loading..."
 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="debian12vm"
 | 
					NSAPP="debian12vm"
 | 
				
			||||||
@@ -75,6 +74,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -161,7 +177,7 @@ function exit-script() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function default_settings() {
 | 
					function default_settings() {
 | 
				
			||||||
  VMID="$NEXTID"
 | 
					  VMID=$(get_valid_nextid)
 | 
				
			||||||
  FORMAT=",efitype=4m"
 | 
					  FORMAT=",efitype=4m"
 | 
				
			||||||
  MACHINE=""
 | 
					  MACHINE=""
 | 
				
			||||||
  DISK_SIZE="8G"
 | 
					  DISK_SIZE="8G"
 | 
				
			||||||
@@ -194,10 +210,11 @@ function default_settings() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function advanced_settings() {
 | 
					function advanced_settings() {
 | 
				
			||||||
  METHOD="advanced"
 | 
					  METHOD="advanced"
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID=$(get_valid_nextid)
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,6 @@ EOF
 | 
				
			|||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "\n Loading..."
 | 
					echo -e "\n Loading..."
 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="debian12vm"
 | 
					NSAPP="debian12vm"
 | 
				
			||||||
@@ -76,6 +75,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -162,7 +178,7 @@ function exit-script() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function default_settings() {
 | 
					function default_settings() {
 | 
				
			||||||
  VMID="$NEXTID"
 | 
					  VMID=$(get_valid_nextid)
 | 
				
			||||||
  FORMAT=",efitype=4m"
 | 
					  FORMAT=",efitype=4m"
 | 
				
			||||||
  MACHINE=""
 | 
					  MACHINE=""
 | 
				
			||||||
  DISK_CACHE=""
 | 
					  DISK_CACHE=""
 | 
				
			||||||
@@ -195,10 +211,11 @@ function default_settings() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function advanced_settings() {
 | 
					function advanced_settings() {
 | 
				
			||||||
  METHOD="advanced"
 | 
					  METHOD="advanced"
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID=$(get_valid_nextid)
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
@@ -244,7 +261,6 @@ function advanced_settings() {
 | 
				
			|||||||
    exit-script
 | 
					    exit-script
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
  if DISK_CACHE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "DISK CACHE" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \
 | 
					  if DISK_CACHE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "DISK CACHE" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \
 | 
				
			||||||
    "0" "None (Default)" ON \
 | 
					    "0" "None (Default)" ON \
 | 
				
			||||||
    "1" "Write Through" OFF \
 | 
					    "1" "Write Through" OFF \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,15 +21,13 @@ EOF
 | 
				
			|||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "\n Loading..."
 | 
					echo -e "\n Loading..."
 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
VERSIONS=(stable beta dev)
 | 
					VERSIONS=(stable beta dev)
 | 
				
			||||||
#API VARIABLES
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="homeassistant-os"
 | 
					NSAPP="homeassistant-os"
 | 
				
			||||||
var_os="homeassistant"
 | 
					var_os="homeassistant"
 | 
				
			||||||
DISK_SIZE="32G"
 | 
					DISK_SIZE="32G"
 | 
				
			||||||
#
 | 
					
 | 
				
			||||||
for version in "${VERSIONS[@]}"; do
 | 
					for version in "${VERSIONS[@]}"; do
 | 
				
			||||||
  eval "$version=$(curl -fsSL https://raw.githubusercontent.com/home-assistant/version/master/stable.json | grep '"ova"' | cut -d '"' -f 4)"
 | 
					  eval "$version=$(curl -fsSL https://raw.githubusercontent.com/home-assistant/version/master/stable.json | grep '"ova"' | cut -d '"' -f 4)"
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
@@ -65,6 +63,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -166,7 +181,7 @@ function exit-script() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function default_settings() {
 | 
					function default_settings() {
 | 
				
			||||||
  BRANCH="$stable"
 | 
					  BRANCH="$stable"
 | 
				
			||||||
  VMID="$NEXTID"
 | 
					  VMID=$(get_valid_nextid)
 | 
				
			||||||
  FORMAT=",efitype=4m"
 | 
					  FORMAT=",efitype=4m"
 | 
				
			||||||
  MACHINE=""
 | 
					  MACHINE=""
 | 
				
			||||||
  DISK_CACHE="cache=writethrough,"
 | 
					  DISK_CACHE="cache=writethrough,"
 | 
				
			||||||
@@ -210,10 +225,11 @@ function advanced_settings() {
 | 
				
			|||||||
    exit-script
 | 
					    exit-script
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID="$VMID"
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,15 +21,12 @@ clear
 | 
				
			|||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "Loading..."
 | 
					echo -e "Loading..."
 | 
				
			||||||
GEN_MAC=$(echo '00 60 2f'$(od -An -N3 -t xC /dev/urandom) | sed -e 's/ /:/g' | tr '[:lower:]' '[:upper:]')
 | 
					GEN_MAC=$(echo '00 60 2f'$(od -An -N3 -t xC /dev/urandom) | sed -e 's/ /:/g' | tr '[:lower:]' '[:upper:]')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
#API VARIABLES
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="mikrotik-router-os"
 | 
					NSAPP="mikrotik-router-os"
 | 
				
			||||||
var_os="mikrotik"
 | 
					var_os="mikrotik"
 | 
				
			||||||
var_version=" "
 | 
					var_version=" "
 | 
				
			||||||
DISK_SIZE="1G"
 | 
					DISK_SIZE="1G"
 | 
				
			||||||
#
 | 
					 | 
				
			||||||
YW=$(echo "\033[33m")
 | 
					YW=$(echo "\033[33m")
 | 
				
			||||||
BL=$(echo "\033[36m")
 | 
					BL=$(echo "\033[36m")
 | 
				
			||||||
HA=$(echo "\033[1;34m")
 | 
					HA=$(echo "\033[1;34m")
 | 
				
			||||||
@@ -60,6 +57,24 @@ function error_exit() {
 | 
				
			|||||||
  [ ! -z ${VMID-} ] && cleanup_vmid
 | 
					  [ ! -z ${VMID-} ] && cleanup_vmid
 | 
				
			||||||
  exit $EXIT
 | 
					  exit $EXIT
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if $(qm status $VMID &>/dev/null); then
 | 
					  if $(qm status $VMID &>/dev/null); then
 | 
				
			||||||
    if [ "$(qm status $VMID | awk '{print $2}')" == "running" ]; then
 | 
					    if [ "$(qm status $VMID | awk '{print $2}')" == "running" ]; then
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,16 +19,13 @@ EOF
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "\n Loading..."
 | 
					echo -e "\n Loading..."
 | 
				
			||||||
#API VARIABLES
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="turnkey-nextcloud"
 | 
					NSAPP="turnkey-nextcloud"
 | 
				
			||||||
var_os="turnkey-nextcloud"
 | 
					var_os="turnkey-nextcloud"
 | 
				
			||||||
var_version=" "
 | 
					var_version=" "
 | 
				
			||||||
DISK_SIZE="12G"
 | 
					DISK_SIZE="12G"
 | 
				
			||||||
#
 | 
					 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
NAME="TurnKey Nexcloud VM"
 | 
					NAME="TurnKey Nexcloud VM"
 | 
				
			||||||
YW=$(echo "\033[33m")
 | 
					YW=$(echo "\033[33m")
 | 
				
			||||||
BL=$(echo "\033[36m")
 | 
					BL=$(echo "\033[36m")
 | 
				
			||||||
@@ -58,6 +55,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -142,7 +156,7 @@ function exit-script() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function default_settings() {
 | 
					function default_settings() {
 | 
				
			||||||
  VMID="$NEXTID"
 | 
					  VMID=$(get_valid_nextid)
 | 
				
			||||||
  FORMAT=",efitype=4m"
 | 
					  FORMAT=",efitype=4m"
 | 
				
			||||||
  MACHINE=""
 | 
					  MACHINE=""
 | 
				
			||||||
  DISK_CACHE=""
 | 
					  DISK_CACHE=""
 | 
				
			||||||
@@ -173,10 +187,11 @@ function default_settings() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function advanced_settings() {
 | 
					function advanced_settings() {
 | 
				
			||||||
  METHOD="advanced"
 | 
					  METHOD="advanced"
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID=$(get_valid_nextid)
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,17 +23,15 @@ EOF
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "Loading..."
 | 
					echo -e "Loading..."
 | 
				
			||||||
#API VARIABLES
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="openwrt-vm"
 | 
					NSAPP="openwrt-vm"
 | 
				
			||||||
var_os="openwrt"
 | 
					var_os="openwrt"
 | 
				
			||||||
var_version=" "
 | 
					var_version=" "
 | 
				
			||||||
DISK_SIZE="0.5G"
 | 
					DISK_SIZE="0.5G"
 | 
				
			||||||
#
 | 
					 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
GEN_MAC_LAN=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC_LAN=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					
 | 
				
			||||||
YW=$(echo "\033[33m")
 | 
					YW=$(echo "\033[33m")
 | 
				
			||||||
BL=$(echo "\033[36m")
 | 
					BL=$(echo "\033[36m")
 | 
				
			||||||
HA=$(echo "\033[1;34m")
 | 
					HA=$(echo "\033[1;34m")
 | 
				
			||||||
@@ -61,6 +59,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -242,10 +257,11 @@ function default_settings() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function advanced_settings() {
 | 
					function advanced_settings() {
 | 
				
			||||||
  METHOD="advanced"
 | 
					  METHOD="advanced"
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID=$(get_valid_nextid)
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ var_version="25.1"
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
GEN_MAC_LAN=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC_LAN=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					
 | 
				
			||||||
YW=$(echo "\033[33m")
 | 
					YW=$(echo "\033[33m")
 | 
				
			||||||
BL=$(echo "\033[36m")
 | 
					BL=$(echo "\033[36m")
 | 
				
			||||||
HA=$(echo "\033[1;34m")
 | 
					HA=$(echo "\033[1;34m")
 | 
				
			||||||
@@ -54,6 +54,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -202,7 +219,7 @@ function exit-script() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function default_settings() {
 | 
					function default_settings() {
 | 
				
			||||||
  VMID="$NEXTID"
 | 
					  VMID=$(get_valid_nextid)
 | 
				
			||||||
  FORMAT=",efitype=4m"
 | 
					  FORMAT=",efitype=4m"
 | 
				
			||||||
  MACHINE=""
 | 
					  MACHINE=""
 | 
				
			||||||
  DISK_CACHE=""
 | 
					  DISK_CACHE=""
 | 
				
			||||||
@@ -252,10 +269,11 @@ function default_settings() {
 | 
				
			|||||||
function advanced_settings() {
 | 
					function advanced_settings() {
 | 
				
			||||||
  local ip_regex='^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$'
 | 
					  local ip_regex='^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$'
 | 
				
			||||||
  METHOD="advanced"
 | 
					  METHOD="advanced"
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID=$(get_valid_nextid)
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,17 +19,15 @@ EOF
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "\n Loading..."
 | 
					echo -e "\n Loading..."
 | 
				
			||||||
#API VARIABLES
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="turnkey-owncloud-vm"
 | 
					NSAPP="turnkey-owncloud-vm"
 | 
				
			||||||
var_os="owncloud"
 | 
					var_os="owncloud"
 | 
				
			||||||
var_version="12"
 | 
					var_version="12"
 | 
				
			||||||
DISK_SIZE="12G"
 | 
					DISK_SIZE="12G"
 | 
				
			||||||
#
 | 
					 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
NAME="TurnKey ownCloud VM"
 | 
					NAME="TurnKey ownCloud VM"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
YW=$(echo "\033[33m")
 | 
					YW=$(echo "\033[33m")
 | 
				
			||||||
BL=$(echo "\033[36m")
 | 
					BL=$(echo "\033[36m")
 | 
				
			||||||
HA=$(echo "\033[1;34m")
 | 
					HA=$(echo "\033[1;34m")
 | 
				
			||||||
@@ -58,6 +56,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -142,7 +157,7 @@ function exit-script() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function default_settings() {
 | 
					function default_settings() {
 | 
				
			||||||
  VMID="$NEXTID"
 | 
					  VMID=$(get_valid_nextid)
 | 
				
			||||||
  FORMAT=",efitype=4m"
 | 
					  FORMAT=",efitype=4m"
 | 
				
			||||||
  MACHINE=""
 | 
					  MACHINE=""
 | 
				
			||||||
  DISK_CACHE=""
 | 
					  DISK_CACHE=""
 | 
				
			||||||
@@ -173,10 +188,11 @@ function default_settings() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function advanced_settings() {
 | 
					function advanced_settings() {
 | 
				
			||||||
  METHOD="advanced"
 | 
					  METHOD="advanced"
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID=$(get_valid_nextid)
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,17 +24,14 @@ EOF
 | 
				
			|||||||
clear
 | 
					clear
 | 
				
			||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "Loading..."
 | 
					echo -e "Loading..."
 | 
				
			||||||
#API VARIABLES
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="pimox-haos-vm"
 | 
					NSAPP="pimox-haos-vm"
 | 
				
			||||||
var_os="pimox-haos"
 | 
					var_os="pimox-haos"
 | 
				
			||||||
var_version=" "
 | 
					var_version=" "
 | 
				
			||||||
DISK_SIZE="32G"
 | 
					DISK_SIZE="32G"
 | 
				
			||||||
#
 | 
					 | 
				
			||||||
GEN_MAC=$(echo '00 60 2f'$(od -An -N3 -t xC /dev/urandom) | sed -e 's/ /:/g' | tr '[:lower:]' '[:upper:]')
 | 
					GEN_MAC=$(echo '00 60 2f'$(od -An -N3 -t xC /dev/urandom) | sed -e 's/ /:/g' | tr '[:lower:]' '[:upper:]')
 | 
				
			||||||
USEDID=$(pvesh get /cluster/resources --type vm --output-format yaml | egrep -i 'vmid' | awk '{print substr($2, 1, length($2)-0) }')
 | 
					USEDID=$(pvesh get /cluster/resources --type vm --output-format yaml | egrep -i 'vmid' | awk '{print substr($2, 1, length($2)-0) }')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
STABLE=$(curl -fsSL https://raw.githubusercontent.com/home-assistant/version/master/stable.json | grep "ova" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					STABLE=$(curl -fsSL https://raw.githubusercontent.com/home-assistant/version/master/stable.json | grep "ova" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
BETA=$(curl -fsSL https://raw.githubusercontent.com/home-assistant/version/master/beta.json | grep "ova" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					BETA=$(curl -fsSL https://raw.githubusercontent.com/home-assistant/version/master/beta.json | grep "ova" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
DEV=$(curl -fsSL https://raw.githubusercontent.com/home-assistant/version/master/dev.json | grep "ova" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					DEV=$(curl -fsSL https://raw.githubusercontent.com/home-assistant/version/master/dev.json | grep "ova" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
@@ -70,6 +67,24 @@ function error_exit() {
 | 
				
			|||||||
  [ ! -z ${VMID-} ] && cleanup_vmid
 | 
					  [ ! -z ${VMID-} ] && cleanup_vmid
 | 
				
			||||||
  exit $EXIT
 | 
					  exit $EXIT
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if $(qm status $VMID &>/dev/null); then
 | 
					  if $(qm status $VMID &>/dev/null); then
 | 
				
			||||||
    if [ "$(qm status $VMID | awk '{print $2}')" == "running" ]; then
 | 
					    if [ "$(qm status $VMID | awk '{print $2}')" == "running" ]; then
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,6 @@ EOF
 | 
				
			|||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "\n Loading..."
 | 
					echo -e "\n Loading..."
 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="ubuntu-2204-vm"
 | 
					NSAPP="ubuntu-2204-vm"
 | 
				
			||||||
@@ -33,8 +32,6 @@ RD=$(echo "\033[01;31m")
 | 
				
			|||||||
BGN=$(echo "\033[4;92m")
 | 
					BGN=$(echo "\033[4;92m")
 | 
				
			||||||
GN=$(echo "\033[1;92m")
 | 
					GN=$(echo "\033[1;92m")
 | 
				
			||||||
DGN=$(echo "\033[32m")
 | 
					DGN=$(echo "\033[32m")
 | 
				
			||||||
CL=$(echo "\033[m")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CL=$(echo "\033[m")
 | 
					CL=$(echo "\033[m")
 | 
				
			||||||
BOLD=$(echo "\033[1m")
 | 
					BOLD=$(echo "\033[1m")
 | 
				
			||||||
BFR="\\r\\033[K"
 | 
					BFR="\\r\\033[K"
 | 
				
			||||||
@@ -75,6 +72,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -160,7 +174,7 @@ function exit-script() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function default_settings() {
 | 
					function default_settings() {
 | 
				
			||||||
  VMID="$NEXTID"
 | 
					  VMID=$(get_valid_nextid)
 | 
				
			||||||
  FORMAT=",efitype=4m"
 | 
					  FORMAT=",efitype=4m"
 | 
				
			||||||
  MACHINE=""
 | 
					  MACHINE=""
 | 
				
			||||||
  DISK_SIZE="5G"
 | 
					  DISK_SIZE="5G"
 | 
				
			||||||
@@ -193,10 +207,11 @@ function default_settings() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function advanced_settings() {
 | 
					function advanced_settings() {
 | 
				
			||||||
  METHOD="advanced"
 | 
					  METHOD="advanced"
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID=$(get_valid_nextid)
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,6 @@ EOF
 | 
				
			|||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "\n Loading..."
 | 
					echo -e "\n Loading..."
 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="ubuntu-2404-vm"
 | 
					NSAPP="ubuntu-2404-vm"
 | 
				
			||||||
@@ -76,6 +75,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -161,7 +177,7 @@ function exit-script() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function default_settings() {
 | 
					function default_settings() {
 | 
				
			||||||
  VMID="$NEXTID"
 | 
					  VMID=$(get_valid_nextid)
 | 
				
			||||||
  FORMAT=",efitype=4m"
 | 
					  FORMAT=",efitype=4m"
 | 
				
			||||||
  MACHINE=""
 | 
					  MACHINE=""
 | 
				
			||||||
  DISK_SIZE="7G"
 | 
					  DISK_SIZE="7G"
 | 
				
			||||||
@@ -194,10 +210,11 @@ function default_settings() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function advanced_settings() {
 | 
					function advanced_settings() {
 | 
				
			||||||
  METHOD="advanced"
 | 
					  METHOD="advanced"
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID=$(get_valid_nextid)
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,6 @@ EOF
 | 
				
			|||||||
header_info
 | 
					header_info
 | 
				
			||||||
echo -e "\n Loading..."
 | 
					echo -e "\n Loading..."
 | 
				
			||||||
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
					GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 | 
				
			||||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
					 | 
				
			||||||
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
					RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
 | 
				
			||||||
METHOD=""
 | 
					METHOD=""
 | 
				
			||||||
NSAPP="ubuntu-2410-vm"
 | 
					NSAPP="ubuntu-2410-vm"
 | 
				
			||||||
@@ -75,6 +74,23 @@ function error_handler() {
 | 
				
			|||||||
  cleanup_vmid
 | 
					  cleanup_vmid
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_valid_nextid() {
 | 
				
			||||||
 | 
					  local try_id
 | 
				
			||||||
 | 
					  try_id=$(pvesh get /cluster/nextid)
 | 
				
			||||||
 | 
					  while true; do
 | 
				
			||||||
 | 
					    if [ -f "/etc/pve/qemu-server/${try_id}.conf" ] || [ -f "/etc/pve/lxc/${try_id}.conf" ]; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if lvs --noheadings -o lv_name | grep -qE "(^|[-_])${try_id}($|[-_])"; then
 | 
				
			||||||
 | 
					      try_id=$((try_id + 1))
 | 
				
			||||||
 | 
					      continue
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    break
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo "$try_id"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function cleanup_vmid() {
 | 
					function cleanup_vmid() {
 | 
				
			||||||
  if qm status $VMID &>/dev/null; then
 | 
					  if qm status $VMID &>/dev/null; then
 | 
				
			||||||
    qm stop $VMID &>/dev/null
 | 
					    qm stop $VMID &>/dev/null
 | 
				
			||||||
@@ -160,7 +176,7 @@ function exit-script() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function default_settings() {
 | 
					function default_settings() {
 | 
				
			||||||
  VMID="$NEXTID"
 | 
					  VMID=$(get_valid_nextid)
 | 
				
			||||||
  FORMAT=",efitype=4m"
 | 
					  FORMAT=",efitype=4m"
 | 
				
			||||||
  MACHINE=""
 | 
					  MACHINE=""
 | 
				
			||||||
  DISK_SIZE="8G"
 | 
					  DISK_SIZE="8G"
 | 
				
			||||||
@@ -193,10 +209,11 @@ function default_settings() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function advanced_settings() {
 | 
					function advanced_settings() {
 | 
				
			||||||
  METHOD="advanced"
 | 
					  METHOD="advanced"
 | 
				
			||||||
 | 
					  [ -z "${VMID:-}" ] && VMID=$(get_valid_nextid)
 | 
				
			||||||
  while true; do
 | 
					  while true; do
 | 
				
			||||||
    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
					    if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $VMID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [ -z "$VMID" ]; then
 | 
					      if [ -z "$VMID" ]; then
 | 
				
			||||||
        VMID="$NEXTID"
 | 
					        VMID=$(get_valid_nextid)
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
					      if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
 | 
				
			||||||
        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
					        echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user