mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			51 Commits
		
	
	
		
			2025-10-21
			...
			2025-10-25
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					327544c737 | ||
| 
						 | 
					1c8b7b4e7e | ||
| 
						 | 
					6e5140314f | ||
| 
						 | 
					622f85db23 | ||
| 
						 | 
					55be335b66 | ||
| 
						 | 
					5db685f235 | ||
| 
						 | 
					14027a605a | ||
| 
						 | 
					5f0dba82ad | ||
| 
						 | 
					c0087bf8aa | ||
| 
						 | 
					691fc48915 | ||
| 
						 | 
					fe9e894e79 | ||
| 
						 | 
					43356df77f | ||
| 
						 | 
					e4b96ec200 | ||
| 
						 | 
					01a63d0a9d | ||
| 
						 | 
					0a4a64ca0c | ||
| 
						 | 
					4cdb43065d | ||
| 
						 | 
					add12ef634 | ||
| 
						 | 
					3ab5167d8a | ||
| 
						 | 
					b16a7f4562 | ||
| 
						 | 
					fa3f993256 | ||
| 
						 | 
					c0894cb612 | ||
| 
						 | 
					3b96230327 | ||
| 
						 | 
					99617f265a | ||
| 
						 | 
					1fe00c2493 | ||
| 
						 | 
					05fd03d160 | ||
| 
						 | 
					e837ebb0e5 | ||
| 
						 | 
					8e1a9ffb07 | ||
| 
						 | 
					af991286dc | ||
| 
						 | 
					c1205691e7 | ||
| 
						 | 
					394787e10e | ||
| 
						 | 
					e37ef10283 | ||
| 
						 | 
					130e3c7efe | ||
| 
						 | 
					634a847c06 | ||
| 
						 | 
					c92f9d5518 | ||
| 
						 | 
					c7fffd85d3 | ||
| 
						 | 
					2ae62055a6 | ||
| 
						 | 
					e6bd1b5759 | ||
| 
						 | 
					55120ae165 | ||
| 
						 | 
					4672934701 | ||
| 
						 | 
					560e1fdad3 | ||
| 
						 | 
					e60020a998 | ||
| 
						 | 
					dfda118e65 | ||
| 
						 | 
					6d7c318dec | ||
| 
						 | 
					9c39c9cd67 | ||
| 
						 | 
					0ed95ea9cb | ||
| 
						 | 
					433119e830 | ||
| 
						 | 
					a794358c14 | ||
| 
						 | 
					0f69e8cc69 | ||
| 
						 | 
					2e34f534eb | ||
| 
						 | 
					1c9d325ae8 | ||
| 
						 | 
					a117cb7a34 | 
							
								
								
									
										47
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -10,8 +10,55 @@
 | 
			
		||||
> [!CAUTION]
 | 
			
		||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
 | 
			
		||||
 | 
			
		||||
## 2025-10-26
 | 
			
		||||
 | 
			
		||||
