mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			127 Commits
		
	
	
		
			2025-09-17
			...
			2025-09-23
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					06ca6e2087 | ||
| 
						 | 
					8c48ea6718 | ||
| 
						 | 
					b626e705eb | ||
| 
						 | 
					f103d09c09 | ||
| 
						 | 
					82a7d252ab | ||
| 
						 | 
					48af77e928 | ||
| 
						 | 
					d24308a409 | ||
| 
						 | 
					584365fff1 | ||
| 
						 | 
					95c54dccd7 | ||
| 
						 | 
					eb28463d86 | ||
| 
						 | 
					bddde99252 | ||
| 
						 | 
					f1f8c1b279 | ||
| 
						 | 
					37a0a4add9 | ||
| 
						 | 
					02cede3f5d | ||
| 
						 | 
					42a7d57a42 | ||
| 
						 | 
					53b5f0d1fe | ||
| 
						 | 
					4a56d8d9aa | ||
| 
						 | 
					f819188a5e | ||
| 
						 | 
					4d6e3e5977 | ||
| 
						 | 
					d6fc527200 | ||
| 
						 | 
					c103c3b03d | ||
| 
						 | 
					2d290cb27f | ||
| 
						 | 
					883efd1cd2 | ||
| 
						 | 
					1f40670ea0 | ||
| 
						 | 
					cec4e2d5c1 | ||
| 
						 | 
					1fafb3f661 | ||
| 
						 | 
					b56b053e8b | ||
| 
						 | 
					21f98835dc | ||
| 
						 | 
					ab455d7748 | ||
| 
						 | 
					5382fa1dbd | ||
| 
						 | 
					6fa1938360 | ||
| 
						 | 
					2a2df5b5cc | ||
| 
						 | 
					f99d582eb5 | ||
| 
						 | 
					d3f24ae5b2 | ||
| 
						 | 
					25e89f7bac | ||
| 
						 | 
					2686753448 | ||
| 
						 | 
					19678e2534 | ||
| 
						 | 
					1ac8f90281 | ||
| 
						 | 
					7cd3e40f9c | ||
| 
						 | 
					42191bdb5a | ||
| 
						 | 
					aab1a9bce5 | ||
| 
						 | 
					208226065b | ||
| 
						 | 
					54e62749be | ||
| 
						 | 
					2a8e2e62cd | ||
| 
						 | 
					b15d7be4c3 | ||
| 
						 | 
					e208bc110b | ||
| 
						 | 
					b26ad61a33 | ||
| 
						 | 
					5beaec9514 | ||
| 
						 | 
					3a668870b7 | ||
| 
						 | 
					3266962630 | ||
| 
						 | 
					2a3f5d7b47 | ||
| 
						 | 
					fb4c3cf9e9 | ||
| 
						 | 
					e96ea4eb40 | ||
| 
						 | 
					dfbe5f03ce | ||
| 
						 | 
					9c53c70f6b | ||
| 
						 | 
					a3c7f468ef | ||
| 
						 | 
					605f7a0330 | ||
| 
						 | 
					306627378e | ||
| 
						 | 
					0e464cb192 | ||
| 
						 | 
					277f6ce7d1 | ||
| 
						 | 
					a6d6f79943 | ||
| 
						 | 
					a7ced850ab | ||
| 
						 | 
					eadca5f81f | ||
| 
						 | 
					5ab375fd89 | ||
| 
						 | 
					2dc95b6b22 | ||
| 
						 | 
					57dd3d5a44 | ||
| 
						 | 
					25ddf48190 | ||
| 
						 | 
					01b6bec1fe | ||
| 
						 | 
					d1ff8201b1 | ||
| 
						 | 
					c5c5ba1ede | ||
| 
						 | 
					e3aabd81a3 | ||
| 
						 | 
					4713941415 | ||
| 
						 | 
					adda76f587 | ||
| 
						 | 
					cf597b6a26 | ||
| 
						 | 
					20e8730a34 | ||
| 
						 | 
					9ce9de8e84 | ||
| 
						 | 
					ac3f969016 | ||
| 
						 | 
					c0597842f8 | ||
| 
						 | 
					667d354059 | ||
| 
						 | 
					d56c1e2f50 | ||
| 
						 | 
					3dfbc2d6ea | ||
| 
						 | 
					31b33d370e | ||
| 
						 | 
					d4d4c0e07a | ||
| 
						 | 
					aded4d5809 | ||
| 
						 | 
					c00308524b | ||
| 
						 | 
					fef7786714 | ||
| 
						 | 
					0dfd337a9a | ||
| 
						 | 
					d99862fa24 | ||
| 
						 | 
					ac08d385c0 | ||
| 
						 | 
					7a9de76acb | ||
| 
						 | 
					35f3f043a7 | ||
| 
						 | 
					4276df26d7 | ||
| 
						 | 
					5fec573533 | ||
| 
						 | 
					ebd269a808 | ||
| 
						 | 
					532c0a95bb | ||
| 
						 | 
					c078b11aa9 | ||
| 
						 | 
					ab8b025824 | ||
| 
						 | 
					e2044a0572 | ||
| 
						 | 
					59e65eaba3 | ||
| 
						 | 
					a2306d6b32 | ||
| 
						 | 
					3e71af1895 | ||
| 
						 | 
					8a3b41867b | ||
| 
						 | 
					b4b9efeff2 | ||
| 
						 | 
					5e2168b2d1 | ||
| 
						 | 
					c00c1deb79 | ||
| 
						 | 
					37e3739bd2 | ||
| 
						 | 
					f5eda37397 | ||
| 
						 | 
					9e42c801f1 | ||
| 
						 | 
					e4d6dfc885 | ||
| 
						 | 
					14894f84b6 | ||
| 
						 | 
					b5f70e6e77 | ||
| 
						 | 
					2919ce16f1 | ||
| 
						 | 
					38cf6b2f46 | ||
| 
						 | 
					c390fb925d | ||
| 
						 | 
					a28fdac3f0 | ||
| 
						 | 
					41b27b31dc | ||
| 
						 | 
					7ef8afe4d2 | ||
| 
						 | 
					694d9c203e | ||
| 
						 | 
					76dcc45e9f | ||
| 
						 | 
					a0952e9f69 | ||
| 
						 | 
					3bd6b6e540 | ||
| 
						 | 
					61be53cc26 | ||
| 
						 | 
					02eda516df | ||
| 
						 | 
					25213fabaa | ||
| 
						 | 
					ad8a4f63c4 | ||
| 
						 | 
					bcce0e20c1 | ||
| 
						 | 
					515c4073c4 | 
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -60,7 +60,7 @@ body:
 | 
			
		||||
        - Alpine
 | 
			
		||||
        - Debian 11
 | 
			
		||||
        - Debian 12
 | 
			
		||||
        - Ubuntu 20.04
 | 
			
		||||
        - Debian 13
 | 
			
		||||
        - Ubuntu 22.04
 | 
			
		||||
        - Ubuntu 24.04
 | 
			
		||||
        - Ubuntu 24.10
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										135
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										135
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -10,8 +10,143 @@
 | 
			
		||||
> [!CAUTION]
 | 
			
		||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
 | 
			
		||||
 | 
			
		||||
## 2025-09-24
 | 
			
		||||
 | 
			
		||||