## 2025-10-25
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - PatchMon ([#8632](https://github.com/community-scripts/ProxmoxVE/pull/8632))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - UrBackup Server: Fix install going interactive [@tremor021](https://github.com/tremor021) ([#8622](https://github.com/community-scripts/ProxmoxVE/pull/8622))
 | 
			
		||||
 | 
			
		||||
## 2025-10-24
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Fix config path for BunkerWeb [@Nonolanlan1007](https://github.com/Nonolanlan1007) ([#8618](https://github.com/community-scripts/ProxmoxVE/pull/8618))
 | 
			
		||||
    - Update logo URL in guardian.json [@HydroshieldMKII](https://github.com/HydroshieldMKII) ([#8615](https://github.com/community-scripts/ProxmoxVE/pull/8615))
 | 
			
		||||
 | 
			
		||||
## 2025-10-23
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Radicale: Update dependencies [@ilofX](https://github.com/ilofX) ([#8603](https://github.com/community-scripts/ProxmoxVE/pull/8603))
 | 
			
		||||
    - Various Downgrades to Debian 12 (MySQL / OMW / Technitium)  [@MickLesk](https://github.com/MickLesk) ([#8595](https://github.com/community-scripts/ProxmoxVE/pull/8595))
 | 
			
		||||
    - MeTube: Fix inserting path into .bashrc [@tremor021](https://github.com/tremor021) ([#8589](https://github.com/community-scripts/ProxmoxVE/pull/8589))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor: Kavita + Updated tools.func (no-same-owner) [@MickLesk](https://github.com/MickLesk) ([#8594](https://github.com/community-scripts/ProxmoxVE/pull/8594))
 | 
			
		||||
    - tools.func: update update_check messages for clarity [@MickLesk](https://github.com/MickLesk) ([#8588](https://github.com/community-scripts/ProxmoxVE/pull/8588))
 | 
			
		||||
 | 
			
		||||
## 2025-10-22
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Refactor: Full Change & Feature-Bump of tools.func [@MickLesk](https://github.com/MickLesk) ([#8409](https://github.com/community-scripts/ProxmoxVE/pull/8409))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - part-db: use helper-script php function [@MickLesk](https://github.com/MickLesk) ([#8575](https://github.com/community-scripts/ProxmoxVE/pull/8575))
 | 
			
		||||
    - omada: remove static mongodb install [@MickLesk](https://github.com/MickLesk) ([#8577](https://github.com/community-scripts/ProxmoxVE/pull/8577))
 | 
			
		||||
 | 
			
		||||
## 2025-10-21
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/patchmon
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/patchmon
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____        __       __    __  ___          
 | 
			
		||||
   / __ \____ _/ /______/ /_  /  |/  /___  ____ 
 | 
			
		||||
  / /_/ / __ `/ __/ ___/ __ \/ /|_/ / __ \/ __ \
 | 
			
		||||
 / ____/ /_/ / /_/ /__/ / / / /  / / /_/ / / / /
 | 
			
		||||
/_/    \__,_/\__/\___/_/ /_/_/  /_/\____/_/ /_/ 
 | 
			
		||||
                                                
 | 
			
		||||
@@ -42,4 +42,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								ct/kavita.sh
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								ct/kavita.sh
									
									
									
									
									
								
							@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -20,23 +20,28 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/Kavita ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating $APP LXC"
 | 
			
		||||
    systemctl stop kavita
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/Kareadita/Kavita/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    $STD tar -xvzf <(curl -fsSL https://github.com/Kareadita/Kavita/releases/download/$RELEASE/kavita-linux-x64.tar.gz) --no-same-owner
 | 
			
		||||
    rm -rf Kavita/config
 | 
			
		||||
    cp -r Kavita/* /opt/Kavita
 | 
			
		||||
    rm -rf Kavita
 | 
			
		||||
    systemctl start kavita
 | 
			
		||||
    msg_ok "Updated $APP LXC"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/Kavita ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "kavita" "Kareadita/Kavita"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop kavita
 | 
			
		||||
    msg_ok "Service Stopped"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "kavita" "Kareadita/Kavita" "prebuild" "latest" "/opt/Kavita" "kavita-linux-x64.tar.gz"
 | 
			
		||||
    chmod +x /opt/Kavita/Kavita && chown root:root /opt/Kavita/Kavita
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start kavita
 | 
			
		||||
    msg_ok "Service Started"
 | 
			
		||||
    msg_ok "Update Successfully!"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -46,4 +51,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ function update_script() {
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [[ $(echo ":$PATH:" != *":/usr/local/bin:"*) ]]; then
 | 
			
		||||
    echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc
 | 
			
		||||
    echo -e "\nexport PATH=\"/usr/local/bin:\$PATH\"" >>~/.bashrc
 | 
			
		||||
    source ~/.bashrc
 | 
			
		||||
    if ! command -v deno &>/dev/null; then
 | 
			
		||||
      export DENO_INSTALL="/usr/local"
 | 
			
		||||
@@ -110,6 +110,7 @@ EOF
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully!"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								ct/mysql.sh
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								ct/mysql.sh
									
									
									
									
									
								
							@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -20,18 +20,18 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating ${APP} LXC"
 | 
			
		||||
    $STD apt update
 | 
			
		||||
    $STD apt -y upgrade
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating ${APP} LXC"
 | 
			
		||||
  $STD apt update
 | 
			
		||||
  $STD apt -y upgrade
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -41,4 +41,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}:3306${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}:3306${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,19 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  
 | 
			
		||||
  if command -v node &> /dev/null; then
 | 
			
		||||
    CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
 | 
			
		||||
    if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then
 | 
			
		||||
      systemctl stop openresty
 | 
			
		||||
      apt-get purge -y nodejs npm
 | 
			
		||||
      apt-get autoremove -y
 | 
			
		||||
      rm -rf /usr/local/bin/node /usr/local/bin/npm
 | 
			
		||||
      rm -rf /usr/local/lib/node_modules
 | 
			
		||||
      rm -rf ~/.npm
 | 
			
		||||
      rm -rf /root/.npm
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
 | 
			
		||||
  export NODE_OPTIONS="--openssl-legacy-provider"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								ct/omv.sh
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								ct/omv.sh
									
									
									
									
									
								
							@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -20,18 +20,18 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -f /etc/apt/sources.list.d/openmediavault.list ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating ${APP} LXC"
 | 
			
		||||
    $STD apt update
 | 
			
		||||
    $STD apt -y upgrade
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /etc/apt/sources.list.d/openmediavault.list ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating ${APP} LXC"
 | 
			
		||||
  $STD apt update
 | 
			
		||||
  $STD apt -y upgrade
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -41,4 +41,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										76
									
								
								ct/patchmon.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								ct/patchmon.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/PatchMon/PatchMon
 | 
			
		||||
 | 
			
		||||
APP="PatchMon"
 | 
			
		||||
var_tags="${var_tags:-monitoring}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
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/patchmon" ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  NODE_VERSION="24" setup_nodejs
 | 
			
		||||
  if check_for_gh_release "PatchMon" "PatchMon/PatchMon"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop patchmon-server
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    cp /opt/patchmon/backend/.env /opt/backend.env
 | 
			
		||||
    cp /opt/patchmon/frontend/.env /opt/frontend.env
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    CLEAN_INSTALL=1 fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating PatchMon"
 | 
			
		||||
    cd /opt/patchmon
 | 
			
		||||
    export NODE_ENV=production
 | 
			
		||||
    $STD npm install --no-audit --no-fund --no-save --ignore-scripts
 | 
			
		||||
    cd /opt/patchmon/backend
 | 
			
		||||
    $STD npm install --no-audit --no-fund --no-save --ignore-scripts
 | 
			
		||||
    cd /opt/patchmon/frontend
 | 
			
		||||
    $STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    cd /opt/patchmon/backend
 | 
			
		||||
    mv /opt/backend.env /opt/patchmon/backend/.env
 | 
			
		||||
    mv /opt/frontend.env /opt/patchmon/frontend/.env
 | 
			
		||||
    $STD npx prisma migrate deploy
 | 
			
		||||
    $STD npx prisma generate
 | 
			
		||||
    msg_ok "Updated PatchMon"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start patchmon-server
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Updated Successfully!"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
  "documentation": "https://docs.bunkerweb.io/latest/",
 | 
			
		||||
  "website": "https://www.bunkerweb.io/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/bunkerweb.webp",
 | 
			
		||||
  "config_path": "/opt/bunkerweb/variables.env",
 | 
			
		||||
  "config_path": "/etc/bunkerweb/variables.env",
 | 
			
		||||
  "description": "BunkerWeb is a security-focused web server that enhances web application protection. It guards against common web vulnerabilities like SQL injection, XSS, and CSRF. It features simple setup and configuration using a YAML file, customizable security rules, and provides detailed logs for traffic monitoring and threat detection.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
  "documentation": "https://github.com/HydroshieldMKII/Guardian/blob/main/README.md",
 | 
			
		||||
  "config_path": "/opt/guardian/.env",
 | 
			
		||||
  "website": "https://github.com/HydroshieldMKII/Guardian",
 | 
			
		||||
  "logo": null,
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/guardian-plex.webp",
 | 
			
		||||
  "description": "Guardian is a lightweight companion app for Plex that lets you monitor, approve or block devices in real time. It helps you enforce per-user or global policies, stop unwanted sessions automatically and grant temporary access - all through a simple web interface.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 8,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 
 | 
			
		||||
@@ -1,48 +1,48 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "MySQL",
 | 
			
		||||
    "slug": "mysql",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        8
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2024-10-10",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": true,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": null,
 | 
			
		||||
    "documentation": "https://dev.mysql.com/doc/",
 | 
			
		||||
    "website": "https://www.mysql.com/",
 | 
			
		||||
    "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mysql.webp",
 | 
			
		||||
    "config_path": "",
 | 
			
		||||
    "description": "MySQL is an open-source relational database management system (RDBMS) that uses SQL for managing and manipulating data. It is known for its scalability, reliability, and high performance, making it suitable for small to large-scale applications. Key features include support for ACID transactions, data replication for high availability, and compatibility with various programming languages like Python, PHP, and Java.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/mysql.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 1024,
 | 
			
		||||
                "hdd": 4,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "13"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
  "name": "MySQL",
 | 
			
		||||
  "slug": "mysql",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    8
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-10-10",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": "https://dev.mysql.com/doc/",
 | 
			
		||||
  "website": "https://www.mysql.com/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mysql.webp",
 | 
			
		||||
  "config_path": "",
 | 
			
		||||
  "description": "MySQL is an open-source relational database management system (RDBMS) that uses SQL for managing and manipulating data. It is known for its scalability, reliability, and high performance, making it suitable for small to large-scale applications. Key features include support for ACID transactions, data replication for high availability, and compatibility with various programming languages like Python, PHP, and Java.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/mysql.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Database credentials: `cat mysql.creds`",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Database credentials: `cat mysql.creds`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "If installed, access phpMyAdmin at `http://<LXC_IP>/phpMyAdmin`, case sensitive.",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
    {
 | 
			
		||||
      "text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "If installed, access phpMyAdmin at `http://<LXC_IP>/phpMyAdmin`, case sensitive.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "13"
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								frontend/public/json/patchmon.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								frontend/public/json/patchmon.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "PatchMon",
 | 
			
		||||
  "slug": "patchmon",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    9
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-10-25",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3399,
 | 
			
		||||
  "documentation": "https://docs.patchmon.net",
 | 
			
		||||
  "website": "https://patchmon.net",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/patchmon.webp",
 | 
			
		||||
  "config_path": "/opt/patchmon/backend/.env, /opt/patchmon/frontend/.env",
 | 
			
		||||
  "description": "Monitor Linux patches across all your hosts with real-time visibility, security update tracking, and comprehensive package management.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/patchmon.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "13"
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,10 @@
 | 
			
		||||
    {
 | 
			
		||||
      "text": "You probably want to drastically extend the storage space to fit whatever clients you want to back up",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Directory `/opt/urbackup/backups` is set as initial backup path. Change it to your liking",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,59 +1,339 @@
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TwiN/gatus",
 | 
			
		||||
    "version": "v5.29.0",
 | 
			
		||||
    "date": "2025-10-25T19:49:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Prowlarr/Prowlarr",
 | 
			
		||||
    "version": "v2.1.5.5216",
 | 
			
		||||
    "date": "2025-10-25T19:41:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "9001/copyparty",
 | 
			
		||||
    "version": "v1.19.19",
 | 
			
		||||
    "date": "2025-10-25T19:39:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "BerriAI/litellm",
 | 
			
		||||
    "version": "v1.78.0-stable",
 | 
			
		||||
    "date": "2025-10-25T18:30:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "dgtlmoon/changedetection.io",
 | 
			
		||||
    "version": "0.50.32",
 | 
			
		||||
    "date": "2025-10-25T17:29:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.13.5",
 | 
			
		||||
    "date": "2025-09-27T01:10:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fuma-nama/fumadocs",
 | 
			
		||||
    "version": "fumadocs-core@16.0.3",
 | 
			
		||||
    "date": "2025-10-25T16:44:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sassanix/Warracker",
 | 
			
		||||
    "version": "1.0.0",
 | 
			
		||||
    "date": "2025-10-25T14:25:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "danielbrendel/hortusfox-web",
 | 
			
		||||
    "version": "v5.3",
 | 
			
		||||
    "date": "2025-10-25T13:50:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "runtipi/runtipi",
 | 
			
		||||
    "version": "v4.5.3",
 | 
			
		||||
    "date": "2025-10-25T13:27:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.4.2",
 | 
			
		||||
    "date": "2025-10-07T08:11:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pi-hole/pi-hole",
 | 
			
		||||
    "version": "v6.2.1",
 | 
			
		||||
    "date": "2025-10-25T10:39:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.24.185",
 | 
			
		||||
    "date": "2025-10-25T05:55:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "go-gitea/gitea",
 | 
			
		||||
    "version": "v1.24.7",
 | 
			
		||||
    "date": "2025-10-25T01:23:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "OliveTin/OliveTin",
 | 
			
		||||
    "version": "3000.1.0",
 | 
			
		||||
    "date": "2025-10-25T00:30:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jeedom/core",
 | 
			
		||||
    "version": "4.4.20",
 | 
			
		||||
    "date": "2025-10-25T00:27:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "steveiliop56/tinyauth",
 | 
			
		||||
    "version": "v4.0.1",
 | 
			
		||||
    "date": "2025-10-15T16:53:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r7.0.26-rc0",
 | 
			
		||||
    "date": "2025-10-24T22:33:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "msgbyte/tianji",
 | 
			
		||||
    "version": "v1.30.0",
 | 
			
		||||
    "date": "2025-10-21T21:37:52Z"
 | 
			
		||||
    "version": "v1.30.3",
 | 
			
		||||
    "date": "2025-10-24T21:21:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.4.2",
 | 
			
		||||
    "date": "2025-10-23T06:59:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.10.4",
 | 
			
		||||
    "date": "2025-10-24T20:03:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "homarr-labs/homarr",
 | 
			
		||||
    "version": "v1.43.0",
 | 
			
		||||
    "date": "2025-10-24T19:16:05Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "tailscale/tailscale",
 | 
			
		||||
    "version": "v1.90.2",
 | 
			
		||||
    "date": "2025-10-24T18:02:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "influxdata/influxdb",
 | 
			
		||||
    "version": "v2.7.12",
 | 
			
		||||
    "date": "2025-05-29T17:08:26Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "booklore-app/booklore",
 | 
			
		||||
    "version": "v1.9.0",
 | 
			
		||||
    "date": "2025-10-24T17:44:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "verdaccio/verdaccio",
 | 
			
		||||
    "version": "v6.2.1",
 | 
			
		||||
    "date": "2025-10-24T15:40:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "usememos/memos",
 | 
			
		||||
    "version": "v0.25.2",
 | 
			
		||||
    "date": "2025-10-24T12:30:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pocket-id/pocket-id",
 | 
			
		||||
    "version": "v1.14.0",
 | 
			
		||||
    "date": "2025-10-24T11:59:09Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.116.2",
 | 
			
		||||
    "date": "2025-10-21T11:39:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sabnzbd/sabnzbd",
 | 
			
		||||
    "version": "4.5.5",
 | 
			
		||||
    "date": "2025-10-24T11:12:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "crowdsecurity/crowdsec",
 | 
			
		||||
    "version": "v1.7.3",
 | 
			
		||||
    "date": "2025-10-24T10:51:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "meilisearch/meilisearch",
 | 
			
		||||
    "version": "prototype-v1.24.0.s3-snapshots-3",
 | 
			
		||||
    "date": "2025-10-24T09:47:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Luligu/matterbridge",
 | 
			
		||||
    "version": "3.3.4",
 | 
			
		||||
    "date": "2025-10-24T06:43:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "inventree/InvenTree",
 | 
			
		||||
    "version": "1.0.8",
 | 
			
		||||
    "date": "2025-10-24T05:32:09Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pocketbase/pocketbase",
 | 
			
		||||
    "version": "v0.31.0",
 | 
			
		||||
    "date": "2025-10-24T04:07:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "esphome/esphome",
 | 
			
		||||
    "version": "2025.10.3",
 | 
			
		||||
    "date": "2025-10-24T01:08:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "documenso/documenso",
 | 
			
		||||
    "version": "v1.13.1",
 | 
			
		||||
    "date": "2025-10-23T23:52:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Cleanuparr/Cleanuparr",
 | 
			
		||||
    "version": "v2.4.0",
 | 
			
		||||
    "date": "2025-10-23T21:12:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wizarrrr/wizarr",
 | 
			
		||||
    "version": "v2025.10.6",
 | 
			
		||||
    "date": "2025-10-23T20:20:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "v4.14.0",
 | 
			
		||||
    "date": "2025-10-23T17:45:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "paperless-ngx/paperless-ngx",
 | 
			
		||||
    "version": "v2.19.2",
 | 
			
		||||
    "date": "2025-10-23T17:23:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "drakkan/sftpgo",
 | 
			
		||||
    "version": "v2.7.0",
 | 
			
		||||
    "date": "2025-10-23T17:15:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v4.4.0",
 | 
			
		||||
    "date": "2025-10-16T07:20:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "juanfont/headscale",
 | 
			
		||||
    "version": "v0.26.1",
 | 
			
		||||
    "date": "2025-06-06T11:22:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.41.5",
 | 
			
		||||
    "date": "2025-10-23T15:12:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "AdguardTeam/AdGuardHome",
 | 
			
		||||
    "version": "v0.107.68",
 | 
			
		||||
    "date": "2025-10-23T14:26:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Kareadita/Kavita",
 | 
			
		||||
    "version": "v0.8.8.3",
 | 
			
		||||
    "date": "2025-10-23T12:31:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "YunoHost/yunohost",
 | 
			
		||||
    "version": "debian/12.1.32",
 | 
			
		||||
    "date": "2025-10-23T12:30:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.2.0.0_stable_2025-10-23",
 | 
			
		||||
    "date": "2025-10-23T11:48:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jhuckaby/Cronicle",
 | 
			
		||||
    "version": "v0.9.99",
 | 
			
		||||
    "date": "2025-10-22T22:20:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "moghtech/komodo",
 | 
			
		||||
    "version": "v1.19.5",
 | 
			
		||||
    "date": "2025-09-27T20:59:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rcourtman/Pulse",
 | 
			
		||||
    "version": "issue-596",
 | 
			
		||||
    "date": "2025-10-22T19:48:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gtsteffaniak/filebrowser",
 | 
			
		||||
    "version": "v0.8.10-beta",
 | 
			
		||||
    "date": "2025-10-22T18:41:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "docker/compose",
 | 
			
		||||
    "version": "v2.40.2",
 | 
			
		||||
    "date": "2025-10-22T17:38:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "louislam/uptime-kuma",
 | 
			
		||||
    "version": "2.0.2",
 | 
			
		||||
    "date": "2025-10-22T17:03:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "chrisvel/tududi",
 | 
			
		||||
    "version": "v0.84.2",
 | 
			
		||||
    "date": "2025-10-22T17:03:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "prometheus/prometheus",
 | 
			
		||||
    "version": "v0.307.2",
 | 
			
		||||
    "date": "2025-10-22T16:00:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "thecfu/scraparr",
 | 
			
		||||
    "version": "v3.0.0-beta",
 | 
			
		||||
    "date": "2025-10-22T13:12:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "NLnetLabs/unbound",
 | 
			
		||||
    "version": "release-1.24.1",
 | 
			
		||||
    "date": "2025-10-22T10:28:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mattermost/mattermost",
 | 
			
		||||
    "version": "server/public/v0.1.21",
 | 
			
		||||
    "date": "2025-10-16T09:46:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zabbix/zabbix",
 | 
			
		||||
    "version": "7.4.4rc1",
 | 
			
		||||
    "date": "2025-10-22T09:20:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "SigNoz/signoz",
 | 
			
		||||
    "version": "v0.98.0",
 | 
			
		||||
    "date": "2025-10-22T06:49:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "morpheus65535/bazarr",
 | 
			
		||||
    "version": "v1.5.3",
 | 
			
		||||
    "date": "2025-09-20T12:12:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "chrisbenincasa/tunarr",
 | 
			
		||||
    "version": "v0.23.0-alpha.17",
 | 
			
		||||
    "date": "2025-10-22T00:33:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bluenviron/mediamtx",
 | 
			
		||||
    "version": "v1.15.3",
 | 
			
		||||
    "date": "2025-10-21T19:56:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "dgtlmoon/changedetection.io",
 | 
			
		||||
    "version": "0.50.28",
 | 
			
		||||
    "date": "2025-10-21T19:51:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "BerriAI/litellm",
 | 
			
		||||
    "version": "v1.78.6-nightly",
 | 
			
		||||
    "date": "2025-10-21T19:12:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r8.0.15",
 | 
			
		||||
    "date": "2025-10-21T19:03:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jenkinsci/jenkins",
 | 
			
		||||
    "version": "jenkins-2.533",
 | 
			
		||||
    "date": "2025-10-21T18:26:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TwiN/gatus",
 | 
			
		||||
    "version": "v5.27.2",
 | 
			
		||||
    "date": "2025-10-21T18:03:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "paperless-ngx/paperless-ngx",
 | 
			
		||||
    "version": "v2.19.0",
 | 
			
		||||
    "date": "2025-10-21T17:41:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jhuckaby/Cronicle",
 | 
			
		||||
    "version": "v0.9.98",
 | 
			
		||||
    "date": "2025-10-21T17:21:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "kyantech/Palmr",
 | 
			
		||||
    "version": "v3.2.5-beta",
 | 
			
		||||
    "date": "2025-10-21T16:49:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.116.2",
 | 
			
		||||
    "date": "2025-10-21T11:39:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "element-hq/synapse",
 | 
			
		||||
    "version": "v1.140.0",
 | 
			
		||||
@@ -64,11 +344,6 @@
 | 
			
		||||
    "version": "v12.2.1",
 | 
			
		||||
    "date": "2025-10-21T14:40:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "crowdsecurity/crowdsec",
 | 
			
		||||
    "version": "v1.7.1",
 | 
			
		||||
    "date": "2025-10-15T10:44:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "laurent22/joplin",
 | 
			
		||||
    "version": "server-v3.4.4",
 | 
			
		||||
@@ -99,61 +374,21 @@
 | 
			
		||||
    "version": "0.209.3",
 | 
			
		||||
    "date": "2025-10-21T10:53:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zabbix/zabbix",
 | 
			
		||||
    "version": "7.0.20rc1",
 | 
			
		||||
    "date": "2025-10-21T09:14:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "VictoriaMetrics/VictoriaMetrics",
 | 
			
		||||
    "version": "pmm-6401-v1.128.0",
 | 
			
		||||
    "date": "2025-10-21T08:30:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "meilisearch/meilisearch",
 | 
			
		||||
    "version": "prototype-v1.24.0.ignore-embedding-failures-2",
 | 
			
		||||
    "date": "2025-10-21T07:36:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.24.166",
 | 
			
		||||
    "date": "2025-10-21T05:54:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "openobserve/openobserve",
 | 
			
		||||
    "version": "v0.16.0-rc1",
 | 
			
		||||
    "date": "2025-10-21T00:37:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jeedom/core",
 | 
			
		||||
    "version": "4.4.20",
 | 
			
		||||
    "date": "2025-10-21T00:27:05Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "steveiliop56/tinyauth",
 | 
			
		||||
    "version": "v4.0.1",
 | 
			
		||||
    "date": "2025-10-15T16:53:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "documenso/documenso",
 | 
			
		||||
    "version": "v1.13.0",
 | 
			
		||||
    "date": "2025-10-21T00:21:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "henrygd/beszel",
 | 
			
		||||
    "version": "v0.14.1",
 | 
			
		||||
    "date": "2025-10-20T22:10:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.4.1",
 | 
			
		||||
    "date": "2025-10-16T07:21:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "booklore-app/booklore",
 | 
			
		||||
    "version": "v1.8.1",
 | 
			
		||||
    "date": "2025-10-20T20:53:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "coder/code-server",
 | 
			
		||||
    "version": "v4.105.1",
 | 
			
		||||
@@ -164,31 +399,11 @@
 | 
			
		||||
    "version": "v1.0.23",
 | 
			
		||||
    "date": "2025-10-20T19:51:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "chrisbenincasa/tunarr",
 | 
			
		||||
    "version": "v0.23.0-alpha.16",
 | 
			
		||||
    "date": "2025-10-20T19:29:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MediaBrowser/Emby.Releases",
 | 
			
		||||
    "version": "4.9.1.80",
 | 
			
		||||
    "date": "2025-09-30T20:25:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "tailscale/tailscale",
 | 
			
		||||
    "version": "v1.91.0-pre",
 | 
			
		||||
    "date": "2025-10-20T16:18:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "louislam/uptime-kuma",
 | 
			
		||||
    "version": "2.0.1",
 | 
			
		||||
    "date": "2025-10-20T16:11:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "chrisvel/tududi",
 | 
			
		||||
    "version": "v0.84.1",
 | 
			
		||||
    "date": "2025-10-20T15:32:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rclone/rclone",
 | 
			
		||||
    "version": "v1.71.2",
 | 
			
		||||
@@ -199,41 +414,16 @@
 | 
			
		||||
    "version": "7.0.0-rc.1",
 | 
			
		||||
    "date": "2025-10-20T11:53:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Kareadita/Kavita",
 | 
			
		||||
    "version": "v0.8.8",
 | 
			
		||||
    "date": "2025-10-20T11:26:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wizarrrr/wizarr",
 | 
			
		||||
    "version": "v2025.10.4",
 | 
			
		||||
    "date": "2025-10-20T10:45:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jupyter/notebook",
 | 
			
		||||
    "version": "@jupyter-notebook/ui-components@7.5.0-beta.1",
 | 
			
		||||
    "date": "2025-10-20T07:01:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "inventree/InvenTree",
 | 
			
		||||
    "version": "1.0.7",
 | 
			
		||||
    "date": "2025-10-20T05:23:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.4.2",
 | 
			
		||||
    "date": "2025-10-07T08:11:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jellyfin/jellyfin",
 | 
			
		||||
    "version": "v10.11.0",
 | 
			
		||||
    "date": "2025-10-20T00:45:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "esphome/esphome",
 | 
			
		||||
    "version": "2025.10.2",
 | 
			
		||||
    "date": "2025-10-20T00:42:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pelican-dev/panel",
 | 
			
		||||
    "version": "v1.0.0-beta27",
 | 
			
		||||
@@ -244,11 +434,6 @@
 | 
			
		||||
    "version": "5.2.3",
 | 
			
		||||
    "date": "2025-10-19T20:50:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "verdaccio/verdaccio",
 | 
			
		||||
    "version": "generator-verdaccio-plugin@6.0.0-next-8.24",
 | 
			
		||||
    "date": "2025-10-19T19:43:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Part-DB/Part-DB-server",
 | 
			
		||||
    "version": "v2.2.1",
 | 
			
		||||
@@ -259,26 +444,11 @@
 | 
			
		||||
    "version": "v13.0.0",
 | 
			
		||||
    "date": "2025-10-19T10:03:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "morpheus65535/bazarr",
 | 
			
		||||
    "version": "v1.5.3",
 | 
			
		||||
    "date": "2025-09-20T12:12:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Prowlarr/Prowlarr",
 | 
			
		||||
    "version": "v2.0.5.5160",
 | 
			
		||||
    "date": "2025-08-23T21:23:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Lidarr/Lidarr",
 | 
			
		||||
    "version": "v2.14.5.4836",
 | 
			
		||||
    "date": "2025-10-08T15:30:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Luligu/matterbridge",
 | 
			
		||||
    "version": "3.3.3",
 | 
			
		||||
    "date": "2025-10-18T22:27:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ellite/Wallos",
 | 
			
		||||
    "version": "v4.5.0",
 | 
			
		||||
@@ -289,26 +459,11 @@
 | 
			
		||||
    "version": "v2025-10-18",
 | 
			
		||||
    "date": "2025-10-18T20:35:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "moghtech/komodo",
 | 
			
		||||
    "version": "v1.19.5",
 | 
			
		||||
    "date": "2025-09-27T20:59:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "project-zot/zot",
 | 
			
		||||
    "version": "v2.1.10",
 | 
			
		||||
    "date": "2025-10-18T18:46:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "homarr-labs/homarr",
 | 
			
		||||
    "version": "v1.42.1",
 | 
			
		||||
    "date": "2025-10-18T18:31:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "YunoHost/yunohost",
 | 
			
		||||
    "version": "debian/12.1.29",
 | 
			
		||||
    "date": "2025-10-18T17:35:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Notifiarr/notifiarr",
 | 
			
		||||
    "version": "v0.9.0",
 | 
			
		||||
@@ -329,31 +484,11 @@
 | 
			
		||||
    "version": "v13.0.9",
 | 
			
		||||
    "date": "2025-10-18T09:59:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "runtipi/runtipi",
 | 
			
		||||
    "version": "v4.5.1",
 | 
			
		||||
    "date": "2025-10-18T08:12:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v25.4",
 | 
			
		||||
    "date": "2025-10-09T10:27:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "9001/copyparty",
 | 
			
		||||
    "version": "v1.19.17",
 | 
			
		||||
    "date": "2025-10-17T23:40:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gtsteffaniak/filebrowser",
 | 
			
		||||
    "version": "v0.8.9-beta",
 | 
			
		||||
    "date": "2025-10-17T21:51:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.10.3",
 | 
			
		||||
    "date": "2025-10-17T21:15:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "forgejo/forgejo",
 | 
			
		||||
    "version": "v13.0.1",
 | 
			
		||||
@@ -369,46 +504,16 @@
 | 
			
		||||
    "version": "v4.6.1",
 | 
			
		||||
    "date": "2025-10-17T15:21:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "docker/compose",
 | 
			
		||||
    "version": "v2.40.1",
 | 
			
		||||
    "date": "2025-10-17T13:42:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "neo4j/neo4j",
 | 
			
		||||
    "version": "5.26.14",
 | 
			
		||||
    "date": "2025-10-17T12:38:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mattermost/mattermost",
 | 
			
		||||
    "version": "server/public/v0.1.21",
 | 
			
		||||
    "date": "2025-10-16T09:46:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "coverity-w43-4.14.0",
 | 
			
		||||
    "date": "2025-10-17T09:07:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "prometheus/prometheus",
 | 
			
		||||
    "version": "v0.307.1",
 | 
			
		||||
    "date": "2025-10-17T08:41:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zwave-js/zwave-js-ui",
 | 
			
		||||
    "version": "v11.5.2",
 | 
			
		||||
    "date": "2025-10-17T08:20:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pocketbase/pocketbase",
 | 
			
		||||
    "version": "v0.30.4",
 | 
			
		||||
    "date": "2025-10-17T08:03:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "juanfont/headscale",
 | 
			
		||||
    "version": "v0.26.1",
 | 
			
		||||
    "date": "2025-06-06T11:22:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "diced/zipline",
 | 
			
		||||
    "version": "v4.3.2",
 | 
			
		||||
@@ -426,19 +531,14 @@
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.12.6-rc1",
 | 
			
		||||
    "date": "2025-10-16T16:36:25Z"
 | 
			
		||||
    "version": "v0.12.6",
 | 
			
		||||
    "date": "2025-10-16T20:07:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "minio/minio",
 | 
			
		||||
    "version": "RELEASE.2025-10-15T17-29-55Z",
 | 
			
		||||
    "date": "2025-10-16T19:33:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "SigNoz/signoz",
 | 
			
		||||
    "version": "v0.98.0-rc.1",
 | 
			
		||||
    "date": "2025-10-16T17:49:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "open-webui/open-webui",
 | 
			
		||||
    "version": "v0.6.34",
 | 
			
		||||
@@ -449,16 +549,6 @@
 | 
			
		||||
    "version": "v3.2.8",
 | 
			
		||||
    "date": "2025-10-16T14:21:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rcourtman/Pulse",
 | 
			
		||||
    "version": "v4.24.0",
 | 
			
		||||
    "date": "2025-10-16T09:08:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v4.4.0",
 | 
			
		||||
    "date": "2025-10-16T07:20:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cloudreve/cloudreve",
 | 
			
		||||
    "version": "4.9.2",
 | 
			
		||||
@@ -549,11 +639,6 @@
 | 
			
		||||
    "version": "v1.5.3",
 | 
			
		||||
    "date": "2025-10-13T19:59:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sabnzbd/sabnzbd",
 | 
			
		||||
    "version": "4.5.3",
 | 
			
		||||
    "date": "2025-08-25T13:59:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "node-red/node-red",
 | 
			
		||||
    "version": "4.1.1",
 | 
			
		||||
@@ -584,11 +669,6 @@
 | 
			
		||||
    "version": "v0.10.4",
 | 
			
		||||
    "date": "2025-10-11T19:53:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.1.2.3-2.1.2.3_beta_2025-10-11",
 | 
			
		||||
    "date": "2025-10-11T06:49:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "0xERR0R/blocky",
 | 
			
		||||
    "version": "v0.27.0",
 | 
			
		||||
@@ -674,11 +754,6 @@
 | 
			
		||||
    "version": "v1.68.0",
 | 
			
		||||
    "date": "2025-10-08T18:33:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "AdguardTeam/AdGuardHome",
 | 
			
		||||
    "version": "v0.107.67",
 | 
			
		||||
    "date": "2025-09-29T14:45:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "advplyr/audiobookshelf",
 | 
			
		||||
    "version": "v2.30.0",
 | 
			
		||||
@@ -709,21 +784,6 @@
 | 
			
		||||
    "version": "v0.15.1",
 | 
			
		||||
    "date": "2025-10-07T20:30:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "thecfu/scraparr",
 | 
			
		||||
    "version": "v2.2.5",
 | 
			
		||||
    "date": "2025-10-07T12:34:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pocket-id/pocket-id",
 | 
			
		||||
    "version": "v1.13.1",
 | 
			
		||||
    "date": "2025-10-07T06:32:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sassanix/Warracker",
 | 
			
		||||
    "version": "0.10.1.14",
 | 
			
		||||
    "date": "2025-10-06T23:35:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Radarr/Radarr",
 | 
			
		||||
    "version": "v5.28.0.10274",
 | 
			
		||||
@@ -734,16 +794,16 @@
 | 
			
		||||
    "version": "v2.2.2",
 | 
			
		||||
    "date": "2025-10-06T21:31:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fuma-nama/fumadocs",
 | 
			
		||||
    "version": "fumadocs-ui@15.8.4",
 | 
			
		||||
    "date": "2025-10-06T15:41:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bunkerity/bunkerweb",
 | 
			
		||||
    "version": "v1.6.5",
 | 
			
		||||
    "date": "2025-10-06T15:25:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mysql/mysql-server",
 | 
			
		||||
    "version": "mysql-cluster-7.6.36",
 | 
			
		||||
    "date": "2025-10-06T15:19:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bastienwirtz/homer",
 | 
			
		||||
    "version": "v25.10.1",
 | 
			
		||||
@@ -794,11 +854,6 @@
 | 
			
		||||
    "version": "v3.5.7.pypi",
 | 
			
		||||
    "date": "2025-10-01T05:32:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.41.4",
 | 
			
		||||
    "date": "2025-09-30T22:26:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "WordPress/WordPress",
 | 
			
		||||
    "version": "4.7.31",
 | 
			
		||||
@@ -819,16 +874,6 @@
 | 
			
		||||
    "version": "v1.11.1",
 | 
			
		||||
    "date": "2025-09-30T00:24:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Cleanuparr/Cleanuparr",
 | 
			
		||||
    "version": "v2.3.3",
 | 
			
		||||
    "date": "2025-09-29T18:53:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "influxdata/influxdb",
 | 
			
		||||
    "version": "v2.7.12",
 | 
			
		||||
    "date": "2025-05-29T17:08:26Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MDeLuise/plant-it",
 | 
			
		||||
    "version": "1.0.0",
 | 
			
		||||
@@ -864,21 +909,11 @@
 | 
			
		||||
    "version": "22.0.2",
 | 
			
		||||
    "date": "2025-09-27T01:43:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.13.5",
 | 
			
		||||
    "date": "2025-09-27T01:10:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "traefik/traefik",
 | 
			
		||||
    "version": "v3.5.3",
 | 
			
		||||
    "date": "2025-09-26T09:31:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "go-gitea/gitea",
 | 
			
		||||
    "version": "v1.26.0-dev",
 | 
			
		||||
    "date": "2025-09-24T16:45:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Threadfin/Threadfin",
 | 
			
		||||
    "version": "1.2.39",
 | 
			
		||||
@@ -889,11 +924,6 @@
 | 
			
		||||
    "version": "2025.09.24",
 | 
			
		||||
    "date": "2025-09-24T13:51:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mysql/mysql-server",
 | 
			
		||||
    "version": "mysql-cluster-8.4.7",
 | 
			
		||||
    "date": "2025-09-24T12:23:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "syncthing/syncthing",
 | 
			
		||||
    "version": "v2.0.10",
 | 
			
		||||
@@ -944,11 +974,6 @@
 | 
			
		||||
    "version": "v0.23.2",
 | 
			
		||||
    "date": "2025-09-18T17:18:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "NLnetLabs/unbound",
 | 
			
		||||
    "version": "release-1.24.0",
 | 
			
		||||
    "date": "2025-09-18T08:36:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "eclipse-mosquitto/mosquitto",
 | 
			
		||||
    "version": "2.1.0-test1",
 | 
			
		||||
@@ -989,11 +1014,6 @@
 | 
			
		||||
    "version": "v2.7.6",
 | 
			
		||||
    "date": "2025-09-15T15:50:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "usememos/memos",
 | 
			
		||||
    "version": "v0.25.1",
 | 
			
		||||
    "date": "2025-09-15T14:57:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "karakeep-app/karakeep",
 | 
			
		||||
    "version": "cli/v0.27.1",
 | 
			
		||||
@@ -1169,21 +1189,11 @@
 | 
			
		||||
    "version": "v2.1.1867",
 | 
			
		||||
    "date": "2025-07-31T18:08:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "danielbrendel/hortusfox-web",
 | 
			
		||||
    "version": "v5.2",
 | 
			
		||||
    "date": "2025-07-30T10:40:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "dani-garcia/vaultwarden",
 | 
			
		||||
    "version": "1.34.3",
 | 
			
		||||
    "date": "2025-07-30T09:10:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "OliveTin/OliveTin",
 | 
			
		||||
    "version": "2025.7.29",
 | 
			
		||||
    "date": "2025-07-29T22:20:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "caddyserver/xcaddy",
 | 
			
		||||
    "version": "v0.4.5",
 | 
			
		||||
@@ -1209,11 +1219,6 @@
 | 
			
		||||
    "version": "v2.1.1",
 | 
			
		||||
    "date": "2025-07-15T22:38:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pi-hole/pi-hole",
 | 
			
		||||
    "version": "v6.1.4",
 | 
			
		||||
    "date": "2025-07-14T21:22:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "homebridge/homebridge",
 | 
			
		||||
    "version": "v1.11.0",
 | 
			
		||||
@@ -1444,11 +1449,6 @@
 | 
			
		||||
    "version": "v1.11.2",
 | 
			
		||||
    "date": "2025-02-24T19:47:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "drakkan/sftpgo",
 | 
			
		||||
    "version": "v2.6.6",
 | 
			
		||||
    "date": "2025-02-24T19:14:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "babybuddy/babybuddy",
 | 
			
		||||
    "version": "v2.7.1",
 | 
			
		||||
 
 | 
			
		||||
@@ -13,15 +13,11 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Kavita"
 | 
			
		||||
cd /opt
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Kareadita/Kavita/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
$STD tar -xvzf <(curl -fsSL https://github.com/Kareadita/Kavita/releases/download/$RELEASE/kavita-linux-x64.tar.gz) --no-same-owner
 | 
			
		||||
msg_ok "Installed Kavita"
 | 
			
		||||
fetch_and_deploy_gh_release "Kavita" "Kareadita/Kavita" "prebuild" "latest" "/opt/Kavita" "kavita-linux-x64.tar.gz"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
service_path="/etc/systemd/system/kavita.service"
 | 
			
		||||
echo "[Unit]
 | 
			
		||||
cat <<EOF >/etc/systemd/system/kavita.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Kavita Server
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
@@ -34,15 +30,17 @@ KillMode=process
 | 
			
		||||
Restart=on-failure
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target" >$service_path
 | 
			
		||||
chmod +x /opt/Kavita/* && chown root /opt/Kavita/*
 | 
			
		||||
systemctl enable --now -q kavita.service
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
chmod +x /opt/Kavita/Kavita && chown root:root /opt/Kavita/Kavita
 | 
			
		||||
systemctl enable -q --now kavita
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ msg_info "Installing Deno"
 | 
			
		||||
export DENO_INSTALL="/usr/local"
 | 
			
		||||
curl -fsSL https://deno.land/install.sh | $STD sh -s -- -y
 | 
			
		||||
[[ ":$PATH:" != *":/usr/local/bin:"* ]] &&
 | 
			
		||||
  echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc &&
 | 
			
		||||
  echo -e "\nexport PATH=\"/usr/local/bin:\$PATH\"" >>~/.bashrc &&
 | 
			
		||||
  source ~/.bashrc
 | 
			
		||||
msg_ok "Installed Deno"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -63,27 +63,7 @@ msg_ok "MySQL Server configured"
 | 
			
		||||
 | 
			
		||||
read -r -p "${TAB3}Would you like to add PhpMyAdmin? <y/N> " prompt
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  msg_info "Installing phpMyAdmin"
 | 
			
		||||
  $STD apt install -y \
 | 
			
		||||
    apache2 \
 | 
			
		||||
    php \
 | 
			
		||||
    php-mysqli \
 | 
			
		||||
    php-mbstring \
 | 
			
		||||
    php-zip \
 | 
			
		||||
    php-gd \
 | 
			
		||||
    php-json \
 | 
			
		||||
    php-curl
 | 
			
		||||
 | 
			
		||||
  curl -fsSL "https://files.phpmyadmin.net/phpMyAdmin/5.2.2/phpMyAdmin-5.2.2-all-languages.tar.gz" -o "phpMyAdmin-5.2.2-all-languages.tar.gz"
 | 
			
		||||
  mkdir -p /var/www/html/phpMyAdmin
 | 
			
		||||
  tar xf phpMyAdmin-5.2.2-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpMyAdmin
 | 
			
		||||
  cp /var/www/html/phpMyAdmin/config.sample.inc.php /var/www/html/phpMyAdmin/config.inc.php
 | 
			
		||||
  SECRET=$(openssl rand -base64 24)
 | 
			
		||||
  sed -i "s#\$cfg\['blowfish_secret'\] = '';#\$cfg['blowfish_secret'] = '${SECRET}';#" /var/www/html/phpMyAdmin/config.inc.php
 | 
			
		||||
  chmod 660 /var/www/html/phpMyAdmin/config.inc.php
 | 
			
		||||
  chown -R www-data:www-data /var/www/html/phpMyAdmin
 | 
			
		||||
  systemctl restart apache2
 | 
			
		||||
  msg_ok "Installed phpMyAdmin"
 | 
			
		||||
  bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/phpmyadmin.sh)"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Start Service"
 | 
			
		||||
 
 | 
			
		||||
@@ -19,11 +19,11 @@ msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Checking CPU Features"
 | 
			
		||||
if lscpu | grep -q 'avx'; then
 | 
			
		||||
  MONGODB_VERSION="7.0"
 | 
			
		||||
  msg_ok "AVX detected: Using MongoDB 7.0"
 | 
			
		||||
  MONGODB_VERSION="8.0"
 | 
			
		||||
  msg_ok "AVX detected: Using MongoDB 8.0"
 | 
			
		||||
  MONGO_VERSION="8.0" setup_mongodb
 | 
			
		||||
else
 | 
			
		||||
  msg_error "No AVX detected: TP-Link Canceled Support for Old MongoDB for Debian 12\n https://www.tp-link.com/baltic/support/faq/4160/"
 | 
			
		||||
  exit 0
 | 
			
		||||
  MONGO_VERSION="4.4" setup_mongodb
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Azul Zulu Java"
 | 
			
		||||
@@ -34,27 +34,15 @@ $STD apt update
 | 
			
		||||
$STD apt -y install zulu21-jre-headless
 | 
			
		||||
msg_ok "Installed Azul Zulu Java"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing libssl (if needed)"
 | 
			
		||||
 | 
			
		||||
if ! dpkg -l | grep -q 'libssl1.1'; then
 | 
			
		||||
  msg_info "Installing libssl (if needed)"
 | 
			
		||||
  curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb" -o "/tmp/libssl.deb"
 | 
			
		||||
  $STD dpkg -i /tmp/libssl.deb
 | 
			
		||||
  rm -f /tmp/libssl.deb
 | 
			
		||||
  msg_ok "Installed libssl1.1"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Installing MongoDB $MONGODB_VERSION"
 | 
			
		||||
curl -fsSL "https://www.mongodb.org/static/pgp/server-${MONGODB_VERSION}.asc" | gpg --dearmor >/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
 | 
			
		||||
cat <<EOF >/etc/apt/sources.list.d/mongodb-org-${MONGODB_VERSION}.sources
 | 
			
		||||
Types: deb
 | 
			
		||||
URIs: http://repo.mongodb.org/apt/debian
 | 
			
		||||
Suites: $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/${MONGODB_VERSION}
 | 
			
		||||
Components: main
 | 
			
		||||
Signed-By: /usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
 | 
			
		||||
EOF
 | 
			
		||||
$STD apt update
 | 
			
		||||
$STD apt install -y mongodb-org
 | 
			
		||||
msg_ok "Installed MongoDB $MONGODB_VERSION"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Omada Controller"
 | 
			
		||||
OMADA_URL=$(curl -fsSL "https://support.omadanetworks.com/en/download/software/omada-controller/" |
 | 
			
		||||
  grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
 | 
			
		||||
 
 | 
			
		||||
@@ -13,19 +13,10 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt install -y \
 | 
			
		||||
  ca-certificates \
 | 
			
		||||
  software-properties-common \
 | 
			
		||||
  apt-transport-https \
 | 
			
		||||
  lsb-release \
 | 
			
		||||
  php-{opcache,curl,gd,mbstring,xml,bcmath,intl,zip,xsl,pgsql} \
 | 
			
		||||
  libapache2-mod-php \
 | 
			
		||||
  composer
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
PG_VERSION="16" setup_postgresql
 | 
			
		||||
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="xsl,pgsql" setup_php
 | 
			
		||||
setup_composer
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up PHP"
 | 
			
		||||
PHPVER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION . "\n";')
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										287
									
								
								install/patchmon-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										287
									
								
								install/patchmon-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,287 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/PatcMmon/PatchMon
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt install -y \
 | 
			
		||||
  build-essential \
 | 
			
		||||
  nginx \
 | 
			
		||||
  redis-server
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="24" setup_nodejs
 | 
			
		||||
PG_VERSION="17" setup_postgresql
 | 
			
		||||
 | 
			
		||||
msg_info "Setup PostgreSQL Database"
 | 
			
		||||
DB_NAME=patchmon_db
 | 
			
		||||
DB_USER=patchmon_usr
 | 
			
		||||
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
 | 
			
		||||
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
 | 
			
		||||
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
 | 
			
		||||
$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
 | 
			
		||||
{
 | 
			
		||||
  echo "PatchMon Credentials"
 | 
			
		||||
  echo "PatchMon Database Name: $DB_NAME"
 | 
			
		||||
  echo "PatchMon Database User: $DB_USER"
 | 
			
		||||
  echo "PatchMon Database Password: $DB_PASS"
 | 
			
		||||
} >>~/patchmon.creds
 | 
			
		||||
msg_ok "Setup PostgreSQL Database"
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "PatchMon" "PatchMon/PatchMon" "tarball" "latest" "/opt/patchmon"
 | 
			
		||||
 | 
			
		||||
msg_info "Configuring PatchMon"
 | 
			
		||||
cd /opt/patchmon
 | 
			
		||||
export NODE_ENV=production
 | 
			
		||||
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
 | 
			
		||||
cd /opt/patchmon/backend
 | 
			
		||||
$STD npm install --no-audit --no-fund --no-save --ignore-scripts
 | 
			
		||||
cd /opt/patchmon/frontend
 | 
			
		||||
$STD npm install --include=dev --no-audit --no-fund --no-save --ignore-scripts
 | 
			
		||||
$STD npm run build
 | 
			
		||||
 | 
			
		||||
JWT_SECRET="$(openssl rand -base64 64 | tr -d "=+/" | cut -c1-50)"
 | 
			
		||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
 | 
			
		||||
cat <<EOF >/opt/patchmon/backend/.env
 | 
			
		||||
# Database Configuration
 | 
			
		||||
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME"
 | 
			
		||||
PY_THRESHOLD=3M_DB_CONN_MAX_ATTEMPTS=30
 | 
			
		||||
PM_DB_CONN_WAIT_INTERVAL=2
 | 
			
		||||
 | 
			
		||||
# JWT Configuration
 | 
			
		||||
JWT_SECRET="$JWT_SECRET"
 | 
			
		||||
JWT_EXPIRES_IN=1h
 | 
			
		||||
JWT_REFRESH_EXPIRES_IN=7d
 | 
			
		||||
 | 
			
		||||
# Server Configuration
 | 
			
		||||
PORT=3399
 | 
			
		||||
NODE_ENV=production
 | 
			
		||||
 | 
			
		||||
# API Configuration
 | 
			
		||||
API_VERSION=v1
 | 
			
		||||
 | 
			
		||||
# CORS Configuration
 | 
			
		||||
CORS_ORIGIN="http://$LOCAL_IP"
 | 
			
		||||
 | 
			
		||||
# Session Configuration
 | 
			
		||||
SESSION_INACTIVITY_TIMEOUT_MINUTES=30
 | 
			
		||||
 | 
			
		||||
# User Configuration
 | 
			
		||||
DEFAULT_USER_ROLE=user
 | 
			
		||||
 | 
			
		||||
# Rate Limiting (times in milliseconds)
 | 
			
		||||
RATE_LIMIT_WINDOW_MS=900000
 | 
			
		||||
RATE_LIMIT_MAX=5000
 | 
			
		||||
AUTH_RATE_LIMIT_WINDOW_MS=600000
 | 
			
		||||
AUTH_RATE_LIMIT_MAX=500
 | 
			
		||||
AGENT_RATE_LIMIT_WINDOW_MS=60000
 | 
			
		||||
AGENT_RATE_LIMIT_MAX=1000
 | 
			
		||||
 | 
			
		||||
# Redis Configuration
 | 
			
		||||
REDIS_HOST=localhost
 | 
			
		||||
REDIS_PORT=6379
 | 
			
		||||
 | 
			
		||||
# Logging
 | 
			
		||||
LOG_LEVEL=info
 | 
			
		||||
ENABLE_LOGGING=true
 | 
			
		||||
 | 
			
		||||
# TFA Configuration
 | 
			
		||||
TFA_REMEMBER_ME_EXPIRES_IN=30d
 | 
			
		||||
TFA_MAX_REMEMBER_SESSIONS=5
 | 
			
		||||
TFA_SUSPICIOUS_ACTIVITY_THRESHOLD=3
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/opt/patchmon/frontend/.env
 | 
			
		||||
VITE_API_URL=http://$LOCAL_IP/api/v1
 | 
			
		||||
VITE_APP_NAME=PatchMon
 | 
			
		||||
VITE_APP_VERSION=1.3.0
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cd /opt/patchmon/backend
 | 
			
		||||
$STD npx prisma migrate deploy
 | 
			
		||||
$STD npx prisma generate
 | 
			
		||||
msg_ok "Configured PatchMon"
 | 
			
		||||
 | 
			
		||||
msg_info "Configuring Nginx"
 | 
			
		||||
cat <<EOF >/etc/nginx/sites-available/patchmon.conf
 | 
			
		||||
server {
 | 
			
		||||
    listen 80;
 | 
			
		||||
    server_name $LOCAL_IP;
 | 
			
		||||
 | 
			
		||||
    # Security headers
 | 
			
		||||
    add_header X-Frame-Options DENY always;
 | 
			
		||||
    add_header X-Content-Type-Options nosniff always;
 | 
			
		||||
    add_header X-XSS-Protection "1; mode=block" always;
 | 
			
		||||
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
 | 
			
		||||
 | 
			
		||||
    # Frontend
 | 
			
		||||
    location / {
 | 
			
		||||
        root /opt/patchmon/frontend/dist;
 | 
			
		||||
        try_files \$uri \$uri/ /index.html;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    # Bull Board proxy
 | 
			
		||||
    location /bullboard {
 | 
			
		||||
        proxy_pass http://127.0.0.1:3399;
 | 
			
		||||
        proxy_http_version 1.1;
 | 
			
		||||
        proxy_set_header Upgrade \$http_upgrade;
 | 
			
		||||
        proxy_set_header Connection 'upgrade';
 | 
			
		||||
        proxy_set_header Host \$host;
 | 
			
		||||
        proxy_set_header X-Real-IP \$remote_addr;
 | 
			
		||||
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
 | 
			
		||||
        proxy_set_header X-Forwarded-Proto \$scheme;
 | 
			
		||||
        proxy_set_header X-Forwarded-Host \$host;
 | 
			
		||||
        proxy_set_header Cookie \$http_cookie;
 | 
			
		||||
        proxy_cache_bypass \$http_upgrade;
 | 
			
		||||
        proxy_read_timeout 300s;
 | 
			
		||||
        proxy_connect_timeout 75s;
 | 
			
		||||
 
 | 
			
		||||
        # Enable cookie passthrough
 | 
			
		||||
        proxy_pass_header Set-Cookie;
 | 
			
		||||
        proxy_cookie_path / /;
 | 
			
		||||
 
 | 
			
		||||
        # Preserve original client IP
 | 
			
		||||
        proxy_set_header X-Original-Forwarded-For \$http_x_forwarded_for;
 | 
			
		||||
        if (\$request_method = 'OPTIONS') {
 | 
			
		||||
            return 204;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    # API proxy
 | 
			
		||||
    location /api/ {
 | 
			
		||||
        proxy_pass http://127.0.0.1:3399;
 | 
			
		||||
        proxy_http_version 1.1;
 | 
			
		||||
        proxy_set_header Upgrade \$http_upgrade;
 | 
			
		||||
        proxy_set_header Connection 'upgrade';
 | 
			
		||||
        proxy_set_header Host \$host;
 | 
			
		||||
        proxy_set_header X-Real-IP \$remote_addr;
 | 
			
		||||
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
 | 
			
		||||
        proxy_set_header X-Forwarded-Proto \$scheme;
 | 
			
		||||
        proxy_cache_bypass \$http_upgrade;
 | 
			
		||||
        proxy_read_timeout 300s;
 | 
			
		||||
        proxy_connect_timeout 75s;
 | 
			
		||||
 
 | 
			
		||||
        # Preserve original client IP
 | 
			
		||||
        proxy_set_header X-Original-Forwarded-For \$http_x_forwarded_for;
 | 
			
		||||
        if (\$request_method = 'OPTIONS') {
 | 
			
		||||
            return 204;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    # Static assets caching (exclude Bull Board assets)
 | 
			
		||||
    location ~* ^/(?!bullboard).*\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
 | 
			
		||||
        root /opt/patchmon/frontend/dist;
 | 
			
		||||
        expires 1y;
 | 
			
		||||
        add_header Cache-Control "public, immutable";
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
    # Health check endpoint
 | 
			
		||||
    location /health {
 | 
			
		||||
        proxy_pass http://127.0.0.1:3399/health;
 | 
			
		||||
        access_log off;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
EOF
 | 
			
		||||
ln -sf /etc/nginx/sites-available/patchmon.conf /etc/nginx/sites-enabled/
 | 
			
		||||
rm -f /etc/nginx/sites-enabled/default
 | 
			
		||||
$STD nginx -t
 | 
			
		||||
systemctl restart nginx
 | 
			
		||||
msg_ok "Configured Nginx"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/patchmon-server.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=PatchMon Service
 | 
			
		||||
After=network.target postgresql.service
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
WorkingDirectory=/opt/patchmon/backend
 | 
			
		||||
ExecStart=/usr/bin/node src/server.js
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=10
 | 
			
		||||
Environment=NODE_ENV=production
 | 
			
		||||
Environment=PATH=/usr/bin:/usr/local/bin
 | 
			
		||||
NoNewPrivileges=true
 | 
			
		||||
PrivateTmp=true
 | 
			
		||||
ProtectSystem=strict
 | 
			
		||||
ProtectHome=true
 | 
			
		||||
ReadWritePaths=/opt/patchmon
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now patchmon-server
 | 
			
		||||
msg_ok "Created and started service"
 | 
			
		||||
 | 
			
		||||
msg_info "Updating settings"
 | 
			
		||||
cat <<EOF >/opt/patchmon/backend/update-settings.js
 | 
			
		||||
const { PrismaClient } = require('@prisma/client');
 | 
			
		||||
const { v4: uuidv4 } = require('uuid');
 | 
			
		||||
const prisma = new PrismaClient();
 | 
			
		||||
 | 
			
		||||
async function updateSettings() {
 | 
			
		||||
  try {
 | 
			
		||||
    const existingSettings = await prisma.settings.findFirst();
 | 
			
		||||
 | 
			
		||||
    const settingsData = {
 | 
			
		||||
      id: uuidv4(),
 | 
			
		||||
      server_url: 'http://$LOCAL_IP',
 | 
			
		||||
      server_protocol: 'http',
 | 
			
		||||
      server_host: '$LOCAL_IP',
 | 
			
		||||
      server_port: 3399,
 | 
			
		||||
      update_interval: 60,
 | 
			
		||||
      auto_update: true,
 | 
			
		||||
      signup_enabled: false,
 | 
			
		||||
      ignore_ssl_self_signed: false,
 | 
			
		||||
      updated_at: new Date()
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  if (existingSettings) {
 | 
			
		||||
    // Update existing settings
 | 
			
		||||
    await prisma.settings.update({
 | 
			
		||||
      where: { id: existingSettings.id },
 | 
			
		||||
      data: settingsData
 | 
			
		||||
    });
 | 
			
		||||
  } else {
 | 
			
		||||
    // Create new settings record
 | 
			
		||||
    await prisma.settings.create({
 | 
			
		||||
      data: settingsData
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  console.log('✅ Database settings updated successfully');
 | 
			
		||||
  } catch (error) {
 | 
			
		||||
    console.error('❌ Error updating settings:', error.message);
 | 
			
		||||
    process.exit(1);
 | 
			
		||||
  } finally {
 | 
			
		||||
    await prisma.\$disconnect();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
updateSettings();
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cd /opt/patchmon/backend
 | 
			
		||||
$STD node update-settings.js
 | 
			
		||||
msg_ok "Settings updated successfully"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt install -y \
 | 
			
		||||
  apache2-utils \
 | 
			
		||||
  python3-pip \
 | 
			
		||||
  python3.11-venv
 | 
			
		||||
  python3-venv
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Radicale"
 | 
			
		||||
 
 | 
			
		||||
@@ -14,9 +14,12 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt install -y coreutils
 | 
			
		||||
$STD apt install -y \
 | 
			
		||||
  coreutils \
 | 
			
		||||
  debconf-utils
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
msg_info "Installing UrBackup Server"
 | 
			
		||||
curl -fsSL https://download.opensuse.org/repositories/home:uroni/Debian_12/Release.key | gpg --dearmor -o /usr/share/keyrings/home-uroni.gpg
 | 
			
		||||
cat <<EOF | sudo tee /etc/apt/sources.list.d/home-uroni.sources >/dev/null
 | 
			
		||||
@@ -27,6 +30,8 @@ Components:
 | 
			
		||||
Signed-By: /usr/share/keyrings/home-uroni.gpg
 | 
			
		||||
EOF
 | 
			
		||||
$STD apt update
 | 
			
		||||
mkdir -p /opt/urbackup/backups
 | 
			
		||||
echo "urbackup-server urbackup/backuppath string /opt/urbackup/backups" | debconf-set-selections
 | 
			
		||||
$STD apt install -y urbackup-server
 | 
			
		||||
msg_ok "Installed UrBackup Server"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2325
									
								
								misc/tools.func
									
									
									
									
									
								
							
							
						
						
									
										2325
									
								
								misc/tools.func
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user