## 2025-09-23
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - UpSnap ([#7825](https://github.com/community-scripts/ProxmoxVE/pull/7825))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - tools.func: Check for /usr/local/bin in PATH during yq setup [@vhsdream](https://github.com/vhsdream) ([#7856](https://github.com/community-scripts/ProxmoxVE/pull/7856))
 | 
			
		||||
    - BookLore: increase RAM [@vhsdream](https://github.com/vhsdream) ([#7855](https://github.com/community-scripts/ProxmoxVE/pull/7855))
 | 
			
		||||
    - Bump Immich to v1.143.1 [@vhsdream](https://github.com/vhsdream) ([#7864](https://github.com/community-scripts/ProxmoxVE/pull/7864))
 | 
			
		||||
    - zabbix: Remove not exist admin credentials from output [@MickLesk](https://github.com/MickLesk) ([#7849](https://github.com/community-scripts/ProxmoxVE/pull/7849))
 | 
			
		||||
    - Suppress wrong errors from uv shell integration in setup_uv [@MickLesk](https://github.com/MickLesk) ([#7822](https://github.com/community-scripts/ProxmoxVE/pull/7822))
 | 
			
		||||
    - Refactor Caddyfile configuration for headscale-admin [@MickLesk](https://github.com/MickLesk) ([#7821](https://github.com/community-scripts/ProxmoxVE/pull/7821))
 | 
			
		||||
    - Improve subscription element removal (mobile) in post-pve script [@MickLesk](https://github.com/MickLesk) ([#7814](https://github.com/community-scripts/ProxmoxVE/pull/7814))
 | 
			
		||||
    - Blocky: Fix release fetching [@tremor021](https://github.com/tremor021) ([#7807](https://github.com/community-scripts/ProxmoxVE/pull/7807))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Improve globaleaks install ensuring install can proceed without user … [@evilaliv3](https://github.com/evilaliv3) ([#7860](https://github.com/community-scripts/ProxmoxVE/pull/7860))
 | 
			
		||||
    - Manage My Damn Life: use NodeJS 22 [@vhsdream](https://github.com/vhsdream) ([#7861](https://github.com/community-scripts/ProxmoxVE/pull/7861))
 | 
			
		||||
    - VM: Increase pv & xz functions (HA OS / Umbrel OS) [@MickLesk](https://github.com/MickLesk) ([#7838](https://github.com/community-scripts/ProxmoxVE/pull/7838))
 | 
			
		||||
    - Tandoor: update for newer dependencies (psql) + bump nodejs to 22 [@MickLesk](https://github.com/MickLesk) ([#7826](https://github.com/community-scripts/ProxmoxVE/pull/7826))
 | 
			
		||||
    - Update Monica and Outline to use Node.js 22 [@MickLesk](https://github.com/MickLesk) ([#7833](https://github.com/community-scripts/ProxmoxVE/pull/7833))
 | 
			
		||||
    - Update Zabbix install for Debian 13 and agent selection [@MickLesk](https://github.com/MickLesk) ([#7819](https://github.com/community-scripts/ProxmoxVE/pull/7819))
 | 
			
		||||
    - tracktor: bump to debian 13 | feature bump [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7818](https://github.com/community-scripts/ProxmoxVE/pull/7818))
 | 
			
		||||
    - LiteLLM: Bump to Debian 13 & add deps [@MickLesk](https://github.com/MickLesk) ([#7815](https://github.com/community-scripts/ProxmoxVE/pull/7815))
 | 
			
		||||
    - Immich: bump to v1.143.0 [@vhsdream](https://github.com/vhsdream) ([#7801](https://github.com/community-scripts/ProxmoxVE/pull/7801))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - gh: remove ai autolabel test [@MickLesk](https://github.com/MickLesk) ([#7817](https://github.com/community-scripts/ProxmoxVE/pull/7817))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - OpenWebUI: Add information about Ollama [@tremor021](https://github.com/tremor021) ([#7843](https://github.com/community-scripts/ProxmoxVE/pull/7843))
 | 
			
		||||
    - cosmos: add info note for configuration file [@MickLesk](https://github.com/MickLesk) ([#7824](https://github.com/community-scripts/ProxmoxVE/pull/7824))
 | 
			
		||||
    - ElementSynapse: add note for Bridge Install Methods [@MickLesk](https://github.com/MickLesk) ([#7820](https://github.com/community-scripts/ProxmoxVE/pull/7820))
 | 
			
		||||
 | 
			
		||||
## 2025-09-22
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - [core]: Update detection of current running subshell [@tremor021](https://github.com/tremor021) ([#7796](https://github.com/community-scripts/ProxmoxVE/pull/7796))
 | 
			
		||||
    - Paymenter: Installation and update fixes [@tremor021](https://github.com/tremor021) ([#7792](https://github.com/community-scripts/ProxmoxVE/pull/7792))
 | 
			
		||||
 | 
			
		||||
## 2025-09-21
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - fix openwebui update and installer [@HeedfulCrayon](https://github.com/HeedfulCrayon) ([#7788](https://github.com/community-scripts/ProxmoxVE/pull/7788))
 | 
			
		||||
    - tracktor: add: cleanup before upgrade [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7782](https://github.com/community-scripts/ProxmoxVE/pull/7782))
 | 
			
		||||
    - Fix regex to extract MySQL version correctly [@MickLesk](https://github.com/MickLesk) ([#7774](https://github.com/community-scripts/ProxmoxVE/pull/7774))
 | 
			
		||||
    - Update Ollama Installer in OpenWebUI to resume downloads if interrupted [@HeedfulCrayon](https://github.com/HeedfulCrayon) ([#7779](https://github.com/community-scripts/ProxmoxVE/pull/7779))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Implement clean install option in tools.func (fetch_and_deploy_gh_release) [@MickLesk](https://github.com/MickLesk) ([#7785](https://github.com/community-scripts/ProxmoxVE/pull/7785))
 | 
			
		||||
    - caddy: modify disk size and implement xCaddy update [@MickLesk](https://github.com/MickLesk) ([#7775](https://github.com/community-scripts/ProxmoxVE/pull/7775))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Harmonize  and shorten JSON Names for PVE/PBS/PMG [@MickLesk](https://github.com/MickLesk) ([#7773](https://github.com/community-scripts/ProxmoxVE/pull/7773))
 | 
			
		||||
 | 
			
		||||
## 2025-09-20
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - checkmk.sh Update: Revert old Pr  [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7765](https://github.com/community-scripts/ProxmoxVE/pull/7765))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Wazuh: Increase HDD size [@tremor021](https://github.com/tremor021) ([#7759](https://github.com/community-scripts/ProxmoxVE/pull/7759))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - Add Debian 13 in bug report template [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7757](https://github.com/community-scripts/ProxmoxVE/pull/7757))
 | 
			
		||||
 | 
			
		||||
## 2025-09-19
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Tunarr ([#7735](https://github.com/community-scripts/ProxmoxVE/pull/7735))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - SigNoz: Fix wrong URL for Zookeeper [@tremor021](https://github.com/tremor021) ([#7742](https://github.com/community-scripts/ProxmoxVE/pull/7742))
 | 
			
		||||
 | 
			
		||||
## 2025-09-18
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Alpine-Caddy [@tremor021](https://github.com/tremor021) ([#7711](https://github.com/community-scripts/ProxmoxVE/pull/7711))
 | 
			
		||||
- pve-tool: execute.sh by @jeroenzwart [@MickLesk](https://github.com/MickLesk) ([#7708](https://github.com/community-scripts/ProxmoxVE/pull/7708))
 | 
			
		||||
- GlobaLeaks ([#7707](https://github.com/community-scripts/ProxmoxVE/pull/7707))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Delay chmod after updating beszel [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7725](https://github.com/community-scripts/ProxmoxVE/pull/7725))
 | 
			
		||||
    - Remove redundant globaleaks configuration [@evilaliv3](https://github.com/evilaliv3) ([#7723](https://github.com/community-scripts/ProxmoxVE/pull/7723))
 | 
			
		||||
    - Gatus: check for GO path before update [@vhsdream](https://github.com/vhsdream) ([#7705](https://github.com/community-scripts/ProxmoxVE/pull/7705))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Cloudflared: Bump to Debian 13 [@MickLesk](https://github.com/MickLesk) ([#7719](https://github.com/community-scripts/ProxmoxVE/pull/7719))
 | 
			
		||||
    - AdGuard Home: Bump to Debian 13 [@MickLesk](https://github.com/MickLesk) ([#7720](https://github.com/community-scripts/ProxmoxVE/pull/7720))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Immich: Debian Trixie [@vhsdream](https://github.com/vhsdream) ([#7728](https://github.com/community-scripts/ProxmoxVE/pull/7728))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Add Warning for Containerized Home Assistant [@ZaxLofful](https://github.com/ZaxLofful) ([#7704](https://github.com/community-scripts/ProxmoxVE/pull/7704))
 | 
			
		||||
 | 
			
		||||
## 2025-09-17
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 
 | 
			
		||||
@@ -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:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -20,15 +20,15 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/AdGuardHome ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "Adguard Home should be updated via the user interface."
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/AdGuardHome ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_error "Adguard Home can only be updated via the user interface."
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -38,4 +38,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}:3000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										47
									
								
								ct/alpine-caddy.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								ct/alpine-caddy.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
#!/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: cobalt (cobaltgit)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://caddyserver.com/
 | 
			
		||||
 | 
			
		||||
APP="Alpine-Caddy"
 | 
			
		||||
var_tags="${var_tags:-webserver}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-3}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.22}"
 | 
			
		||||
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 /etc/caddy ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated $APP LXC"
 | 
			
		||||
 | 
			
		||||
  msg_info "Restarting Caddy"
 | 
			
		||||
  rc-service caddy restart
 | 
			
		||||
  msg_ok "Restarted Caddy"
 | 
			
		||||
  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}:80${CL}"
 | 
			
		||||
@@ -33,7 +33,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    $STD /opt/beszel/beszel update
 | 
			
		||||
    chmod +x /opt/beszel/beszel
 | 
			
		||||
    sleep 2 && chmod +x /opt/beszel/beszel
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/blocky
 | 
			
		||||
    msg_ok "Removed Old Version"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
 | 
			
		||||
    fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restore Config"
 | 
			
		||||
    mv /opt/config.yml /opt/blocky/config.yml
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
APP="BookLore"
 | 
			
		||||
var_tags="${var_tags:-books;library}"
 | 
			
		||||
var_cpu="${var_cpu:-3}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_ram="${var_ram:-3072}"
 | 
			
		||||
var_disk="${var_disk:-7}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								ct/caddy.sh
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								ct/caddy.sh
									
									
									
									
									
								
							@@ -9,7 +9,7 @@ APP="Caddy"
 | 
			
		||||
var_tags="${var_tags:-webserver}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -31,6 +31,19 @@ function update_script() {
 | 
			
		||||
   $STD apt-get update
 | 
			
		||||
   $STD apt-get -y upgrade
 | 
			
		||||
   msg_ok "Updated $APP LXC"
 | 
			
		||||
 | 
			
		||||
    if command -v xcaddy >/dev/null 2>&1; then
 | 
			
		||||
      install_go
 | 
			
		||||
      msg_info "Updating xCaddy"
 | 
			
		||||
      cd /opt
 | 
			
		||||
      RELEASE=$(curl -fsSL https://api.github.com/repos/caddyserver/xcaddy/releases/latest | grep "tag_name" | awk -F '"' '{print $4}')
 | 
			
		||||
      VERSION="${RELEASE#v}"
 | 
			
		||||
      curl -fsSL "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${VERSION}_linux_amd64.deb" -o "xcaddy_${VERSION}_linux_amd64.deb"
 | 
			
		||||
      $STD dpkg -i "xcaddy_${VERSION}_linux_amd64.deb"
 | 
			
		||||
      rm -f "xcaddy_${VERSION}_linux_amd64.deb"
 | 
			
		||||
      $STD xcaddy build
 | 
			
		||||
      msg_ok "Updated xCaddy"
 | 
			
		||||
   fi
 | 
			
		||||
   exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -41,4 +54,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}:80${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -27,21 +27,21 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if check_for_gh_release "checkmk" "checkmk/checkmk"; then
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    $STD omd stop monitoring
 | 
			
		||||
    $STD omd cp monitoring monitoringbackup
 | 
			
		||||
    curl -fsSL "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb" -o "/opt/checkmk.deb"
 | 
			
		||||
    $STD apt-get install -y /opt/checkmk.deb
 | 
			
		||||
    $STD omd --force -V ${RELEASE}.cre update --conflict=install monitoring
 | 
			
		||||
    $STD omd start monitoring
 | 
			
		||||
    $STD omd -f rm monitoringbackup
 | 
			
		||||
    $STD omd cleanup
 | 
			
		||||
    rm -rf /opt/checkmk.deb
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
   
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
 | 
			
		||||
  msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
  $STD omd stop monitoring
 | 
			
		||||
  $STD omd cp monitoring monitoringbackup
 | 
			
		||||
  curl -fsSL "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb" -o "/opt/checkmk.deb"
 | 
			
		||||
  $STD apt-get install -y /opt/checkmk.deb
 | 
			
		||||
  $STD omd --force -V ${RELEASE}.cre update --conflict=install monitoring
 | 
			
		||||
  $STD omd start monitoring
 | 
			
		||||
  $STD omd -f rm monitoringbackup
 | 
			
		||||
  $STD omd cleanup
 | 
			
		||||
  rm -rf /opt/checkmk.deb
 | 
			
		||||
  msg_ok "Updated ${APP}"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
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 [[ ! -d /var ]]; then
 | 
			
		||||
      msg_error "No ${APP} Installation Found!"
 | 
			
		||||
      exit
 | 
			
		||||
   fi
 | 
			
		||||
   msg_info "Updating $APP LXC"
 | 
			
		||||
   $STD apt-get update
 | 
			
		||||
   $STD apt-get -y upgrade
 | 
			
		||||
   msg_ok "Updated $APP LXC"
 | 
			
		||||
   exit
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /etc/systemd/system/cloudflared.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  $STD apt update
 | 
			
		||||
  $STD apt -y upgrade
 | 
			
		||||
  msg_ok "Updated $APP LXC"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -39,4 +39,4 @@ build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
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}"
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,11 @@ function update_script() {
 | 
			
		||||
    systemctl stop gatus
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    if [[ :$PATH: != *":/usr/local/bin:"* ]]; then
 | 
			
		||||
      echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc
 | 
			
		||||
      source ~/.bashrc
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    mv /opt/gatus/config/config.yaml /opt
 | 
			
		||||
    rm -rf /opt/gatus
 | 
			
		||||
    fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										43
									
								
								ct/globaleaks.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								ct/globaleaks.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 communtiy-scripts ORG
 | 
			
		||||
# Author: Giovanni Pellerano (evilaliv3)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/globaleaks/globaleaks-whistleblowing-software
 | 
			
		||||
 | 
			
		||||
APP="GlobaLeaks"
 | 
			
		||||
var_tags="${var_tags:-whistleblowing-software}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /usr/sbin/globaleaks ]]; then
 | 
			
		||||
    msg_error "No ${APP} installation found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  $STD apt update
 | 
			
		||||
  $STD apt -y upgrade
 | 
			
		||||
  msg_ok "Updated $APP LXC"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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}${CL}"
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-caddy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-caddy
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                  ______          __    __     
 | 
			
		||||
   /   |  / /___  (_)___  ___        / ____/___ _____/ /___/ /_  __
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ /   / __ `/ __  / __  / / / /
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ /___/ /_/ / /_/ / /_/ / /_/ / 
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/      \____/\__,_/\__,_/\__,_/\__, /  
 | 
			
		||||
        /_/                                               /____/   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/globaleaks
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/globaleaks
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   ________      __          __               __       
 | 
			
		||||
  / ____/ /___  / /_  ____ _/ /   ___  ____ _/ /_______
 | 
			
		||||
 / / __/ / __ \/ __ \/ __ `/ /   / _ \/ __ `/ //_/ ___/
 | 
			
		||||
/ /_/ / / /_/ / /_/ / /_/ / /___/  __/ /_/ / ,< (__  ) 
 | 
			
		||||
\____/_/\____/_.___/\__,_/_____/\___/\__,_/_/|_/____/  
 | 
			
		||||
                                                       
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/tunarr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/tunarr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
  ______                           
 | 
			
		||||
 /_  __/_  ______  ____ ___________
 | 
			
		||||
  / / / / / / __ \/ __ `/ ___/ ___/
 | 
			
		||||
 / / / /_/ / / / / /_/ / /  / /    
 | 
			
		||||
/_/  \__,_/_/ /_/\__,_/_/  /_/     
 | 
			
		||||
                                   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/upsnap
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/upsnap
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   __  __     _____                 
 | 
			
		||||
  / / / /___ / ___/____  ____ _____ 
 | 
			
		||||
 / / / / __ \\__ \/ __ \/ __ `/ __ \
 | 
			
		||||
/ /_/ / /_/ /__/ / / / / /_/ / /_/ /
 | 
			
		||||
\____/ .___/____/_/ /_/\__,_/ .___/ 
 | 
			
		||||
    /_/                    /_/      
 | 
			
		||||
@@ -53,3 +53,5 @@ 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}Headscale API: ${IP}/api (no Frontend) | headscale-admin: http://${IP}/admin/${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										64
									
								
								ct/immich.sh
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								ct/immich.sh
									
									
									
									
									
								
							@@ -11,7 +11,7 @@ var_disk="${var_disk:-20}"
 | 
			
		||||
var_cpu="${var_cpu:-4}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -27,11 +27,22 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if [[ -f /etc/apt/sources.list.d/immich.list ]]; then
 | 
			
		||||
    msg_error "Wrong Debian version detected!"
 | 
			
		||||
    msg_error "You must upgrade your LXC to Debian Trixie before updating."
 | 
			
		||||
    msg_error "Please visit https://github.com/community-scripts/ProxmoxVE/discussions/7726 for details."
 | 
			
		||||
    echo "${TAB3}  If you have upgraded your LXC to Trixie and you still see this message, please open an Issue in the Community-Scripts repo."
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  setup_uv
 | 
			
		||||
  PNPM_VERSION="$(curl -fsSL "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/package.json" | jq -r '.packageManager | split("@")[1]')"
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
 | 
			
		||||
 | 
			
		||||
  if dpkg -l | grep -q "libmimalloc2.0"; then
 | 
			
		||||
    $STD apt-get update && $STD apt-get install -y libmimalloc3
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  STAGING_DIR=/opt/staging
 | 
			
		||||
  BASE_DIR=${STAGING_DIR}/base-images
 | 
			
		||||
  SOURCE_DIR=${STAGING_DIR}/image-source
 | 
			
		||||
@@ -45,8 +56,10 @@ function update_script() {
 | 
			
		||||
      for url in "${INTEL_URLS[@]}"; do
 | 
			
		||||
        curl -fsSLO "$url"
 | 
			
		||||
      done
 | 
			
		||||
      $STD apt-mark unhold libigdgmm12
 | 
			
		||||
      $STD apt install -y ./*.deb
 | 
			
		||||
      rm ./*.deb
 | 
			
		||||
      $STD apt-mark hold libigdgmm12
 | 
			
		||||
      msg_ok "Intel iGPU dependencies updated"
 | 
			
		||||
    fi
 | 
			
		||||
    rm ~/Dockerfile
 | 
			
		||||
@@ -61,7 +74,7 @@ function update_script() {
 | 
			
		||||
    done
 | 
			
		||||
    msg_ok "Image-processing libraries up to date"
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE="1.142.1"
 | 
			
		||||
  RELEASE="1.143.1"
 | 
			
		||||
  if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop immich-web
 | 
			
		||||
@@ -78,22 +91,10 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f ~/.vchord_version ]] || [[ "$VCHORD_RELEASE" != "$(cat ~/.vchord_version)" ]]; then
 | 
			
		||||
      msg_info "Updating VectorChord"
 | 
			
		||||
      if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then
 | 
			
		||||
        $STD sudo -u postgres pg_dumpall --clean --if-exists --username=postgres | gzip >/etc/postgresql/immich-db-vchord0.3.0.sql.gz
 | 
			
		||||
        chown postgres /etc/postgresql/immich-db-vchord0.3.0.sql.gz
 | 
			
		||||
        $STD sudo -u postgres gunzip --stdout /etc/postgresql/immich-db-vchord0.3.0.sql.gz |
 | 
			
		||||
          sed -e "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
 | 
			
		||||
            -e "/vchordrq.prewarm_dim/d" |
 | 
			
		||||
          sudo -u postgres psql
 | 
			
		||||
      fi
 | 
			
		||||
      curl -fsSL "https://github.com/tensorchord/vectorchord/releases/download/${VCHORD_RELEASE}/postgresql-16-vchord_${VCHORD_RELEASE}-1_amd64.deb" -o vchord.deb
 | 
			
		||||
      $STD apt install -y ./vchord.deb
 | 
			
		||||
      $STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;"
 | 
			
		||||
      systemctl restart postgresql
 | 
			
		||||
      if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then
 | 
			
		||||
        $STD sudo -u postgres psql -d immich -c "REINDEX INDEX face_index;"
 | 
			
		||||
        $STD sudo -u postgres psql -d immich -c "REINDEX INDEX clip_index;"
 | 
			
		||||
      fi
 | 
			
		||||
      echo "$VCHORD_RELEASE" >~/.vchord_version
 | 
			
		||||
      rm ./vchord.deb
 | 
			
		||||
      msg_ok "Updated VectorChord to v${VCHORD_RELEASE}"
 | 
			
		||||
@@ -126,9 +127,6 @@ EOF
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} web and microservices"
 | 
			
		||||
    cd "$SRC_DIR"/server
 | 
			
		||||
    if [[ "$RELEASE" == "1.135.1" ]]; then
 | 
			
		||||
      rm ./src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts
 | 
			
		||||
    fi
 | 
			
		||||
    export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
 | 
			
		||||
    export CI=1
 | 
			
		||||
    corepack enable
 | 
			
		||||
@@ -144,6 +142,7 @@ EOF
 | 
			
		||||
 | 
			
		||||
    # openapi & web build
 | 
			
		||||
    cd "$SRC_DIR"
 | 
			
		||||
    echo "packageImportMethod: hardlink" >>./pnpm-workspace.yaml
 | 
			
		||||
    $STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
 | 
			
		||||
    $STD pnpm --filter @immich/sdk --filter immich-web build
 | 
			
		||||
    cp -a web/build "$APP_DIR"/www
 | 
			
		||||
@@ -158,16 +157,16 @@ EOF
 | 
			
		||||
    msg_ok "Updated ${APP} web and microservices"
 | 
			
		||||
 | 
			
		||||
    cd "$SRC_DIR"/machine-learning
 | 
			
		||||
    mkdir -p "$ML_DIR"
 | 
			
		||||
    mkdir -p "$ML_DIR" && chown -R immich:immich "$ML_DIR"
 | 
			
		||||
    export VIRTUAL_ENV="${ML_DIR}"/ml-venv
 | 
			
		||||
    if [[ -f ~/.openvino ]]; then
 | 
			
		||||
      msg_info "Updating HW-accelerated machine-learning"
 | 
			
		||||
      $STD /usr/local/bin/uv sync --extra openvino --no-cache --active
 | 
			
		||||
      $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra openvino --active -n -p python3.11 --managed-python
 | 
			
		||||
      patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
 | 
			
		||||
      msg_ok "Updated HW-accelerated machine-learning"
 | 
			
		||||
    else
 | 
			
		||||
      msg_info "Updating machine-learning"
 | 
			
		||||
      $STD /usr/local/bin/uv sync --extra cpu --no-cache --active
 | 
			
		||||
      $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra cpu --active -n -p python3.11 --managed-python
 | 
			
		||||
      msg_ok "Updated machine-learning"
 | 
			
		||||
    fi
 | 
			
		||||
    cd "$SRC_DIR"
 | 
			
		||||
@@ -186,10 +185,6 @@ EOF
 | 
			
		||||
    ln -s "$GEO_DIR" "$APP_DIR"
 | 
			
		||||
 | 
			
		||||
    chown -R immich:immich "$INSTALL_DIR"
 | 
			
		||||
    if [[ ! -f ~/.debian_version.bak ]]; then
 | 
			
		||||
      cp /etc/debian_version ~/.debian_version.bak
 | 
			
		||||
      sed -i 's/.*/13.0/' /etc/debian_version
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
@@ -205,8 +200,7 @@ function compile_libjxl() {
 | 
			
		||||
  SOURCE=${SOURCE_DIR}/libjxl
 | 
			
		||||
  JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
 | 
			
		||||
  JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
 | 
			
		||||
  # : "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}"
 | 
			
		||||
  : "${LIBJXL_REVISION:=794a5dcf0d54f9f0b20d288a12e87afb91d20dfc}"
 | 
			
		||||
  : "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}"
 | 
			
		||||
  if [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
    msg_info "Recompiling libjxl"
 | 
			
		||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
			
		||||
@@ -253,8 +247,7 @@ function compile_libheif() {
 | 
			
		||||
    $STD apt-get install -y libaom-dev
 | 
			
		||||
    local update="required"
 | 
			
		||||
  fi
 | 
			
		||||
  # : "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}"
 | 
			
		||||
  : "${LIBHEIF_REVISION:=35dad50a9145332a7bfdf1ff6aef6801fb613d68}"
 | 
			
		||||
  : "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}"
 | 
			
		||||
  if [[ "${update:-}" ]] || [[ "$LIBHEIF_REVISION" != "$(grep 'libheif' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
    msg_info "Recompiling libheif"
 | 
			
		||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
			
		||||
@@ -285,9 +278,7 @@ function compile_libheif() {
 | 
			
		||||
 | 
			
		||||
function compile_libraw() {
 | 
			
		||||
  SOURCE=${SOURCE_DIR}/libraw
 | 
			
		||||
  local update
 | 
			
		||||
  # : "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
 | 
			
		||||
  : "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}"
 | 
			
		||||
  : "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
 | 
			
		||||
  if [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
    msg_info "Recompiling libraw"
 | 
			
		||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
			
		||||
@@ -308,15 +299,15 @@ function compile_libraw() {
 | 
			
		||||
 | 
			
		||||
function compile_imagemagick() {
 | 
			
		||||
  SOURCE=$SOURCE_DIR/imagemagick
 | 
			
		||||
  # : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}"
 | 
			
		||||
  : "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}"
 | 
			
		||||
  if [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
  : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}"
 | 
			
		||||
  if [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]] ||
 | 
			
		||||
    ! grep -q 'DMAGICK_LIBRAW' /usr/local/lib/ImageMagick-7*/config-Q16HDRI/configure.xml; then
 | 
			
		||||
    msg_info "Recompiling ImageMagick"
 | 
			
		||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
			
		||||
    $STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
 | 
			
		||||
    cd "$SOURCE"
 | 
			
		||||
    $STD git reset --hard "$IMAGEMAGICK_REVISION"
 | 
			
		||||
    $STD ./configure --with-modules
 | 
			
		||||
    $STD ./configure --with-modules CPPFLAGS="-DMAGICK_LIBRAW_VERSION_TAIL=202502"
 | 
			
		||||
    $STD make -j"$(nproc)"
 | 
			
		||||
    $STD make install
 | 
			
		||||
    ldconfig /usr/local/lib
 | 
			
		||||
@@ -329,8 +320,7 @@ function compile_imagemagick() {
 | 
			
		||||
 | 
			
		||||
function compile_libvips() {
 | 
			
		||||
  SOURCE=$SOURCE_DIR/libvips
 | 
			
		||||
  # : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
 | 
			
		||||
  : "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
 | 
			
		||||
  : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
 | 
			
		||||
  if [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
    msg_info "Recompiling libvips"
 | 
			
		||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -29,23 +29,24 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Stopping ${APP}"
 | 
			
		||||
  msg_info "Stopping Service"
 | 
			
		||||
  systemctl stop litellm
 | 
			
		||||
  msg_ok "Stopped ${APP}"
 | 
			
		||||
  msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
  VENV_PATH="/opt/litellm/.venv"
 | 
			
		||||
  PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP"
 | 
			
		||||
  msg_info "Updating LiteLLM"
 | 
			
		||||
  $STD "$VENV_PATH/bin/python" -m pip install --upgrade litellm[proxy] prisma
 | 
			
		||||
  msg_ok "LiteLLM updated"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating DB Schema"
 | 
			
		||||
  $STD uv --directory=/opt/litellm run litellm --config /opt/litellm/litellm.yaml --use_prisma_db_push --skip_server_startup
 | 
			
		||||
  msg_ok "DB Schema Updated"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP}"
 | 
			
		||||
  msg_info "Starting Service"
 | 
			
		||||
  systemctl start litellm
 | 
			
		||||
  msg_ok "Started ${APP}"
 | 
			
		||||
  msg_ok "Started Service"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -35,12 +35,15 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    cp /opt/mmdl/.env /opt/mmdl.env
 | 
			
		||||
    rm -rf /opt/mmdl
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs" "tarball"
 | 
			
		||||
    NODE_VERSION="22" setup_nodejs
 | 
			
		||||
 | 
			
		||||
    msg_info "Configuring ${APP}"
 | 
			
		||||
    cd /opt/mmdl
 | 
			
		||||
    export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run migrate
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,9 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "monica" "monicahq/monica"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
			
		||||
      msg_info "Stopping Service"
 | 
			
		||||
      systemctl stop ollama
 | 
			
		||||
      msg_ok "Stopped Service"
 | 
			
		||||
      curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
 | 
			
		||||
      curl -fsSLO -C - https://ollama.com/download/ollama-linux-amd64.tgz
 | 
			
		||||
      rm -rf /usr/lib/ollama
 | 
			
		||||
      rm -rf /usr/bin/ollama
 | 
			
		||||
      tar -C /usr -xzf ollama-linux-amd64.tgz
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,8 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "outline" "outline/outline"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop outline
 | 
			
		||||
@@ -37,7 +39,7 @@ function update_script() {
 | 
			
		||||
    cp /opt/outline/.env /opt
 | 
			
		||||
    msg_ok "Backup created"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
 | 
			
		||||
    CLEAN_INSTALL=1 fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/outline
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
  if check_for_gh_release "paymenter" "paymenter/paymenter"; then
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/paymenter
 | 
			
		||||
    $STD php artisan p:upgrade --no-interaction
 | 
			
		||||
    $STD php artisan app:upgrade --no-interaction
 | 
			
		||||
    echo "${CHECK_UPDATE_RELEASE}" >~/.paymenter
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ function update_script() {
 | 
			
		||||
    mv /opt/tandoor /opt/tandoor.bak
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    NODE_VERSION="20" NODE_MODULE="yarn" setup_nodejs
 | 
			
		||||
    NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
 | 
			
		||||
    PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
    fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -33,22 +33,23 @@ function update_script() {
 | 
			
		||||
    systemctl stop tracktor
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    cp /opt/tracktor/app/backend/.env /opt/tracktor.env
 | 
			
		||||
    msg_ok "Created Backup"
 | 
			
		||||
    msg_info "Correcting Services"
 | 
			
		||||
    if [ -f /opt/tracktor/app/backend/.env ]; then
 | 
			
		||||
        mv /opt/tracktor/app/backend/.env /opt/tracktor.env
 | 
			
		||||
        echo 'AUTH_PIN=123456' >> /opt/tracktor.env
 | 
			
		||||
        sed -i 's|^EnvironmentFile=.*|EnvironmentFile=/opt/tracktor.env|' /etc/systemd/system/tracktor.service
 | 
			
		||||
        systemctl daemon-reload
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Corrected Services"
 | 
			
		||||
 | 
			
		||||
    setup_nodejs
 | 
			
		||||
    fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
 | 
			
		||||
    CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    msg_info "Updating tracktor"
 | 
			
		||||
    cd /opt/tracktor
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restoring Backup"
 | 
			
		||||
    cp /opt/tracktor.env /opt/tracktor/app/backend/.env
 | 
			
		||||
    msg_ok "Restored Backup"
 | 
			
		||||
    msg_ok "Updated tracktor"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start tracktor
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										79
									
								
								ct/tunarr.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								ct/tunarr.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,79 @@
 | 
			
		||||
#!/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: chrisbenincasa
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://tunarr.com/
 | 
			
		||||
 | 
			
		||||
APP="Tunarr"
 | 
			
		||||
var_tags="${var_tags:-iptv}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-5}"
 | 
			
		||||
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/tunarr ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if check_for_gh_release "tunarr" "chrisbenincasa/tunarr"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop tunarr
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    if [ -d "/usr/local/share/tunarr" ]; then
 | 
			
		||||
      tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /usr/local/share/tunarr $STD
 | 
			
		||||
      msg_ok "Backup Created"
 | 
			
		||||
    else
 | 
			
		||||
      msg_error "Backup failed: /usr/local/share/tunarr does not exist"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "singlefile" "latest" "/opt/tunarr" "*linux-x64"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start tunarr
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Update Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop tunarr
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
 | 
			
		||||
 | 
			
		||||
    msg_info "Set ErsatzTV-ffmpeg links"
 | 
			
		||||
    chmod +x /opt/ErsatzTV-ffmpeg/bin/*
 | 
			
		||||
    ln -sf /opt/ErsatzTV-ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg
 | 
			
		||||
    ln -sf /opt/ErsatzTV-ffmpeg/bin/ffplay /usr/local/bin/ffplay
 | 
			
		||||
    ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/local/bin/ffprobe
 | 
			
		||||
    msg_ok "ffmpeg links set"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start tunarr
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Update 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}:8000${CL}"
 | 
			
		||||
							
								
								
									
										53
									
								
								ct/upsnap.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								ct/upsnap.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
#!/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/seriousm4x/UpSnap
 | 
			
		||||
 | 
			
		||||
APP="UpSnap"
 | 
			
		||||
var_tags="${var_tags:-network}"
 | 
			
		||||
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_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/upsnap ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if check_for_gh_release "upsnap" "seriousm4x/UpSnap"; then
 | 
			
		||||
        msg_info "Stopping Services"
 | 
			
		||||
        systemctl stop upsnap
 | 
			
		||||
        msg_ok "Stopped Services"
 | 
			
		||||
 | 
			
		||||
        fetch_and_deploy_gh_release "upsnap" "seriousm4x/UpSnap" "prebuild" "latest" "/opt/upsnap" "UpSnap_*_linux_amd64.zip"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting Services"
 | 
			
		||||
        systemctl start upsnap
 | 
			
		||||
        msg_ok "Started Services"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="Wazuh"
 | 
			
		||||
var_tags="${var_tags:-security;monitoring}"
 | 
			
		||||
var_cpu="${var_cpu:-4}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-18}"
 | 
			
		||||
var_disk="${var_disk:-25}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -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}https://${IP}:443${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:443${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										65
									
								
								ct/zabbix.sh
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								ct/zabbix.sh
									
									
									
									
									
								
							@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -23,37 +23,72 @@ function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping ${APP} Services"
 | 
			
		||||
  systemctl stop zabbix-server zabbix-agent2
 | 
			
		||||
  msg_ok "Stopped ${APP} Services"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  . /etc/os-release
 | 
			
		||||
  if [ "$VERSION_CODENAME" != "trixie" ]; then
 | 
			
		||||
    msg_error "Unsupported Debian version: $VERSION_CODENAME – please upgrade to Debian 13 (Trixie) before updating Zabbix."
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if systemctl list-unit-files | grep -q zabbix-agent2.service; then
 | 
			
		||||
    AGENT_SERVICE="zabbix-agent2"
 | 
			
		||||
  else
 | 
			
		||||
    AGENT_SERVICE="zabbix-agent"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Stopping Services"
 | 
			
		||||
  systemctl stop zabbix-server $AGENT_SERVICE
 | 
			
		||||
  msg_ok "Stopped Services"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating Zabbix"
 | 
			
		||||
  mkdir -p /opt/zabbix-backup/
 | 
			
		||||
  cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
 | 
			
		||||
  cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
 | 
			
		||||
  cp -R /usr/share/zabbix/ /opt/zabbix-backup/
 | 
			
		||||
  #cp -R /usr/share/zabbix-* /opt/zabbix-backup/ Remove temporary
 | 
			
		||||
 | 
			
		||||
  rm -Rf /etc/apt/sources.list.d/zabbix.list
 | 
			
		||||
  cd /tmp
 | 
			
		||||
  curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
 | 
			
		||||
    grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
 | 
			
		||||
    xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb")" \
 | 
			
		||||
    -o /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
  $STD dpkg -i zabbix-release_latest+debian12_all.deb
 | 
			
		||||
  $STD apt-get update
 | 
			
		||||
  $STD apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-*
 | 
			
		||||
    xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
 | 
			
		||||
    -o /tmp/zabbix-release_latest+debian13_all.deb
 | 
			
		||||
  $STD dpkg -i zabbix-release_latest+debian13_all.deb
 | 
			
		||||
  $STD apt update
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP} Services"
 | 
			
		||||
  systemctl start zabbix-server zabbix-agent2
 | 
			
		||||
  $STD apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql
 | 
			
		||||
 | 
			
		||||
  if [ "$AGENT_SERVICE" = "zabbix-agent2" ]; then
 | 
			
		||||
    $STD apt install --only-upgrade zabbix-agent2 zabbix-agent2-plugin-postgresql
 | 
			
		||||
    if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
 | 
			
		||||
      sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
 | 
			
		||||
        /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    $STD apt install --only-upgrade zabbix-agent
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if command -v fping >/dev/null 2>&1; then
 | 
			
		||||
    FPING_PATH=$(command -v fping)
 | 
			
		||||
    sed -i "s|^#\?FpingLocation=.*|FpingLocation=$FPING_PATH|" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
  fi
 | 
			
		||||
  if command -v fping6 >/dev/null 2>&1; then
 | 
			
		||||
    FPING6_PATH=$(command -v fping6)
 | 
			
		||||
    sed -i "s|^#\?Fping6Location=.*|Fping6Location=$FPING6_PATH|" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Updated Zabbix"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting Services"
 | 
			
		||||
  systemctl start zabbix-server $AGENT_SERVICE
 | 
			
		||||
  systemctl restart apache2
 | 
			
		||||
  msg_ok "Started ${APP} Services"
 | 
			
		||||
  msg_ok "Started Services"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning Up"
 | 
			
		||||
  rm -rf /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
  rm -rf /tmp/zabbix-release_latest+debian13_all.deb
 | 
			
		||||
  msg_ok "Cleaned"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE LXC Tag",
 | 
			
		||||
  "name": "PVE LXC Tag",
 | 
			
		||||
  "slug": "add-iptag",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,51 +1,51 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "AdGuard Home",
 | 
			
		||||
    "slug": "adguard",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        5
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2024-04-28",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": true,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 3000,
 | 
			
		||||
    "documentation": "https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started",
 | 
			
		||||
    "website": "https://adguard.com/en/adguard-home/overview.html",
 | 
			
		||||
    "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/adguard-home.webp",
 | 
			
		||||
    "config_path": "/opt/AdGuardHome/AdGuardHome.yaml",
 | 
			
		||||
    "description": "AdGuard Home is an open-source, self-hosted network-wide ad blocker. It blocks advertisements, trackers, phishing and malware websites, and provides protection against online threats. AdGuard Home is a DNS-based solution, which means it blocks ads and malicious content at the network level, before it even reaches your device. It runs on your home network and can be easily configured and managed through a web-based interface. It provides detailed statistics and logs, allowing you to see which websites are being blocked, and why. AdGuard Home is designed to be fast, lightweight, and easy to use, making it an ideal solution for home users who want to block ads, protect their privacy, and improve the speed and security of their online experience.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/adguard.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 512,
 | 
			
		||||
                "hdd": 2,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "alpine",
 | 
			
		||||
            "script": "ct/alpine-adguard.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 256,
 | 
			
		||||
                "hdd": 1,
 | 
			
		||||
                "os": "alpine",
 | 
			
		||||
                "version": "3.22"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
  "name": "AdGuard Home",
 | 
			
		||||
  "slug": "adguard",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    5
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-04-28",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": "https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started",
 | 
			
		||||
  "website": "https://adguard.com/en/adguard-home/overview.html",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/adguard-home.webp",
 | 
			
		||||
  "config_path": "/opt/AdGuardHome/AdGuardHome.yaml",
 | 
			
		||||
  "description": "AdGuard Home is an open-source, self-hosted network-wide ad blocker. It blocks advertisements, trackers, phishing and malware websites, and provides protection against online threats. AdGuard Home is a DNS-based solution, which means it blocks ads and malicious content at the network level, before it even reaches your device. It runs on your home network and can be easily configured and managed through a web-based interface. It provides detailed statistics and logs, allowing you to see which websites are being blocked, and why. AdGuard Home is designed to be fast, lightweight, and easy to use, making it an ideal solution for home users who want to block ads, protect their privacy, and improve the speed and security of their online experience.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/adguard.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Adguard Home can be updated via the user interface.",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
    {
 | 
			
		||||
      "type": "alpine",
 | 
			
		||||
      "script": "ct/alpine-adguard.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 256,
 | 
			
		||||
        "hdd": 1,
 | 
			
		||||
        "os": "alpine",
 | 
			
		||||
        "version": "3.22"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "AdGuard Home can only be updated via the user interface.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
      "script": "ct/booklore.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 3,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "ram": 3072,
 | 
			
		||||
        "hdd": 7,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
  "categories": [
 | 
			
		||||
    21
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-11",
 | 
			
		||||
  "date_created": "2025-09-17",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
@@ -21,10 +21,21 @@
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "hdd": 6,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "alpine",
 | 
			
		||||
      "script": "ct/alpine-caddy.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 256,
 | 
			
		||||
        "hdd": 3,
 | 
			
		||||
        "os": "alpine",
 | 
			
		||||
        "version": "3.22"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE LXC Cleaner",
 | 
			
		||||
  "name": "PVE LXC Cleaner",
 | 
			
		||||
  "slug": "clean-lxcs",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox Clean Orphaned LVM",
 | 
			
		||||
  "name": "PVE Clean Orphaned LVM",
 | 
			
		||||
  "slug": "clean-orphaned-lvm",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 
 | 
			
		||||
@@ -32,5 +32,10 @@
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "info",
 | 
			
		||||
      "text": "The file `/etc/sysconfig/CosmosCloud` is optional. If you need custom settings, you can create it yourself."
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE Cron LXC Updater",
 | 
			
		||||
  "name": "PVE Cron LXC Updater",
 | 
			
		||||
  "slug": "cron-update-lxcs",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,10 @@
 | 
			
		||||
    {
 | 
			
		||||
      "type": "info",
 | 
			
		||||
      "text": "Synapse-Admin is running on port 5173"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "info",
 | 
			
		||||
      "text": "For bridges Installation methods (WhatsApp, Signal, Discord, etc.), see: ´https://docs.mau.fi/bridges/go/setup.html´"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										48
									
								
								frontend/public/json/execute.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								frontend/public/json/execute.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "PVE LXC Execute Command",
 | 
			
		||||
  "slug": "lxc-execute",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-09-18",
 | 
			
		||||
  "type": "pve",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": null,
 | 
			
		||||
  "website": null,
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
 | 
			
		||||
  "config_path": "",
 | 
			
		||||
  "description": "This script allows administrators to execute a custom command inside one or multiple LXC containers on a Proxmox VE node. Containers can be selectively excluded via an interactive checklist. If a container is stopped, the script will automatically start it, run the command, and then shut it down again. Only Debian and Ubuntu based containers are supported.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "tools/pve/execute.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": null,
 | 
			
		||||
        "ram": null,
 | 
			
		||||
        "hdd": null,
 | 
			
		||||
        "os": null,
 | 
			
		||||
        "version": null
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Execute within the Proxmox shell.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Non-Debian/Ubuntu containers will be skipped automatically.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Stopped containers will be started temporarily to run the command, then shut down again.",
 | 
			
		||||
      "type": "warning"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE LXC Filesystem Trim",
 | 
			
		||||
  "name": "PVE LXC Filesystem Trim",
 | 
			
		||||
  "slug": "fstrim",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								frontend/public/json/globaleaks.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								frontend/public/json/globaleaks.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "GlobaLeaks",
 | 
			
		||||
  "slug": "globaleaks",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    0
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-09-18",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 443,
 | 
			
		||||
  "documentation": "https://docs.globaleaks.org",
 | 
			
		||||
  "website": "https://www.globaleaks.org/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/globaleaks.webp",
 | 
			
		||||
  "config_path": "",
 | 
			
		||||
  "description": "GlobaLeaks is a free and open-source whistleblowing software enabling anyone to easily set up and maintain a secure reporting platform.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/globaleaks.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
@@ -32,6 +32,10 @@
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Containerized version doesn't allow Home Assistant add-ons.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE Host Backup",
 | 
			
		||||
  "name": "PVE Host Backup",
 | 
			
		||||
  "slug": "host-backup",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 20,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE Kernel Clean",
 | 
			
		||||
  "name": "PVE Kernel Clean",
 | 
			
		||||
  "slug": "kernel-clean",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE Kernel Pin",
 | 
			
		||||
  "name": "PVE Kernel Pin",
 | 
			
		||||
  "slug": "kernel-pin",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE Processor Microcode",
 | 
			
		||||
  "name": "PVE Processor Microcode",
 | 
			
		||||
  "slug": "microcode",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE Monitor-All",
 | 
			
		||||
  "name": "PVE Monitor-All",
 | 
			
		||||
  "slug": "monitor-all",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE Netdata",
 | 
			
		||||
  "name": "PVE Netdata",
 | 
			
		||||
  "slug": "netdata",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -31,5 +31,10 @@
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Script contains optional installation of Ollama.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox Backup Server Processor Microcode",
 | 
			
		||||
  "name": "PBS Processor Microcode",
 | 
			
		||||
  "slug": "pbs-microcode",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox Backup Server Post Install",
 | 
			
		||||
  "name": "PBS Post Install",
 | 
			
		||||
  "slug": "post-pbs-install",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
  "website": null,
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
 | 
			
		||||
  "config_path": "",
 | 
			
		||||
  "description": "The script will give options to Disable the Enterprise Repo, Add/Correct PBS Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Backup Server and Reboot PBS.",
 | 
			
		||||
  "description": "The script is designed for Proxmox Backup Server (PBS) and will give options to Disable the Enterprise Repo, Add/Correct PBS Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Backup Server and Reboot PBS.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox Mail Gateway Post Install",
 | 
			
		||||
  "name": "PMG Post Install",
 | 
			
		||||
  "slug": "post-pmg-install",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
  "website": null,
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
 | 
			
		||||
  "config_path": "",
 | 
			
		||||
  "description": "The script will give options to Disable the Enterprise Repo, Add/Correct PMG Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Mail Gateway and Reboot PMG.",
 | 
			
		||||
  "description": "The script is designed for Proxmox Mail Gateway and will give options to Disable the Enterprise Repo, Add/Correct PMG Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Mail Gateway and Reboot PMG.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE Post Install",
 | 
			
		||||
  "name": "PVE Post Install",
 | 
			
		||||
  "slug": "post-pve-install",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Proxmox Backup Server",
 | 
			
		||||
    "name": "Proxmox Backup Server (PBS)",
 | 
			
		||||
    "slug": "proxmox-backup-server",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox Datacenter Manager",
 | 
			
		||||
  "name": "Proxmox Datacenter Manager (PDM)",
 | 
			
		||||
  "slug": "proxmox-datacenter-manager",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Proxmox Mail Gateway",
 | 
			
		||||
    "name": "Proxmox Mail Gateway (PMG)",
 | 
			
		||||
    "slug": "proxmox-mail-gateway",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE CPU Scaling Governor",
 | 
			
		||||
  "name": "PVE CPU Scaling Governor",
 | 
			
		||||
  "slug": "scaling-governor",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": "https://tracktor.bytedge.in/introduction.html",
 | 
			
		||||
  "config_path": "/opt/tracktor/app/server/.env",
 | 
			
		||||
  "config_path": "/opt/tracktor.env",
 | 
			
		||||
  "website": "https://tracktor.bytedge.in/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tracktor.webp",
 | 
			
		||||
  "description": "Tracktor is an open-source web application for comprehensive vehicle management.\nEasily track fuel consumption, maintenance, insurance, and regulatory documents for all your vehicles in one place.",
 | 
			
		||||
@@ -23,17 +23,17 @@
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 6,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
    "password": "123456"
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Please check and update the '/opt/tracktor/app/backend/.env' file if using behind reverse proxy.",
 | 
			
		||||
      "text": "Please check and update the '/opt/tracktor.env' file if using behind reverse proxy.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								frontend/public/json/tunarr.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								frontend/public/json/tunarr.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Tunarr",
 | 
			
		||||
  "slug": "tunarr",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    13
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-09-19",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "config_path": "/opt/tunarr/.env",
 | 
			
		||||
  "interface_port": 8000,
 | 
			
		||||
  "documentation": "https://tunarr.com/",
 | 
			
		||||
  "website": "https://tunarr.com/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tunarr.webp",
 | 
			
		||||
  "description": "Create a classic TV experience using your own media - IPTV backed by Plex/Jellyfin/Emby.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/tunarr.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 5,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE LXC Updater",
 | 
			
		||||
  "name": "PVE LXC Updater",
 | 
			
		||||
  "slug": "update-lxcs",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox Update Repositories",
 | 
			
		||||
  "name": "PVE Update Repositories",
 | 
			
		||||
  "slug": "update-repo",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								frontend/public/json/upsnap.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/upsnap.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "UpSnap",
 | 
			
		||||
  "slug": "upsnap",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    4
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-09-23",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8090,
 | 
			
		||||
  "documentation": "https://github.com/seriousm4x/UpSnap/wiki",
 | 
			
		||||
  "config_path": "",
 | 
			
		||||
  "website": "https://github.com/seriousm4x/UpSnap",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/upsnap.webp",
 | 
			
		||||
  "description": "UpSnap is a self-hosted web app that lets you wake up, manage and monitor devices on your network with ease. Built with SvelteKit, Go and PocketBase, it offers a clean dashboard, scheduled wake-ups, device discovery and secure user management.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/upsnap.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "The first user you register will be the admin user.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,19 +1,394 @@
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "name": "9001/copyparty",
 | 
			
		||||
    "version": "v1.19.14",
 | 
			
		||||
    "date": "2025-09-23T22:57:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "grafana/grafana",
 | 
			
		||||
    "version": "v12.2.0",
 | 
			
		||||
    "date": "2025-09-23T23:47:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.41.3",
 | 
			
		||||
    "date": "2025-09-23T22:21:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Part-DB/Part-DB-server",
 | 
			
		||||
    "version": "v2.2.0",
 | 
			
		||||
    "date": "2025-09-23T21:46:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r8.2.1-rc0",
 | 
			
		||||
    "date": "2025-09-23T21:09:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "immich-app/immich",
 | 
			
		||||
    "version": "v1.143.1",
 | 
			
		||||
    "date": "2025-09-23T19:00:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.4.0",
 | 
			
		||||
    "date": "2025-09-13T16:38:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Threadfin/Threadfin",
 | 
			
		||||
    "version": "1.2.38",
 | 
			
		||||
    "date": "2025-09-23T17:49:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "msgbyte/tianji",
 | 
			
		||||
    "version": "v1.26.2",
 | 
			
		||||
    "date": "2025-09-23T17:32:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "getumbrel/umbrel",
 | 
			
		||||
    "version": "1.4.2",
 | 
			
		||||
    "date": "2025-05-09T08:54:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bunkerity/bunkerweb",
 | 
			
		||||
    "version": "v1.6.4",
 | 
			
		||||
    "date": "2025-08-18T20:22:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "element-hq/synapse",
 | 
			
		||||
    "version": "v1.139.0rc1",
 | 
			
		||||
    "date": "2025-09-23T13:28:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jenkinsci/jenkins",
 | 
			
		||||
    "version": "jenkins-2.529",
 | 
			
		||||
    "date": "2025-09-23T14:40:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "v4.13.0",
 | 
			
		||||
    "date": "2025-09-19T16:35:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zabbix/zabbix",
 | 
			
		||||
    "version": "7.4.3rc1",
 | 
			
		||||
    "date": "2025-09-23T13:54:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.1.1.102-2.1.1.102_canary_2025-09-23",
 | 
			
		||||
    "date": "2025-09-23T13:32:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "syncthing/syncthing",
 | 
			
		||||
    "version": "v2.0.9",
 | 
			
		||||
    "date": "2025-09-13T09:37:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.112.4",
 | 
			
		||||
    "date": "2025-09-23T11:10:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "documenso/documenso",
 | 
			
		||||
    "version": "v1.12.5",
 | 
			
		||||
    "date": "2025-09-23T11:00:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "meilisearch/meilisearch",
 | 
			
		||||
    "version": "prototype-speedup-post-processing-1",
 | 
			
		||||
    "date": "2025-09-23T09:02:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "chrisvel/tududi",
 | 
			
		||||
    "version": "v0.82-rc5",
 | 
			
		||||
    "date": "2025-09-23T07:31:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.12.1-rc2",
 | 
			
		||||
    "date": "2025-09-23T06:20:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "morpheus65535/bazarr",
 | 
			
		||||
    "version": "v1.5.3",
 | 
			
		||||
    "date": "2025-09-20T12:12:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.23.56",
 | 
			
		||||
    "date": "2025-09-23T05:54:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "booklore-app/booklore",
 | 
			
		||||
    "version": "v1.3.3",
 | 
			
		||||
    "date": "2025-09-23T00:41:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jeedom/core",
 | 
			
		||||
    "version": "4.4.20",
 | 
			
		||||
    "date": "2025-09-23T00:27:09Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "steveiliop56/tinyauth",
 | 
			
		||||
    "version": "v3.6.2",
 | 
			
		||||
    "date": "2025-07-17T12:08:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "henrygd/beszel",
 | 
			
		||||
    "version": "v0.12.9",
 | 
			
		||||
    "date": "2025-09-17T20:13:59Z"
 | 
			
		||||
    "version": "v0.12.10",
 | 
			
		||||
    "date": "2025-09-22T22:40:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.2.9",
 | 
			
		||||
    "date": "2025-09-17T15:11:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "postgres/postgres",
 | 
			
		||||
    "version": "REL_18_0",
 | 
			
		||||
    "date": "2025-09-22T20:11:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gtsteffaniak/filebrowser",
 | 
			
		||||
    "version": "v0.8.7-beta",
 | 
			
		||||
    "date": "2025-09-22T18:24:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gethomepage/homepage",
 | 
			
		||||
    "version": "v1.5.0",
 | 
			
		||||
    "date": "2025-09-22T15:28:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cloudflare/cloudflared",
 | 
			
		||||
    "version": "2025.9.1",
 | 
			
		||||
    "date": "2025-09-22T13:32:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sabnzbd/sabnzbd",
 | 
			
		||||
    "version": "4.5.3",
 | 
			
		||||
    "date": "2025-08-25T13:59:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v25.3",
 | 
			
		||||
    "date": "2025-09-01T09:47:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Graylog2/graylog2-server",
 | 
			
		||||
    "version": "7.0.0-beta.1",
 | 
			
		||||
    "date": "2025-09-22T11:53:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "itsmng/itsm-ng",
 | 
			
		||||
    "version": "v2.1.0",
 | 
			
		||||
    "date": "2025-09-22T09:23:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "prometheus/prometheus",
 | 
			
		||||
    "version": "v3.6.0",
 | 
			
		||||
    "date": "2025-09-22T08:24:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MediaBrowser/Emby.Releases",
 | 
			
		||||
    "version": "4.9.1.2",
 | 
			
		||||
    "date": "2025-06-26T22:08:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Athou/commafeed",
 | 
			
		||||
    "version": "5.11.1",
 | 
			
		||||
    "date": "2025-09-22T02:21:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TwiN/gatus",
 | 
			
		||||
    "version": "v5.24.3",
 | 
			
		||||
    "date": "2025-09-22T00:04:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Radarr/Radarr",
 | 
			
		||||
    "version": "v5.27.5.10198",
 | 
			
		||||
    "date": "2025-09-03T12:08:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Prowlarr/Prowlarr",
 | 
			
		||||
    "version": "v2.0.5.5160",
 | 
			
		||||
    "date": "2025-08-23T21:23:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Lidarr/Lidarr",
 | 
			
		||||
    "version": "v2.13.3.4711",
 | 
			
		||||
    "date": "2025-08-28T20:06:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "runtipi/runtipi",
 | 
			
		||||
    "version": "nightly",
 | 
			
		||||
    "date": "2025-09-21T18:15:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Ombi-app/Ombi",
 | 
			
		||||
    "version": "v4.47.1",
 | 
			
		||||
    "date": "2025-01-05T21:14:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wizarrrr/wizarr",
 | 
			
		||||
    "version": "v2025.9.5",
 | 
			
		||||
    "date": "2025-09-21T13:26:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "openhab/openhab-core",
 | 
			
		||||
    "version": "5.1.0.M1",
 | 
			
		||||
    "date": "2025-09-21T13:17:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gotify/server",
 | 
			
		||||
    "version": "v2.7.3",
 | 
			
		||||
    "date": "2025-09-21T12:07:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "thomiceli/opengist",
 | 
			
		||||
    "version": "v1.11.0",
 | 
			
		||||
    "date": "2025-09-21T02:53:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Luligu/matterbridge",
 | 
			
		||||
    "version": "3.2.8",
 | 
			
		||||
    "date": "2025-09-20T22:08:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fallenbagel/jellyseerr",
 | 
			
		||||
    "version": "preview-fix-watchlist-error",
 | 
			
		||||
    "date": "2025-09-20T21:07:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pocket-id/pocket-id",
 | 
			
		||||
    "version": "v1.11.2",
 | 
			
		||||
    "date": "2025-09-20T20:15:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.13.4",
 | 
			
		||||
    "date": "2025-09-20T20:03:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "traccar/traccar",
 | 
			
		||||
    "version": "v6.10.0",
 | 
			
		||||
    "date": "2025-09-20T15:40:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fuma-nama/fumadocs",
 | 
			
		||||
    "version": "fumadocs-openapi@9.3.11",
 | 
			
		||||
    "date": "2025-09-20T09:52:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "forgejo/forgejo",
 | 
			
		||||
    "version": "v12.0.4",
 | 
			
		||||
    "date": "2025-09-20T07:16:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "theonedev/onedev",
 | 
			
		||||
    "version": "v13.0.1",
 | 
			
		||||
    "date": "2025-09-20T00:15:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "inventree/InvenTree",
 | 
			
		||||
    "version": "1.0.1",
 | 
			
		||||
    "date": "2025-09-19T22:28:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ipfs/kubo",
 | 
			
		||||
    "version": "v0.37.0",
 | 
			
		||||
    "date": "2025-08-27T20:03:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.9.4",
 | 
			
		||||
    "date": "2025-09-19T21:09:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "coder/code-server",
 | 
			
		||||
    "version": "v4.104.1",
 | 
			
		||||
    "date": "2025-09-19T19:36:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "homarr-labs/homarr",
 | 
			
		||||
    "version": "v1.38.0",
 | 
			
		||||
    "date": "2025-09-19T19:14:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TandoorRecipes/recipes",
 | 
			
		||||
    "version": "2.2.3",
 | 
			
		||||
    "date": "2025-09-19T15:02:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "hargata/lubelog",
 | 
			
		||||
    "version": "v1.5.2",
 | 
			
		||||
    "date": "2025-09-19T14:18:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mattermost/mattermost",
 | 
			
		||||
    "version": "mattermost-redux@10.12.0",
 | 
			
		||||
    "date": "2025-09-18T20:15:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "docker/compose",
 | 
			
		||||
    "version": "v2.39.4",
 | 
			
		||||
    "date": "2025-09-19T08:49:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "esphome/esphome",
 | 
			
		||||
    "version": "2025.9.1",
 | 
			
		||||
    "date": "2025-09-19T08:47:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "saltstack/salt",
 | 
			
		||||
    "version": "v3007.8",
 | 
			
		||||
    "date": "2025-09-18T18:19:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "docmost/docmost",
 | 
			
		||||
    "version": "v0.23.2",
 | 
			
		||||
    "date": "2025-09-18T17:18:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bluenviron/mediamtx",
 | 
			
		||||
    "version": "v1.15.0",
 | 
			
		||||
    "date": "2025-09-18T17:14:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "emqx/emqx",
 | 
			
		||||
    "version": "e5.10.1",
 | 
			
		||||
    "date": "2025-09-18T16:43:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "YunoHost/yunohost",
 | 
			
		||||
    "version": "debian/12.1.25",
 | 
			
		||||
    "date": "2025-09-18T15:40:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "grokability/snipe-it",
 | 
			
		||||
    "version": "v8.3.2",
 | 
			
		||||
    "date": "2025-09-18T13:55:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v4.2.2",
 | 
			
		||||
    "date": "2025-09-18T10:45:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "NLnetLabs/unbound",
 | 
			
		||||
    "version": "release-1.24.0",
 | 
			
		||||
    "date": "2025-09-18T08:36:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "outline/outline",
 | 
			
		||||
    "version": "v0.87.4",
 | 
			
		||||
    "date": "2025-09-18T00:47:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TasmoAdmin/TasmoAdmin",
 | 
			
		||||
    "version": "v4.3.1",
 | 
			
		||||
    "date": "2025-07-22T20:10:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "msgbyte/tianji",
 | 
			
		||||
    "version": "v1.25.14",
 | 
			
		||||
    "date": "2025-09-17T19:00:05Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "eclipse-mosquitto/mosquitto",
 | 
			
		||||
    "version": "2.1.0-test1",
 | 
			
		||||
@@ -29,11 +404,6 @@
 | 
			
		||||
    "version": "v1.88.2",
 | 
			
		||||
    "date": "2025-09-17T17:25:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.2.9",
 | 
			
		||||
    "date": "2025-09-17T15:11:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "heiher/hev-socks5-server",
 | 
			
		||||
    "version": "2.10.0",
 | 
			
		||||
@@ -49,16 +419,6 @@
 | 
			
		||||
    "version": "2.0.0",
 | 
			
		||||
    "date": "2025-08-29T13:38:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.109.2",
 | 
			
		||||
    "date": "2025-09-03T07:50:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jenkinsci/jenkins",
 | 
			
		||||
    "version": "jenkins-2.528",
 | 
			
		||||
    "date": "2025-09-17T13:09:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cockpit-project/cockpit",
 | 
			
		||||
    "version": "347",
 | 
			
		||||
@@ -79,61 +439,11 @@
 | 
			
		||||
    "version": "v2.16.31",
 | 
			
		||||
    "date": "2025-09-17T09:57:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v25.3",
 | 
			
		||||
    "date": "2025-09-01T09:47:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "WGDashboard/WGDashboard",
 | 
			
		||||
    "version": "v4.3.0.1",
 | 
			
		||||
    "date": "2025-09-17T08:50:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "esphome/esphome",
 | 
			
		||||
    "version": "2025.9.0",
 | 
			
		||||
    "date": "2025-09-17T06:51:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MediaBrowser/Emby.Releases",
 | 
			
		||||
    "version": "4.9.1.2",
 | 
			
		||||
    "date": "2025-06-26T22:08:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "morpheus65535/bazarr",
 | 
			
		||||
    "version": "v1.5.3-beta.10",
 | 
			
		||||
    "date": "2025-07-15T06:07:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.23.32",
 | 
			
		||||
    "date": "2025-09-17T06:01:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.41.1",
 | 
			
		||||
    "date": "2025-09-17T03:15:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gtsteffaniak/filebrowser",
 | 
			
		||||
    "version": "v0.8.6-beta",
 | 
			
		||||
    "date": "2025-09-17T00:57:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jeedom/core",
 | 
			
		||||
    "version": "4.4.20",
 | 
			
		||||
    "date": "2025-09-17T00:27:05Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "steveiliop56/tinyauth",
 | 
			
		||||
    "version": "v3.6.2",
 | 
			
		||||
    "date": "2025-07-17T12:08:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Ombi-app/Ombi",
 | 
			
		||||
    "version": "v4.47.1",
 | 
			
		||||
    "date": "2025-01-05T21:14:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Cleanuparr/Cleanuparr",
 | 
			
		||||
    "version": "v2.3.1",
 | 
			
		||||
@@ -144,36 +454,11 @@
 | 
			
		||||
    "version": "2.510",
 | 
			
		||||
    "date": "2025-09-16T20:28:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "YunoHost/yunohost",
 | 
			
		||||
    "version": "debian/12.1.24",
 | 
			
		||||
    "date": "2025-09-16T19:55:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.4.0",
 | 
			
		||||
    "date": "2025-09-13T16:38:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bunkerity/bunkerweb",
 | 
			
		||||
    "version": "v1.6.4",
 | 
			
		||||
    "date": "2025-08-18T20:22:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "AdguardTeam/AdGuardHome",
 | 
			
		||||
    "version": "v0.107.66",
 | 
			
		||||
    "date": "2025-09-15T13:39:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "v4.13.0-rc5",
 | 
			
		||||
    "date": "2025-09-16T16:12:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "booklore-app/booklore",
 | 
			
		||||
    "version": "v1.3.2",
 | 
			
		||||
    "date": "2025-09-16T16:04:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "netbox-community/netbox",
 | 
			
		||||
    "version": "v4.4.1",
 | 
			
		||||
@@ -184,26 +469,11 @@
 | 
			
		||||
    "version": "version/2025.8.3",
 | 
			
		||||
    "date": "2025-09-16T15:19:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "immich-app/immich",
 | 
			
		||||
    "version": "v1.142.1",
 | 
			
		||||
    "date": "2025-09-16T14:51:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wizarrrr/wizarr",
 | 
			
		||||
    "version": "v2025.9.4",
 | 
			
		||||
    "date": "2025-09-16T14:12:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zwave-js/zwave-js-ui",
 | 
			
		||||
    "version": "v11.3.0",
 | 
			
		||||
    "date": "2025-09-16T13:53:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "emqx/emqx",
 | 
			
		||||
    "version": "e5.10.1-rc.2",
 | 
			
		||||
    "date": "2025-09-16T13:41:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "tobychui/zoraxy",
 | 
			
		||||
    "version": "v3.2.5r2",
 | 
			
		||||
@@ -214,21 +484,6 @@
 | 
			
		||||
    "version": "v2.4.0p12",
 | 
			
		||||
    "date": "2025-09-16T12:53:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v4.2.0",
 | 
			
		||||
    "date": "2025-09-15T09:29:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fallenbagel/jellyseerr",
 | 
			
		||||
    "version": "preview-debug-plex-watchlist",
 | 
			
		||||
    "date": "2025-09-16T09:20:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mattermost/mattermost",
 | 
			
		||||
    "version": "v10.11.3",
 | 
			
		||||
    "date": "2025-09-16T07:39:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "readeck/readeck",
 | 
			
		||||
    "version": "0.20.3",
 | 
			
		||||
@@ -239,11 +494,6 @@
 | 
			
		||||
    "version": "2.1.1",
 | 
			
		||||
    "date": "2025-09-16T06:21:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "coder/code-server",
 | 
			
		||||
    "version": "v4.104.0",
 | 
			
		||||
    "date": "2025-09-15T22:24:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Paymenter/Paymenter",
 | 
			
		||||
    "version": "v1.3.4",
 | 
			
		||||
@@ -299,31 +549,16 @@
 | 
			
		||||
    "version": "v2.7.6",
 | 
			
		||||
    "date": "2025-09-15T15:50:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r8.0.14",
 | 
			
		||||
    "date": "2025-09-15T15:39:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "usememos/memos",
 | 
			
		||||
    "version": "v0.25.1",
 | 
			
		||||
    "date": "2025-09-15T14:57:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fuma-nama/fumadocs",
 | 
			
		||||
    "version": "fumadocs-core@15.7.12",
 | 
			
		||||
    "date": "2025-09-15T12:37:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "VictoriaMetrics/VictoriaMetrics",
 | 
			
		||||
    "version": "pmm-6401-v1.126.0",
 | 
			
		||||
    "date": "2025-09-15T11:32:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "meilisearch/meilisearch",
 | 
			
		||||
    "version": "latest",
 | 
			
		||||
    "date": "2025-09-15T11:12:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "authelia/authelia",
 | 
			
		||||
    "version": "v4.39.10",
 | 
			
		||||
@@ -334,31 +569,11 @@
 | 
			
		||||
    "version": "v3.2.1",
 | 
			
		||||
    "date": "2025-09-15T03:45:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Prowlarr/Prowlarr",
 | 
			
		||||
    "version": "v2.0.5.5160",
 | 
			
		||||
    "date": "2025-08-23T21:23:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.13.3",
 | 
			
		||||
    "date": "2025-09-08T21:45:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "9001/copyparty",
 | 
			
		||||
    "version": "v1.19.9",
 | 
			
		||||
    "date": "2025-09-15T00:54:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "crafty-controller/crafty-4",
 | 
			
		||||
    "version": "v4.5.4",
 | 
			
		||||
    "date": "2025-09-15T00:49:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "inventree/InvenTree",
 | 
			
		||||
    "version": "1.0.0",
 | 
			
		||||
    "date": "2025-09-14T23:37:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "moghtech/komodo",
 | 
			
		||||
    "version": "v1.19.4",
 | 
			
		||||
@@ -369,66 +584,16 @@
 | 
			
		||||
    "version": "v25.6.0",
 | 
			
		||||
    "date": "2025-09-14T17:55:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Lidarr/Lidarr",
 | 
			
		||||
    "version": "v2.13.3.4711",
 | 
			
		||||
    "date": "2025-08-28T20:06:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "karakeep-app/karakeep",
 | 
			
		||||
    "version": "cli/v0.27.1",
 | 
			
		||||
    "date": "2025-09-14T14:48:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "docmost/docmost",
 | 
			
		||||
    "version": "v0.23.1",
 | 
			
		||||
    "date": "2025-09-14T14:31:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "intri-in/manage-my-damn-life-nextjs",
 | 
			
		||||
    "version": "v0.8.1",
 | 
			
		||||
    "date": "2025-09-14T06:45:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Luligu/matterbridge",
 | 
			
		||||
    "version": "3.2.7",
 | 
			
		||||
    "date": "2025-09-14T06:35:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.9.3",
 | 
			
		||||
    "date": "2025-09-13T12:44:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gotify/server",
 | 
			
		||||
    "version": "v2.7.2",
 | 
			
		||||
    "date": "2025-09-13T12:11:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "syncthing/syncthing",
 | 
			
		||||
    "version": "v2.0.9",
 | 
			
		||||
    "date": "2025-09-13T09:37:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "documenso/documenso",
 | 
			
		||||
    "version": "v1.12.4",
 | 
			
		||||
    "date": "2025-09-13T08:08:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.11.11-rc3",
 | 
			
		||||
    "date": "2025-09-12T23:40:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "chrisvel/tududi",
 | 
			
		||||
    "version": "v0.82-rc2",
 | 
			
		||||
    "date": "2025-09-12T09:59:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "homarr-labs/homarr",
 | 
			
		||||
    "version": "v1.37.0",
 | 
			
		||||
    "date": "2025-09-12T19:19:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cloudreve/cloudreve",
 | 
			
		||||
    "version": "4.8.0",
 | 
			
		||||
@@ -449,36 +614,16 @@
 | 
			
		||||
    "version": "1.16.0",
 | 
			
		||||
    "date": "2025-09-11T18:01:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Threadfin/Threadfin",
 | 
			
		||||
    "version": "1.2.37",
 | 
			
		||||
    "date": "2025-09-11T16:13:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "prometheus/prometheus",
 | 
			
		||||
    "version": "v0.306.0-rc.1",
 | 
			
		||||
    "date": "2025-09-11T13:37:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rcourtman/Pulse",
 | 
			
		||||
    "version": "v4.14.0",
 | 
			
		||||
    "date": "2025-09-05T18:28:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "NLnetLabs/unbound",
 | 
			
		||||
    "version": "release-1.24.0rc1",
 | 
			
		||||
    "date": "2025-09-11T07:05:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "go-gitea/gitea",
 | 
			
		||||
    "version": "v1.24.6",
 | 
			
		||||
    "date": "2025-09-11T04:20:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TandoorRecipes/recipes",
 | 
			
		||||
    "version": "2.2.0",
 | 
			
		||||
    "date": "2025-09-10T18:36:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "aceberg/WatchYourLAN",
 | 
			
		||||
    "version": "2.1.4",
 | 
			
		||||
@@ -489,31 +634,11 @@
 | 
			
		||||
    "version": "v3.2.1-beta",
 | 
			
		||||
    "date": "2025-09-09T19:47:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Part-DB/Part-DB-server",
 | 
			
		||||
    "version": "v2.1.2",
 | 
			
		||||
    "date": "2025-09-09T19:34:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "hargata/lubelog",
 | 
			
		||||
    "version": "v1.5.1",
 | 
			
		||||
    "date": "2025-09-09T16:56:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "element-hq/synapse",
 | 
			
		||||
    "version": "v1.138.0",
 | 
			
		||||
    "date": "2025-09-09T11:25:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "traefik/traefik",
 | 
			
		||||
    "version": "v3.5.2",
 | 
			
		||||
    "date": "2025-09-09T10:28:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "docker/compose",
 | 
			
		||||
    "version": "v2.39.3",
 | 
			
		||||
    "date": "2025-09-09T08:27:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "OctoPrint/OctoPrint",
 | 
			
		||||
    "version": "1.11.3",
 | 
			
		||||
@@ -544,11 +669,6 @@
 | 
			
		||||
    "version": "16.2",
 | 
			
		||||
    "date": "2025-09-08T14:03:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "theonedev/onedev",
 | 
			
		||||
    "version": "v12.0.10",
 | 
			
		||||
    "date": "2025-09-08T13:20:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "evcc-io/evcc",
 | 
			
		||||
    "version": "0.207.6",
 | 
			
		||||
@@ -569,26 +689,11 @@
 | 
			
		||||
    "version": "RELEASE.2025-09-07T16-13-09Z",
 | 
			
		||||
    "date": "2025-09-07T18:53:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "runtipi/runtipi",
 | 
			
		||||
    "version": "nightly",
 | 
			
		||||
    "date": "2025-09-07T12:25:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Radarr/Radarr",
 | 
			
		||||
    "version": "v5.27.5.10198",
 | 
			
		||||
    "date": "2025-09-03T12:08:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pocketbase/pocketbase",
 | 
			
		||||
    "version": "v0.30.0",
 | 
			
		||||
    "date": "2025-09-07T05:25:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "forgejo/forgejo",
 | 
			
		||||
    "version": "v12.0.3",
 | 
			
		||||
    "date": "2025-09-06T07:01:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Stirling-Tools/Stirling-PDF",
 | 
			
		||||
    "version": "v1.3.2",
 | 
			
		||||
@@ -649,11 +754,6 @@
 | 
			
		||||
    "version": "2.1.1",
 | 
			
		||||
    "date": "2025-06-14T17:45:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Graylog2/graylog2-server",
 | 
			
		||||
    "version": "6.1.15",
 | 
			
		||||
    "date": "2025-09-03T14:51:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "neo4j/neo4j",
 | 
			
		||||
    "version": "5.26.12",
 | 
			
		||||
@@ -664,11 +764,6 @@
 | 
			
		||||
    "version": "cassandra-4.1.10",
 | 
			
		||||
    "date": "2025-09-03T08:46:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "postgres/postgres",
 | 
			
		||||
    "version": "REL_18_RC1",
 | 
			
		||||
    "date": "2025-09-01T20:03:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "project-zot/zot",
 | 
			
		||||
    "version": "v2.1.8",
 | 
			
		||||
@@ -679,26 +774,11 @@
 | 
			
		||||
    "version": "2.6.1",
 | 
			
		||||
    "date": "2025-09-01T19:05:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "outline/outline",
 | 
			
		||||
    "version": "v0.87.3",
 | 
			
		||||
    "date": "2025-09-01T16:25:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "seanmorley15/AdventureLog",
 | 
			
		||||
    "version": "v0.11.0",
 | 
			
		||||
    "date": "2025-09-01T16:19:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "grafana/grafana",
 | 
			
		||||
    "version": "rrc_steady_12.2.0-17245430286.patch1",
 | 
			
		||||
    "date": "2025-09-01T14:19:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "grokability/snipe-it",
 | 
			
		||||
    "version": "v8.3.1",
 | 
			
		||||
    "date": "2025-09-01T11:00:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "crowdsecurity/crowdsec",
 | 
			
		||||
    "version": "v1.7.0",
 | 
			
		||||
@@ -714,11 +794,6 @@
 | 
			
		||||
    "version": "v2.1.0",
 | 
			
		||||
    "date": "2025-08-29T12:56:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "saltstack/salt",
 | 
			
		||||
    "version": "v3007.7",
 | 
			
		||||
    "date": "2025-08-29T01:19:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "linkwarden/linkwarden",
 | 
			
		||||
    "version": "v2.12.2",
 | 
			
		||||
@@ -744,31 +819,11 @@
 | 
			
		||||
    "version": "v1.9.2",
 | 
			
		||||
    "date": "2025-08-28T07:06:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pocket-id/pocket-id",
 | 
			
		||||
    "version": "v1.10.0",
 | 
			
		||||
    "date": "2025-08-27T20:35:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ipfs/kubo",
 | 
			
		||||
    "version": "v0.37.0",
 | 
			
		||||
    "date": "2025-08-27T20:03:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "advplyr/audiobookshelf",
 | 
			
		||||
    "version": "v2.29.0",
 | 
			
		||||
    "date": "2025-08-25T22:43:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sabnzbd/sabnzbd",
 | 
			
		||||
    "version": "4.5.3",
 | 
			
		||||
    "date": "2025-08-25T13:59:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zabbix/zabbix",
 | 
			
		||||
    "version": "7.4.2",
 | 
			
		||||
    "date": "2025-08-25T12:38:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "plexguide/Huntarr.io",
 | 
			
		||||
    "version": "8.2.10",
 | 
			
		||||
@@ -799,36 +854,6 @@
 | 
			
		||||
    "version": "v1.2.4",
 | 
			
		||||
    "date": "2025-08-22T07:40:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "traccar/traccar",
 | 
			
		||||
    "version": "v6.9.1",
 | 
			
		||||
    "date": "2025-08-22T04:04:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cloudflare/cloudflared",
 | 
			
		||||
    "version": "2025.8.1",
 | 
			
		||||
    "date": "2025-08-21T15:39:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gethomepage/homepage",
 | 
			
		||||
    "version": "v1.4.6",
 | 
			
		||||
    "date": "2025-08-21T14:05:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "openhab/openhab-core",
 | 
			
		||||
    "version": "4.3.7",
 | 
			
		||||
    "date": "2025-08-20T10:26:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.1.2.0-2.1.2.0_beta_2025-08-20",
 | 
			
		||||
    "date": "2025-08-20T08:15:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TwiN/gatus",
 | 
			
		||||
    "version": "v5.23.2",
 | 
			
		||||
    "date": "2025-08-19T21:24:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "karlomikus/bar-assistant",
 | 
			
		||||
    "version": "v5.8.0",
 | 
			
		||||
@@ -894,11 +919,6 @@
 | 
			
		||||
    "version": "v2.5.308",
 | 
			
		||||
    "date": "2025-08-13T07:09:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bluenviron/mediamtx",
 | 
			
		||||
    "version": "v1.14.0",
 | 
			
		||||
    "date": "2025-08-12T13:58:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "slskd/slskd",
 | 
			
		||||
    "version": "0.23.2",
 | 
			
		||||
@@ -919,11 +939,6 @@
 | 
			
		||||
    "version": "mariadb-12.0.2",
 | 
			
		||||
    "date": "2025-08-07T21:23:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Athou/commafeed",
 | 
			
		||||
    "version": "5.11.0",
 | 
			
		||||
    "date": "2025-08-06T21:14:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bastienwirtz/homer",
 | 
			
		||||
    "version": "v25.08.1",
 | 
			
		||||
@@ -1089,11 +1104,6 @@
 | 
			
		||||
    "version": "v2.18.0",
 | 
			
		||||
    "date": "2025-06-24T08:29:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "itsmng/itsm-ng",
 | 
			
		||||
    "version": "v2.0.7",
 | 
			
		||||
    "date": "2025-06-23T14:35:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "clusterzx/paperless-ai",
 | 
			
		||||
    "version": "v3.0.7",
 | 
			
		||||
@@ -1194,11 +1204,6 @@
 | 
			
		||||
    "version": "v0.2.3",
 | 
			
		||||
    "date": "2025-05-10T21:14:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "getumbrel/umbrel",
 | 
			
		||||
    "version": "1.4.2",
 | 
			
		||||
    "date": "2025-05-09T08:54:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ZoeyVid/NPMplus",
 | 
			
		||||
    "version": "2025-05-07-r1",
 | 
			
		||||
@@ -1239,11 +1244,6 @@
 | 
			
		||||
    "version": "v0.2.11",
 | 
			
		||||
    "date": "2025-04-12T21:13:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "thomiceli/opengist",
 | 
			
		||||
    "version": "v1.10.0",
 | 
			
		||||
    "date": "2025-04-07T14:32:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "azukaar/Cosmos-Server",
 | 
			
		||||
    "version": "v0.18.4",
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 4,
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 18,
 | 
			
		||||
        "hdd": 25,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 6,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
@@ -33,11 +33,19 @@
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Database credentials: `cat zabbix.creds`",
 | 
			
		||||
      "text": "Database credentials: `cat ~/zabbix.creds`",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Zabbix agent 2 is used by default",
 | 
			
		||||
      "text": "You can choose between Zabbix agent (classic) and agent2 (modern) during installation",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "For agent2 the PostgreSQL plugin is installed by default; all plugins are optional",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "If agent2 with NVIDIA plugin is installed in an environment without GPU, the installer disables it automatically",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
 
 | 
			
		||||
@@ -13,9 +13,7 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing AdGuard Home"
 | 
			
		||||
$STD tar zxvf <(curl -fsSL https://static.adtidy.org/adguardhome/release/AdGuardHome_linux_amd64.tar.gz) -C /opt
 | 
			
		||||
msg_ok "Installed AdGuard Home"
 | 
			
		||||
fetch_and_deploy_gh_release "AdGuardHome" "AdguardTeam/AdGuardHome" "prebuild" "latest" "/opt/AdGuardHome" "AdGuardHome_linux_amd64.tar.gz"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/AdGuardHome.service
 | 
			
		||||
@@ -45,6 +43,7 @@ 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"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										70
									
								
								install/alpine-caddy-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								install/alpine-caddy-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: cobalt (cobaltgit)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://caddyserver.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Caddy"
 | 
			
		||||
$STD apk add --no-cache caddy caddy-openrc
 | 
			
		||||
cat <<EOF >/etc/caddy/Caddyfile
 | 
			
		||||
:80 {
 | 
			
		||||
        # Set this path to your site's directory.
 | 
			
		||||
        root * /var/www/html
 | 
			
		||||
 | 
			
		||||
        # Enable the static file server.
 | 
			
		||||
        file_server
 | 
			
		||||
 | 
			
		||||
        # Another common task is to set up a reverse proxy:
 | 
			
		||||
        # reverse_proxy localhost:8080
 | 
			
		||||
 | 
			
		||||
        # Or serve a PHP site through php-fpm:
 | 
			
		||||
        # php_fastcgi localhost:9000
 | 
			
		||||
}
 | 
			
		||||
EOF
 | 
			
		||||
mkdir -p /var/www/html
 | 
			
		||||
cat <<EOF >/var/www/html/index.html
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <title>Caddy works!</title>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <h1>Hello Caddy!</h1>
 | 
			
		||||
    <p>For more information, refer to the Caddy <a href="https://caddyserver.com/docs/">documentation</a><p>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
EOF
 | 
			
		||||
msg_ok "Installed Caddy"
 | 
			
		||||
 | 
			
		||||
read -r -p "${TAB3}Would you like to install xCaddy Addon? <y/N> " prompt
 | 
			
		||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  GO_VERSION="$(curl -fsSL https://go.dev/VERSION?m=text | head -1 | cut -c3-)" setup_go
 | 
			
		||||
  msg_info "Setup xCaddy"
 | 
			
		||||
  cd /opt
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/caddyserver/xcaddy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  curl -fsSL "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${RELEASE:1}_linux_amd64.tar.gz" -o "xcaddy_${RELEASE:1}_linux_amd64.tar.gz"
 | 
			
		||||
  $STD tar xzf xcaddy_"${RELEASE:1}"_linux_amd64.tar.gz -C /usr/local/bin xcaddy
 | 
			
		||||
  rm -rf /opt/xcaddy*
 | 
			
		||||
  $STD xcaddy build
 | 
			
		||||
  msg_ok "Setup xCaddy"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Enabling Caddy Service"
 | 
			
		||||
$STD rc-update add caddy default
 | 
			
		||||
msg_ok "Enabled Caddy Service"
 | 
			
		||||
 | 
			
		||||
msg_info "Starting Caddy"
 | 
			
		||||
$STD service caddy start
 | 
			
		||||
msg_ok "Started Caddy"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
@@ -13,7 +13,7 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
 | 
			
		||||
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz"
 | 
			
		||||
 | 
			
		||||
msg_info "Configuring Blocky"
 | 
			
		||||
if systemctl is-active systemd-resolved >/dev/null 2>&1; then
 | 
			
		||||
 
 | 
			
		||||
@@ -15,11 +15,16 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Cloudflared"
 | 
			
		||||
mkdir -p --mode=0755 /usr/share/keyrings
 | 
			
		||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
 | 
			
		||||
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg >/usr/share/keyrings/cloudflare-main.gpg
 | 
			
		||||
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $VERSION main" >/etc/apt/sources.list.d/cloudflared.list
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y cloudflared
 | 
			
		||||
cat <<EOF >/etc/apt/sources.list.d/cloudflared.sources
 | 
			
		||||
Types: deb
 | 
			
		||||
URIs: https://pkg.cloudflare.com/cloudflared/
 | 
			
		||||
Suites: any
 | 
			
		||||
Components: main
 | 
			
		||||
Signed-By: /usr/share/keyrings/cloudflare-main.gpg
 | 
			
		||||
EOF
 | 
			
		||||
$STD apt update
 | 
			
		||||
$STD apt install -y cloudflared
 | 
			
		||||
msg_ok "Installed Cloudflared"
 | 
			
		||||
 | 
			
		||||
read -r -p "${TAB3}Would you like to configure cloudflared as a DNS-over-HTTPS (DoH) proxy? <y/N> " prompt
 | 
			
		||||
@@ -61,6 +66,7 @@ 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"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								install/globaleaks-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								install/globaleaks-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Giovanni Pellerano (evilaliv3)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/globaleaks/globaleaks-whistleblowing-software
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Setup GlobaLeaks"
 | 
			
		||||
DISTRO_CODENAME="$(awk -F= '/^VERSION_CODENAME=/{print $2}' /etc/os-release)"
 | 
			
		||||
curl -fsSL https://deb.globaleaks.org/globaleaks.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/globaleaks.gpg
 | 
			
		||||
echo "deb [signed-by=/etc/apt/trusted.gpg.d/globaleaks.gpg] http://deb.globaleaks.org $DISTRO_CODENAME/" >/etc/apt/sources.list.d/globaleaks.list
 | 
			
		||||
echo 'APPARMOR_SANDBOXING=0' >/etc/default/globaleaks
 | 
			
		||||
$STD apt update
 | 
			
		||||
$STD apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install globaleaks
 | 
			
		||||
msg_ok "Setup GlobaLeaks"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -24,26 +24,24 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  $STD caddy stop
 | 
			
		||||
  rm /etc/caddy/Caddyfile
 | 
			
		||||
  cat <<'EOF' >/etc/caddy/Caddyfile
 | 
			
		||||
:{$PORT:80}
 | 
			
		||||
:80
 | 
			
		||||
 | 
			
		||||
redir /admin /admin/
 | 
			
		||||
 | 
			
		||||
handle_path /admin* {
 | 
			
		||||
        root * /opt/headscale-admin
 | 
			
		||||
        encode gzip zstd
 | 
			
		||||
    root * /opt/headscale-admin
 | 
			
		||||
    encode gzip zstd
 | 
			
		||||
 | 
			
		||||
        # Correct MIME types for JS/WASM
 | 
			
		||||
        header {
 | 
			
		||||
                @js_files path *.js
 | 
			
		||||
                @wasm_files path *.wasm
 | 
			
		||||
    header {
 | 
			
		||||
        X-Content-Type-Options nosniff
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
                Content-Type @js_files application/javascript
 | 
			
		||||
                Content-Type @wasm_files application/wasm
 | 
			
		||||
    try_files {path} {path}/ /opt/headscale-admin/index.html
 | 
			
		||||
    file_server
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
                X-Content-Type-Options nosniff
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Fallback for SPA routing
 | 
			
		||||
        try_files {path} {path}/ index.html
 | 
			
		||||
        file_server
 | 
			
		||||
handle /api/* {
 | 
			
		||||
    reverse_proxy localhost:8080
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
EOF
 | 
			
		||||
 
 | 
			
		||||
@@ -15,14 +15,7 @@ update_os
 | 
			
		||||
 | 
			
		||||
setup_uv
 | 
			
		||||
 | 
			
		||||
msg_info "Configuring apt and installing dependencies"
 | 
			
		||||
echo "deb http://deb.debian.org/debian testing main contrib" >/etc/apt/sources.list.d/immich.list
 | 
			
		||||
cat <<EOF >/etc/apt/preferences.d/immich
 | 
			
		||||
Package: *
 | 
			
		||||
Pin: release a=testing
 | 
			
		||||
Pin-Priority: -10
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
msg_info "Installing dependencies"
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install --no-install-recommends -y \
 | 
			
		||||
  git \
 | 
			
		||||
@@ -53,25 +46,33 @@ $STD apt-get install --no-install-recommends -y \
 | 
			
		||||
  libgomp1 \
 | 
			
		||||
  liblqr-1-0 \
 | 
			
		||||
  libltdl7 \
 | 
			
		||||
  libmimalloc2.0 \
 | 
			
		||||
  libmimalloc3 \
 | 
			
		||||
  libopenjp2-7 \
 | 
			
		||||
  meson \
 | 
			
		||||
  ninja-build \
 | 
			
		||||
  pkg-config \
 | 
			
		||||
  cpanminus \
 | 
			
		||||
  mesa-utils \
 | 
			
		||||
  mesa-va-drivers \
 | 
			
		||||
  mesa-vulkan-drivers \
 | 
			
		||||
  ocl-icd-libopencl1 \
 | 
			
		||||
  tini \
 | 
			
		||||
  zlib1g
 | 
			
		||||
  zlib1g \
 | 
			
		||||
  libio-compress-brotli-perl \
 | 
			
		||||
  libwebp7 \
 | 
			
		||||
  libwebpdemux2 \
 | 
			
		||||
  libwebpmux3 \
 | 
			
		||||
  libhwy1t64 \
 | 
			
		||||
  libdav1d-dev \
 | 
			
		||||
  libhwy-dev \
 | 
			
		||||
  libwebp-dev \
 | 
			
		||||
  libaom-dev
 | 
			
		||||
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
 | 
			
		||||
DPKG_ARCHITECTURE="$(dpkg --print-architecture)"
 | 
			
		||||
export DPKG_ARCHITECTURE
 | 
			
		||||
cat <<EOF >/etc/apt/sources.list.d/jellyfin.sources
 | 
			
		||||
Types: deb
 | 
			
		||||
URIs: https://repo.jellyfin.org/debian
 | 
			
		||||
Suites: bookworm
 | 
			
		||||
Suites: trixie
 | 
			
		||||
Components: main
 | 
			
		||||
Architectures: ${DPKG_ARCHITECTURE}
 | 
			
		||||
Signed-By: /etc/apt/keyrings/jellyfin.gpg
 | 
			
		||||
@@ -93,6 +94,7 @@ read -r -p "${TAB3}Install OpenVINO dependencies for Intel HW-accelerated machin
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  msg_info "Installing OpenVINO dependencies"
 | 
			
		||||
  touch ~/.openvino
 | 
			
		||||
  $STD apt-get install -y --no-install-recommends patchelf
 | 
			
		||||
  tmp_dir=$(mktemp -d)
 | 
			
		||||
  $STD pushd "$tmp_dir"
 | 
			
		||||
  curl -fsSLO https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17384.11/intel-igc-core_1.0.17384.11_amd64.deb
 | 
			
		||||
@@ -100,6 +102,7 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  curl -fsSLO https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/intel-opencl-icd_24.31.30508.7_amd64.deb
 | 
			
		||||
  curl -fsSLO https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/libigdgmm12_22.4.1_amd64.deb
 | 
			
		||||
  $STD apt install -y ./*.deb
 | 
			
		||||
  $STD apt-mark hold libigdgmm12
 | 
			
		||||
  $STD popd
 | 
			
		||||
  rm -rf "$tmp_dir"
 | 
			
		||||
  dpkg -l | grep "intel-opencl-icd" | awk '{print $3}' >~/.intel_version
 | 
			
		||||
@@ -134,27 +137,7 @@ $STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
 | 
			
		||||
} >>~/"$APPLICATION".creds
 | 
			
		||||
msg_ok "Set up Postgresql Database"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Packages from Testing Repo"
 | 
			
		||||
export APT_LISTCHANGES_FRONTEND=none
 | 
			
		||||
export DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
$STD apt-get install -t testing --no-install-recommends -y \
 | 
			
		||||
  libio-compress-brotli-perl \
 | 
			
		||||
  libwebp7 \
 | 
			
		||||
  libwebpdemux2 \
 | 
			
		||||
  libwebpmux3 \
 | 
			
		||||
  libhwy1t64 \
 | 
			
		||||
  libdav1d-dev \
 | 
			
		||||
  libhwy-dev \
 | 
			
		||||
  libwebp-dev \
 | 
			
		||||
  libaom-dev
 | 
			
		||||
if [[ -f ~/.openvino ]]; then
 | 
			
		||||
  $STD apt-get install -t testing -y patchelf
 | 
			
		||||
fi
 | 
			
		||||
msg_ok "Packages from Testing Repo Installed"
 | 
			
		||||
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER DATABASE postgres REFRESH COLLATION VERSION;"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME REFRESH COLLATION VERSION;"
 | 
			
		||||
 | 
			
		||||
msg_info "Compiling Custom Photo-processing Library (extreme patience)"
 | 
			
		||||
LD_LIBRARY_PATH=/usr/local/lib
 | 
			
		||||
export LD_RUN_PATH=/usr/local/lib
 | 
			
		||||
STAGING_DIR=/opt/staging
 | 
			
		||||
@@ -169,8 +152,7 @@ cd "$STAGING_DIR"
 | 
			
		||||
SOURCE=${SOURCE_DIR}/libjxl
 | 
			
		||||
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
 | 
			
		||||
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
 | 
			
		||||
# : "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}"
 | 
			
		||||
: "${LIBJXL_REVISION:=794a5dcf0d54f9f0b20d288a12e87afb91d20dfc}"
 | 
			
		||||
: "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}"
 | 
			
		||||
$STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
 | 
			
		||||
cd "$SOURCE"
 | 
			
		||||
$STD git reset --hard "$LIBJXL_REVISION"
 | 
			
		||||
@@ -207,8 +189,7 @@ msg_ok "(1/5) Compiled libjxl"
 | 
			
		||||
 | 
			
		||||
msg_info "(2/5) Compiling libheif"
 | 
			
		||||
SOURCE=${SOURCE_DIR}/libheif
 | 
			
		||||
# : "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}"
 | 
			
		||||
: "${LIBHEIF_REVISION:=35dad50a9145332a7bfdf1ff6aef6801fb613d68}"
 | 
			
		||||
: "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}"
 | 
			
		||||
$STD git clone https://github.com/strukturag/libheif.git "$SOURCE"
 | 
			
		||||
cd "$SOURCE"
 | 
			
		||||
$STD git reset --hard "$LIBHEIF_REVISION"
 | 
			
		||||
@@ -233,8 +214,7 @@ msg_ok "(2/5) Compiled libheif"
 | 
			
		||||
 | 
			
		||||
msg_info "(3/5) Compiling libraw"
 | 
			
		||||
SOURCE=${SOURCE_DIR}/libraw
 | 
			
		||||
# : "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}"
 | 
			
		||||
: "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}"
 | 
			
		||||
: "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}"
 | 
			
		||||
$STD git clone https://github.com/libraw/libraw.git "$SOURCE"
 | 
			
		||||
cd "$SOURCE"
 | 
			
		||||
$STD git reset --hard "$LIBRAW_REVISION"
 | 
			
		||||
@@ -249,12 +229,11 @@ msg_ok "(3/5) Compiled libraw"
 | 
			
		||||
 | 
			
		||||
msg_info "(4/5) Compiling imagemagick"
 | 
			
		||||
SOURCE=$SOURCE_DIR/imagemagick
 | 
			
		||||
# : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}"
 | 
			
		||||
: "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}"
 | 
			
		||||
: "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}"
 | 
			
		||||
$STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
 | 
			
		||||
cd "$SOURCE"
 | 
			
		||||
$STD git reset --hard "$IMAGEMAGICK_REVISION"
 | 
			
		||||
$STD ./configure --with-modules
 | 
			
		||||
$STD ./configure --with-modules CPPFLAGS="-DMAGICK_LIBRAW_VERSION_TAIL=202502"
 | 
			
		||||
$STD make -j"$(nproc)"
 | 
			
		||||
$STD make install
 | 
			
		||||
ldconfig /usr/local/lib
 | 
			
		||||
@@ -264,8 +243,7 @@ msg_ok "(4/5) Compiled imagemagick"
 | 
			
		||||
 | 
			
		||||
msg_info "(5/5) Compiling libvips"
 | 
			
		||||
SOURCE=$SOURCE_DIR/libvips
 | 
			
		||||
# : "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
 | 
			
		||||
: "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
 | 
			
		||||
: "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
 | 
			
		||||
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
 | 
			
		||||
cd "$SOURCE"
 | 
			
		||||
$STD git reset --hard "$LIBVIPS_REVISION"
 | 
			
		||||
@@ -294,7 +272,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
 | 
			
		||||
mkdir -p "$INSTALL_DIR"
 | 
			
		||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.142.1" "$SRC_DIR"
 | 
			
		||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.143.1" "$SRC_DIR"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing ${APPLICATION} (patience)"
 | 
			
		||||
 | 
			
		||||
@@ -314,6 +292,7 @@ sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
 | 
			
		||||
 | 
			
		||||
# openapi & web build
 | 
			
		||||
cd "$SRC_DIR"
 | 
			
		||||
echo "packageImportMethod: hardlink" >>./pnpm-workspace.yaml
 | 
			
		||||
$STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
 | 
			
		||||
$STD pnpm --filter @immich/sdk --filter immich-web build
 | 
			
		||||
cp -a web/build "$APP_DIR"/www
 | 
			
		||||
@@ -326,16 +305,17 @@ $STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
 | 
			
		||||
msg_ok "Installed Immich Server and Web Components"
 | 
			
		||||
 | 
			
		||||
cd "$SRC_DIR"/machine-learning
 | 
			
		||||
mkdir -p "$ML_DIR"
 | 
			
		||||
$STD useradd -U -s /usr/sbin/nologin -r -M -d "$INSTALL_DIR" immich
 | 
			
		||||
mkdir -p "$ML_DIR" && chown -R immich:immich "$INSTALL_DIR"
 | 
			
		||||
export VIRTUAL_ENV="${ML_DIR}/ml-venv"
 | 
			
		||||
if [[ -f ~/.openvino ]]; then
 | 
			
		||||
  msg_info "Installing HW-accelerated machine-learning"
 | 
			
		||||
  $STD uv sync --extra openvino --no-cache --active
 | 
			
		||||
  $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra openvino --active -n -p python3.11 --managed-python
 | 
			
		||||
  patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
 | 
			
		||||
  msg_ok "Installed HW-accelerated machine-learning"
 | 
			
		||||
else
 | 
			
		||||
  msg_info "Installing machine-learning"
 | 
			
		||||
  $STD uv sync --extra cpu --no-cache --active
 | 
			
		||||
  $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra cpu --active -n -p python3.11 --managed-python
 | 
			
		||||
  msg_ok "Installed machine-learning"
 | 
			
		||||
fi
 | 
			
		||||
cd "$SRC_DIR"
 | 
			
		||||
@@ -374,8 +354,7 @@ mkdir -p /var/log/immich
 | 
			
		||||
touch /var/log/immich/{web.log,ml.log}
 | 
			
		||||
msg_ok "Installed ${APPLICATION}"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating user, env file, scripts & services"
 | 
			
		||||
$STD useradd -U -s /usr/sbin/nologin -r -M -d "$INSTALL_DIR" immich
 | 
			
		||||
msg_info "Modifying user, creating env file, scripts & services"
 | 
			
		||||
usermod -aG video,render immich
 | 
			
		||||
 | 
			
		||||
cat <<EOF >"${INSTALL_DIR}"/.env
 | 
			
		||||
@@ -464,11 +443,8 @@ WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
chown -R immich:immich "$INSTALL_DIR" /var/log/immich
 | 
			
		||||
systemctl enable -q --now "$APPLICATION"-ml.service "$APPLICATION"-web.service
 | 
			
		||||
msg_ok "Created user, env file, scripts and services"
 | 
			
		||||
msg_ok "Modified user, created env file, scripts and services"
 | 
			
		||||
 | 
			
		||||
sed -i "$ a VERSION_ID=12" /etc/os-release # otherwise the motd_ssh function will fail
 | 
			
		||||
cp /etc/debian_version ~/.debian_version.bak
 | 
			
		||||
sed -i 's/.*/13.0/' /etc/debian_version
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,12 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt install -y \
 | 
			
		||||
  build-essential \
 | 
			
		||||
  python3-dev
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
PG_VERSION="17" setup_postgresql
 | 
			
		||||
PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
 | 
			
		||||
@@ -75,6 +81,7 @@ 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"
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ msg_info "Installing dependencies"
 | 
			
		||||
$STD apt-get install --no-install-recommends -y build-essential
 | 
			
		||||
msg_ok "Installed dependencies"
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="20" setup_nodejs
 | 
			
		||||
NODE_VERSION="22" setup_nodejs
 | 
			
		||||
MYSQL_VERSION="8.0" setup_mysql
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Database"
 | 
			
		||||
@@ -48,7 +48,7 @@ sed -i -e 's|db|localhost|' \
 | 
			
		||||
  -e "s|=PASSWORD|=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9' | head -c40)|" \
 | 
			
		||||
  /opt/mmdl/.env
 | 
			
		||||
cd /opt/mmdl
 | 
			
		||||
export NEXT_TELEMETRY_DISABLE=1
 | 
			
		||||
export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
export CI="true"
 | 
			
		||||
$STD npm install
 | 
			
		||||
$STD npm run migrate
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ update_os
 | 
			
		||||
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="dom,gmp,iconv,mysqli,pdo-mysql,redis,tokenizer" setup_php
 | 
			
		||||
setup_composer
 | 
			
		||||
setup_mariadb
 | 
			
		||||
NODE_VERSION="20" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up MariaDB"
 | 
			
		||||
DB_NAME=monica
 | 
			
		||||
 
 | 
			
		||||
@@ -48,7 +48,7 @@ msg_ok "Installed Open WebUI"
 | 
			
		||||
read -r -p "${TAB3}Would you like to add Ollama? <y/N> " prompt
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  msg_info "Installing Ollama"
 | 
			
		||||
  curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
 | 
			
		||||
  curl -fsSLO -C - https://ollama.com/download/ollama-linux-amd64.tgz
 | 
			
		||||
  tar -C /usr -xzf ollama-linux-amd64.tgz
 | 
			
		||||
  rm -rf ollama-linux-amd64.tgz
 | 
			
		||||
  cat <<EOF >/etc/systemd/system/ollama.service
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ $STD apt-get install -y \
 | 
			
		||||
  redis
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="20" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
PG_VERSION="16" setup_postgresql
 | 
			
		||||
 | 
			
		||||
msg_info "Set up PostgreSQL Database"
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ $STD apt-get install -y \
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
setup_mariadb
 | 
			
		||||
PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="common,mysql,fpm,redis" setup_php
 | 
			
		||||
PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="common,mysql,redis" setup_php
 | 
			
		||||
setup_composer
 | 
			
		||||
fetch_and_deploy_gh_release "paymenter" "paymenter/paymenter" "prebuild" "latest" "/opt/paymenter" "paymenter.tar.gz"
 | 
			
		||||
chmod -R 755 /opt/paymenter/storage/* /opt/paymenter/bootstrap/cache/
 | 
			
		||||
@@ -30,7 +30,7 @@ msg_info "Setting up database"
 | 
			
		||||
DB_NAME=paymenter
 | 
			
		||||
DB_USER=paymenter
 | 
			
		||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
 | 
			
		||||
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
 | 
			
		||||
mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb mysql
 | 
			
		||||
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
 | 
			
		||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
 | 
			
		||||
$STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost' WITH GRANT OPTION;"
 | 
			
		||||
@@ -108,8 +108,8 @@ RestartSec=5s
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable --now paymenter
 | 
			
		||||
systemctl enable --now redis-server
 | 
			
		||||
systemctl enable -q --now paymenter
 | 
			
		||||
systemctl enable -q --now redis-server
 | 
			
		||||
msg_ok "Setup Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
 
 | 
			
		||||
@@ -30,12 +30,13 @@ $STD apt-get install -y clickhouse-server clickhouse-client
 | 
			
		||||
msg_ok "Setup ClickHouse"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Zookeeper"
 | 
			
		||||
curl -fsSL "https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz" -o "$HOME/zookeeper.tar.gz"
 | 
			
		||||
ZOOURL=$(curl -fsSL https://dlcdn.apache.org/zookeeper/current/ | grep -o 'apache-zookeeper-[0-9.]\+-bin\.tar\.gz' | head -n1)
 | 
			
		||||
curl -fsSL "https://dlcdn.apache.org/zookeeper/current/$ZOOURL" -o ~/zookeeper.tar.gz
 | 
			
		||||
tar -xzf "$HOME/zookeeper.tar.gz" -C "$HOME"
 | 
			
		||||
mkdir -p /opt/zookeeper
 | 
			
		||||
mkdir -p /var/lib/zookeeper
 | 
			
		||||
mkdir -p /var/log/zookeeper
 | 
			
		||||
cp -r ~/apache-zookeeper-3.8.4-bin/* /opt/zookeeper
 | 
			
		||||
cp -r ~/apache-zookeeper-*-bin/* /opt/zookeeper
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/opt/zookeeper/conf/zoo.cfg
 | 
			
		||||
tickTime=2000
 | 
			
		||||
@@ -104,8 +105,8 @@ fetch_and_deploy_gh_release "signoz-schema-migrator" "SigNoz/signoz-otel-collect
 | 
			
		||||
 | 
			
		||||
msg_info "Running ClickHouse migrations"
 | 
			
		||||
cd /opt/signoz-schema-migrator/bin
 | 
			
		||||
$STD ./signoz-schema-migrator sync --dsn="tcp://localhost:9000?password=" --replication=true  --up=
 | 
			
		||||
$STD ./signoz-schema-migrator async --dsn="tcp://localhost:9000?password=" --replication=true  --up=
 | 
			
		||||
$STD ./signoz-schema-migrator sync --dsn="tcp://localhost:9000?password=" --replication=true --up=
 | 
			
		||||
$STD ./signoz-schema-migrator async --dsn="tcp://localhost:9000?password=" --replication=true --up=
 | 
			
		||||
msg_ok "ClickHouse Migrations Completed"
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "signoz" "SigNoz/signoz" "prebuild" "latest" "/opt/signoz" "signoz-community_linux_amd64.tar.gz"
 | 
			
		||||
@@ -256,7 +257,7 @@ customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf ~/zookeeper.tar.gz
 | 
			
		||||
rm -rf ~/apache-zookeeper-3.8.4-bin
 | 
			
		||||
rm -rf ~/apache-zookeeper-*-bin
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -30,9 +30,9 @@ $STD apt-get install -y --no-install-recommends \
 | 
			
		||||
  libxmlsec1-openssl
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="20" NODE_MODULE="yarn" setup_nodejs
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
 | 
			
		||||
fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
 | 
			
		||||
PG_VERSION="16" setup_postgresql
 | 
			
		||||
PG_VERSION="17" PG_MODULES="contrib" setup_postgresql
 | 
			
		||||
PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
 | 
			
		||||
msg_info "Set up PostgreSQL Database"
 | 
			
		||||
@@ -45,6 +45,8 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
 | 
			
		||||
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
 | 
			
		||||
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
 | 
			
		||||
{
 | 
			
		||||
  echo "Tandoor-Credentials"
 | 
			
		||||
  echo "Tandoor Database Name: $DB_NAME"
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ $STD npm install
 | 
			
		||||
$STD npm run build
 | 
			
		||||
mkdir /opt/tracktor-data
 | 
			
		||||
HOST_IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
cat <<EOF >/opt/tracktor/app/backend/.env
 | 
			
		||||
cat <<EOF >/opt/tracktor.env
 | 
			
		||||
NODE_ENV=production
 | 
			
		||||
PUBLIC_DEMO_MODE=false
 | 
			
		||||
DB_PATH=/opt/tracktor-data/tracktor.db
 | 
			
		||||
@@ -31,6 +31,7 @@ PUBLIC_API_BASE_URL=http://$HOST_IP:3000
 | 
			
		||||
# Here add the reverse proxy url as well to avoid cross errors from the app. 
 | 
			
		||||
CORS_ORIGINS=http://$HOST_IP:3000 
 | 
			
		||||
PORT=3000
 | 
			
		||||
AUTH_PIN=123456
 | 
			
		||||
EOF
 | 
			
		||||
msg_ok "Configured Tracktor"
 | 
			
		||||
 | 
			
		||||
@@ -43,7 +44,7 @@ After=network.target
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
WorkingDirectory=/opt/tracktor
 | 
			
		||||
EnvironmentFile=/opt/tracktor/app/backend/.env
 | 
			
		||||
EnvironmentFile=/opt/tracktor.env
 | 
			
		||||
ExecStart=/usr/bin/npm start
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
@@ -56,6 +57,7 @@ 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"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										101
									
								
								install/tunarr-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								install/tunarr-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: chrisbenincasa
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://tunarr.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Setting Up Hardware Acceleration"
 | 
			
		||||
if [[ "$CTTYPE" == "0" ]]; then
 | 
			
		||||
  $STD adduser "$(id -un)" video
 | 
			
		||||
  $STD adduser "$(id -un)" render
 | 
			
		||||
fi
 | 
			
		||||
msg_ok "Base Hardware Acceleration Set Up"
 | 
			
		||||
 | 
			
		||||
read -r -p "${TAB3}Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 13 only)? <y/N> " prompt
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  msg_info "Installing Intel Hardware Acceleration (non-free)"
 | 
			
		||||
  cat <<'EOF' >/etc/apt/sources.list.d/non-free.sources
 | 
			
		||||
Types: deb deb-src
 | 
			
		||||
URIs: http://deb.debian.org/debian
 | 
			
		||||
Suites: trixie
 | 
			
		||||
Components: non-free non-free-firmware
 | 
			
		||||
 | 
			
		||||
Types: deb deb-src
 | 
			
		||||
URIs: http://deb.debian.org/debian-security
 | 
			
		||||
Suites: trixie-security
 | 
			
		||||
Components: non-free non-free-firmware
 | 
			
		||||
 | 
			
		||||
Types: deb deb-src
 | 
			
		||||
URIs: http://deb.debian.org/debian
 | 
			
		||||
Suites: trixie-updates
 | 
			
		||||
Components: non-free non-free-firmware
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
  $STD apt update
 | 
			
		||||
  $STD apt -y install \
 | 
			
		||||
    intel-media-va-driver-non-free \
 | 
			
		||||
    ocl-icd-libopencl1 \
 | 
			
		||||
    mesa-opencl-icd \
 | 
			
		||||
    mesa-va-drivers \
 | 
			
		||||
    libvpl2 \
 | 
			
		||||
    vainfo \
 | 
			
		||||
    intel-gpu-tools
 | 
			
		||||
else
 | 
			
		||||
  msg_info "Installing Intel Hardware Acceleration (open packages)"
 | 
			
		||||
  $STD apt -y install \
 | 
			
		||||
    va-driver-all \
 | 
			
		||||
    ocl-icd-libopencl1 \
 | 
			
		||||
    mesa-opencl-icd \
 | 
			
		||||
    mesa-va-drivers \
 | 
			
		||||
    vainfo \
 | 
			
		||||
    intel-gpu-tools
 | 
			
		||||
fi
 | 
			
		||||
msg_ok "Installed and Set Up Intel Hardware Acceleration"
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "singlefile" "latest" "/opt/tunarr" "*linux-x64"
 | 
			
		||||
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
 | 
			
		||||
 | 
			
		||||
msg_info "Set ErsatzTV-ffmpeg links"
 | 
			
		||||
chmod +x /opt/ErsatzTV-ffmpeg/bin/*
 | 
			
		||||
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffmpeg /usr/bin/ffmpeg
 | 
			
		||||
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffplay /usr/bin/ffplay
 | 
			
		||||
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/bin/ffprobe
 | 
			
		||||
msg_ok "ffmpeg links set"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/tunarr.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Tunarr Service
 | 
			
		||||
After=multi-user.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
User=root
 | 
			
		||||
WorkingDirectory=/opt/tunarr
 | 
			
		||||
ExecStart=/opt/tunarr/tunarr
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=30
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now tunarr
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
							
								
								
									
										56
									
								
								install/upsnap-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								install/upsnap-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
#!/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/seriousm4x/UpSnap
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
  nmap \
 | 
			
		||||
  samba \
 | 
			
		||||
  samba-common-bin \
 | 
			
		||||
  openssh-client \
 | 
			
		||||
  openssh-server \
 | 
			
		||||
  sshpass
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "upsnap" "seriousm4x/UpSnap" "prebuild" "latest" "/opt/upsnap" "UpSnap_*_linux_amd64.zip"
 | 
			
		||||
setcap 'cap_net_raw=+ep' /opt/upsnap/upsnap
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/upsnap.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=UpSnap Service
 | 
			
		||||
Documentation=https://github.com/seriousm4x/UpSnap/wiki
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
User=root
 | 
			
		||||
Restart=on-failure
 | 
			
		||||
WorkingDirectory=/opt/upsnap
 | 
			
		||||
ExecStart=/opt/upsnap/upsnap serve --http=0.0.0.0:8090
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now upsnap
 | 
			
		||||
msg_ok "Service Created"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -13,20 +13,61 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
PG_VERSION="17" setup_postgresql
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Zabbix"
 | 
			
		||||
cd /tmp
 | 
			
		||||
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
 | 
			
		||||
  grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
 | 
			
		||||
  xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb")" \
 | 
			
		||||
  -o /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
$STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts
 | 
			
		||||
$STD apt-get install -y zabbix-agent2 zabbix-agent2-plugin-*
 | 
			
		||||
  xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
 | 
			
		||||
  -o /tmp/zabbix-release_latest+debian13_all.deb
 | 
			
		||||
$STD dpkg -i /tmp/zabbix-release_latest+debian13_all.deb
 | 
			
		||||
$STD apt update
 | 
			
		||||
$STD apt install -y zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql zabbix-apache-conf zabbix-sql-scripts
 | 
			
		||||
msg_ok "Installed Zabbix"
 | 
			
		||||
 | 
			
		||||
while true; do
 | 
			
		||||
  read -rp "Which agent do you want to install? [1=agent (classic), 2=agent2 (modern), default=1]: " AGENT_CHOICE
 | 
			
		||||
  case "$AGENT_CHOICE" in
 | 
			
		||||
  2)
 | 
			
		||||
    AGENT_PKG="zabbix-agent2"
 | 
			
		||||
    break
 | 
			
		||||
    ;;
 | 
			
		||||
  "" | 1)
 | 
			
		||||
    AGENT_PKG="zabbix-agent"
 | 
			
		||||
    break
 | 
			
		||||
    ;;
 | 
			
		||||
  *)
 | 
			
		||||
    echo "Invalid choice. Please enter 1 or 2."
 | 
			
		||||
    ;;
 | 
			
		||||
  esac
 | 
			
		||||
done
 | 
			
		||||
msg_ok "Selected $AGENT_PKG"
 | 
			
		||||
 | 
			
		||||
if [ "$AGENT_PKG" = "zabbix-agent2" ]; then
 | 
			
		||||
  echo "Choose plugins for Zabbix Agent2:"
 | 
			
		||||
  echo "1) PostgreSQL only (default, recommended)"
 | 
			
		||||
  echo "2) All plugins (may cause issues)"
 | 
			
		||||
  read -rp "Choose option [1-2]: " PLUGIN_CHOICE
 | 
			
		||||
 | 
			
		||||
  case "$PLUGIN_CHOICE" in
 | 
			
		||||
  2)
 | 
			
		||||
    $STD apt install -y zabbix-agent2 zabbix-agent2-plugin-*
 | 
			
		||||
    ;;
 | 
			
		||||
  *)
 | 
			
		||||
    $STD apt install -y zabbix-agent2 zabbix-agent2-plugin-postgresql
 | 
			
		||||
    ;;
 | 
			
		||||
  esac
 | 
			
		||||
 | 
			
		||||
  if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
 | 
			
		||||
    sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
 | 
			
		||||
      /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
 | 
			
		||||
  fi
 | 
			
		||||
else
 | 
			
		||||
  $STD apt install -y zabbix-agent
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up PostgreSQL"
 | 
			
		||||
$STD apt-get install -y postgresql
 | 
			
		||||
DB_NAME=zabbixdb
 | 
			
		||||
DB_USER=zabbix
 | 
			
		||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
 | 
			
		||||
@@ -35,18 +76,31 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCO
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
 | 
			
		||||
{
 | 
			
		||||
  echo "Zabbix-Credentials"
 | 
			
		||||
  echo "Zabbix Database User: $DB_USER"
 | 
			
		||||
  echo "Zabbix Database Password: $DB_PASS"
 | 
			
		||||
  echo "Zabbix Database Name: $DB_NAME"
 | 
			
		||||
} >>~/zabbix.creds
 | 
			
		||||
 | 
			
		||||
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u $DB_USER psql $DB_NAME &>/dev/null
 | 
			
		||||
sed -i "s/^DBName=.*/DBName=$DB_NAME/" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
sed -i "s/^DBUser=.*/DBUser=$DB_USER/" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
sed -i "s/^# DBPassword=.*/DBPassword=$DB_PASS/" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
echo "" >~/zabbix.creds
 | 
			
		||||
echo "zabbix Database Credentials" >>~/zabbix.creds
 | 
			
		||||
echo "" >>~/zabbix.creds
 | 
			
		||||
echo -e "zabbix Database User: \e[32m$DB_USER\e[0m" >>~/zabbix.creds
 | 
			
		||||
echo -e "zabbix Database Password: \e[32m$DB_PASS\e[0m" >>~/zabbix.creds
 | 
			
		||||
echo -e "zabbix Database Name: \e[32m$DB_NAME\e[0m" >>~/zabbix.creds
 | 
			
		||||
msg_ok "Set up PostgreSQL"
 | 
			
		||||
 | 
			
		||||
msg_info "Configuring Fping"
 | 
			
		||||
if command -v fping >/dev/null 2>&1; then
 | 
			
		||||
  FPING_PATH=$(command -v fping)
 | 
			
		||||
  sed -i "s|^#\?FpingLocation=.*|FpingLocation=$FPING_PATH|" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if command -v fping6 >/dev/null 2>&1; then
 | 
			
		||||
  FPING6_PATH=$(command -v fping6)
 | 
			
		||||
  sed -i "s|^#\?Fping6Location=.*|Fping6Location=$FPING6_PATH|" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
fi
 | 
			
		||||
msg_ok "Configured Fping"
 | 
			
		||||
 | 
			
		||||
msg_info "Starting Services"
 | 
			
		||||
systemctl restart zabbix-server zabbix-agent2 apache2
 | 
			
		||||
systemctl enable -q --now zabbix-server zabbix-agent2 apache2
 | 
			
		||||
@@ -56,7 +110,8 @@ motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -42,11 +42,11 @@ error_handler() {
 | 
			
		||||
  echo -e "\n$error_message\n"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Check if the shell is using bash
 | 
			
		||||
# Check if the current shell is using bash
 | 
			
		||||
shell_check() {
 | 
			
		||||
  if [[ "$(basename "$SHELL")" != "bash" ]]; then
 | 
			
		||||
  if [[ "$(ps -p $$ -o comm=)" != "bash" ]]; then
 | 
			
		||||
    clear
 | 
			
		||||
    msg_error "Your default shell is currently not set to Bash. To use these scripts, please switch to the Bash shell."
 | 
			
		||||
    msg_error "Your default shell is not bash. Please report this to our github issues or discord."
 | 
			
		||||
    echo -e "\nExiting..."
 | 
			
		||||
    sleep 2
 | 
			
		||||
    exit
 | 
			
		||||
 
 | 
			
		||||
@@ -306,6 +306,9 @@ function fetch_and_deploy_gh_release() {
 | 
			
		||||
 | 
			
		||||
  msg_info "Fetching GitHub release: $app ($version)"
 | 
			
		||||
 | 
			
		||||
  local clean_install=false
 | 
			
		||||
  [[ -n "${CLEAN_INSTALL:-}" && "$CLEAN_INSTALL" == "1" ]] && clean_install=true
 | 
			
		||||
 | 
			
		||||
  ### Tarball Mode ###
 | 
			
		||||
  if [[ "$mode" == "tarball" || "$mode" == "source" ]]; then
 | 
			
		||||
    url=$(echo "$json" | jq -r '.tarball_url // empty')
 | 
			
		||||
@@ -319,6 +322,10 @@ function fetch_and_deploy_gh_release() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    mkdir -p "$target"
 | 
			
		||||
    if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
 | 
			
		||||
      rm -rf "${target:?}/"*
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    tar -xzf "$tmpdir/$filename" -C "$tmpdir"
 | 
			
		||||
    local unpack_dir
 | 
			
		||||
    unpack_dir=$(find "$tmpdir" -mindepth 1 -maxdepth 1 -type d | head -n1)
 | 
			
		||||
@@ -388,7 +395,7 @@ function fetch_and_deploy_gh_release() {
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  ### Prebuild Mode ###
 | 
			
		||||
    ### Prebuild Mode ###
 | 
			
		||||
  elif [[ "$mode" == "prebuild" ]]; then
 | 
			
		||||
    local pattern="${6%\"}"
 | 
			
		||||
    pattern="${pattern#\"}"
 | 
			
		||||
@@ -425,6 +432,9 @@ function fetch_and_deploy_gh_release() {
 | 
			
		||||
    local unpack_tmp
 | 
			
		||||
    unpack_tmp=$(mktemp -d)
 | 
			
		||||
    mkdir -p "$target"
 | 
			
		||||
    if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
 | 
			
		||||
      rm -rf "${target:?}/"*
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ "$filename" == *.zip ]]; then
 | 
			
		||||
      if ! command -v unzip &>/dev/null; then
 | 
			
		||||
@@ -1322,7 +1332,7 @@ function setup_mysql() {
 | 
			
		||||
  CURRENT_OS="$(awk -F= '/^ID=/{print $2}' /etc/os-release)"
 | 
			
		||||
 | 
			
		||||
  if command -v mysql >/dev/null; then
 | 
			
		||||
    CURRENT_VERSION="$(mysql --version | grep -oP 'Distrib\s+\K[0-9]+\.[0-9]+')"
 | 
			
		||||
    CURRENT_VERSION="$(mysql --version | grep -oP '[0-9]+\.[0-9]+' | head -n1)"
 | 
			
		||||
    if [[ "$CURRENT_VERSION" != "$MYSQL_VERSION" ]]; then
 | 
			
		||||
      $STD msg_info "MySQL $CURRENT_VERSION will be upgraded to $MYSQL_VERSION"
 | 
			
		||||
      NEED_INSTALL=true
 | 
			
		||||
@@ -1960,9 +1970,8 @@ function setup_uv() {
 | 
			
		||||
    export PATH="/usr/local/bin:$PATH"
 | 
			
		||||
  fi
 | 
			
		||||
  ensure_usr_local_bin_persist
 | 
			
		||||
  if ! $STD uv python update-shell; then
 | 
			
		||||
    msg_error "uv shell integration failed – continuing anyway"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  $STD uv python update-shell >/dev/null 2>&1 || true
 | 
			
		||||
  msg_ok "Setup uv $LATEST_VERSION"
 | 
			
		||||
 | 
			
		||||
  # Optional: install specific Python version
 | 
			
		||||
@@ -2012,6 +2021,8 @@ function setup_yq() {
 | 
			
		||||
    }
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  [[ ":$PATH:" != *":/usr/local/bin:"* ]] && echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc && source ~/.bashrc
 | 
			
		||||
 | 
			
		||||
  if command -v yq &>/dev/null; then
 | 
			
		||||
    if ! yq --version 2>&1 | grep -q 'mikefarah'; then
 | 
			
		||||
      rm -f "$(command -v yq)"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										84
									
								
								tools/pve/execute.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								tools/pve/execute.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,84 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: jeroenzwart
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
function header_info() {
 | 
			
		||||
  clear
 | 
			
		||||
  cat <<"EOF"
 | 
			
		||||
     ______                     __          __   _  ________
 | 
			
		||||
   / ____/  _____  _______  __/ /____     / /  | |/ / ____/
 | 
			
		||||
  / __/ | |/_/ _ \/ ___/ / / / __/ _ \   / /   |   / /     
 | 
			
		||||
 / /____>  </  __/ /__/ /_/ / /_/  __/  / /___/   / /___   
 | 
			
		||||
/_____/_/|_|\___/\___/\__,_/\__/\___/  /_____/_/|_\____/   
 | 
			
		||||
                                                           
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
set -eEuo pipefail
 | 
			
		||||
BL=$(echo "\033[36m")
 | 
			
		||||
RD=$(echo "\033[01;31m")
 | 
			
		||||
CM='\xE2\x9C\x94\033'
 | 
			
		||||
GN=$(echo "\033[1;92m")
 | 
			
		||||
CL=$(echo "\033[m")
 | 
			
		||||
header_info
 | 
			
		||||
echo "Loading..."
 | 
			
		||||
whiptail --backtitle "Proxmox VE Helper Scripts" --title "Proxmox VE LXC Execute" --yesno "This will execute a command inside selected LXC Containers. Proceed?" 10 58
 | 
			
		||||
NODE=$(hostname)
 | 
			
		||||
EXCLUDE_MENU=()
 | 
			
		||||
MSG_MAX_LENGTH=0
 | 
			
		||||
while read -r TAG ITEM; do
 | 
			
		||||
  OFFSET=2
 | 
			
		||||
  ((${#ITEM} + OFFSET > MSG_MAX_LENGTH)) && MSG_MAX_LENGTH=${#ITEM}+OFFSET
 | 
			
		||||
  EXCLUDE_MENU+=("$TAG" "$ITEM " "OFF")
 | 
			
		||||
done < <(pct list | awk 'NR>1')
 | 
			
		||||
excluded_containers=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Containers on $NODE" --checklist "\nSelect containers to skip from executing:\n" \
 | 
			
		||||
  16 $((MSG_MAX_LENGTH + 23)) 6 "${EXCLUDE_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"')
 | 
			
		||||
 | 
			
		||||
if [ $? -ne 0 ]; then
 | 
			
		||||
  exit
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
read -r -p "Enter here command for inside the containers: " custom_command
 | 
			
		||||
 | 
			
		||||
header_info
 | 
			
		||||
echo "One moment please...\n"
 | 
			
		||||
 | 
			
		||||
function execute_in() {
 | 
			
		||||
  container=$1
 | 
			
		||||
  name=$(pct exec "$container" hostname)
 | 
			
		||||
  echo -e "${BL}[Info]${GN} Execute inside${BL} ${name}${GN} with output: ${CL}"
 | 
			
		||||
  pct exec "$container" -- bash -c "${custom_command}" | tee
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
for container in $(pct list | awk '{if(NR>1) print $1}'); do
 | 
			
		||||
  if [[ " ${excluded_containers[@]} " =~ " $container " ]]; then
 | 
			
		||||
    echo -e "${BL}[Info]${GN} Skipping ${BL}$container${CL}"
 | 
			
		||||
  else
 | 
			
		||||
    os=$(pct config "$container" | awk '/^ostype/ {print $2}')
 | 
			
		||||
    if [ "$os" != "debian" ] && [ "$os" != "ubuntu" ]; then
 | 
			
		||||
      echo -e "${BL}[Info]${GN} Skipping ${name} ${RD}$container is not Debian or Ubuntu ${CL}"
 | 
			
		||||
      continue
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    status=$(pct status "$container")
 | 
			
		||||
    template=$(pct config "$container" | grep -q "template:" && echo "true" || echo "false")
 | 
			
		||||
    if [ "$template" == "false" ] && [ "$status" == "status: stopped" ]; then
 | 
			
		||||
      echo -e "${BL}[Info]${GN} Starting${BL} $container ${CL}"
 | 
			
		||||
      pct start "$container"
 | 
			
		||||
      echo -e "${BL}[Info]${GN} Waiting For${BL} $container${CL}${GN} To Start ${CL}"
 | 
			
		||||
      sleep 5
 | 
			
		||||
      execute_in "$container"
 | 
			
		||||
      echo -e "${BL}[Info]${GN} Shutting down${BL} $container ${CL}"
 | 
			
		||||
      pct shutdown "$container" &
 | 
			
		||||
    elif [ "$status" == "status: running" ]; then
 | 
			
		||||
      execute_in "$container"
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
wait
 | 
			
		||||
 | 
			
		||||
echo -e "${GN} Finished, execute command inside selected containers. ${CL} \n"
 | 
			
		||||
@@ -532,20 +532,28 @@ if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
 | 
			
		||||
      "$MARKER" \
 | 
			
		||||
      "<script>" \
 | 
			
		||||
      "  function removeSubscriptionElements() {" \
 | 
			
		||||
      "    // --- Remove subscription dialogs ---" \
 | 
			
		||||
      "    const dialogs = document.querySelectorAll('dialog.pwt-outer-dialog');" \
 | 
			
		||||
      "    dialogs.forEach(dialog => {" \
 | 
			
		||||
      "      const closeButton = dialog.querySelector('.fa-close');" \
 | 
			
		||||
      "      const exclamationIcon = dialog.querySelector('.fa-exclamation-triangle');" \
 | 
			
		||||
      "      const continueButton = dialog.querySelector('button');" \
 | 
			
		||||
      "      if (closeButton && exclamationIcon && continueButton) { dialog.remove(); console.log('Removed subscription dialog'); }" \
 | 
			
		||||
      "      const text = (dialog.textContent || '').toLowerCase();" \
 | 
			
		||||
      "      if (text.includes('subscription')) {" \
 | 
			
		||||
      "        dialog.remove();" \
 | 
			
		||||
      "        console.log('Removed subscription dialog');" \
 | 
			
		||||
      "      }" \
 | 
			
		||||
      "    });" \
 | 
			
		||||
      "" \
 | 
			
		||||
      "    // --- Remove subscription cards, but keep Reboot/Shutdown/Console ---" \
 | 
			
		||||
      "    const cards = document.querySelectorAll('.pwt-card.pwt-p-2.pwt-d-flex.pwt-interactive.pwt-justify-content-center');" \
 | 
			
		||||
      "    cards.forEach(card => {" \
 | 
			
		||||
      "      const hasInteractiveElements = card.querySelector('button, input, a');" \
 | 
			
		||||
      "      const hasComplexStructure = card.querySelector('.pwt-grid, .pwt-flex, .pwt-button');" \
 | 
			
		||||
      "      if (!hasInteractiveElements && !hasComplexStructure) { card.remove(); console.log('Removed subscription card'); }" \
 | 
			
		||||
      "      const text = (card.textContent || '').toLowerCase();" \
 | 
			
		||||
      "      const hasButton = card.querySelector('button');" \
 | 
			
		||||
      "      if (!hasButton && text.includes('subscription')) {" \
 | 
			
		||||
      "        card.remove();" \
 | 
			
		||||
      "        console.log('Removed subscription card');" \
 | 
			
		||||
      "      }" \
 | 
			
		||||
      "    });" \
 | 
			
		||||
      "  }" \
 | 
			
		||||
      "" \
 | 
			
		||||
      "  const observer = new MutationObserver(removeSubscriptionElements);" \
 | 
			
		||||
      "  observer.observe(document.body, { childList: true, subtree: true });" \
 | 
			
		||||
      "  removeSubscriptionElements();" \
 | 
			
		||||
@@ -555,9 +563,8 @@ if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
 | 
			
		||||
      "" >> "$MOBILE_TPL"
 | 
			
		||||
fi
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
    chmod 755 /usr/local/bin/pve-remove-nag.sh
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    cat >/etc/apt/apt.conf.d/no-nag-script <<'EOF'
 | 
			
		||||
DPkg::Post-Invoke { "/usr/local/bin/pve-remove-nag.sh"; };
 | 
			
		||||
EOF
 | 
			
		||||
 
 | 
			
		||||
@@ -205,15 +205,69 @@ function exit-script() {
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Ensure pv is installed or abort with instructions
 | 
			
		||||
function ensure_pv() {
 | 
			
		||||
  if ! command -v pv &>/dev/null; then
 | 
			
		||||
    msg_info "Installing required package: pv"
 | 
			
		||||
    apt-get update -qq &>/dev/null
 | 
			
		||||
    apt-get install -y pv &>/dev/null
 | 
			
		||||
    if ! apt-get update -qq &>/dev/null || ! apt-get install -y pv &>/dev/null; then
 | 
			
		||||
      msg_error "Failed to install pv automatically."
 | 
			
		||||
      echo -e "\nPlease run manually on the Proxmox host:\n  apt install pv\n"
 | 
			
		||||
      exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Installed pv"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Download an .xz file and validate it
 | 
			
		||||
# Args: $1=url $2=cache_file
 | 
			
		||||
function download_and_validate_xz() {
 | 
			
		||||
  local url="$1"
 | 
			
		||||
  local file="$2"
 | 
			
		||||
 | 
			
		||||
  # If file exists, check validity
 | 
			
		||||
  if [[ -s "$file" ]]; then
 | 
			
		||||
    if xz -t "$file" &>/dev/null; then
 | 
			
		||||
      msg_ok "Using cached image $(basename "$file")"
 | 
			
		||||
      return 0
 | 
			
		||||
    else
 | 
			
		||||
      msg_error "Cached file $(basename "$file") is corrupted. Deleting and retrying download..."
 | 
			
		||||
      rm -f "$file"
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Download fresh file
 | 
			
		||||
  msg_info "Downloading image: $(basename "$file")"
 | 
			
		||||
  if ! curl -fSL -o "$file" "$url"; then
 | 
			
		||||
    msg_error "Download failed: $url"
 | 
			
		||||
    rm -f "$file"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Validate again
 | 
			
		||||
  if ! xz -t "$file" &>/dev/null; then
 | 
			
		||||
    msg_error "Downloaded file $(basename "$file") is corrupted. Please try again later."
 | 
			
		||||
    rm -f "$file"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Downloaded and validated $(basename "$file")"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Extract .xz with pv
 | 
			
		||||
# Args: $1=cache_file $2=target_img
 | 
			
		||||
function extract_xz_with_pv() {
 | 
			
		||||
  set -o pipefail
 | 
			
		||||
  local file="$1"
 | 
			
		||||
  local target="$2"
 | 
			
		||||
 | 
			
		||||
  msg_info "Decompressing $(basename "$file") to $target"
 | 
			
		||||
  if ! xz -dc "$file" | pv -N "Extracting" >"$target"; then
 | 
			
		||||
    msg_error "Failed to extract $file"
 | 
			
		||||
    rm -f "$target"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Decompressed to $target"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function default_settings() {
 | 
			
		||||
  BRANCH="$stable"
 | 
			
		||||
  VMID=$(get_valid_nextid)
 | 
			
		||||
@@ -507,23 +561,15 @@ FILE_IMG="/var/lib/vz/template/tmp/${CACHE_FILE##*/%.xz}" # .qcow2
 | 
			
		||||
mkdir -p "$CACHE_DIR" "$(dirname "$FILE_IMG")"
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
 | 
			
		||||
if [[ ! -s "$CACHE_FILE" ]]; then
 | 
			
		||||
  curl -f#SL -o "$CACHE_FILE" "$URL"
 | 
			
		||||
  msg_ok "Downloaded ${CL}${BL}$(basename "$CACHE_FILE")${CL}"
 | 
			
		||||
else
 | 
			
		||||
  msg_ok "Using cached image ${CL}${BL}$(basename "$CACHE_FILE")${CL}"
 | 
			
		||||
fi
 | 
			
		||||
download_and_validate_xz "$URL" "$CACHE_FILE"
 | 
			
		||||
 | 
			
		||||
set -o pipefail
 | 
			
		||||
msg_info "Creating Home Assistant OS VM shell"
 | 
			
		||||
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
 | 
			
		||||
  -cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \
 | 
			
		||||
  -net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 -scsihw virtio-scsi-pci >/dev/null
 | 
			
		||||
msg_ok "Created VM shell"
 | 
			
		||||
 | 
			
		||||
msg_info "Decompressing $(basename "$CACHE_FILE") to $FILE_IMG"
 | 
			
		||||
xz -dc "$CACHE_FILE" | pv -N "Extracting" >"$FILE_IMG"
 | 
			
		||||
msg_ok "Decompressed to $FILE_IMG"
 | 
			
		||||
extract_xz_with_pv "$CACHE_FILE" "$FILE_IMG"
 | 
			
		||||
 | 
			
		||||
msg_info "Importing disk into storage ($STORAGE)"
 | 
			
		||||
if qm disk import --help >/dev/null 2>&1; then
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,6 @@ GN=$(echo "\033[1;92m")
 | 
			
		||||
DGN=$(echo "\033[32m")
 | 
			
		||||
CL=$(echo "\033[m")
 | 
			
		||||
 | 
			
		||||
CL=$(echo "\033[m")
 | 
			
		||||
BOLD=$(echo "\033[1m")
 | 
			
		||||
BFR="\\r\\033[K"
 | 
			
		||||
HOLD=" "
 | 
			
		||||
@@ -201,15 +200,69 @@ function exit-script() {
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Ensure pv is installed or abort with instructions
 | 
			
		||||
function ensure_pv() {
 | 
			
		||||
  if ! command -v pv &>/dev/null; then
 | 
			
		||||
    msg_info "Installing required package: pv"
 | 
			
		||||
    apt-get update -qq &>/dev/null
 | 
			
		||||
    apt-get install -y pv &>/dev/null
 | 
			
		||||
    if ! apt-get update -qq &>/dev/null || ! apt-get install -y pv &>/dev/null; then
 | 
			
		||||
      msg_error "Failed to install pv automatically."
 | 
			
		||||
      echo -e "\nPlease run manually on the Proxmox host:\n  apt install pv\n"
 | 
			
		||||
      exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Installed pv"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Download an .xz file and validate it
 | 
			
		||||
# Args: $1=url $2=cache_file
 | 
			
		||||
function download_and_validate_xz() {
 | 
			
		||||
  local url="$1"
 | 
			
		||||
  local file="$2"
 | 
			
		||||
 | 
			
		||||
  # If file exists, check validity
 | 
			
		||||
  if [[ -s "$file" ]]; then
 | 
			
		||||
    if xz -t "$file" &>/dev/null; then
 | 
			
		||||
      msg_ok "Using cached image $(basename "$file")"
 | 
			
		||||
      return 0
 | 
			
		||||
    else
 | 
			
		||||
      msg_error "Cached file $(basename "$file") is corrupted. Deleting and retrying download..."
 | 
			
		||||
      rm -f "$file"
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Download fresh file
 | 
			
		||||
  msg_info "Downloading image: $(basename "$file")"
 | 
			
		||||
  if ! curl -fSL -o "$file" "$url"; then
 | 
			
		||||
    msg_error "Download failed: $url"
 | 
			
		||||
    rm -f "$file"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Validate again
 | 
			
		||||
  if ! xz -t "$file" &>/dev/null; then
 | 
			
		||||
    msg_error "Downloaded file $(basename "$file") is corrupted. Please try again later."
 | 
			
		||||
    rm -f "$file"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Downloaded and validated $(basename "$file")"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Extract .xz with pv
 | 
			
		||||
# Args: $1=cache_file $2=target_img
 | 
			
		||||
function extract_xz_with_pv() {
 | 
			
		||||
  set -o pipefail
 | 
			
		||||
  local file="$1"
 | 
			
		||||
  local target="$2"
 | 
			
		||||
 | 
			
		||||
  msg_info "Decompressing $(basename "$file") to $target"
 | 
			
		||||
  if ! xz -dc "$file" | pv -N "Extracting" >"$target"; then
 | 
			
		||||
    msg_error "Failed to extract $file"
 | 
			
		||||
    rm -f "$target"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Decompressed to $target"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function default_settings() {
 | 
			
		||||
  VMID=$(get_valid_nextid)
 | 
			
		||||
  MACHINE="q35"
 | 
			
		||||
@@ -475,19 +528,13 @@ FILE_IMG="/var/lib/vz/template/tmp/${CACHE_FILE##*/%.xz}"
 | 
			
		||||
 | 
			
		||||
mkdir -p "$CACHE_DIR" "$(dirname "$FILE_IMG")"
 | 
			
		||||
 | 
			
		||||
if [[ ! -s "$CACHE_FILE" ]]; then
 | 
			
		||||
  msg_ok "Downloading Umbrel OS image"
 | 
			
		||||
  curl -f#SL -o "$CACHE_FILE" "$URL"
 | 
			
		||||
else
 | 
			
		||||
  msg_ok "Using cached Umbrel OS image"
 | 
			
		||||
fi
 | 
			
		||||
download_and_validate_xz "$URL" "$CACHE_FILE"
 | 
			
		||||
 | 
			
		||||
set -o pipefail
 | 
			
		||||
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
 | 
			
		||||
  -cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \
 | 
			
		||||
  -net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 -scsihw virtio-scsi-pci >/dev/null
 | 
			
		||||
 | 
			
		||||
xz -dc "$CACHE_FILE" | pv -N "Extracting" >"$FILE_IMG"
 | 
			
		||||
extract_xz_with_pv "$CACHE_FILE" "$FILE_IMG"
 | 
			
		||||
 | 
			
		||||
if qm disk import --help >/dev/null 2>&1; then
 | 
			
		||||
  IMPORT_CMD=(qm disk import)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user