mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			74 Commits
		
	
	
		
			2025-04-01
			...
			2025-04-07
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					9a906d35e2 | ||
| 
						 | 
					97674cfae7 | ||
| 
						 | 
					89ae467364 | ||
| 
						 | 
					42a7c00bca | ||
| 
						 | 
					d28368b596 | ||
| 
						 | 
					9786bfb55e | ||
| 
						 | 
					26ea046ba2 | ||
| 
						 | 
					061c7ebd2e | ||
| 
						 | 
					5313bb0103 | ||
| 
						 | 
					86577a0d0d | ||
| 
						 | 
					4ae0352304 | ||
| 
						 | 
					0c202066f5 | ||
| 
						 | 
					9bac1398b2 | ||
| 
						 | 
					251f3c411d | ||
| 
						 | 
					5b73662d9c | ||
| 
						 | 
					4ef88cd051 | ||
| 
						 | 
					427ce771d7 | ||
| 
						 | 
					c08ebc48e8 | ||
| 
						 | 
					421248ccf3 | ||
| 
						 | 
					b395a1846c | ||
| 
						 | 
					c2893f3edf | ||
| 
						 | 
					00f91843ec | ||
| 
						 | 
					5451047f44 | ||
| 
						 | 
					d8848464be | ||
| 
						 | 
					019e1ac8a0 | ||
| 
						 | 
					d4b67e0c7e | ||
| 
						 | 
					112fa215fb | ||
| 
						 | 
					f6a77ec41f | ||
| 
						 | 
					71a37368b0 | ||
| 
						 | 
					214d21f91e | ||
| 
						 | 
					8b1cdd1f3f | ||
| 
						 | 
					2a24d53b54 | ||
| 
						 | 
					51692da70f | ||
| 
						 | 
					481156275b | ||
| 
						 | 
					23c01141db | ||
| 
						 | 
					109235f720 | ||
| 
						 | 
					4912f76bc5 | ||
| 
						 | 
					b62a673ff2 | ||
| 
						 | 
					f0c59f8cba | ||
| 
						 | 
					56093ed951 | ||
| 
						 | 
					e55f3f77fd | ||
| 
						 | 
					c231e56302 | ||
| 
						 | 
					69c1a64855 | ||
| 
						 | 
					01ff0a2dc7 | ||
| 
						 | 
					8884514ab6 | ||
| 
						 | 
					f5e9d761c9 | ||
| 
						 | 
					3d4ba758a9 | ||
| 
						 | 
					7539566dc5 | ||
| 
						 | 
					5b0cfaab83 | ||
| 
						 | 
					a5dd2b3176 | ||
| 
						 | 
					b6593792c0 | ||
| 
						 | 
					47fb1c03de | ||
| 
						 | 
					9c7858601e | ||
| 
						 | 
					ce3ed8a1c1 | ||
| 
						 | 
					138d0c48b1 | ||
| 
						 | 
					763a58aeb9 | ||
| 
						 | 
					629b9df30a | ||
| 
						 | 
					b8ad603a75 | ||
| 
						 | 
					49c3eb83c6 | ||
| 
						 | 
					9a559f869a | ||
| 
						 | 
					bb6e947ff6 | ||
| 
						 | 
					7cb2320ccf | ||
| 
						 | 
					c1f816a57c | ||
| 
						 | 
					6260be8425 | ||
| 
						 | 
					bcbe73f99f | ||
| 
						 | 
					71c337ed86 | ||
| 
						 | 
					f9618cf24c | ||
| 
						 | 
					b0d81f3b22 | ||
| 
						 | 
					dd4af32587 | ||
| 
						 | 
					08911cfb19 | ||
| 
						 | 
					86ba0c8976 | ||
| 
						 | 
					8fd300e340 | ||
| 
						 | 
					059a3d0bcf | ||
| 
						 | 
					ea9f19d5f4 | 
@@ -99,9 +99,9 @@ to\
 | 
			
		||||
Example: `https://raw.githubusercontent.com/tremor021/PromoxVE/refs/heads/testbranch`
 | 
			
		||||
 | 
			
		||||
Also you need to change:\
 | 
			
		||||
`https://github.com/community-scripts/ProxmoxVE/raw/main`\
 | 
			
		||||
`https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main`\
 | 
			
		||||
to\
 | 
			
		||||
`https://github.com/[USER]/[REPOSITORY]/raw/[BRANCH]`\
 | 
			
		||||
`https://raw.githubusercontent.com/[USER]/[REPOSITORY]/raw/[BRANCH]`\
 | 
			
		||||
in `misc/install.func` in order for `update` shell command to work.\
 | 
			
		||||
These changes are only while writing and testing your scripts. Before opening a Pull Request, you should change all above mentioned paths in `misc/build.func`, `misc/install.func` and `ct/AppName.sh` to point to the original paths.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										126
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										126
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -14,6 +14,132 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
 | 
			
		||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 2025-04-07
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Breaking: Hoarder > Karakeep [@MickLesk](https://github.com/MickLesk) ([#3699](https://github.com/community-scripts/ProxmoxVE/pull/3699))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Actual: Increase RAM and add heap-space var for nodejs [@MickLesk](https://github.com/MickLesk) ([#3713](https://github.com/community-scripts/ProxmoxVE/pull/3713))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Alpine-MariaDB: Fix Install Service startup [@MickLesk](https://github.com/MickLesk) ([#3701](https://github.com/community-scripts/ProxmoxVE/pull/3701))
 | 
			
		||||
    - Zitadel: Fix release tarball crawling [@tremor021](https://github.com/tremor021) ([#3716](https://github.com/community-scripts/ProxmoxVE/pull/3716))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Kimai: bump php to 8.4 [@MickLesk](https://github.com/MickLesk) ([#3724](https://github.com/community-scripts/ProxmoxVE/pull/3724))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor: Zabbix, get always latest version [@MickLesk](https://github.com/MickLesk) ([#3720](https://github.com/community-scripts/ProxmoxVE/pull/3720))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Changed the category of Channels DVR and NextPVR [@johnsturgeon](https://github.com/johnsturgeon) ([#3729](https://github.com/community-scripts/ProxmoxVE/pull/3729))
 | 
			
		||||
 | 
			
		||||
## 2025-04-06
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Actual: Add git dependency & change yarn commands [@MickLesk](https://github.com/MickLesk) ([#3703](https://github.com/community-scripts/ProxmoxVE/pull/3703))
 | 
			
		||||
    - Pelican-Panel: Fix PHP 8.4 Repository [@MickLesk](https://github.com/MickLesk) ([#3700](https://github.com/community-scripts/ProxmoxVE/pull/3700))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Implement FAQ component and integrate it into the main page [@BramSuurdje](https://github.com/BramSuurdje) ([#3709](https://github.com/community-scripts/ProxmoxVE/pull/3709))
 | 
			
		||||
 | 
			
		||||
## 2025-04-05
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Bump vite from 6.2.4 to 6.2.5 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#3668](https://github.com/community-scripts/ProxmoxVE/pull/3668))
 | 
			
		||||
 | 
			
		||||
## 2025-04-04
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - meilisearch [@MickLesk](https://github.com/MickLesk) ([#3638](https://github.com/community-scripts/ProxmoxVE/pull/3638))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Pelican Panel: Bump php to 8.4 [@bvdberg01](https://github.com/bvdberg01) ([#3669](https://github.com/community-scripts/ProxmoxVE/pull/3669))
 | 
			
		||||
    - Pterodactyl: Bump php to 8.4 [@MickLesk](https://github.com/MickLesk) ([#3655](https://github.com/community-scripts/ProxmoxVE/pull/3655))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Caddy: add git for xcaddy [@MickLesk](https://github.com/MickLesk) ([#3657](https://github.com/community-scripts/ProxmoxVE/pull/3657))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - core: fix raw path  [@MickLesk](https://github.com/MickLesk) ([#3656](https://github.com/community-scripts/ProxmoxVE/pull/3656))
 | 
			
		||||
 | 
			
		||||
## 2025-04-03
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Prowlarr: Fix Typo in URL (update_function) [@ribera96](https://github.com/ribera96) ([#3640](https://github.com/community-scripts/ProxmoxVE/pull/3640))
 | 
			
		||||
    - Prowlarr: Fix typo in release URL [@tremor021](https://github.com/tremor021) ([#3636](https://github.com/community-scripts/ProxmoxVE/pull/3636))
 | 
			
		||||
    - GoMFT: Fix the node_modules deletion command [@tremor021](https://github.com/tremor021) ([#3624](https://github.com/community-scripts/ProxmoxVE/pull/3624))
 | 
			
		||||
    - BookStack: Fix path to downloaded release file [@tremor021](https://github.com/tremor021) ([#3627](https://github.com/community-scripts/ProxmoxVE/pull/3627))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - VM: show progress bar while downloading [@MickLesk](https://github.com/MickLesk) ([#3634](https://github.com/community-scripts/ProxmoxVE/pull/3634))
 | 
			
		||||
    - *Arr: Move Arr apps to github release crawling and provide update functionality [@tremor021](https://github.com/tremor021) ([#3625](https://github.com/community-scripts/ProxmoxVE/pull/3625))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - Correct URL in contributing docs [@verbumfeit](https://github.com/verbumfeit) ([#3648](https://github.com/community-scripts/ProxmoxVE/pull/3648))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Bump next from 15.2.3 to 15.2.4 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#3628](https://github.com/community-scripts/ProxmoxVE/pull/3628))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - slskd: fix typo for config note [@MickLesk](https://github.com/MickLesk) ([#3633](https://github.com/community-scripts/ProxmoxVE/pull/3633))
 | 
			
		||||
 | 
			
		||||
## 2025-04-02
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - openziti-tunnel [@emoscardini](https://github.com/emoscardini) ([#3610](https://github.com/community-scripts/ProxmoxVE/pull/3610))
 | 
			
		||||
- Alpine-Wireguard [@MickLesk](https://github.com/MickLesk) ([#3611](https://github.com/community-scripts/ProxmoxVE/pull/3611))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Authelia: fix incorrect rights for email.txt [@MickLesk](https://github.com/MickLesk) ([#3612](https://github.com/community-scripts/ProxmoxVE/pull/3612))
 | 
			
		||||
    - Photoprism: harmonize curl  [@MickLesk](https://github.com/MickLesk) ([#3601](https://github.com/community-scripts/ProxmoxVE/pull/3601))
 | 
			
		||||
    - Fix link in clean-lxcs.sh [@thalatamsainath](https://github.com/thalatamsainath) ([#3593](https://github.com/community-scripts/ProxmoxVE/pull/3593))
 | 
			
		||||
    - Fileflows: Add ImageMagick dependecy [@tremor021](https://github.com/tremor021) ([#3589](https://github.com/community-scripts/ProxmoxVE/pull/3589))
 | 
			
		||||
    - General fixes for several scripts [@tremor021](https://github.com/tremor021) ([#3587](https://github.com/community-scripts/ProxmoxVE/pull/3587))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - UI-Fix: verbose without useless space in header [@MickLesk](https://github.com/MickLesk) ([#3598](https://github.com/community-scripts/ProxmoxVE/pull/3598))
 | 
			
		||||
 | 
			
		||||
## 2025-04-01
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
APP="Actual Budget"
 | 
			
		||||
var_tags="finance"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
var_ram="8192"
 | 
			
		||||
var_disk="7"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
@@ -20,52 +20,59 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
    if [[ ! -d /opt/actualbudget ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
  if [[ ! -d /opt/actualbudget ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop actualbudget
 | 
			
		||||
    msg_ok "${APP} Stopped"
 | 
			
		||||
 | 
			
		||||
    if ! command -v git &>/dev/null; then
 | 
			
		||||
      msg_info "Installing git"
 | 
			
		||||
      $STD apt-get update
 | 
			
		||||
      $STD apt-get install -y git
 | 
			
		||||
      msg_ok "Installed git"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping ${APP}"
 | 
			
		||||
        systemctl stop actualbudget
 | 
			
		||||
        msg_ok "${APP} Stopped"
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    cd /tmp || exit
 | 
			
		||||
    curl -fsSL "https://github.com/actualbudget/actual/archive/refs/tags/v${RELEASE}.tar.gz" -o "v${RELEASE}.tar.gz"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
        cd /tmp
 | 
			
		||||
        curl -fsSL -O https://github.com/actualbudget/actual/archive/refs/tags/v${RELEASE}.tar.gz
 | 
			
		||||
    mv /opt/actualbudget /opt/actualbudget_bak
 | 
			
		||||
    tar -xzf "v${RELEASE}.tar.gz"
 | 
			
		||||
    mv "actual-${RELEASE}" /opt/actualbudget
 | 
			
		||||
 | 
			
		||||
        mv /opt/actualbudget /opt/actualbudget_bak
 | 
			
		||||
        tar -xzf "v${RELEASE}.tar.gz"
 | 
			
		||||
        mv actual-${RELEASE} /opt/actualbudget
 | 
			
		||||
    mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
 | 
			
		||||
    for dir in server-files .migrate user-files migrations; do
 | 
			
		||||
      if [[ -d /opt/actualbudget_bak/$dir ]]; then
 | 
			
		||||
        mv /opt/actualbudget_bak/$dir/* /opt/actualbudget-data/$dir/ || true
 | 
			
		||||
      fi
 | 
			
		||||
    done
 | 
			
		||||
    if [[ -f /opt/actualbudget-data/migrate/.migrations ]]; then
 | 
			
		||||
      sed -i 's/null/1732656575219/g' /opt/actualbudget-data/migrate/.migrations
 | 
			
		||||
      sed -i 's/null/1732656575220/g' /opt/actualbudget-data/migrate/.migrations
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ -f /opt/actualbudget/server-files/account.sqlite ]] && [[ ! -f /opt/actualbudget-data/server-files/account.sqlite ]]; then
 | 
			
		||||
      mv /opt/actualbudget/server-files/account.sqlite /opt/actualbudget-data/server-files/account.sqlite
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
        mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
 | 
			
		||||
        for dir in server-files .migrate user-files migrations; do
 | 
			
		||||
            if [[ -d /opt/actualbudget_bak/$dir ]]; then
 | 
			
		||||
                mv /opt/actualbudget_bak/$dir/* /opt/actualbudget-data/$dir/ || true
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
        if [[ -f /opt/actualbudget-data/migrate/.migrations ]]; then
 | 
			
		||||
            sed -i 's/null/1732656575219/g' /opt/actualbudget-data/migrate/.migrations
 | 
			
		||||
            sed -i 's/null/1732656575220/g' /opt/actualbudget-data/migrate/.migrations
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ -f /opt/actualbudget/server-files/account.sqlite ]] && [[ ! -f /opt/actualbudget-data/server-files/account.sqlite ]]; then
 | 
			
		||||
            mv /opt/actualbudget/server-files/account.sqlite /opt/actualbudget-data/server-files/account.sqlite
 | 
			
		||||
        fi
 | 
			
		||||
    if [[ -f /opt/actualbudget_bak/selfhost.key ]]; then
 | 
			
		||||
      mv /opt/actualbudget_bak/selfhost.key /opt/actualbudget/selfhost.key
 | 
			
		||||
      mv /opt/actualbudget_bak/selfhost.crt /opt/actualbudget/selfhost.crt
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
        if [[ -f /opt/actualbudget_bak/selfhost.key ]]; then
 | 
			
		||||
            mv /opt/actualbudget_bak/selfhost.key /opt/actualbudget/selfhost.key
 | 
			
		||||
            mv /opt/actualbudget_bak/selfhost.crt /opt/actualbudget/selfhost.crt
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        if [[ -f /opt/actualbudget_bak/.env ]]; then
 | 
			
		||||
            mv /opt/actualbudget_bak/.env /opt/actualbudget-data/.env
 | 
			
		||||
        else
 | 
			
		||||
            cat <<EOF >/opt/actualbudget-data/.env
 | 
			
		||||
    if [[ -f /opt/actualbudget_bak/.env ]]; then
 | 
			
		||||
      mv /opt/actualbudget_bak/.env /opt/actualbudget-data/.env
 | 
			
		||||
    else
 | 
			
		||||
      cat <<EOF >/opt/actualbudget-data/.env
 | 
			
		||||
ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload
 | 
			
		||||
ACTUAL_DATA_DIR=/opt/actualbudget-data
 | 
			
		||||
ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files
 | 
			
		||||
@@ -75,14 +82,17 @@ ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1
 | 
			
		||||
ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key
 | 
			
		||||
ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt
 | 
			
		||||
EOF
 | 
			
		||||
        fi
 | 
			
		||||
        cd /opt/actualbudget
 | 
			
		||||
        $STD yarn workspaces focus @actual-app/sync-server --production
 | 
			
		||||
        echo "${RELEASE}" >/opt/actualbudget_version.txt
 | 
			
		||||
        msg_ok "Updated ${APP}"
 | 
			
		||||
    fi
 | 
			
		||||
    cd /opt/actualbudget || exit
 | 
			
		||||
    export NODE_OPTIONS="--max_old_space_size=4096"
 | 
			
		||||
    $STD yarn install
 | 
			
		||||
    $STD yarn run build:server
 | 
			
		||||
    #$STD yarn workspaces focus @actual-app/sync-server --production
 | 
			
		||||
    echo "${RELEASE}" >/opt/actualbudget_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting ${APP}"
 | 
			
		||||
        cat <<EOF >/etc/systemd/system/actualbudget.service
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    cat <<EOF >/etc/systemd/system/actualbudget.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Actual Budget Service
 | 
			
		||||
After=network.target
 | 
			
		||||
@@ -101,19 +111,19 @@ RestartSec=10
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
        systemctl daemon-reload
 | 
			
		||||
        systemctl start actualbudget
 | 
			
		||||
        msg_ok "Started ${APP}"
 | 
			
		||||
    systemctl daemon-reload
 | 
			
		||||
    systemctl start actualbudget
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf /opt/actualbudget_bak
 | 
			
		||||
        rm -rf "/tmp/v${RELEASE}.tar.gz"
 | 
			
		||||
        msg_ok "Cleaned"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf /opt/actualbudget_bak
 | 
			
		||||
    rm -rf "/tmp/v${RELEASE}.tar.gz"
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -123,4 +133,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}:5006${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:5006${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										50
									
								
								ct/alpine-wireguard.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								ct/alpine-wireguard.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.wireguard.com/
 | 
			
		||||
 | 
			
		||||
APP="Alpine-Wireguard"
 | 
			
		||||
var_tags="${var_tags:-alpine;vpn}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-1}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk update
 | 
			
		||||
  $STD apk upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
  msg_info "update wireguard-tools"
 | 
			
		||||
  $STD apk add --no-cache --upgrade wireguard-tools
 | 
			
		||||
  msg_ok "wireguard-tools updated"
 | 
			
		||||
 | 
			
		||||
  if [[ -d /etc/wgdashboard/src ]]; then
 | 
			
		||||
    msg_info "update WGDashboard"
 | 
			
		||||
    cd /etc/wgdashboard/src || exit
 | 
			
		||||
    $STD echo "y" | ./wgd.sh update
 | 
			
		||||
    $STD ./wgd.sh start
 | 
			
		||||
    msg_ok "WGDashboard updated"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} WGDashboard Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}"
 | 
			
		||||
@@ -36,13 +36,13 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    mv /opt/bookstack /opt/bookstack-backup
 | 
			
		||||
    curl -fsSL "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" -o "/opt/BookStack-${RELEASE}.zip"
 | 
			
		||||
    unzip -q /opt/v${RELEASE}.zip -d /opt
 | 
			
		||||
    mv /opt/BookStack-${RELEASE} /opt/bookstack
 | 
			
		||||
    unzip -q "/opt/BookStack-${RELEASE}.zip" -d /opt
 | 
			
		||||
    mv "/opt/BookStack-${RELEASE}" /opt/bookstack
 | 
			
		||||
    cp /opt/bookstack-backup/.env /opt/bookstack/.env
 | 
			
		||||
    cp -r /opt/bookstack-backup/public/uploads/* /opt/bookstack/public/uploads/ || true
 | 
			
		||||
    cp -r /opt/bookstack-backup/storage/uploads/* /opt/bookstack/storage/uploads/ || true
 | 
			
		||||
    cp -r /opt/bookstack-backup/themes/* /opt/bookstack/themes/ || true
 | 
			
		||||
    cd /opt/bookstack
 | 
			
		||||
    cd /opt/bookstack || exit
 | 
			
		||||
    export COMPOSER_ALLOW_SUPERUSER=1
 | 
			
		||||
    $STD composer install --no-dev
 | 
			
		||||
    $STD php artisan migrate --force
 | 
			
		||||
@@ -59,7 +59,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf /opt/bookstack-backup
 | 
			
		||||
    rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
    rm -rf "/opt/BookStack-${RELEASE}.zip"
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										44
									
								
								ct/emby.sh
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								ct/emby.sh
									
									
									
									
									
								
							@@ -20,29 +20,29 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/emby-server ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    LATEST=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop emby-server
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    $STD curl -fsSL "https://github.com/MediaBrowser/Emby.Releases/releases/download/${LATEST}/emby-server-deb_${LATEST}_amd64.deb" -O
 | 
			
		||||
    $STD dpkg -i emby-server-deb_${LATEST}_amd64.deb
 | 
			
		||||
    rm emby-server-deb_${LATEST}_amd64.deb
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start emby-server
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/emby-server ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  LATEST=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
 | 
			
		||||
  msg_info "Stopping ${APP}"
 | 
			
		||||
  systemctl stop emby-server
 | 
			
		||||
  msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ${APP}"
 | 
			
		||||
  $STD curl -fsSL "https://github.com/MediaBrowser/Emby.Releases/releases/download/${LATEST}/emby-server-deb_${LATEST}_amd64.deb" -o "emby-server-deb_${LATEST}_amd64.deb"
 | 
			
		||||
  $STD dpkg -i "emby-server-deb_${LATEST}_amd64.deb"
 | 
			
		||||
  rm "emby-server-deb_${LATEST}_amd64.deb"
 | 
			
		||||
  msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP}"
 | 
			
		||||
  systemctl start emby-server
 | 
			
		||||
  msg_ok "Started ${APP}"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								ct/gomft.sh
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								ct/gomft.sh
									
									
									
									
									
								
							@@ -33,12 +33,12 @@ function update_script() {
 | 
			
		||||
  fi
 | 
			
		||||
  if [[ ! -f "/usr/bin/node" ]]; then
 | 
			
		||||
    mkdir -p /etc/apt/keyrings
 | 
			
		||||
    curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
 | 
			
		||||
    curl -fsSL "https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key" | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
 | 
			
		||||
    echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get install -y nodejs
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  RELEASE=$(curl -fsSL "https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest" | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop gomft
 | 
			
		||||
@@ -47,16 +47,16 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    rm -f /opt/gomft/gomft
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o $temp_file
 | 
			
		||||
    tar -xzf $temp_file
 | 
			
		||||
    cp -rf GoMFT-${RELEASE}/* /opt/gomft
 | 
			
		||||
    cd /opt/gomft
 | 
			
		||||
    rm -f /opt/gomft/node_modules
 | 
			
		||||
    curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar -xzf "$temp_file"
 | 
			
		||||
    cp -rf "GoMFT-${RELEASE}"/* /opt/gomft/
 | 
			
		||||
    cd /opt/gomft || exit
 | 
			
		||||
    rm -rf /opt/gomft/node_modules
 | 
			
		||||
    $STD npm ci
 | 
			
		||||
    $STD node build.js
 | 
			
		||||
    $STD go mod download
 | 
			
		||||
    $STD go get -u github.com/a-h/templ
 | 
			
		||||
    $STD $HOME/go/bin/templ generate
 | 
			
		||||
    $STD "$HOME"/go/bin/templ generate
 | 
			
		||||
    export CGO_ENABLED=1
 | 
			
		||||
    export GOOS=linux
 | 
			
		||||
    $STD go build -o gomft
 | 
			
		||||
@@ -65,8 +65,8 @@ function update_script() {
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -f $temp_file
 | 
			
		||||
    rm -rf $HOME/GoMFT-v.${RELEASE}
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    rm -rf "$HOME/GoMFT-v.${RELEASE}/"
 | 
			
		||||
    msg_ok "Cleanup Complete"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-wireguard
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-wireguard
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                _       ___                                      __
 | 
			
		||||
   /   |  / /___  (_)___  ___      | |     / (_)_______  ____ ___  ______ __________/ /
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \_____| | /| / / / ___/ _ \/ __ `/ / / / __ `/ ___/ __  / 
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ |/ |/ / / /  /  __/ /_/ / /_/ / /_/ / /  / /_/ /  
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/      |__/|__/_/_/   \___/\__, /\__,_/\__,_/_/   \__,_/   
 | 
			
		||||
        /_/                                           /____/                           
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/karakeep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/karakeep
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __                    __                 
 | 
			
		||||
   / /______ __________ _/ /_____  ___  ____ 
 | 
			
		||||
  / //_/ __ `/ ___/ __ `/ //_/ _ \/ _ \/ __ \
 | 
			
		||||
 / ,< / /_/ / /  / /_/ / ,< /  __/  __/ /_/ /
 | 
			
		||||
/_/|_|\__,_/_/   \__,_/_/|_|\___/\___/ .___/ 
 | 
			
		||||
                                    /_/      
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/meilisearch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/meilisearch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __  ___     _ ___                           __  
 | 
			
		||||
   /  |/  /__  (_) (_)_______  ____ ___________/ /_ 
 | 
			
		||||
  / /|_/ / _ \/ / / / ___/ _ \/ __ `/ ___/ ___/ __ \
 | 
			
		||||
 / /  / /  __/ / / (__  )  __/ /_/ / /  / /__/ / / /
 | 
			
		||||
/_/  /_/\___/_/_/_/____/\___/\__,_/_/   \___/_/ /_/ 
 | 
			
		||||
                                                    
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/openziti-tunnel
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/openziti-tunnel
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
                                _ __  _       __                         __
 | 
			
		||||
  ____  ____  ___  ____  ____  (_) /_(_)     / /___  ______  ____  ___  / /
 | 
			
		||||
 / __ \/ __ \/ _ \/ __ \/_  / / / __/ /_____/ __/ / / / __ \/ __ \/ _ \/ / 
 | 
			
		||||
/ /_/ / /_/ /  __/ / / / / /_/ / /_/ /_____/ /_/ /_/ / / / / / / /  __/ /  
 | 
			
		||||
\____/ .___/\___/_/ /_/ /___/_/\__/_/      \__/\__,_/_/ /_/_/ /_/\___/_/   
 | 
			
		||||
    /_/                                                                    
 | 
			
		||||
@@ -40,23 +40,23 @@ function update_script() {
 | 
			
		||||
    if [[ "${PREV_RELEASE}" < 0.23.0 ]]; then
 | 
			
		||||
      $STD apt-get install -y graphicsmagick ghostscript
 | 
			
		||||
    fi
 | 
			
		||||
    cd /opt
 | 
			
		||||
    cd /opt || exit
 | 
			
		||||
    if [[ -f /opt/hoarder/.env ]] && [[ ! -f /etc/hoarder/hoarder.env ]]; then
 | 
			
		||||
      mkdir -p /etc/hoarder
 | 
			
		||||
      mv /opt/hoarder/.env /etc/hoarder/hoarder.env
 | 
			
		||||
    fi
 | 
			
		||||
    rm -rf /opt/hoarder
 | 
			
		||||
    curl -fsSL "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    mv hoarder-${RELEASE} /opt/hoarder
 | 
			
		||||
    cd /opt/hoarder/apps/web
 | 
			
		||||
    curl -fsSL "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
 | 
			
		||||
    unzip -q v"${RELEASE}".zip
 | 
			
		||||
    mv karakeep-"${RELEASE}" /opt/hoarder
 | 
			
		||||
    cd /opt/hoarder/apps/web || exit
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    $STD pnpm exec next build --experimental-build-mode compile
 | 
			
		||||
    cp -r /opt/hoarder/apps/web/.next/standalone/apps/web/server.js /opt/hoarder/apps/web
 | 
			
		||||
    cd /opt/hoarder/apps/workers
 | 
			
		||||
    cd /opt/hoarder/apps/workers || exit
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    export DATA_DIR=/opt/hoarder_data
 | 
			
		||||
    cd /opt/hoarder/packages/db
 | 
			
		||||
    cd /opt/hoarder/packages/db || exit
 | 
			
		||||
    $STD pnpm migrate
 | 
			
		||||
    sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /etc/hoarder/hoarder.env
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
@@ -65,7 +65,7 @@ function update_script() {
 | 
			
		||||
    systemctl start hoarder-browser hoarder-workers hoarder-web
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -R /opt/v${RELEASE}.zip
 | 
			
		||||
    rm -R /opt/v"${RELEASE}".zip
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										85
									
								
								ct/karakeep.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								ct/karakeep.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: MickLesk (Canbiz) & vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://karakeep.app/
 | 
			
		||||
 | 
			
		||||
APP="karakeep"
 | 
			
		||||
var_tags="bookmark"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="4096"
 | 
			
		||||
var_disk="10"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/karakeep ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/karakeep-app/karakeep/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  PREV_RELEASE=$(cat /opt/${APP}_version.txt)
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "${PREV_RELEASE}" ]]; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop karakeep-web karakeep-workers karakeep-browser
 | 
			
		||||
    msg_ok "Stopped Services"
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    if [[ $(corepack -v) < "0.31.0" ]]; then
 | 
			
		||||
      $STD npm install -g corepack@0.31.0
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ "${PREV_RELEASE}" < 0.23.0 ]]; then
 | 
			
		||||
      $STD apt-get install -y graphicsmagick ghostscript
 | 
			
		||||
    fi
 | 
			
		||||
    cd /opt || exit
 | 
			
		||||
    if [[ -f /opt/karakeep/.env ]] && [[ ! -f /etc/karakeep/karakeep.env ]]; then
 | 
			
		||||
      mkdir -p /etc/karakeep
 | 
			
		||||
      mv /opt/karakeep/.env /etc/karakeep/karakeep.env
 | 
			
		||||
    fi
 | 
			
		||||
    rm -rf /opt/karakeep
 | 
			
		||||
    curl -fsSL "https://github.com/karakeep-app/karakeep/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
 | 
			
		||||
    unzip -q "v${RELEASE}.zip"
 | 
			
		||||
    mv karakeep-"${RELEASE}" /opt/karakeep
 | 
			
		||||
    cd /opt/karakeep/apps/web || exit
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    $STD pnpm exec next build --experimental-build-mode compile
 | 
			
		||||
    cp -r /opt/karakeep/apps/web/.next/standalone/apps/web/server.js /opt/karakeep/apps/web
 | 
			
		||||
    cd /opt/karakeep/apps/workers || exit
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    export DATA_DIR=/opt/karakeep_data
 | 
			
		||||
    cd /opt/karakeep/packages/db || exit
 | 
			
		||||
    $STD pnpm migrate
 | 
			
		||||
    sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /etc/karakeep/karakeep.env
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl start karakeep-browser karakeep-workers karakeep-web
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -R /opt/v"${RELEASE}".zip
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required.  ${APP} is already at ${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
							
								
								
									
										129
									
								
								ct/kimai.sh
									
									
									
									
									
								
							
							
						
						
									
										129
									
								
								ct/kimai.sh
									
									
									
									
									
								
							@@ -20,64 +20,79 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/kimai ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/kimai/kimai/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    BACKUP_DIR="/opt/kimai_backup"
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping Apache2"
 | 
			
		||||
        systemctl stop apache2
 | 
			
		||||
        msg_ok "Stopped Apache2"
 | 
			
		||||
 | 
			
		||||
        msg_info "Backing up Kimai configuration and var directory"
 | 
			
		||||
        mkdir -p "$BACKUP_DIR"
 | 
			
		||||
        [ -d /opt/kimai/var ] && cp -r /opt/kimai/var "$BACKUP_DIR/"
 | 
			
		||||
        [ -f /opt/kimai/.env ] && cp /opt/kimai/.env "$BACKUP_DIR/"
 | 
			
		||||
        [ -f /opt/kimai/config/packages/local.yaml ] && cp /opt/kimai/config/packages/local.yaml "$BACKUP_DIR/"
 | 
			
		||||
        msg_ok "Backup completed"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
        rm -rf /opt/kimai
 | 
			
		||||
        curl -fsSL "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
        unzip -q ${RELEASE}.zip
 | 
			
		||||
        mv kimai-${RELEASE} /opt/kimai
 | 
			
		||||
        [ -d "$BACKUP_DIR/var" ] && cp -r "$BACKUP_DIR/var" /opt/kimai/
 | 
			
		||||
        [ -f "$BACKUP_DIR/.env" ] && cp "$BACKUP_DIR/.env" /opt/kimai/
 | 
			
		||||
        [ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/
 | 
			
		||||
        rm -rf "$BACKUP_DIR"
 | 
			
		||||
        cd /opt/kimai
 | 
			
		||||
        $STD composer install --no-dev --optimize-autoloader
 | 
			
		||||
        $STD bin/console kimai:update
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting Apache2"
 | 
			
		||||
        systemctl start apache2
 | 
			
		||||
        msg_ok "Started Apache2"
 | 
			
		||||
 | 
			
		||||
        msg_info "Setup Permissions"
 | 
			
		||||
        chown -R :www-data /opt/*
 | 
			
		||||
        chmod -R g+r /opt/*
 | 
			
		||||
        chmod -R g+rw /opt/*
 | 
			
		||||
        chown -R www-data:www-data /opt/*
 | 
			
		||||
        chmod -R 777 /opt/*
 | 
			
		||||
        msg_ok "Setup Permissions"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf ${RELEASE}.zip
 | 
			
		||||
        rm -rf "$BACKUP_DIR"
 | 
			
		||||
        msg_ok "Cleaned"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/kimai ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
 | 
			
		||||
  if [[ "$CURRENT_PHP" != "8.4" ]]; then
 | 
			
		||||
    msg_info "Migrating PHP $CURRENT_PHP to 8.4"
 | 
			
		||||
    $STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
 | 
			
		||||
    $STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
 | 
			
		||||
    $STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get remove -y php"${CURRENT_PHP//./}"*
 | 
			
		||||
    $STD apt-get install -y \
 | 
			
		||||
      php8.4 \
 | 
			
		||||
      php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl} \
 | 
			
		||||
      libapache2-mod-php8.4
 | 
			
		||||
    msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/kimai/kimai/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  BACKUP_DIR="/opt/kimai_backup"
 | 
			
		||||
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping Apache2"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
    msg_ok "Stopped Apache2"
 | 
			
		||||
 | 
			
		||||
    msg_info "Backing up Kimai configuration and var directory"
 | 
			
		||||
    mkdir -p "$BACKUP_DIR"
 | 
			
		||||
    [ -d /opt/kimai/var ] && cp -r /opt/kimai/var "$BACKUP_DIR/"
 | 
			
		||||
    [ -f /opt/kimai/.env ] && cp /opt/kimai/.env "$BACKUP_DIR/"
 | 
			
		||||
    [ -f /opt/kimai/config/packages/local.yaml ] && cp /opt/kimai/config/packages/local.yaml "$BACKUP_DIR/"
 | 
			
		||||
    msg_ok "Backup completed"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    rm -rf /opt/kimai
 | 
			
		||||
    curl -fsSL "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q "${RELEASE}".zip
 | 
			
		||||
    mv kimai-"${RELEASE}" /opt/kimai
 | 
			
		||||
    [ -d "$BACKUP_DIR/var" ] && cp -r "$BACKUP_DIR/var" /opt/kimai/
 | 
			
		||||
    [ -f "$BACKUP_DIR/.env" ] && cp "$BACKUP_DIR/.env" /opt/kimai/
 | 
			
		||||
    [ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/
 | 
			
		||||
    rm -rf "$BACKUP_DIR"
 | 
			
		||||
    cd /opt/kimai || exit
 | 
			
		||||
    $STD composer install --no-dev --optimize-autoloader
 | 
			
		||||
    $STD bin/console kimai:update
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Apache2"
 | 
			
		||||
    systemctl start apache2
 | 
			
		||||
    msg_ok "Started Apache2"
 | 
			
		||||
 | 
			
		||||
    msg_info "Setup Permissions"
 | 
			
		||||
    chown -R :www-data /opt/*
 | 
			
		||||
    chmod -R g+r /opt/*
 | 
			
		||||
    chmod -R g+rw /opt/*
 | 
			
		||||
    chown -R www-data:www-data /opt/*
 | 
			
		||||
    chmod -R 777 /opt/*
 | 
			
		||||
    msg_ok "Setup Permissions"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf "${RELEASE}".zip
 | 
			
		||||
    rm -rf "$BACKUP_DIR"
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								ct/lidarr.sh
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								ct/lidarr.sh
									
									
									
									
									
								
							@@ -20,18 +20,29 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /var/lib/lidarr/ ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating $APP LXC"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
    msg_ok "Updated $APP LXC"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /var/lib/lidarr/ ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  temp_file="$(mktemp)"
 | 
			
		||||
  rm -rf /opt/Lidarr
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  curl -fsSL "https://github.com/Lidarr/Lidarr/releases/download/v${RELEASE}/Lidarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
 | 
			
		||||
  $STD tar -xvzf "$temp_file"
 | 
			
		||||
  mv Lidarr /opt
 | 
			
		||||
  chmod 775 /opt/Lidarr
 | 
			
		||||
  msg_ok "Updated $APP LXC"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning up"
 | 
			
		||||
  rm -rf "$temp_file"
 | 
			
		||||
  msg_ok "Cleaned up"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -41,4 +52,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}:8686${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8686${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										95
									
								
								ct/meilisearch.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								ct/meilisearch.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,95 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.meilisearch.com/
 | 
			
		||||
 | 
			
		||||
APP="Meilisearch"
 | 
			
		||||
var_tags="${var_tags:-full-text-search}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-7}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -f /opt/Meilisearch_version.txt ]]; then
 | 
			
		||||
    msg_error "No Meilisearch Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Meilisearch Update" --radiolist --cancel-button Exit-Script "Spacebar = Select" 10 58 2 \
 | 
			
		||||
    "1" "Update Meilisearch" ON \
 | 
			
		||||
    "2" "Update Meilisearch-UI" OFF \
 | 
			
		||||
    3>&1 1>&2 2>&3)
 | 
			
		||||
 | 
			
		||||
  if [ "$UPD" == "1" ]; then
 | 
			
		||||
    msg_info "Stopping Meilisearch"
 | 
			
		||||
    systemctl stop meilisearch
 | 
			
		||||
    msg_ok "Stopped Meilisearch"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Meilisearch"
 | 
			
		||||
    tmp_file=$(mktemp)
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/meilisearch/meilisearch/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    curl -fsSL https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb -o $tmp_file
 | 
			
		||||
    $STD dpkg -i $tmp_file
 | 
			
		||||
    echo "$RELEASE" >/opt/meilisearch_version.txt
 | 
			
		||||
    msg_ok "Updated Meilisearch"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Meilisearch"
 | 
			
		||||
    systemctl start meilisearch
 | 
			
		||||
    msg_ok "Started Meilisearch"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [ "$UPD" == "2" ]; then
 | 
			
		||||
    if [[ ! -f /opt/Meilisearch-ui_version.txt ]]; then
 | 
			
		||||
      msg_error "No Meilisearch-UI Installation Found!"
 | 
			
		||||
      exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Stopping Meilisearch-UI"
 | 
			
		||||
    systemctl stop meilisearch-ui
 | 
			
		||||
    msg_ok "Stopped Meilisearch-UI"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Meilisearch-UI"
 | 
			
		||||
    tmp_file=$(mktemp)
 | 
			
		||||
    tmp_dir=$(mktemp -d)
 | 
			
		||||
    RELEASE_UI=$(curl -s https://api.github.com/repos/riccox/meilisearch-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    cp /opt/meilisearch-ui/.env.local /tmp/.env.local.bak
 | 
			
		||||
    rm -rf /opt/meilisearch-ui
 | 
			
		||||
    mkdir -p /opt/meilisearch-ui
 | 
			
		||||
    curl -fsSL "https://github.com/riccox/meilisearch-ui/archive/refs/tags/${RELEASE_UI}.zip" -o $tmp_file
 | 
			
		||||
    unzip -q "$tmp_file" -d "$tmp_dir"
 | 
			
		||||
    mv "$tmp_dir"/*/* /opt/meilisearch-ui/
 | 
			
		||||
    cd /opt/meilisearch-ui
 | 
			
		||||
    sed -i 's|const hash = execSync("git rev-parse HEAD").toString().trim();|const hash = "unknown";|' /opt/meilisearch-ui/vite.config.ts
 | 
			
		||||
    mv /tmp/.env.local.bak /opt/meilisearch-ui/.env.local
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    echo "$RELEASE_UI" >/opt/meilisearch-ui_version.txt
 | 
			
		||||
    msg_ok "Updated Meilisearch-UI"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Meilisearch-UI"
 | 
			
		||||
    systemctl start meilisearch-ui
 | 
			
		||||
    msg_ok "Started Meilisearch-UI"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}meilisearch: http://${IP}:7700$ | meilisearch-ui: http://${IP}:24900${CL}"
 | 
			
		||||
							
								
								
									
										44
									
								
								ct/openziti-tunnel.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								ct/openziti-tunnel.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: emoscardini
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/openziti/ziti
 | 
			
		||||
 | 
			
		||||
APP="openziti-tunnel"
 | 
			
		||||
var_tags="${var_tags:-network;openziti-tunnel}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
var_os="${var_os:-ubuntu}"
 | 
			
		||||
var_version="${var_version:-24.04}"
 | 
			
		||||
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/openziti ]]; then
 | 
			
		||||
      msg_error "No ${APP} Installation Found!"
 | 
			
		||||
      exit
 | 
			
		||||
   fi
 | 
			
		||||
   msg_info "Updating $APP LXC"
 | 
			
		||||
   $STD apt-get update
 | 
			
		||||
   $STD apt-get -y upgrade
 | 
			
		||||
   msg_ok "Updated $APP LXC"
 | 
			
		||||
   exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Application was assigned the following IP:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}Address: ${IP}${CL}"
 | 
			
		||||
@@ -27,10 +27,27 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
    CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
 | 
			
		||||
 | 
			
		||||
  if [[ "$CURRENT_PHP" != "8.4" ]]; then
 | 
			
		||||
    msg_info "Migrating PHP $CURRENT_PHP to 8.4"
 | 
			
		||||
    $STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
 | 
			
		||||
    $STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
 | 
			
		||||
    $STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get remove -y php"${CURRENT_PHP//./}"*
 | 
			
		||||
    $STD apt-get install -y \
 | 
			
		||||
      php8.4 \
 | 
			
		||||
      php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm} \
 | 
			
		||||
      libapache2-mod-php8.4
 | 
			
		||||
 | 
			
		||||
    msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/pelican-dev/panel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    cd /opt/pelican-panel
 | 
			
		||||
    cd /opt/pelican-panel  || exit
 | 
			
		||||
    $STD php artisan down
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating PhotoPrism"
 | 
			
		||||
  $STD apt-get install -y libvips42
 | 
			
		||||
  curl -fsSL "-cO - https://dl.photoprism.app/pkg/linux/amd64.tar.gz | tar -xzf - -C /opt/photoprism --strip-components=1" -o $(basename "-cO - https://dl.photoprism.app/pkg/linux/amd64.tar.gz | tar -xzf - -C /opt/photoprism --strip-components=1")
 | 
			
		||||
  curl -fsSL https://dl.photoprism.app/pkg/linux/amd64.tar.gz | tar -xzf - -C /opt/photoprism --strip-components=1
 | 
			
		||||
  msg_ok "Updated PhotoPrism"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting PhotoPrism"
 | 
			
		||||
 
 | 
			
		||||
@@ -20,15 +20,29 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /var/lib/prowlarr/ ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "Currently we don't provide an update function for this ${APP}."
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /var/lib/prowlarr/ ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  temp_file="$(mktemp)"
 | 
			
		||||
  rm -rf /opt/Prowlarr
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Prowlarr/Prowlarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  curl -fsSL "https://github.com/Prowlarr/Prowlarr/releases/download/v${RELEASE}/Prowlarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
 | 
			
		||||
  $STD tar -xvzf "$temp_file"
 | 
			
		||||
  mv Prowlarr /opt
 | 
			
		||||
  chmod 775 /opt/Prowlarr
 | 
			
		||||
  msg_ok "Updated $APP LXC"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning up"
 | 
			
		||||
  rm -f "$temp_file"
 | 
			
		||||
  msg_ok "Cleaned up"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -38,4 +52,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}:9696${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9696${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -27,10 +27,27 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
 | 
			
		||||
 | 
			
		||||
  if [[ "$CURRENT_PHP" != "8.4" ]]; then
 | 
			
		||||
    msg_info "Migrating PHP $CURRENT_PHP to 8.4"
 | 
			
		||||
    $STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
 | 
			
		||||
    $STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
 | 
			
		||||
    $STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get remove -y php"${CURRENT_PHP//./}"*
 | 
			
		||||
    $STD apt-get install -y \
 | 
			
		||||
      php8.4 \
 | 
			
		||||
      php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm} \
 | 
			
		||||
      libapache2-mod-php8.4
 | 
			
		||||
 | 
			
		||||
    msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/pterodactyl/panel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    cd /opt/pterodactyl-panel
 | 
			
		||||
    cd /opt/pterodactyl-panel || exit
 | 
			
		||||
    $STD php artisan down
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								ct/radarr.sh
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								ct/radarr.sh
									
									
									
									
									
								
							@@ -20,15 +20,29 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /var/lib/radarr/ ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "Currently we don't provide an update function for this ${APP}."
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /var/lib/radarr/ ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  temp_file="$(mktemp)"
 | 
			
		||||
  rm -rf /opt/Radarr
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Radarr/Radarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  curl -fsSL "https://github.com/Radarr/Radarr/releases/download/v${RELEASE}/Radarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
 | 
			
		||||
  $STD tar -xvzf "$temp_file"
 | 
			
		||||
  mv Radarr /opt
 | 
			
		||||
  chmod 775 /opt/Radarr
 | 
			
		||||
  msg_ok "Updated $APP LXC"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning up"
 | 
			
		||||
  rm -rf "$temp_file"
 | 
			
		||||
  msg_ok "Cleaned up"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -38,4 +52,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}:7878${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7878${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -39,15 +39,12 @@ function update_script() {
 | 
			
		||||
    mv /opt/snipe-it /opt/snipe-it-backup
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar zxf $temp_file
 | 
			
		||||
    mv snipe-it-${RELEASE} /opt/snipe-it
 | 
			
		||||
    $STD curl -fsSL "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" -O
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    mv snipe-it-${RELEASE} /opt/snipe-it
 | 
			
		||||
    tar zxf "$temp_file"
 | 
			
		||||
    mv "snipe-it-${RELEASE}" /opt/snipe-it
 | 
			
		||||
    cp /opt/snipe-it-backup/.env /opt/snipe-it/.env
 | 
			
		||||
    cp -r /opt/snipe-it-backup/public/uploads/ /opt/snipe-it/public/uploads/
 | 
			
		||||
    cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads
 | 
			
		||||
    cd /opt/snipe-it/
 | 
			
		||||
    cd /opt/snipe-it/ || exit
 | 
			
		||||
    export COMPOSER_ALLOW_SUPERUSER=1
 | 
			
		||||
    $STD composer install --no-dev --optimize-autoloader --no-interaction
 | 
			
		||||
    $STD composer dump-autoload
 | 
			
		||||
@@ -58,7 +55,7 @@ function update_script() {
 | 
			
		||||
    $STD php artisan view:clear
 | 
			
		||||
    chown -R www-data: /opt/snipe-it
 | 
			
		||||
    chmod -R 755 /opt/snipe-it
 | 
			
		||||
    rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
    rm -rf "$temp_file"
 | 
			
		||||
    rm -rf /opt/snipe-it-backup
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										73
									
								
								ct/zabbix.sh
									
									
									
									
									
								
							
							
						
						
									
										73
									
								
								ct/zabbix.sh
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.zabbix.com/
 | 
			
		||||
 | 
			
		||||
@@ -20,40 +20,43 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
    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 "https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb" -o $(basename "https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/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-*
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP} Services"
 | 
			
		||||
    systemctl start zabbix-server zabbix-agent2
 | 
			
		||||
    systemctl restart apache2
 | 
			
		||||
    msg_ok "Started ${APP} Services"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  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"
 | 
			
		||||
  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 || exit
 | 
			
		||||
  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-*
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP} Services"
 | 
			
		||||
  systemctl start zabbix-server zabbix-agent2
 | 
			
		||||
  systemctl restart apache2
 | 
			
		||||
  msg_ok "Started ${APP} Services"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning Up"
 | 
			
		||||
  rm -rf /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
  msg_ok "Cleaned"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -20,39 +20,39 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -f /etc/systemd/system/zitadel.service ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -fsSL https://github.com/zitadel/zitadel/releases/latest | grep location: | cut -d '/' -f 8 | tr -d '\r')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt | grep -oP '\d+\.\d+\.\d+')" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
        msg_info "Stopping $APP"
 | 
			
		||||
        systemctl stop zitadel
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
        cd /tmp || exit
 | 
			
		||||
        curl -fsSL https://github.com/zitadel/zitadel/releases/download/"$RELEASE"/zitadel-linux-amd64.tar.gz | tar -xz
 | 
			
		||||
        mv zitadel-linux-amd64/zitadel /usr/local/bin
 | 
			
		||||
        $STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start zitadel
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf /tmp/zitadel-linux-amd64
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /etc/systemd/system/zitadel.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/zitadel/zitadel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt | grep -oP '\d+\.\d+\.\d+')" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop zitadel
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    cd /tmp || exit
 | 
			
		||||
    curl -fsSL "https://github.com/zitadel/zitadel/releases/download/v$RELEASE/zitadel-linux-amd64.tar.gz" | tar -xz
 | 
			
		||||
    mv zitadel-linux-amd64/zitadel /usr/local/bin
 | 
			
		||||
    $STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start zitadel
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf /tmp/zitadel-linux-amd64
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										86
									
								
								frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										86
									
								
								frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -33,7 +33,7 @@
 | 
			
		||||
        "fuse.js": "^7.1.0",
 | 
			
		||||
        "lucide-react": "^0.453.0",
 | 
			
		||||
        "mini-svg-data-uri": "^1.4.4",
 | 
			
		||||
        "next": "15.2.3",
 | 
			
		||||
        "next": "15.2.4",
 | 
			
		||||
        "next-themes": "^0.3.0",
 | 
			
		||||
        "nuqs": "^2.4.1",
 | 
			
		||||
        "pocketbase": "^0.21.5",
 | 
			
		||||
@@ -1598,9 +1598,9 @@
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/env": {
 | 
			
		||||
      "version": "15.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==",
 | 
			
		||||
      "version": "15.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==",
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/eslint-plugin-next": {
 | 
			
		||||
@@ -1644,9 +1644,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-darwin-arm64": {
 | 
			
		||||
      "version": "15.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-uaBhA8aLbXLqwjnsHSkxs353WrRgQgiFjduDpc7YXEU0B54IKx3vU+cxQlYwPCyC8uYEEX7THhtQQsfHnvv8dw==",
 | 
			
		||||
      "version": "15.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
@@ -1660,9 +1660,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-darwin-x64": {
 | 
			
		||||
      "version": "15.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-pVwKvJ4Zk7h+4hwhqOUuMx7Ib02u3gDX3HXPKIShBi9JlYllI0nU6TWLbPT94dt7FSi6mSBhfc2JrHViwqbOdw==",
 | 
			
		||||
      "version": "15.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
@@ -1676,9 +1676,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-linux-arm64-gnu": {
 | 
			
		||||
      "version": "15.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-50ibWdn2RuFFkOEUmo9NCcQbbV9ViQOrUfG48zHBCONciHjaUKtHcYFiCwBVuzD08fzvzkWuuZkd4AqbvKO7UQ==",
 | 
			
		||||
      "version": "15.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
@@ -1692,9 +1692,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-linux-arm64-musl": {
 | 
			
		||||
      "version": "15.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-2gAPA7P652D3HzR4cLyAuVYwYqjG0mt/3pHSWTCyKZq/N/dJcUAEoNQMyUmwTZWCJRKofB+JPuDVP2aD8w2J6Q==",
 | 
			
		||||
      "version": "15.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
@@ -1708,9 +1708,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-linux-x64-gnu": {
 | 
			
		||||
      "version": "15.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-ODSKvrdMgAJOVU4qElflYy1KSZRM3M45JVbeZu42TINCMG3anp7YCBn80RkISV6bhzKwcUqLBAmOiWkaGtBA9w==",
 | 
			
		||||
      "version": "15.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
@@ -1724,9 +1724,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-linux-x64-musl": {
 | 
			
		||||
      "version": "15.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-ZR9kLwCWrlYxwEoytqPi1jhPd1TlsSJWAc+H/CJHmHkf2nD92MQpSRIURR1iNgA/kuFSdxB8xIPt4p/T78kwsg==",
 | 
			
		||||
      "version": "15.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
@@ -1740,9 +1740,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-win32-arm64-msvc": {
 | 
			
		||||
      "version": "15.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-+G2FrDcfm2YDbhDiObDU/qPriWeiz/9cRR0yMWJeTLGGX6/x8oryO3tt7HhodA1vZ8r2ddJPCjtLcpaVl7TE2Q==",
 | 
			
		||||
      "version": "15.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
@@ -1756,9 +1756,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-win32-x64-msvc": {
 | 
			
		||||
      "version": "15.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-gHYS9tc+G2W0ZC8rBL+H6RdtXIyk40uLiaos0yj5US85FNhbFEndMA2nW3z47nzOWiSvXTZ5kBClc3rD0zJg0w==",
 | 
			
		||||
      "version": "15.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
@@ -7194,12 +7194,12 @@
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/next": {
 | 
			
		||||
      "version": "15.2.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/next/-/next-15.2.3.tgz",
 | 
			
		||||
      "integrity": "sha512-x6eDkZxk2rPpu46E1ZVUWIBhYCLszmUY6fvHBFcbzJ9dD+qRX6vcHusaqqDlnY+VngKzKbAiG2iRCkPbmi8f7w==",
 | 
			
		||||
      "version": "15.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/next/-/next-15.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@next/env": "15.2.3",
 | 
			
		||||
        "@next/env": "15.2.4",
 | 
			
		||||
        "@swc/counter": "0.1.3",
 | 
			
		||||
        "@swc/helpers": "0.5.15",
 | 
			
		||||
        "busboy": "1.6.0",
 | 
			
		||||
@@ -7214,14 +7214,14 @@
 | 
			
		||||
        "node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "optionalDependencies": {
 | 
			
		||||
        "@next/swc-darwin-arm64": "15.2.3",
 | 
			
		||||
        "@next/swc-darwin-x64": "15.2.3",
 | 
			
		||||
        "@next/swc-linux-arm64-gnu": "15.2.3",
 | 
			
		||||
        "@next/swc-linux-arm64-musl": "15.2.3",
 | 
			
		||||
        "@next/swc-linux-x64-gnu": "15.2.3",
 | 
			
		||||
        "@next/swc-linux-x64-musl": "15.2.3",
 | 
			
		||||
        "@next/swc-win32-arm64-msvc": "15.2.3",
 | 
			
		||||
        "@next/swc-win32-x64-msvc": "15.2.3",
 | 
			
		||||
        "@next/swc-darwin-arm64": "15.2.4",
 | 
			
		||||
        "@next/swc-darwin-x64": "15.2.4",
 | 
			
		||||
        "@next/swc-linux-arm64-gnu": "15.2.4",
 | 
			
		||||
        "@next/swc-linux-arm64-musl": "15.2.4",
 | 
			
		||||
        "@next/swc-linux-x64-gnu": "15.2.4",
 | 
			
		||||
        "@next/swc-linux-x64-musl": "15.2.4",
 | 
			
		||||
        "@next/swc-win32-arm64-msvc": "15.2.4",
 | 
			
		||||
        "@next/swc-win32-x64-msvc": "15.2.4",
 | 
			
		||||
        "sharp": "^0.33.5"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
@@ -9667,9 +9667,9 @@
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/vite": {
 | 
			
		||||
      "version": "6.2.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz",
 | 
			
		||||
      "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==",
 | 
			
		||||
      "version": "6.2.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.5.tgz",
 | 
			
		||||
      "integrity": "sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
    "fuse.js": "^7.1.0",
 | 
			
		||||
    "lucide-react": "^0.453.0",
 | 
			
		||||
    "mini-svg-data-uri": "^1.4.4",
 | 
			
		||||
    "next": "15.2.3",
 | 
			
		||||
    "next": "15.2.4",
 | 
			
		||||
    "next-themes": "^0.3.0",
 | 
			
		||||
    "nuqs": "^2.4.1",
 | 
			
		||||
    "pocketbase": "^0.21.5",
 | 
			
		||||
 
 | 
			
		||||
@@ -19,8 +19,8 @@
 | 
			
		||||
            "script": "ct/actualbudget.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 2,
 | 
			
		||||
                "ram": 2048,
 | 
			
		||||
                "hdd": 4,
 | 
			
		||||
                "ram": 8192,
 | 
			
		||||
                "hdd": 7,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
    "name": "Channels DVR Server",
 | 
			
		||||
    "slug": "channels",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        15
 | 
			
		||||
        13
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2024-05-02",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
@@ -36,4 +36,4 @@
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -36,9 +36,9 @@
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "To exclude LXCs from updating, edit the crontab using `crontab -e` and add CTID as shown in the example below:\n\n\n\n`0 0 * * 0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c '$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/update-lxcs-cron.sh)' -s 103 111 >>/var/log/update-lxcs-cron.log 2>/dev/null`",
 | 
			
		||||
            "text": "To exclude LXCs from updating, edit the crontab using `crontab -e` and add CTID as shown in the example below:\n\n\n\n`0 0 * * 0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c '$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/update-lxcs-cron.sh)' -s 103 111 >>/var/log/update-lxcs-cron.log 2>/dev/null`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,34 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Hoarder",
 | 
			
		||||
  "slug": "hoarder",
 | 
			
		||||
  "categories": [
 | 
			
		||||
        12
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-12-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": "https://docs.hoarder.app/",
 | 
			
		||||
  "website": "https://hoarder.app/",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/hoarder.svg",
 | 
			
		||||
  "description": "Hoarder is an AI-powered bookmarking tool that helps you save and organize your digital content. It automatically tags your links, notes, and images, making them easy to find later. With features like auto-fetching, lists, and full-text search, Hoarder is the perfect tool for anyone who wants to keep track of their digital life.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/hoarder.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 10,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								frontend/public/json/karakeep.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								frontend/public/json/karakeep.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "karakeep",
 | 
			
		||||
  "slug": "karakeep",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    12
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-04-07",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": "https://docs.karakeep.app/",
 | 
			
		||||
  "website": "https://karakeep.app/",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/karakeep.svg",
 | 
			
		||||
  "description": "karakeep (formerly: hoarder) is an AI-powered bookmarking tool that helps you save and organize your digital content. It automatically tags your links, notes, and images, making them easy to find later. With features like auto-fetching, lists, and full-text search, karakeep is the perfect tool for anyone who wants to keep track of their digital life.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/karakeep.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 10,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
@@ -1,34 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Lidarr",
 | 
			
		||||
    "slug": "lidarr",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        14
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2024-05-02",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": false,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 8686,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "https://lidarr.audio/",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/lidarr.svg",
 | 
			
		||||
    "description": "Lidarr is a music management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their music collection with ease. Lidarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Radarr, to automate the downloading and organizing of music files. The software provides a web-based interface for managing and organizing music, making it easy to search and find songs, albums, and artists. Lidarr also supports metadata management, including album art, artist information, and lyrics, making it easy for users to keep their music collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing music collections, making it a valuable tool for music lovers who want to keep their collection organized and up-to-date. With Lidarr, users can enjoy their music collection from anywhere, making it a powerful tool for managing and sharing music files.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/lidarr.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 2,
 | 
			
		||||
                "ram": 1024,
 | 
			
		||||
                "hdd": 4,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
  "name": "Lidarr",
 | 
			
		||||
  "slug": "lidarr",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    14
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8686,
 | 
			
		||||
  "documentation": null,
 | 
			
		||||
  "website": "https://lidarr.audio/",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/lidarr.svg",
 | 
			
		||||
  "description": "Lidarr is a music management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their music collection with ease. Lidarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Radarr, to automate the downloading and organizing of music files. The software provides a web-based interface for managing and organizing music, making it easy to search and find songs, albums, and artists. Lidarr also supports metadata management, including album art, artist information, and lyrics, making it easy for users to keep their music collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing music collections, making it a valuable tool for music lovers who want to keep their collection organized and up-to-date. With Lidarr, users can enjoy their music collection from anywhere, making it a powerful tool for managing and sharing music files.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/lidarr.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										43
									
								
								frontend/public/json/meilisearch.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								frontend/public/json/meilisearch.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Meilisearch",
 | 
			
		||||
  "slug": "meilisearch",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    8
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-04-04",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 7700,
 | 
			
		||||
  "documentation": "https://www.meilisearch.com/docs",
 | 
			
		||||
  "website": "https://www.meilisearch.com/",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/meilisearch.svg",
 | 
			
		||||
  "description": "Meilisearch is a fast, open-source search engine designed for instant, full-text search with typo tolerance. It provides an API that allows developers to integrate powerful search features into applications. Meilisearch-UI is an optional web-based interface that provides a simple way to interact with Meilisearch, visualize indexed data, and test queries without needing to use the API directly.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/meilisearch.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 7,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Meilisearch-UI can optionally be installed for a web-based search interface",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Meilisearch-UI has early development status and can caused performance issues",
 | 
			
		||||
      "type": "warn"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  "name": "NextPVR",
 | 
			
		||||
  "slug": "nextpvr",
 | 
			
		||||
  "categories": [
 | 
			
		||||
        15
 | 
			
		||||
        13
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-11-20",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										43
									
								
								frontend/public/json/openziti-tunnel.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								frontend/public/json/openziti-tunnel.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "openziti-tunnel",
 | 
			
		||||
  "slug": "openziti-tunnel",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    4
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-04-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": "https://openziti.io/docs/reference/tunnelers/docker/",
 | 
			
		||||
  "website": "https://www.openziti.io/",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/openziti/ziti-doc/main/docusaurus/static/img/ziti-logo-dark.svg",
 | 
			
		||||
  "description": "OpenZiti is an open-source, zero trust networking platform that enables secure connectivity between applications, services, and devices. It provides secure, encrypted connections between clients and services, and can be used to create secure, zero trust networks.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/openziti-tunnel.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "Ubuntu",
 | 
			
		||||
        "version": "24.04"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "The Openziti tunnel is installed in host mode; please see documentation for more information",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Openziti tunnel prompts for identity enrollment token during installation",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,34 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Prowlarr",
 | 
			
		||||
    "slug": "prowlarr",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        14
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2024-05-02",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": false,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 9696,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "https://github.com/Prowlarr/Prowlarr",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/prowlarr.svg",
 | 
			
		||||
    "description": "Prowlarr is a software tool designed to integrate with various PVR (Personal Video Recorder) apps. It is built on a popular *arr .net/ReactJS base stack and serves as an indexer manager and proxy. Prowlarr makes it easy to manage and organize TV show and movie collections, by integrating with popular PVR apps and automating the downloading and organizing of media files. The software provides a web-based interface for managing and organizing TV shows and movies, making it easy to search and find content. Prowlarr also supports metadata management, including show and movie information, making it easy for users to keep their media collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing media collections, making it a valuable tool for media enthusiasts who want to keep their collection organized and up-to-date. With Prowlarr, users can enjoy their media collection from anywhere, making it a powerful tool for managing and sharing media files.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/prowlarr.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 2,
 | 
			
		||||
                "ram": 1024,
 | 
			
		||||
                "hdd": 4,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
  "name": "Prowlarr",
 | 
			
		||||
  "slug": "prowlarr",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    14
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 9696,
 | 
			
		||||
  "documentation": null,
 | 
			
		||||
  "website": "https://github.com/Prowlarr/Prowlarr",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/prowlarr.svg",
 | 
			
		||||
  "description": "Prowlarr is a software tool designed to integrate with various PVR (Personal Video Recorder) apps. It is built on a popular *arr .net/ReactJS base stack and serves as an indexer manager and proxy. Prowlarr makes it easy to manage and organize TV show and movie collections, by integrating with popular PVR apps and automating the downloading and organizing of media files. The software provides a web-based interface for managing and organizing TV shows and movies, making it easy to search and find content. Prowlarr also supports metadata management, including show and movie information, making it easy for users to keep their media collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing media collections, making it a valuable tool for media enthusiasts who want to keep their collection organized and up-to-date. With Prowlarr, users can enjoy their media collection from anywhere, making it a powerful tool for managing and sharing media files.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/prowlarr.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,34 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Radarr",
 | 
			
		||||
    "slug": "radarr",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        14
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2024-05-02",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": false,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 7878,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "https://radarr.video/",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/radarr.svg",
 | 
			
		||||
    "description": "Radarr is a movie management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their movie collection with ease. Radarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Lidarr, to automate the downloading and organizing of movie files. The software provides a web-based interface for managing and organizing movies, making it easy to search and find titles, genres, and release dates. Radarr also supports metadata management, including movie posters and information, making it easy for users to keep their movie collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing movie collections, making it a valuable tool for movie enthusiasts who want to keep their collection organized and up-to-date. With Radarr, users can enjoy their movie collection from anywhere, making it a powerful tool for managing and sharing movie files.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/radarr.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 2,
 | 
			
		||||
                "ram": 1024,
 | 
			
		||||
                "hdd": 4,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
  "name": "Radarr",
 | 
			
		||||
  "slug": "radarr",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    14
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-05-02",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 7878,
 | 
			
		||||
  "documentation": null,
 | 
			
		||||
  "website": "https://radarr.video/",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/radarr.svg",
 | 
			
		||||
  "description": "Radarr is a movie management tool designed for Usenet and BitTorrent users. It allows users to manage and organize their movie collection with ease. Radarr integrates with popular Usenet and BitTorrent clients, such as Sonarr and Lidarr, to automate the downloading and organizing of movie files. The software provides a web-based interface for managing and organizing movies, making it easy to search and find titles, genres, and release dates. Radarr also supports metadata management, including movie posters and information, making it easy for users to keep their movie collection organized and up-to-date. The software is designed to be easy to use and provides a simple and intuitive interface for managing and organizing movie collections, making it a valuable tool for movie enthusiasts who want to keep their collection organized and up-to-date. With Radarr, users can enjoy their movie collection from anywhere, making it a powerful tool for managing and sharing movie files.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/radarr.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,7 @@
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "See /opt/slskd/config/sksld.yml to add your Soulseek credentials",
 | 
			
		||||
      "text": "See /opt/slskd/config/slskd.yml to add your Soulseek credentials",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,23 +1,23 @@
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fhem/fhem-mirror",
 | 
			
		||||
    "version": "6.2",
 | 
			
		||||
    "date": "2025-04-01T10:35:00Z"
 | 
			
		||||
    "name": "Graylog2/graylog2-server",
 | 
			
		||||
    "version": "6.2.0-beta.4",
 | 
			
		||||
    "date": "2025-04-07T11:28:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "OctoPrint/OctoPrint",
 | 
			
		||||
    "version": "1.10.3",
 | 
			
		||||
    "date": "2024-11-05T09:20:50Z"
 | 
			
		||||
    "name": "VictoriaMetrics/VictoriaMetrics",
 | 
			
		||||
    "version": "pmm-6401-v1.115.0",
 | 
			
		||||
    "date": "2025-04-07T11:15:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "semaphoreui/semaphore",
 | 
			
		||||
    "version": "v2.13.7",
 | 
			
		||||
    "date": "2025-04-01T09:41:55Z"
 | 
			
		||||
    "version": "v2.13.10",
 | 
			
		||||
    "date": "2025-04-07T11:05:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Checkmk/checkmk",
 | 
			
		||||
    "version": "v2.4.0b3-rc1",
 | 
			
		||||
    "date": "2025-04-01T09:22:44Z"
 | 
			
		||||
    "name": "fhem/fhem-mirror",
 | 
			
		||||
    "version": "6.2",
 | 
			
		||||
    "date": "2025-04-07T10:34:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "syncthing/syncthing",
 | 
			
		||||
@@ -25,30 +25,340 @@
 | 
			
		||||
    "date": "2025-04-01T08:45:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "v4.11.2",
 | 
			
		||||
    "date": "2025-04-01T07:07:35Z"
 | 
			
		||||
    "name": "fallenbagel/jellyseerr",
 | 
			
		||||
    "version": "preview-back-to-axios",
 | 
			
		||||
    "date": "2025-04-07T09:23:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zwave-js/zwave-js-ui",
 | 
			
		||||
    "version": "v10.1.5",
 | 
			
		||||
    "date": "2025-04-07T09:19:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Checkmk/checkmk",
 | 
			
		||||
    "version": "v2.4.0b4-rc1",
 | 
			
		||||
    "date": "2025-04-07T09:13:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "redis/redis",
 | 
			
		||||
    "version": "8.0-rc1-int2",
 | 
			
		||||
    "date": "2025-04-02T19:05:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zabbix/zabbix",
 | 
			
		||||
    "version": "7.4.0beta1",
 | 
			
		||||
    "date": "2025-04-07T08:14:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "StarFleetCPTN/GoMFT",
 | 
			
		||||
    "version": "v0.2.5",
 | 
			
		||||
    "date": "2025-04-07T07:43:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v24.8",
 | 
			
		||||
    "date": "2025-03-18T07:33:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mattermost/mattermost",
 | 
			
		||||
    "version": "server/public/v0.1.11",
 | 
			
		||||
    "date": "2025-03-28T14:04:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "morpheus65535/bazarr",
 | 
			
		||||
    "version": "v1.5.1",
 | 
			
		||||
    "date": "2025-01-01T16:15:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.22.1714",
 | 
			
		||||
    "date": "2025-04-01T05:50:38Z"
 | 
			
		||||
    "version": "v0.22.1740",
 | 
			
		||||
    "date": "2025-04-07T05:56:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "prometheus/prometheus",
 | 
			
		||||
    "version": "v0.303.0-rc.1",
 | 
			
		||||
    "date": "2025-04-07T04:39:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "open-webui/open-webui",
 | 
			
		||||
    "version": "v0.6.2",
 | 
			
		||||
    "date": "2025-04-07T03:41:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.2.10",
 | 
			
		||||
    "date": "2025-03-22T13:02:26Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Luligu/matterbridge",
 | 
			
		||||
    "version": "2.2.7",
 | 
			
		||||
    "date": "2025-04-06T20:00:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Dolibarr/dolibarr",
 | 
			
		||||
    "version": "21.0.1",
 | 
			
		||||
    "date": "2025-04-06T19:22:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pelican-dev/wings",
 | 
			
		||||
    "version": "v1.0.0-beta11",
 | 
			
		||||
    "date": "2025-04-06T18:52:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "stonith404/pingvin-share",
 | 
			
		||||
    "version": "v1.11.1",
 | 
			
		||||
    "date": "2025-04-06T18:39:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wavelog/wavelog",
 | 
			
		||||
    "version": "2.0.3",
 | 
			
		||||
    "date": "2025-04-06T17:35:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TandoorRecipes/recipes",
 | 
			
		||||
    "version": "1.5.34",
 | 
			
		||||
    "date": "2025-03-27T16:17:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "runtipi/runtipi",
 | 
			
		||||
    "version": "v3.10.0",
 | 
			
		||||
    "date": "2025-03-15T14:38:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "stackblitz-labs/bolt.diy",
 | 
			
		||||
    "version": "v0.0.7-hf1",
 | 
			
		||||
    "date": "2025-03-10T20:49:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "msgbyte/tianji",
 | 
			
		||||
    "version": "v1.19.7",
 | 
			
		||||
    "date": "2025-04-06T14:22:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Prowlarr/Prowlarr",
 | 
			
		||||
    "version": "v1.32.2.4987",
 | 
			
		||||
    "date": "2025-03-16T09:41:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Radarr/Radarr",
 | 
			
		||||
    "version": "v5.21.1.9799",
 | 
			
		||||
    "date": "2025-03-24T15:52:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "karakeep-app/karakeep",
 | 
			
		||||
    "version": "extension/v1.2.4",
 | 
			
		||||
    "date": "2025-04-06T11:56:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TechnitiumSoftware/DnsServer",
 | 
			
		||||
    "version": "v13.5.0",
 | 
			
		||||
    "date": "2025-04-06T11:24:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TriliumNext/Notes",
 | 
			
		||||
    "version": "v0.92.6",
 | 
			
		||||
    "date": "2025-04-06T10:38:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "kimai/kimai",
 | 
			
		||||
    "version": "2.32.0",
 | 
			
		||||
    "date": "2025-04-06T09:43:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "inventree/InvenTree",
 | 
			
		||||
    "version": "0.17.10",
 | 
			
		||||
    "date": "2025-04-06T05:31:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.6.5-rc0",
 | 
			
		||||
    "date": "2025-04-03T23:57:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jellyfin/jellyfin",
 | 
			
		||||
    "version": "v10.10.7",
 | 
			
		||||
    "date": "2025-04-05T19:14:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "azukaar/Cosmos-Server",
 | 
			
		||||
    "version": "v0.18.4",
 | 
			
		||||
    "date": "2025-04-05T19:12:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wger-project/wger",
 | 
			
		||||
    "version": "2.3",
 | 
			
		||||
    "date": "2025-04-05T18:05:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Paymenter/Paymenter",
 | 
			
		||||
    "version": "v1.0.2",
 | 
			
		||||
    "date": "2025-04-05T17:40:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.1.4",
 | 
			
		||||
    "date": "2025-03-13T15:41:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bastienwirtz/homer",
 | 
			
		||||
    "version": "v25.04.1",
 | 
			
		||||
    "date": "2025-04-05T12:39:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "navidrome/navidrome",
 | 
			
		||||
    "version": "v0.55.2",
 | 
			
		||||
    "date": "2025-04-05T12:07:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Kozea/Radicale",
 | 
			
		||||
    "version": "v3.5.1",
 | 
			
		||||
    "date": "2025-04-05T06:20:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "actualbudget/actual",
 | 
			
		||||
    "version": "v25.4.0",
 | 
			
		||||
    "date": "2025-04-05T04:14:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.4.1",
 | 
			
		||||
    "date": "2025-04-04T20:59:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Koenkk/zigbee2mqtt",
 | 
			
		||||
    "version": "2.2.1",
 | 
			
		||||
    "date": "2025-04-04T20:15:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "YunoHost/yunohost",
 | 
			
		||||
    "version": "debian/12.0.13",
 | 
			
		||||
    "date": "2025-04-04T20:05:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "coder/code-server",
 | 
			
		||||
    "version": "v4.98.2",
 | 
			
		||||
    "date": "2025-03-15T02:11:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "homarr-labs/homarr",
 | 
			
		||||
    "version": "v1.14.0",
 | 
			
		||||
    "date": "2025-04-04T19:15:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Athou/commafeed",
 | 
			
		||||
    "version": "5.7.0",
 | 
			
		||||
    "date": "2025-04-04T18:10:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "icereed/paperless-gpt",
 | 
			
		||||
    "version": "v0.14.4",
 | 
			
		||||
    "date": "2025-04-04T14:18:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "apache/tomcat",
 | 
			
		||||
    "version": "9.0.104",
 | 
			
		||||
    "date": "2025-04-04T12:58:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sabnzbd/sabnzbd",
 | 
			
		||||
    "version": "4.5.0",
 | 
			
		||||
    "date": "2025-03-30T16:17:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "dgtlmoon/changedetection.io",
 | 
			
		||||
    "version": "0.49.12",
 | 
			
		||||
    "date": "2025-04-04T07:31:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "coverity-w14-4.12.0",
 | 
			
		||||
    "date": "2025-04-04T00:03:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "minio/minio",
 | 
			
		||||
    "version": "RELEASE.2025-04-03T14-56-28Z",
 | 
			
		||||
    "date": "2025-04-03T19:08:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "OctoPrint/OctoPrint",
 | 
			
		||||
    "version": "1.10.3",
 | 
			
		||||
    "date": "2024-11-05T09:20:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jupyter/notebook",
 | 
			
		||||
    "version": "@jupyter-notebook/ui-components@7.4.0-rc.0",
 | 
			
		||||
    "date": "2025-04-03T06:49:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rabbitmq/rabbitmq-server",
 | 
			
		||||
    "version": "v4.0.8",
 | 
			
		||||
    "date": "2025-04-03T05:11:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.35.1",
 | 
			
		||||
    "date": "2025-04-02T21:49:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v2.63.9",
 | 
			
		||||
    "date": "2025-03-31T12:47:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "BookStackApp/BookStack",
 | 
			
		||||
    "version": "v25.02.2",
 | 
			
		||||
    "date": "2025-04-02T16:39:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cloudflare/cloudflared",
 | 
			
		||||
    "version": "2025.4.0",
 | 
			
		||||
    "date": "2025-04-02T15:38:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jenkinsci/jenkins",
 | 
			
		||||
    "version": "jenkins-2.503",
 | 
			
		||||
    "date": "2025-04-02T15:12:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "hargata/lubelog",
 | 
			
		||||
    "version": "v1.4.6",
 | 
			
		||||
    "date": "2025-04-02T14:07:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "immich-app/immich",
 | 
			
		||||
    "version": "v1.131.3",
 | 
			
		||||
    "date": "2025-04-01T22:48:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MagicMirrorOrg/MagicMirror",
 | 
			
		||||
    "version": "v2.31.0",
 | 
			
		||||
    "date": "2025-04-01T18:12:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "influxdata/influxdb",
 | 
			
		||||
    "version": "v3.0.0-0.beta.3",
 | 
			
		||||
    "date": "2025-04-01T15:34:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "element-hq/synapse",
 | 
			
		||||
    "version": "v1.127.1",
 | 
			
		||||
    "date": "2025-03-26T21:44:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "theonedev/onedev",
 | 
			
		||||
    "version": "v11.8.6",
 | 
			
		||||
    "date": "2025-04-01T13:52:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "neo4j/neo4j",
 | 
			
		||||
    "version": "5.26.5",
 | 
			
		||||
    "date": "2025-04-01T09:32:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "diced/zipline",
 | 
			
		||||
    "version": "v4.0.2",
 | 
			
		||||
    "date": "2025-04-01T04:51:05Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "open-webui/open-webui",
 | 
			
		||||
    "version": "v0.6.0",
 | 
			
		||||
    "date": "2025-04-01T01:47:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "outline/outline",
 | 
			
		||||
    "version": "v0.82.1-18",
 | 
			
		||||
@@ -64,31 +374,11 @@
 | 
			
		||||
    "version": "v2.2.0",
 | 
			
		||||
    "date": "2025-03-31T21:31:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "immich-app/immich",
 | 
			
		||||
    "version": "v1.131.1",
 | 
			
		||||
    "date": "2025-03-31T20:53:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.3.4",
 | 
			
		||||
    "date": "2025-03-21T20:22:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "NodeBB/NodeBB",
 | 
			
		||||
    "version": "v4.2.0",
 | 
			
		||||
    "date": "2025-03-19T18:34:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "runtipi/runtipi",
 | 
			
		||||
    "version": "v3.10.0",
 | 
			
		||||
    "date": "2025-03-15T14:38:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "redis/redis",
 | 
			
		||||
    "version": "8.0-rc1-int",
 | 
			
		||||
    "date": "2025-03-31T18:26:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "traefik/traefik",
 | 
			
		||||
    "version": "v3.3.5",
 | 
			
		||||
@@ -99,61 +389,21 @@
 | 
			
		||||
    "version": "15.1",
 | 
			
		||||
    "date": "2025-03-31T13:42:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "theonedev/onedev",
 | 
			
		||||
    "version": "v11.8.5",
 | 
			
		||||
    "date": "2025-03-31T13:14:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.84.3",
 | 
			
		||||
    "date": "2025-03-27T11:54:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v2.63.9",
 | 
			
		||||
    "date": "2025-03-31T12:47:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Graylog2/graylog2-server",
 | 
			
		||||
    "version": "6.2.0-beta.3",
 | 
			
		||||
    "date": "2025-03-31T11:22:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "documenso/documenso",
 | 
			
		||||
    "version": "v1.10.0-rc.4",
 | 
			
		||||
    "date": "2025-03-31T09:02:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fallenbagel/jellyseerr",
 | 
			
		||||
    "version": "preview-fix-remove-button",
 | 
			
		||||
    "date": "2025-03-31T08:41:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.1.4",
 | 
			
		||||
    "date": "2025-03-13T15:41:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MediaBrowser/Emby.Releases",
 | 
			
		||||
    "version": "4.8.11.0",
 | 
			
		||||
    "date": "2025-03-10T06:39:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TriliumNext/Notes",
 | 
			
		||||
    "version": "v0.92.5",
 | 
			
		||||
    "date": "2025-03-30T12:32:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "icereed/paperless-gpt",
 | 
			
		||||
    "version": "v0.14.2",
 | 
			
		||||
    "date": "2025-03-30T19:50:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "StarFleetCPTN/GoMFT",
 | 
			
		||||
    "version": "v0.2.4",
 | 
			
		||||
    "date": "2025-03-30T19:46:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "louislam/dockge",
 | 
			
		||||
    "version": "1.5.0",
 | 
			
		||||
@@ -164,11 +414,6 @@
 | 
			
		||||
    "version": "v6.0.6",
 | 
			
		||||
    "date": "2025-03-30T16:59:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sabnzbd/sabnzbd",
 | 
			
		||||
    "version": "4.5.0",
 | 
			
		||||
    "date": "2025-03-30T16:17:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Part-DB/Part-DB-server",
 | 
			
		||||
    "version": "v1.17.0",
 | 
			
		||||
@@ -184,11 +429,6 @@
 | 
			
		||||
    "version": "v0.26.6",
 | 
			
		||||
    "date": "2025-03-30T08:02:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Prowlarr/Prowlarr",
 | 
			
		||||
    "version": "v1.32.2.4987",
 | 
			
		||||
    "date": "2025-03-16T09:41:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Readarr/Readarr",
 | 
			
		||||
    "version": "v2.0.0.4645",
 | 
			
		||||
@@ -199,11 +439,6 @@
 | 
			
		||||
    "version": "v2.10.3.4602",
 | 
			
		||||
    "date": "2025-03-23T11:00:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Radarr/Radarr",
 | 
			
		||||
    "version": "v5.21.1.9799",
 | 
			
		||||
    "date": "2025-03-24T15:52:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "aceberg/WatchYourLAN",
 | 
			
		||||
    "version": "2.1.2-alpine",
 | 
			
		||||
@@ -239,16 +474,6 @@
 | 
			
		||||
    "version": "2025.3.28",
 | 
			
		||||
    "date": "2025-03-29T00:18:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "msgbyte/tianji",
 | 
			
		||||
    "version": "v1.19.5",
 | 
			
		||||
    "date": "2025-03-28T22:03:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "homarr-labs/homarr",
 | 
			
		||||
    "version": "v1.13.1",
 | 
			
		||||
    "date": "2025-03-28T21:58:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TasmoAdmin/TasmoAdmin",
 | 
			
		||||
    "version": "v4.2.3",
 | 
			
		||||
@@ -284,11 +509,6 @@
 | 
			
		||||
    "version": "version/2025.2.3",
 | 
			
		||||
    "date": "2025-03-28T14:28:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mattermost/mattermost",
 | 
			
		||||
    "version": "server/public/v0.1.11",
 | 
			
		||||
    "date": "2025-03-28T14:04:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "hakimel/reveal.js",
 | 
			
		||||
    "version": "5.2.1",
 | 
			
		||||
@@ -299,11 +519,6 @@
 | 
			
		||||
    "version": "336.2",
 | 
			
		||||
    "date": "2025-03-28T10:16:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "YunoHost/yunohost",
 | 
			
		||||
    "version": "debian/12.0.12",
 | 
			
		||||
    "date": "2025-03-16T11:59:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gethomepage/homepage",
 | 
			
		||||
    "version": "v1.1.1",
 | 
			
		||||
@@ -324,71 +539,26 @@
 | 
			
		||||
    "version": "2025.2",
 | 
			
		||||
    "date": "2025-03-27T19:21:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TandoorRecipes/recipes",
 | 
			
		||||
    "version": "1.5.34",
 | 
			
		||||
    "date": "2025-03-27T16:17:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zwave-js/zwave-js-ui",
 | 
			
		||||
    "version": "v10.1.3",
 | 
			
		||||
    "date": "2025-03-27T15:51:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "tailscale/tailscale",
 | 
			
		||||
    "version": "v1.82.0",
 | 
			
		||||
    "date": "2025-03-27T13:08:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zabbix/zabbix",
 | 
			
		||||
    "version": "7.2.5",
 | 
			
		||||
    "date": "2025-03-27T11:06:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "evcc-io/evcc",
 | 
			
		||||
    "version": "0.202.1",
 | 
			
		||||
    "date": "2025-03-27T08:24:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "morpheus65535/bazarr",
 | 
			
		||||
    "version": "v1.5.1",
 | 
			
		||||
    "date": "2025-01-01T16:15:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "openobserve/openobserve",
 | 
			
		||||
    "version": "v0.14.5-rc6",
 | 
			
		||||
    "date": "2025-03-27T05:15:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "element-hq/synapse",
 | 
			
		||||
    "version": "v1.127.1",
 | 
			
		||||
    "date": "2025-03-26T21:44:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.1.0.112-2.1.0.112_canary_2025-03-26",
 | 
			
		||||
    "date": "2025-03-26T21:04:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.6.3-rc1",
 | 
			
		||||
    "date": "2025-03-26T20:39:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "dgtlmoon/changedetection.io",
 | 
			
		||||
    "version": "0.49.9",
 | 
			
		||||
    "date": "2025-03-26T15:31:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "prometheus/prometheus",
 | 
			
		||||
    "version": "v0.303.0-rc.0",
 | 
			
		||||
    "date": "2025-03-26T12:48:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jupyter/notebook",
 | 
			
		||||
    "version": "@jupyter-notebook/ui-components@7.4.0-beta.3",
 | 
			
		||||
    "date": "2025-03-26T10:07:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "forgejo/forgejo",
 | 
			
		||||
    "version": "v12.0.0-dev",
 | 
			
		||||
@@ -424,41 +594,21 @@
 | 
			
		||||
    "version": "v0.0.7",
 | 
			
		||||
    "date": "2025-03-25T15:11:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jenkinsci/jenkins",
 | 
			
		||||
    "version": "jenkins-2.503",
 | 
			
		||||
    "date": "2025-03-25T14:01:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "crowdsecurity/crowdsec",
 | 
			
		||||
    "version": "v1.6.8",
 | 
			
		||||
    "date": "2025-03-25T13:33:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "VictoriaMetrics/VictoriaMetrics",
 | 
			
		||||
    "version": "pmm-6401-v1.114.0",
 | 
			
		||||
    "date": "2025-03-25T07:58:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "caddyserver/caddy",
 | 
			
		||||
    "version": "v2.9.1",
 | 
			
		||||
    "date": "2025-01-08T15:22:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "influxdata/influxdb",
 | 
			
		||||
    "version": "v3.0.0-0.beta.2",
 | 
			
		||||
    "date": "2025-03-24T21:12:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ZoeyVid/NPMplus",
 | 
			
		||||
    "version": "2025-03-24-r2",
 | 
			
		||||
    "date": "2025-03-24T20:52:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.35.0",
 | 
			
		||||
    "date": "2025-03-24T20:51:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "go-gitea/gitea",
 | 
			
		||||
    "version": "v1.23.6",
 | 
			
		||||
@@ -469,16 +619,6 @@
 | 
			
		||||
    "version": "v0.9.0",
 | 
			
		||||
    "date": "2025-03-24T18:25:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wavelog/wavelog",
 | 
			
		||||
    "version": "2.0.2",
 | 
			
		||||
    "date": "2025-03-24T12:02:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v24.8",
 | 
			
		||||
    "date": "2025-03-18T07:33:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "requarks/wiki",
 | 
			
		||||
    "version": "v2.5.307",
 | 
			
		||||
@@ -499,11 +639,6 @@
 | 
			
		||||
    "version": "v0.24.2",
 | 
			
		||||
    "date": "2025-03-23T04:01:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "hoarder-app/hoarder",
 | 
			
		||||
    "version": "sdk/v0.23.0",
 | 
			
		||||
    "date": "2025-03-22T17:26:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "netbox-community/netbox",
 | 
			
		||||
    "version": "v4.2.6",
 | 
			
		||||
@@ -534,31 +669,11 @@
 | 
			
		||||
    "version": "v0.9.77",
 | 
			
		||||
    "date": "2025-03-21T02:25:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "stonith404/pingvin-share",
 | 
			
		||||
    "version": "v1.10.4",
 | 
			
		||||
    "date": "2025-03-20T18:56:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "neo4j/neo4j",
 | 
			
		||||
    "version": "4.4.42",
 | 
			
		||||
    "date": "2025-03-20T14:44:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rabbitmq/rabbitmq-server",
 | 
			
		||||
    "version": "v4.0.7",
 | 
			
		||||
    "date": "2025-02-26T19:07:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "seanmorley15/AdventureLog",
 | 
			
		||||
    "version": "v0.9.0",
 | 
			
		||||
    "date": "2025-03-19T13:30:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Luligu/matterbridge",
 | 
			
		||||
    "version": "2.2.5",
 | 
			
		||||
    "date": "2025-03-19T09:11:26Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Donkie/Spoolman",
 | 
			
		||||
    "version": "v0.22.1",
 | 
			
		||||
@@ -579,11 +694,6 @@
 | 
			
		||||
    "version": "v2.20.0",
 | 
			
		||||
    "date": "2025-03-17T22:44:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bastienwirtz/homer",
 | 
			
		||||
    "version": "v25.03.3",
 | 
			
		||||
    "date": "2025-03-17T20:55:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Kareadita/Kavita",
 | 
			
		||||
    "version": "v0.8.5.11",
 | 
			
		||||
@@ -594,11 +704,6 @@
 | 
			
		||||
    "version": "v4.0.14.2939",
 | 
			
		||||
    "date": "2025-03-17T19:12:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "inventree/InvenTree",
 | 
			
		||||
    "version": "0.17.9",
 | 
			
		||||
    "date": "2025-03-17T12:13:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "webmin/webmin",
 | 
			
		||||
    "version": "2.303",
 | 
			
		||||
@@ -609,21 +714,6 @@
 | 
			
		||||
    "version": "v1.60.0",
 | 
			
		||||
    "date": "2025-03-16T18:39:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "BookStackApp/BookStack",
 | 
			
		||||
    "version": "v25.02.1",
 | 
			
		||||
    "date": "2025-03-16T12:51:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Kozea/Radicale",
 | 
			
		||||
    "version": "v3.5.0",
 | 
			
		||||
    "date": "2025-03-16T06:05:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pelican-dev/wings",
 | 
			
		||||
    "version": "v1.0.0-beta10",
 | 
			
		||||
    "date": "2025-03-15T20:24:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pelican-dev/panel",
 | 
			
		||||
    "version": "v1.0.0-beta18",
 | 
			
		||||
@@ -634,16 +724,6 @@
 | 
			
		||||
    "version": "v0.10.2",
 | 
			
		||||
    "date": "2025-03-15T07:14:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "navidrome/navidrome",
 | 
			
		||||
    "version": "v0.55.1",
 | 
			
		||||
    "date": "2025-03-15T05:36:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "coder/code-server",
 | 
			
		||||
    "version": "v4.98.2",
 | 
			
		||||
    "date": "2025-03-15T02:11:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Threadfin/Threadfin",
 | 
			
		||||
    "version": "1.2.31",
 | 
			
		||||
@@ -669,16 +749,6 @@
 | 
			
		||||
    "version": "1.26.1",
 | 
			
		||||
    "date": "2025-03-13T21:34:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "kimai/kimai",
 | 
			
		||||
    "version": "2.31.0",
 | 
			
		||||
    "date": "2025-03-13T17:13:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "minio/minio",
 | 
			
		||||
    "version": "RELEASE.2025-03-12T18-04-18Z",
 | 
			
		||||
    "date": "2025-03-12T18:45:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "transmission/transmission",
 | 
			
		||||
    "version": "4.0.1-beta.1",
 | 
			
		||||
@@ -709,11 +779,6 @@
 | 
			
		||||
    "version": "v0.8.2",
 | 
			
		||||
    "date": "2025-03-11T05:20:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "stackblitz-labs/bolt.diy",
 | 
			
		||||
    "version": "v0.0.7-hf1",
 | 
			
		||||
    "date": "2025-03-10T20:49:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "AlexxIT/go2rtc",
 | 
			
		||||
    "version": "v1.9.9",
 | 
			
		||||
@@ -744,21 +809,11 @@
 | 
			
		||||
    "version": "v0.28.1",
 | 
			
		||||
    "date": "2025-03-07T15:41:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "hargata/lubelog",
 | 
			
		||||
    "version": "v1.4.5",
 | 
			
		||||
    "date": "2025-03-06T19:43:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "eclipse-mosquitto/mosquitto",
 | 
			
		||||
    "version": "v2.0.21",
 | 
			
		||||
    "date": "2025-03-06T16:24:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Dolibarr/dolibarr",
 | 
			
		||||
    "version": "21.0.0",
 | 
			
		||||
    "date": "2025-03-06T16:20:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "matze/wastebin",
 | 
			
		||||
    "version": "3.0.0",
 | 
			
		||||
@@ -774,26 +829,11 @@
 | 
			
		||||
    "version": "tc_v0.6.4",
 | 
			
		||||
    "date": "2025-03-05T15:43:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "apache/tomcat",
 | 
			
		||||
    "version": "10.1.39",
 | 
			
		||||
    "date": "2025-03-04T19:05:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sysadminsmedia/homebox",
 | 
			
		||||
    "version": "v0.18.0",
 | 
			
		||||
    "date": "2025-03-04T15:35:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "actualbudget/actual",
 | 
			
		||||
    "version": "v25.3.1",
 | 
			
		||||
    "date": "2025-03-03T02:05:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Koenkk/zigbee2mqtt",
 | 
			
		||||
    "version": "2.1.3",
 | 
			
		||||
    "date": "2025-03-02T07:47:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "heiher/hev-socks5-server",
 | 
			
		||||
    "version": "2.8.0",
 | 
			
		||||
@@ -804,11 +844,6 @@
 | 
			
		||||
    "version": "v1.5.7",
 | 
			
		||||
    "date": "2025-02-27T20:04:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cloudflare/cloudflared",
 | 
			
		||||
    "version": "2025.2.1",
 | 
			
		||||
    "date": "2025-02-27T11:36:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.11.2",
 | 
			
		||||
@@ -849,21 +884,6 @@
 | 
			
		||||
    "version": "v1.1.05",
 | 
			
		||||
    "date": "2025-02-24T11:53:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Athou/commafeed",
 | 
			
		||||
    "version": "5.6.1",
 | 
			
		||||
    "date": "2025-02-23T20:39:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TechnitiumSoftware/DnsServer",
 | 
			
		||||
    "version": "v13.4.3",
 | 
			
		||||
    "date": "2025-02-23T11:08:26Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "azukaar/Cosmos-Server",
 | 
			
		||||
    "version": "v0.18.3",
 | 
			
		||||
    "date": "2025-02-21T20:51:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "prometheus-pve/prometheus-pve-exporter",
 | 
			
		||||
    "version": "v3.5.2",
 | 
			
		||||
@@ -884,11 +904,6 @@
 | 
			
		||||
    "version": "REL_13_20",
 | 
			
		||||
    "date": "2025-02-17T21:17:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jellyfin/jellyfin",
 | 
			
		||||
    "version": "v10.10.6",
 | 
			
		||||
    "date": "2025-02-16T21:55:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sbondCo/Watcharr",
 | 
			
		||||
    "version": "v2.0.2",
 | 
			
		||||
@@ -1049,11 +1064,6 @@
 | 
			
		||||
    "version": "v25.1.0",
 | 
			
		||||
    "date": "2025-01-10T18:14:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MagicMirrorOrg/MagicMirror",
 | 
			
		||||
    "version": "v2.30.0",
 | 
			
		||||
    "date": "2025-01-01T14:30:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "go-vikunja/vikunja",
 | 
			
		||||
    "version": "v0.24.6",
 | 
			
		||||
@@ -1164,11 +1174,6 @@
 | 
			
		||||
    "version": "v0.8.13",
 | 
			
		||||
    "date": "2024-07-29T12:54:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Paymenter/Paymenter",
 | 
			
		||||
    "version": "v0.9.5",
 | 
			
		||||
    "date": "2024-07-20T08:46:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "hywax/mafl",
 | 
			
		||||
    "version": "v0.15.4",
 | 
			
		||||
@@ -1234,11 +1239,6 @@
 | 
			
		||||
    "version": "2.0.16",
 | 
			
		||||
    "date": "2024-01-18T16:11:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wger-project/wger",
 | 
			
		||||
    "version": "2.2",
 | 
			
		||||
    "date": "2023-12-06T12:08:09Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "deepch/RTSPtoWeb",
 | 
			
		||||
    "version": "v2.4.3",
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,17 @@
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "alpine",
 | 
			
		||||
            "script": "ct/alpine-wireguard.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 256,
 | 
			
		||||
                "hdd": 1,
 | 
			
		||||
                "os": "alpine",
 | 
			
		||||
                "version": "3.21"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
 
 | 
			
		||||
@@ -42,10 +42,6 @@ export const metadata : Metadata = {
 | 
			
		||||
  alternates: {
 | 
			
		||||
    canonical: `https://community-scripts.github.io/${basePath}/`,
 | 
			
		||||
  },
 | 
			
		||||
  icons: {
 | 
			
		||||
    icon: "/favicon.ico",
 | 
			
		||||
    apple: "/apple-touch-icon.png",
 | 
			
		||||
  },
 | 
			
		||||
  viewport: {
 | 
			
		||||
    width: "device-width",
 | 
			
		||||
    initialScale: 1,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
"use client";
 | 
			
		||||
import FAQ from "@/components/FAQ";
 | 
			
		||||
import AnimatedGradientText from "@/components/ui/animated-gradient-text";
 | 
			
		||||
import { Button } from "@/components/ui/button";
 | 
			
		||||
import { CardFooter } from "@/components/ui/card";
 | 
			
		||||
@@ -34,104 +35,109 @@ export default function Page() {
 | 
			
		||||
  }, [theme]);
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
			<div className="w-full mt-16">
 | 
			
		||||
				<Particles
 | 
			
		||||
					className="absolute inset-0 -z-40"
 | 
			
		||||
					quantity={100}
 | 
			
		||||
					ease={80}
 | 
			
		||||
					color={color}
 | 
			
		||||
					refresh
 | 
			
		||||
				/>
 | 
			
		||||
				<div className="container mx-auto">
 | 
			
		||||
					<div className="flex h-[80vh] flex-col items-center justify-center gap-4 py-20 lg:py-40">
 | 
			
		||||
						<Dialog>
 | 
			
		||||
							<DialogTrigger>
 | 
			
		||||
								<div>
 | 
			
		||||
									<AnimatedGradientText>
 | 
			
		||||
										<div
 | 
			
		||||
											className={cn(
 | 
			
		||||
												`absolute inset-0 block size-full animate-gradient bg-gradient-to-r from-[#ffaa40]/50 via-[#9c40ff]/50 to-[#ffaa40]/50 bg-[length:var(--bg-size)_100%] [border-radius:inherit] [mask:linear-gradient(#fff_0_0)_content-box,linear-gradient(#fff_0_0)]`,
 | 
			
		||||
												`p-px ![mask-composite:subtract]`,
 | 
			
		||||
											)}
 | 
			
		||||
										/>
 | 
			
		||||
										❤️ <Separator className="mx-2 h-4" orientation="vertical" />
 | 
			
		||||
										<span
 | 
			
		||||
											className={cn(
 | 
			
		||||
												`animate-gradient bg-gradient-to-r from-[#ffaa40] via-[#9c40ff] to-[#ffaa40] bg-[length:var(--bg-size)_100%] bg-clip-text text-transparent`,
 | 
			
		||||
												`inline`,
 | 
			
		||||
											)}
 | 
			
		||||
										>
 | 
			
		||||
											Scripts by tteck
 | 
			
		||||
										</span>
 | 
			
		||||
									</AnimatedGradientText>
 | 
			
		||||
								</div>
 | 
			
		||||
							</DialogTrigger>
 | 
			
		||||
							<DialogContent>
 | 
			
		||||
								<DialogHeader>
 | 
			
		||||
									<DialogTitle>Thank You!</DialogTitle>
 | 
			
		||||
									<DialogDescription>
 | 
			
		||||
										A big thank you to tteck and the many contributors who have
 | 
			
		||||
										made this project possible. Your hard work is truly
 | 
			
		||||
										appreciated by the entire Proxmox community!
 | 
			
		||||
									</DialogDescription>
 | 
			
		||||
								</DialogHeader>
 | 
			
		||||
								<CardFooter className="flex flex-col gap-2">
 | 
			
		||||
									<Button className="w-full" variant="outline" asChild>
 | 
			
		||||
										<a
 | 
			
		||||
											href="https://github.com/tteck"
 | 
			
		||||
											target="_blank"
 | 
			
		||||
											rel="noopener noreferrer"
 | 
			
		||||
											className="flex items-center justify-center"
 | 
			
		||||
										>
 | 
			
		||||
											<FaGithub className="mr-2 h-4 w-4" /> Tteck's GitHub
 | 
			
		||||
										</a>
 | 
			
		||||
									</Button>
 | 
			
		||||
									<Button className="w-full" asChild>
 | 
			
		||||
										<a
 | 
			
		||||
											href={`https://github.com/community-scripts/${basePath}`}
 | 
			
		||||
											target="_blank"
 | 
			
		||||
											rel="noopener noreferrer"
 | 
			
		||||
											className="flex items-center justify-center"
 | 
			
		||||
										>
 | 
			
		||||
											<ExternalLink className="mr-2 h-4 w-4" /> Proxmox Helper
 | 
			
		||||
											Scripts
 | 
			
		||||
										</a>
 | 
			
		||||
									</Button>
 | 
			
		||||
								</CardFooter>
 | 
			
		||||
							</DialogContent>
 | 
			
		||||
						</Dialog>
 | 
			
		||||
    <>
 | 
			
		||||
      <div className="w-full mt-16">
 | 
			
		||||
        <Particles className="absolute inset-0 -z-40" quantity={100} ease={80} color={color} refresh />
 | 
			
		||||
        <div className="container mx-auto">
 | 
			
		||||
          <div className="flex h-[80vh] flex-col items-center justify-center gap-4 py-20 lg:py-40">
 | 
			
		||||
            <Dialog>
 | 
			
		||||
              <DialogTrigger>
 | 
			
		||||
                <div>
 | 
			
		||||
                  <AnimatedGradientText>
 | 
			
		||||
                    <div
 | 
			
		||||
                      className={cn(
 | 
			
		||||
                        `absolute inset-0 block size-full animate-gradient bg-gradient-to-r from-[#ffaa40]/50 via-[#9c40ff]/50 to-[#ffaa40]/50 bg-[length:var(--bg-size)_100%] [border-radius:inherit] [mask:linear-gradient(#fff_0_0)_content-box,linear-gradient(#fff_0_0)]`,
 | 
			
		||||
                        `p-px ![mask-composite:subtract]`,
 | 
			
		||||
                      )}
 | 
			
		||||
                    />
 | 
			
		||||
                    ❤️ <Separator className="mx-2 h-4" orientation="vertical" />
 | 
			
		||||
                    <span
 | 
			
		||||
                      className={cn(
 | 
			
		||||
                        `animate-gradient bg-gradient-to-r from-[#ffaa40] via-[#9c40ff] to-[#ffaa40] bg-[length:var(--bg-size)_100%] bg-clip-text text-transparent`,
 | 
			
		||||
                        `inline`,
 | 
			
		||||
                      )}
 | 
			
		||||
                    >
 | 
			
		||||
                      Scripts by tteck
 | 
			
		||||
                    </span>
 | 
			
		||||
                  </AnimatedGradientText>
 | 
			
		||||
                </div>
 | 
			
		||||
              </DialogTrigger>
 | 
			
		||||
              <DialogContent>
 | 
			
		||||
                <DialogHeader>
 | 
			
		||||
                  <DialogTitle>Thank You!</DialogTitle>
 | 
			
		||||
                  <DialogDescription>
 | 
			
		||||
                    A big thank you to tteck and the many contributors who have made this project possible. Your hard
 | 
			
		||||
                    work is truly appreciated by the entire Proxmox community!
 | 
			
		||||
                  </DialogDescription>
 | 
			
		||||
                </DialogHeader>
 | 
			
		||||
                <CardFooter className="flex flex-col gap-2">
 | 
			
		||||
                  <Button className="w-full" variant="outline" asChild>
 | 
			
		||||
                    <a
 | 
			
		||||
                      href="https://github.com/tteck"
 | 
			
		||||
                      target="_blank"
 | 
			
		||||
                      rel="noopener noreferrer"
 | 
			
		||||
                      className="flex items-center justify-center"
 | 
			
		||||
                    >
 | 
			
		||||
                      <FaGithub className="mr-2 h-4 w-4" /> Tteck's GitHub
 | 
			
		||||
                    </a>
 | 
			
		||||
                  </Button>
 | 
			
		||||
                  <Button className="w-full" asChild>
 | 
			
		||||
                    <a
 | 
			
		||||
                      href={`https://github.com/community-scripts/${basePath}`}
 | 
			
		||||
                      target="_blank"
 | 
			
		||||
                      rel="noopener noreferrer"
 | 
			
		||||
                      className="flex items-center justify-center"
 | 
			
		||||
                    >
 | 
			
		||||
                      <ExternalLink className="mr-2 h-4 w-4" /> Proxmox Helper Scripts
 | 
			
		||||
                    </a>
 | 
			
		||||
                  </Button>
 | 
			
		||||
                </CardFooter>
 | 
			
		||||
              </DialogContent>
 | 
			
		||||
            </Dialog>
 | 
			
		||||
 | 
			
		||||
						<div className="flex flex-col gap-4">
 | 
			
		||||
							<h1 className="max-w-2xl text-center text-3xl font-semibold tracking-tighter md:text-7xl">
 | 
			
		||||
								Make managing your Homelab a breeze
 | 
			
		||||
							</h1>
 | 
			
		||||
							<div className="max-w-2xl gap-2 flex flex-col text-center sm:text-lg text-sm leading-relaxed tracking-tight text-muted-foreground md:text-xl">
 | 
			
		||||
								<p>
 | 
			
		||||
									We are a community-driven initiative that simplifies the setup
 | 
			
		||||
									of Proxmox Virtual Environment (VE).
 | 
			
		||||
								</p>
 | 
			
		||||
								<p>
 | 
			
		||||
									With 300+ scripts to help you manage your{" "}
 | 
			
		||||
									<b>Proxmox VE environment</b>. Whether you're a seasoned
 | 
			
		||||
									user or a newcomer, we've got you covered.
 | 
			
		||||
								</p>
 | 
			
		||||
							</div>
 | 
			
		||||
						</div>
 | 
			
		||||
						<div className="flex flex-row gap-3">
 | 
			
		||||
							<Link href="/scripts">
 | 
			
		||||
								<Button
 | 
			
		||||
									size="lg"
 | 
			
		||||
									variant="expandIcon"
 | 
			
		||||
									Icon={CustomArrowRightIcon}
 | 
			
		||||
									iconPlacement="right"
 | 
			
		||||
									className="hover:"
 | 
			
		||||
								>
 | 
			
		||||
									View Scripts
 | 
			
		||||
								</Button>
 | 
			
		||||
							</Link>
 | 
			
		||||
						</div>
 | 
			
		||||
					</div>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
		);
 | 
			
		||||
            <div className="flex flex-col gap-4">
 | 
			
		||||
              <h1 className="max-w-2xl text-center text-3xl font-semibold tracking-tighter md:text-7xl">
 | 
			
		||||
                Make managing your Homelab a breeze
 | 
			
		||||
              </h1>
 | 
			
		||||
              <div className="max-w-2xl gap-2 flex flex-col text-center sm:text-lg text-sm leading-relaxed tracking-tight text-muted-foreground md:text-xl">
 | 
			
		||||
                <p>
 | 
			
		||||
                  We are a community-driven initiative that simplifies the setup of Proxmox Virtual Environment (VE).
 | 
			
		||||
                </p>
 | 
			
		||||
                <p>
 | 
			
		||||
                  With 300+ scripts to help you manage your <b>Proxmox VE environment</b>. Whether you're a seasoned
 | 
			
		||||
                  user or a newcomer, we've got you covered.
 | 
			
		||||
                </p>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div className="flex flex-row gap-3">
 | 
			
		||||
              <Link href="/scripts">
 | 
			
		||||
                <Button
 | 
			
		||||
                  size="lg"
 | 
			
		||||
                  variant="expandIcon"
 | 
			
		||||
                  Icon={CustomArrowRightIcon}
 | 
			
		||||
                  iconPlacement="right"
 | 
			
		||||
                  className="hover:"
 | 
			
		||||
                >
 | 
			
		||||
                  View Scripts
 | 
			
		||||
                </Button>
 | 
			
		||||
              </Link>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
          {/* FAQ Section */}
 | 
			
		||||
          <div className="py-20" id="faq">
 | 
			
		||||
            <div className="max-w-4xl mx-auto px-4">
 | 
			
		||||
              <div className="text-center mb-12">
 | 
			
		||||
                <h2 className="text-3xl font-bold tracking-tighter md:text-5xl mb-4">Frequently Asked Questions</h2>
 | 
			
		||||
                <p className="text-muted-foreground text-lg">
 | 
			
		||||
                  Find answers to common questions about our Proxmox VE scripts
 | 
			
		||||
                </p>
 | 
			
		||||
              </div>
 | 
			
		||||
              <FAQ />
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </>
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,7 @@ export default function ScriptAccordion({
 | 
			
		||||
      value={expandedItem}
 | 
			
		||||
      onValueChange={handleAccordionChange}
 | 
			
		||||
      collapsible
 | 
			
		||||
      className="overflow-y-scroll max-h-[calc(100vh-220px)] overflow-x-hidden mt-3 p-2"
 | 
			
		||||
      className="overflow-y-scroll max-h-[calc(100vh-225px)] overflow-x-hidden mt-3 p-2"
 | 
			
		||||
    >
 | 
			
		||||
      {items.map((category) => (
 | 
			
		||||
        <AccordionItem
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								frontend/src/components/FAQ.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								frontend/src/components/FAQ.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
import * as AccordionPrimitive from "@radix-ui/react-accordion";
 | 
			
		||||
import { Plus } from "lucide-react";
 | 
			
		||||
import { FAQ_Items } from "../config/faqConfig";
 | 
			
		||||
import { Accordion, AccordionContent, AccordionItem } from "./ui/accordion";
 | 
			
		||||
 | 
			
		||||
export default function FAQ() {
 | 
			
		||||
  return (
 | 
			
		||||
    <div className="space-y-4">
 | 
			
		||||
      <Accordion type="single" collapsible className="w-full">
 | 
			
		||||
        {FAQ_Items.map((item, index) => (
 | 
			
		||||
          <AccordionItem value={index.toString()} key={index} className="py-2">
 | 
			
		||||
            <AccordionPrimitive.Header className="flex">
 | 
			
		||||
              <AccordionPrimitive.Trigger className="flex flex-1 items-center gap-3 py-2 text-left text-[15px] font-semibold leading-6 transition-all [&>svg>path:last-child]:origin-center [&>svg>path:last-child]:transition-all [&>svg>path:last-child]:duration-200 [&>svg]:-order-1 [&[data-state=open]>svg>path:last-child]:rotate-90 [&[data-state=open]>svg>path:last-child]:opacity-0 [&[data-state=open]>svg]:rotate-180">
 | 
			
		||||
                {item.title}
 | 
			
		||||
                <Plus
 | 
			
		||||
                  size={16}
 | 
			
		||||
                  strokeWidth={2}
 | 
			
		||||
                  className="shrink-0 opacity-60 transition-transform duration-200"
 | 
			
		||||
                  aria-hidden="true"
 | 
			
		||||
                />
 | 
			
		||||
              </AccordionPrimitive.Trigger>
 | 
			
		||||
            </AccordionPrimitive.Header>
 | 
			
		||||
            <AccordionContent className="pb-2 ps-7 text-muted-foreground">{item.content}</AccordionContent>
 | 
			
		||||
          </AccordionItem>
 | 
			
		||||
        ))}
 | 
			
		||||
      </Accordion>
 | 
			
		||||
    </div>
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
@@ -6,13 +6,13 @@ import { cn } from "@/lib/utils";
 | 
			
		||||
 | 
			
		||||
export default function Footer() {
 | 
			
		||||
  return (
 | 
			
		||||
    <div className="supports-backdrop-blur:bg-background/90 mt-auto border-t w-full flex justify-between border-border bg-background/40 py-6 backdrop-blur-lg">
 | 
			
		||||
    <div className="supports-backdrop-blur:bg-background/90 mt-auto border-t w-full flex justify-between border-border bg-background/40 py-4 backdrop-blur-lg">
 | 
			
		||||
      <div className="mx-6 w-full flex justify-between text-xs sm:text-sm text-muted-foreground">
 | 
			
		||||
        <div className="flex items-center">
 | 
			
		||||
          <p>
 | 
			
		||||
            Website built by the community. The source code is available on{" "}
 | 
			
		||||
            <Link
 | 
			
		||||
              href={`https://github.com/community-scripts/${basePath}`}
 | 
			
		||||
              href={`https://github.com/community-scripts/${basePath}/frontend`}
 | 
			
		||||
              target="_blank"
 | 
			
		||||
              rel="noreferrer"
 | 
			
		||||
              className="font-semibold underline-offset-2 duration-300 hover:underline"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								frontend/src/config/faqConfig.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								frontend/src/config/faqConfig.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
export const FAQ_Items = [
 | 
			
		||||
  {
 | 
			
		||||
    title: "Why do you use tarballs instead of git pull for installation?",
 | 
			
		||||
    content:
 | 
			
		||||
      "Our LXC scripts install applications using release tarballs. Tarballs contain stable code versions tested for release. Using `git pull` directly fetches the latest development code, which might be unstable or contain bugs. Tarballs offer a more reliable installation.",
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: "Why do the scripts install applications using HTTP by default?",
 | 
			
		||||
    content:
 | 
			
		||||
      "Our LXC scripts install applications using HTTP by default. Setting up HTTPS often requires manual configuration specific to your setup, which our automated scripts cannot handle reliably. If an application requires HTTPS, the script will configure it. For others, you need to enable HTTPS yourself, often following the application's official documentation.",
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: "Where can I find documentation for the installed application?",
 | 
			
		||||
    content:
 | 
			
		||||
      "We link to the official documentation for each application whenever possible. You can usually find this link on the script's information page for the specific LXC script. If you notice a missing link for an application that has official docs, please report it so we can add it.",
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: "What should I do if I find a bug in an LXC script?",
 | 
			
		||||
    content:
 | 
			
		||||
      "Our LXC scripts are maintained by volunteers in their free time. Bugs can occur due to our errors or changes in the applications themselves. If you find a bug in one of our LXC scripts, please report it on our GitHub issues page. Your feedback helps us improve the scripts.",
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: "Why isn't the application updating to the very latest version?",
 | 
			
		||||
    content:
 | 
			
		||||
      "Updates via our LXC scripts might not pull the absolute latest version for a few reasons:\n- A bug in the application's release naming on GitHub.\n- A bug in our update script.\n- We intentionally pinned the version. This happens if a newer version has breaking changes or serious bugs that could affect your data or LXC stability. We wait for fixes before allowing the update.",
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: 'Why am I getting a "502 Bad Gateway" error?',
 | 
			
		||||
    content:
 | 
			
		||||
      'A "502 Bad Gateway" error usually means the application inside the LXC is not running or responding correctly. Check the application\'s logs first. If you use a reverse proxy, check its logs too. If you still have problems after checking the logs, report the issue, providing details from the logs.',
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: "What should I do if a script fails during execution?",
 | 
			
		||||
    content:
 | 
			
		||||
      "If an LXC script fails, run it again using Verbose mode. Standard mode hides detailed output for neatness, showing only progress. Verbose mode displays all messages, which helps you (and us) diagnose the error. Include this verbose output if you report the issue.",
 | 
			
		||||
  },
 | 
			
		||||
];
 | 
			
		||||
@@ -17,7 +17,8 @@ msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  tini \
 | 
			
		||||
  gpg \
 | 
			
		||||
  build-essential
 | 
			
		||||
  build-essential \
 | 
			
		||||
  git
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Node.js Repository"
 | 
			
		||||
@@ -33,11 +34,11 @@ $STD npm install --global yarn
 | 
			
		||||
msg_ok "Installed Node.js"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Actual Budget"
 | 
			
		||||
cd /opt
 | 
			
		||||
cd /opt || exit
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/actualbudget/actual/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/actualbudget/actual/archive/refs/tags/v${RELEASE}.tar.gz")
 | 
			
		||||
tar -xzf v${RELEASE}.tar.gz
 | 
			
		||||
mv actual-${RELEASE} /opt/actualbudget
 | 
			
		||||
tar -xzf v"${RELEASE}".tar.gz
 | 
			
		||||
mv actual-"${RELEASE}" /opt/actualbudget
 | 
			
		||||
 | 
			
		||||
mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
 | 
			
		||||
chown -R root:root /opt/actualbudget-data
 | 
			
		||||
@@ -53,8 +54,10 @@ ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1
 | 
			
		||||
ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key
 | 
			
		||||
ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt
 | 
			
		||||
EOF
 | 
			
		||||
cd /opt/actualbudget
 | 
			
		||||
$STD yarn workspaces focus @actual-app/sync-server --production
 | 
			
		||||
cd /opt/actualbudget || exit
 | 
			
		||||
export NODE_OPTIONS="--max_old_space_size=4096"
 | 
			
		||||
$STD yarn install
 | 
			
		||||
$STD yarn run build:server
 | 
			
		||||
$STD openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfhost.key -out selfhost.crt <<EOF
 | 
			
		||||
US
 | 
			
		||||
California
 | 
			
		||||
@@ -93,7 +96,7 @@ motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /opt/v${RELEASE}.tar.gz
 | 
			
		||||
rm -rf /opt/v"${RELEASE}".tar.gz
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -15,41 +15,40 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add \
 | 
			
		||||
    gpg \
 | 
			
		||||
    sudo
 | 
			
		||||
  gpg \
 | 
			
		||||
  sudo
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing MariaDB"
 | 
			
		||||
$STD apk add --no-cache mariadb mariadb-client
 | 
			
		||||
$STD rc-update add mariadb default
 | 
			
		||||
$STD rc-service mariadb start
 | 
			
		||||
msg_ok "Installed MariaDB"
 | 
			
		||||
 | 
			
		||||
msg_info "Configuring MariaDB"
 | 
			
		||||
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql >/dev/null 2>&1
 | 
			
		||||
$STD rc-service mariadb restart
 | 
			
		||||
$STD rc-service mariadb start
 | 
			
		||||
msg_ok "MariaDB Configured"
 | 
			
		||||
 | 
			
		||||
read -r -p "Would you like to install Adminer with lighthttpd? <y/N>: " prompt
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
    msg_info "Installing Adminer"
 | 
			
		||||
    $STD apk add --no-cache lighttpd php php-cgi php-mysqli php-mbstring php-zip php-gd php-json php-curl jq
 | 
			
		||||
    sed -i 's|server.modules += ( "mod_cgi" )|server.modules += ( "mod_cgi", "mod_fastcgi" )|' /etc/lighttpd/lighttpd.conf
 | 
			
		||||
    echo 'fastcgi.server += ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/var/run/php-cgi.sock" )))' >>/etc/lighttpd/lighttpd.conf
 | 
			
		||||
    ADMINER_VERSION=$(curl -s https://api.github.com/repos/vrana/adminer/releases/latest | jq -r '.tag_name' | sed 's/v//')
 | 
			
		||||
    wget -q -O /var/www/adminer.php "https://github.com/vrana/adminer/releases/download/v${ADMINER_VERSION}/adminer-${ADMINER_VERSION}.php"
 | 
			
		||||
    chown lighttpd:lighttpd /var/www/adminer.php
 | 
			
		||||
    chmod 755 /var/www/adminer.php
 | 
			
		||||
    msg_ok "Adminer Installed"
 | 
			
		||||
  msg_info "Installing Adminer"
 | 
			
		||||
  $STD apk add --no-cache lighttpd php php-cgi php-mysqli php-mbstring php-zip php-gd php-json php-curl jq
 | 
			
		||||
  sed -i 's|server.modules += ( "mod_cgi" )|server.modules += ( "mod_cgi", "mod_fastcgi" )|' /etc/lighttpd/lighttpd.conf
 | 
			
		||||
  echo 'fastcgi.server += ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/var/run/php-cgi.sock" )))' >>/etc/lighttpd/lighttpd.conf
 | 
			
		||||
  ADMINER_VERSION=$(curl -fsSL https://api.github.com/repos/vrana/adminer/releases/latest | jq -r '.tag_name' | sed 's/v//')
 | 
			
		||||
  curl -fsSL "https://github.com/vrana/adminer/releases/download/v${ADMINER_VERSION}/adminer-${ADMINER_VERSION}.php" -o /var/www/adminer.php
 | 
			
		||||
  chown lighttpd:lighttpd /var/www/adminer.php
 | 
			
		||||
  chmod 755 /var/www/adminer.php
 | 
			
		||||
  msg_ok "Adminer Installed"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Lighttpd"
 | 
			
		||||
    $STD rc-update add lighttpd default
 | 
			
		||||
    $STD rc-service lighttpd restart
 | 
			
		||||
    msg_ok "Lighttpd Started"
 | 
			
		||||
  msg_info "Starting Lighttpd"
 | 
			
		||||
  $STD rc-update add lighttpd default
 | 
			
		||||
  $STD rc-service lighttpd restart
 | 
			
		||||
  msg_ok "Lighttpd Started"
 | 
			
		||||
 | 
			
		||||
    echo -e "Adminer is available at: ${BL}http://$(hostname -I | awk '{print $1}')/adminer${CL}"
 | 
			
		||||
  echo -e "Adminer is available at: ${BL}http://$(hostname -I | awk '{print $1}')/adminer${CL}"
 | 
			
		||||
else
 | 
			
		||||
    echo -e "Skipped Adminer Installation..."
 | 
			
		||||
  echo -e "Skipped Adminer Installation..."
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										105
									
								
								install/alpine-wireguard-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								install/alpine-wireguard-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.wireguard.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add \
 | 
			
		||||
    newt \
 | 
			
		||||
    curl \
 | 
			
		||||
    openssh \
 | 
			
		||||
    nano \
 | 
			
		||||
    mc \
 | 
			
		||||
    gpg \
 | 
			
		||||
    iptables \
 | 
			
		||||
    openrc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing WireGuard"
 | 
			
		||||
$STD apk add --no-cache wireguard-tools
 | 
			
		||||
if [[ ! -L /etc/init.d/wg-quick.wg0 ]]; then
 | 
			
		||||
    ln -s /etc/init.d/wg-quick /etc/init.d/wg-quick.wg0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
private_key=$(wg genkey)
 | 
			
		||||
cat <<EOF >/etc/wireguard/wg0.conf
 | 
			
		||||
[Interface]
 | 
			
		||||
PrivateKey = ${private_key}
 | 
			
		||||
Address = 10.0.0.1/24
 | 
			
		||||
SaveConfig = true
 | 
			
		||||
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;
 | 
			
		||||
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE;
 | 
			
		||||
ListenPort = 51820
 | 
			
		||||
EOF
 | 
			
		||||
msg_ok "Installed WireGuard"
 | 
			
		||||
 | 
			
		||||
read -rp "Do you want to install WGDashboard? (y/N): " INSTALL_WGD
 | 
			
		||||
if [[ "$INSTALL_WGD" =~ ^[Yy]$ ]]; then
 | 
			
		||||
    msg_info "Installing additional dependencies for WGDashboard"
 | 
			
		||||
    $STD apk add --no-cache \
 | 
			
		||||
        python3 \
 | 
			
		||||
        py3-pip \
 | 
			
		||||
        git \
 | 
			
		||||
        sudo \
 | 
			
		||||
        musl-dev \
 | 
			
		||||
        linux-headers \
 | 
			
		||||
        gcc \
 | 
			
		||||
        python3-dev
 | 
			
		||||
    msg_ok "Installed additional dependencies for WGDashboard"
 | 
			
		||||
    msg_info "Installing WGDashboard"
 | 
			
		||||
    git clone -q https://github.com/donaldzou/WGDashboard.git /etc/wgdashboard
 | 
			
		||||
    cd /etc/wgdashboard/src || exit
 | 
			
		||||
    chmod u+x wgd.sh
 | 
			
		||||
    $STD ./wgd.sh install
 | 
			
		||||
    $STD echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf
 | 
			
		||||
    sysctl -p /etc/sysctl.conf
 | 
			
		||||
    msg_ok "Installed WGDashboard"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Service for WGDashboard"
 | 
			
		||||
    cat <<EOF >/etc/init.d/wg-dashboard
 | 
			
		||||
#!/sbin/openrc-run
 | 
			
		||||
 | 
			
		||||
description="WireGuard Dashboard Service"
 | 
			
		||||
 | 
			
		||||
depend() {
 | 
			
		||||
    need net
 | 
			
		||||
    after firewall
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start() {
 | 
			
		||||
    ebegin "Starting WGDashboard"
 | 
			
		||||
    cd /etc/wgdashboard/src/ || exit 1
 | 
			
		||||
    ./wgd.sh start &
 | 
			
		||||
    eend $?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
stop() {
 | 
			
		||||
    ebegin "Stopping WGDashboard"
 | 
			
		||||
    pkill -f "wgd.sh"
 | 
			
		||||
    eend $?
 | 
			
		||||
}
 | 
			
		||||
EOF
 | 
			
		||||
    chmod +x /etc/init.d/wg-dashboard
 | 
			
		||||
    $STD rc-update add wg-dashboard default
 | 
			
		||||
    $STD rc-service wg-dashboard start
 | 
			
		||||
    msg_ok "Created Service for WGDashboard"
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Starting Services"
 | 
			
		||||
$STD rc-update add wg-quick.wg0 default
 | 
			
		||||
$STD rc-service wg-quick.wg0 start
 | 
			
		||||
msg_ok "Started Services"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
@@ -34,7 +34,6 @@ users:
 | 
			
		||||
    password: "\$argon2id\$v=19\$m=65536,t=3,p=4\$ZBopMzXrzhHXPEZxRDVT2w\$SxWm96DwhOsZyn34DLocwQEIb4kCDsk632PuiMdZnig"
 | 
			
		||||
    groups: []
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/authelia/configuration.yml
 | 
			
		||||
authentication_backend:
 | 
			
		||||
  file:
 | 
			
		||||
@@ -64,6 +63,8 @@ notifier:
 | 
			
		||||
  filesystem:
 | 
			
		||||
    filename: /etc/authelia/emails.txt
 | 
			
		||||
EOF
 | 
			
		||||
touch /etc/authelia/emails.txt
 | 
			
		||||
chown -R authelia:authelia /etc/authelia
 | 
			
		||||
systemctl enable -q --now authelia
 | 
			
		||||
msg_ok "Authelia Setup completed"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,7 @@ if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  msg_ok "Installed Golang"
 | 
			
		||||
 | 
			
		||||
  msg_info "Setup xCaddy"
 | 
			
		||||
  $STD apt-get install -y git
 | 
			
		||||
  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.deb" -o $(basename "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${RELEASE:1}_linux_amd64.deb")
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ $STD apt-get install -y g++-multilib
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Daemon Sync Server"
 | 
			
		||||
curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/daemonsync_2.2.0.0059_amd64.deb -O "daemonsync_2.2.0.0059_amd64.deb"
 | 
			
		||||
curl -fsSL "https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/daemonsync_2.2.0.0059_amd64.deb" -o "daemonsync_2.2.0.0059_amd64.deb"
 | 
			
		||||
$STD dpkg -i daemonsync_2.2.0.0059_amd64.deb
 | 
			
		||||
msg_ok "Installed Daemon Sync Server"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,14 +15,14 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Setting Phoscon Repository"
 | 
			
		||||
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
 | 
			
		||||
curl -fsSL http://phoscon.de/apt/deconz.pub.key >/etc/apt/trusted.gpg.d/deconz.pub.asc
 | 
			
		||||
curl -fsSL "http://phoscon.de/apt/deconz.pub.key" >/etc/apt/trusted.gpg.d/deconz.pub.asc
 | 
			
		||||
echo "deb [arch=amd64] http://phoscon.de/apt/deconz $VERSION main" >/etc/apt/sources.list.d/deconz.list
 | 
			
		||||
msg_ok "Setup Phoscon Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing deConz"
 | 
			
		||||
libssl=$(curl -fsSL "http://security.ubuntu.com/ubuntu/pool/main/o/openssl/" | grep -o 'libssl1\.1_1\.1\.1f-1ubuntu2\.2[^"]*amd64\.deb' | head -n1)
 | 
			
		||||
curl -fsSL "http://security.ubuntu.com/ubuntu/pool/main/o/openssl/$libssl" -O
 | 
			
		||||
$STD dpkg -i $libssl
 | 
			
		||||
curl -fsSL "http://security.ubuntu.com/ubuntu/pool/main/o/openssl/$libssl" -o "$libssl"
 | 
			
		||||
$STD dpkg -i "$libssl"
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y deconz
 | 
			
		||||
msg_ok "Installed deConz"
 | 
			
		||||
@@ -51,7 +51,7 @@ motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf $libssl
 | 
			
		||||
rm -rf "$libssl"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,8 @@ update_os
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  ffmpeg \
 | 
			
		||||
  jq
 | 
			
		||||
  jq \
 | 
			
		||||
  imagemagick
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
read -r -p "Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 12 only)? <y/N> " prompt
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (Canbiz) & vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://hoarder.app/
 | 
			
		||||
# Source: https://karakeep.app/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
@@ -34,8 +34,8 @@ chmod +x /usr/bin/yt-dlp
 | 
			
		||||
msg_ok "Installed Additional Tools"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Meilisearch"
 | 
			
		||||
cd /tmp
 | 
			
		||||
curl -fsSL "https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb" -o $(basename "https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb")
 | 
			
		||||
cd /tmp || exit
 | 
			
		||||
curl -fsSL "https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb" -o "meilisearch.deb"
 | 
			
		||||
$STD dpkg -i meilisearch.deb
 | 
			
		||||
curl -fsSL "https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml" -o "/etc/meilisearch.toml"
 | 
			
		||||
MASTER_KEY=$(openssl rand -base64 12)
 | 
			
		||||
@@ -58,30 +58,30 @@ $STD apt-get install -y nodejs
 | 
			
		||||
$STD npm install -g corepack@0.31.0
 | 
			
		||||
msg_ok "Installed Node.js"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Hoarder"
 | 
			
		||||
cd /opt
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/hoarder-app/hoarder/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
unzip -q v${RELEASE}.zip
 | 
			
		||||
mv hoarder-${RELEASE} /opt/hoarder
 | 
			
		||||
cd /opt/hoarder
 | 
			
		||||
msg_info "Installing karakeep"
 | 
			
		||||
cd /opt || exit
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/karakeep-app/karakeep/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/karakeep-app/karakeep/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
 | 
			
		||||
unzip -q "v${RELEASE}.zip"
 | 
			
		||||
mv karakeep-"${RELEASE}" /opt/karakeep
 | 
			
		||||
cd /opt/karakeep || exit
 | 
			
		||||
corepack enable
 | 
			
		||||
export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
			
		||||
export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
export CI="true"
 | 
			
		||||
cd /opt/hoarder/apps/web
 | 
			
		||||
cd /opt/karakeep/apps/web || exit
 | 
			
		||||
$STD pnpm install --frozen-lockfile
 | 
			
		||||
$STD pnpm exec next build --experimental-build-mode compile
 | 
			
		||||
cp -r /opt/hoarder/apps/web/.next/standalone/apps/web/server.js /opt/hoarder/apps/web
 | 
			
		||||
cd /opt/hoarder/apps/workers
 | 
			
		||||
cp -r /opt/karakeep/apps/web/.next/standalone/apps/web/server.js /opt/karakeep/apps/web
 | 
			
		||||
cd /opt/karakeep/apps/workers || exit
 | 
			
		||||
$STD pnpm install --frozen-lockfile
 | 
			
		||||
 | 
			
		||||
export DATA_DIR=/opt/hoarder_data
 | 
			
		||||
HOARDER_SECRET=$(openssl rand -base64 36 | cut -c1-24)
 | 
			
		||||
mkdir -p /etc/hoarder
 | 
			
		||||
cat <<EOF >/etc/hoarder/hoarder.env
 | 
			
		||||
export DATA_DIR=/opt/karakeep_data
 | 
			
		||||
karakeep_SECRET=$(openssl rand -base64 36 | cut -c1-24)
 | 
			
		||||
mkdir -p /etc/karakeep
 | 
			
		||||
cat <<EOF >/etc/karakeep/karakeep.env
 | 
			
		||||
SERVER_VERSION=$RELEASE
 | 
			
		||||
NEXTAUTH_SECRET="$HOARDER_SECRET"
 | 
			
		||||
NEXTAUTH_SECRET="$karakeep_SECRET"
 | 
			
		||||
NEXTAUTH_URL="http://localhost:3000"
 | 
			
		||||
DATA_DIR="$DATA_DIR"
 | 
			
		||||
MEILI_ADDR="http://127.0.0.1:7700"
 | 
			
		||||
@@ -99,11 +99,11 @@ BROWSER_WEB_URL="http://127.0.0.1:9222"
 | 
			
		||||
# INFERENCE_IMAGE_MODEL="gpt-4o-mini" 
 | 
			
		||||
EOF
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
msg_ok "Installed Hoarder"
 | 
			
		||||
msg_ok "Installed karakeep"
 | 
			
		||||
 | 
			
		||||
msg_info "Running Database Migration"
 | 
			
		||||
mkdir -p ${DATA_DIR}
 | 
			
		||||
cd /opt/hoarder/packages/db
 | 
			
		||||
cd /opt/karakeep/packages/db || exit
 | 
			
		||||
$STD pnpm migrate
 | 
			
		||||
msg_ok "Database Migration Completed"
 | 
			
		||||
 | 
			
		||||
@@ -121,25 +121,25 @@ Restart=always
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/systemd/system/hoarder-web.service
 | 
			
		||||
cat <<EOF >/etc/systemd/system/karakeep-web.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Hoarder Web
 | 
			
		||||
Wants=network.target hoarder-workers.service
 | 
			
		||||
After=network.target hoarder-workers.service
 | 
			
		||||
Description=karakeep Web
 | 
			
		||||
Wants=network.target karakeep-workers.service
 | 
			
		||||
After=network.target karakeep-workers.service
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
ExecStart=pnpm start
 | 
			
		||||
WorkingDirectory=/opt/hoarder/apps/web
 | 
			
		||||
EnvironmentFile=/etc/hoarder/hoarder.env
 | 
			
		||||
WorkingDirectory=/opt/karakeep/apps/web
 | 
			
		||||
EnvironmentFile=/etc/karakeep/karakeep.env
 | 
			
		||||
Restart=always
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/systemd/system/hoarder-browser.service
 | 
			
		||||
cat <<EOF >/etc/systemd/system/karakeep-browser.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Hoarder Headless Browser
 | 
			
		||||
Description=karakeep Headless Browser
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
@@ -151,16 +151,16 @@ Restart=always
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/systemd/system/hoarder-workers.service
 | 
			
		||||
cat <<EOF >/etc/systemd/system/karakeep-workers.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Hoarder Workers
 | 
			
		||||
Wants=network.target hoarder-browser.service meilisearch.service
 | 
			
		||||
After=network.target hoarder-browser.service meilisearch.service
 | 
			
		||||
Description=karakeep Workers
 | 
			
		||||
Wants=network.target karakeep-browser.service meilisearch.service
 | 
			
		||||
After=network.target karakeep-browser.service meilisearch.service
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
ExecStart=pnpm start:prod
 | 
			
		||||
WorkingDirectory=/opt/hoarder/apps/workers
 | 
			
		||||
EnvironmentFile=/etc/hoarder/hoarder.env
 | 
			
		||||
WorkingDirectory=/opt/karakeep/apps/workers
 | 
			
		||||
EnvironmentFile=/etc/karakeep/karakeep.env
 | 
			
		||||
Restart=always
 | 
			
		||||
TimeoutStopSec=5
 | 
			
		||||
 | 
			
		||||
@@ -168,7 +168,7 @@ TimeoutStopSec=5
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
systemctl enable -q --now meilisearch hoarder-browser hoarder-workers hoarder-web
 | 
			
		||||
systemctl enable -q --now meilisearch karakeep-browser karakeep-workers karakeep-web
 | 
			
		||||
msg_ok "Created Services"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
@@ -176,7 +176,7 @@ customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /tmp/meilisearch.deb
 | 
			
		||||
rm -f /opt/v${RELEASE}.zip
 | 
			
		||||
rm -f /opt/v"${RELEASE}".zip
 | 
			
		||||
$STD apt-get autoremove -y
 | 
			
		||||
$STD apt-get autoclean -y
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -24,21 +24,20 @@ $STD apt-get install -y \
 | 
			
		||||
  lsb-release
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup PHP8.4 Repository"
 | 
			
		||||
$STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
 | 
			
		||||
msg_info "Adding PHP8.4 Repository"
 | 
			
		||||
$STD curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
 | 
			
		||||
$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
 | 
			
		||||
$STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
msg_ok "Setup PHP8.4 Repository"
 | 
			
		||||
msg_ok "Added PHP8.4 Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup PHP"
 | 
			
		||||
msg_info "Installing PHP"
 | 
			
		||||
$STD apt-get remove -y php8.2*
 | 
			
		||||
#$STD apt-get remove -y php8.3*
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  php8.3 \
 | 
			
		||||
  php8.3-{mbstring,gd,intl,common,mysql,zip,xml} \
 | 
			
		||||
  libapache2-mod-php8.3
 | 
			
		||||
msg_info "Setup PHP"
 | 
			
		||||
  php8.4 \
 | 
			
		||||
  php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl} \
 | 
			
		||||
  libapache2-mod-php8.4
 | 
			
		||||
msg_ok "Installed PHP"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up database"
 | 
			
		||||
DB_NAME=kimai_db
 | 
			
		||||
@@ -59,9 +58,9 @@ msg_ok "Set up database"
 | 
			
		||||
msg_info "Installing Kimai (Patience)"
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/kimai/kimai/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
curl -fsSL "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
unzip -q ${RELEASE}.zip
 | 
			
		||||
mv kimai-${RELEASE} /opt/kimai
 | 
			
		||||
cd /opt/kimai
 | 
			
		||||
unzip -q "${RELEASE}".zip
 | 
			
		||||
mv kimai-"${RELEASE}" /opt/kimai
 | 
			
		||||
cd /opt/kimai || exit
 | 
			
		||||
echo "export COMPOSER_ALLOW_SUPERUSER=1" >>~/.bashrc
 | 
			
		||||
source ~/.bashrc
 | 
			
		||||
$STD composer install --no-dev --optimize-autoloader --no-interaction
 | 
			
		||||
@@ -130,7 +129,7 @@ motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf ${RELEASE}.zip
 | 
			
		||||
rm -rf "${RELEASE}".zip
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -14,17 +14,19 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y sqlite3
 | 
			
		||||
$STD apt-get install -y libchromaprint-tools
 | 
			
		||||
$STD apt-get install -y mediainfo
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  sqlite3 \
 | 
			
		||||
  libchromaprint-tools \
 | 
			
		||||
  mediainfo
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Lidarr"
 | 
			
		||||
temp_file="$(mktemp)"
 | 
			
		||||
mkdir -p /var/lib/lidarr/
 | 
			
		||||
chmod 775 /var/lib/lidarr/
 | 
			
		||||
cd /var/lib/lidarr/
 | 
			
		||||
$STD curl -fsSL 'https://lidarr.servarr.com/v1/update/master/updatefile?os=linux&runtime=netcore&arch=x64' -o lidarr.tar.gz
 | 
			
		||||
$STD tar -xvzf lidarr.tar.gz
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/Lidarr/Lidarr/releases/download/v${RELEASE}/Lidarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
 | 
			
		||||
$STD tar -xvzf "$temp_file"
 | 
			
		||||
mv Lidarr /opt
 | 
			
		||||
chmod 775 /opt/Lidarr
 | 
			
		||||
msg_ok "Installed Lidarr"
 | 
			
		||||
@@ -44,15 +46,14 @@ Restart=on-failure
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl -q daemon-reload
 | 
			
		||||
systemctl enable --now -q lidarr
 | 
			
		||||
systemctl enable -q --now lidarr
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf Lidarr.master.*.tar.gz
 | 
			
		||||
rm -rf "$temp_file"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										122
									
								
								install/meilisearch-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								install/meilisearch-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,122 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.meilisearch.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
    gnupg
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup ${APPLICATION}"
 | 
			
		||||
tmp_file=$(mktemp)
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/meilisearch/meilisearch/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
curl -fsSL https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch.deb -o $tmp_file
 | 
			
		||||
$STD dpkg -i $tmp_file
 | 
			
		||||
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
 | 
			
		||||
MASTER_KEY=$(openssl rand -base64 12)
 | 
			
		||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
 | 
			
		||||
sed -i \
 | 
			
		||||
    -e 's|^env =.*|env = "production"|' \
 | 
			
		||||
    -e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \
 | 
			
		||||
    -e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \
 | 
			
		||||
    -e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \
 | 
			
		||||
    -e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
 | 
			
		||||
    -e 's|^# no_analytics = true|no_analytics = true|' \
 | 
			
		||||
    -e 's|^http_addr =.*|http_addr = "0.0.0.0:7700"|' \
 | 
			
		||||
    /etc/meilisearch.toml
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
msg_ok "Setup ${APPLICATION}"
 | 
			
		||||
 | 
			
		||||
read -r -p "Do you want add meilisearch-ui? [y/n]: " prompt
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
    msg_info "Setting up Node.js Repository"
 | 
			
		||||
    mkdir -p /etc/apt/keyrings
 | 
			
		||||
    curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
 | 
			
		||||
    echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
 | 
			
		||||
    msg_ok "Set up Node.js Repository"
 | 
			
		||||
 | 
			
		||||
    msg_info "Installing Node.js"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get install -y nodejs
 | 
			
		||||
    $STD npm install -g pnpm
 | 
			
		||||
    msg_ok "Installed Node.js"
 | 
			
		||||
 | 
			
		||||
    msg_info "Setup ${APPLICATION}-ui"
 | 
			
		||||
    tmp_file=$(mktemp)
 | 
			
		||||
    tmp_dir=$(mktemp -d)
 | 
			
		||||
    mkdir -p /opt/meilisearch-ui
 | 
			
		||||
    RELEASE_UI=$(curl -s https://api.github.com/repos/riccox/meilisearch-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    curl -fsSL "https://github.com/riccox/meilisearch-ui/archive/refs/tags/${RELEASE_UI}.zip" -o $tmp_file
 | 
			
		||||
    unzip -q "$tmp_file" -d "$tmp_dir"
 | 
			
		||||
    mv "$tmp_dir"/*/* /opt/meilisearch-ui/
 | 
			
		||||
    cd /opt/meilisearch-ui
 | 
			
		||||
    sed -i 's|const hash = execSync("git rev-parse HEAD").toString().trim();|const hash = "unknown";|' /opt/meilisearch-ui/vite.config.ts
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    cat <<EOF > /opt/meilisearch-ui/.env.local
 | 
			
		||||
VITE_SINGLETON_MODE=true
 | 
			
		||||
VITE_SINGLETON_HOST=http://${LOCAL_IP}:7700
 | 
			
		||||
VITE_SINGLETON_API_KEY=${MASTER_KEY}
 | 
			
		||||
EOF
 | 
			
		||||
    echo "${RELEASE_UI}" >/opt/${APPLICATION}-ui_version.txt
 | 
			
		||||
    msg_ok "Setup ${APPLICATION}-ui"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Services"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/meilisearch.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Meilisearch
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
ExecStart=/usr/bin/meilisearch --config-file-path /etc/meilisearch.toml
 | 
			
		||||
Restart=always
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now meilisearch
 | 
			
		||||
 | 
			
		||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
cat <<EOF > /etc/systemd/system/meilisearch-ui.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Meilisearch UI Service
 | 
			
		||||
After=network.target meilisearch.service
 | 
			
		||||
Requires=meilisearch.service
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
User=root
 | 
			
		||||
WorkingDirectory=/opt/meilisearch-ui
 | 
			
		||||
ExecStart=/usr/bin/pnpm start
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=5
 | 
			
		||||
StandardOutput=syslog
 | 
			
		||||
StandardError=syslog
 | 
			
		||||
SyslogIdentifier=meilisearch-ui
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now meilisearch-ui
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_ok "Set up Services"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
							
								
								
									
										48
									
								
								install/openziti-tunnel-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								install/openziti-tunnel-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: emoscardini
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/openziti/ziti
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y gpg
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing openziti"
 | 
			
		||||
mkdir -p --mode=0755 /usr/share/keyrings
 | 
			
		||||
curl -sSLf https://get.openziti.io/tun/package-repos.gpg | gpg --dearmor -o /usr/share/keyrings/openziti.gpg
 | 
			
		||||
echo "deb [signed-by=/usr/share/keyrings/openziti.gpg] https://packages.openziti.org/zitipax-openziti-deb-stable jammy main" >/etc/apt/sources.list.d/openziti.list
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y ziti-edge-tunnel
 | 
			
		||||
sed -i '0,/^ExecStart/ { /^ExecStart/ { n; s|^ExecStart.*|ExecStart=/opt/openziti/bin/ziti-edge-tunnel run-host --verbose=${ZITI_VERBOSE} --identity-dir=${ZITI_IDENTITY_DIR}| } }' /usr/lib/systemd/system/ziti-edge-tunnel.service
 | 
			
		||||
systemctl daemon-reload
 | 
			
		||||
msg_ok "Installed openziti"
 | 
			
		||||
 | 
			
		||||
read -r -p "Please paste an identity enrollment token(JTW)" prompt
 | 
			
		||||
if [[ ${prompt} ]]; then
 | 
			
		||||
    msg_info "Adding identity"
 | 
			
		||||
    echo "${prompt}" >/opt/openziti/etc/identities/identity.jwt
 | 
			
		||||
    chown ziti:ziti /opt/openziti/etc/identities/identity.jwt
 | 
			
		||||
    systemctl enable -q --now ziti-edge-tunnel
 | 
			
		||||
    msg_ok "Service Started"
 | 
			
		||||
else
 | 
			
		||||
    systemctl enable -q ziti-edge-tunnel
 | 
			
		||||
    msg_error "No identity provided; please place an identity file in /opt/openziti/etc/identities/ and restart the service"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -58,10 +58,10 @@ $STD apt-get install -y \
 | 
			
		||||
  tesseract-ocr \
 | 
			
		||||
  tesseract-ocr-eng
 | 
			
		||||
 | 
			
		||||
cd /tmp
 | 
			
		||||
cd /tmp || exit
 | 
			
		||||
curl -fsSL "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10040/ghostscript-10.04.0.tar.gz" -o $(basename "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10040/ghostscript-10.04.0.tar.gz")
 | 
			
		||||
$STD tar -xzf ghostscript-10.04.0.tar.gz
 | 
			
		||||
cd ghostscript-10.04.0
 | 
			
		||||
cd ghostscript-10.04.0 || exit
 | 
			
		||||
$STD ./configure
 | 
			
		||||
$STD make
 | 
			
		||||
$STD sudo make install
 | 
			
		||||
@@ -69,7 +69,7 @@ msg_ok "Installed OCR Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing JBIG2"
 | 
			
		||||
$STD git clone https://github.com/ie13/jbig2enc /opt/jbig2enc
 | 
			
		||||
cd /opt/jbig2enc
 | 
			
		||||
cd /opt/jbig2enc || exit
 | 
			
		||||
$STD bash ./autogen.sh
 | 
			
		||||
$STD bash ./configure
 | 
			
		||||
$STD make
 | 
			
		||||
@@ -78,23 +78,23 @@ rm -rf /opt/jbig2enc
 | 
			
		||||
msg_ok "Installed JBIG2"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Paperless-ngx (Patience)"
 | 
			
		||||
Paperlessngx=$(curl -fsSL https://github.com/paperless-ngx/paperless-ngx/releases/latest | grep "title>Release" | cut -d " " -f 5)
 | 
			
		||||
cd /opt
 | 
			
		||||
$STD curl -fsSL "https://github.com/paperless-ngx/paperless-ngx/releases/download/$Paperlessngx/paperless-ngx-$Paperlessngx.tar.xz" -O
 | 
			
		||||
$STD tar -xf paperless-ngx-$Paperlessngx.tar.xz -C /opt/
 | 
			
		||||
Paperlessngx=$(curl -fsSL "https://github.com/paperless-ngx/paperless-ngx/releases/latest" | grep "title>Release" | cut -d " " -f 5)
 | 
			
		||||
cd /opt || exit
 | 
			
		||||
$STD curl -fsSL "https://github.com/paperless-ngx/paperless-ngx/releases/download/$Paperlessngx/paperless-ngx-$Paperlessngx.tar.xz" -o "paperless-ngx-$Paperlessngx.tar.xz"
 | 
			
		||||
$STD tar -xf "paperless-ngx-$Paperlessngx.tar.xz" -C /opt/
 | 
			
		||||
mv paperless-ngx paperless
 | 
			
		||||
rm paperless-ngx-$Paperlessngx.tar.xz
 | 
			
		||||
cd /opt/paperless
 | 
			
		||||
rm "paperless-ngx-$Paperlessngx.tar.xz"
 | 
			
		||||
cd /opt/paperless || exit
 | 
			
		||||
$STD pip install --upgrade pip
 | 
			
		||||
$STD pip install -r requirements.txt
 | 
			
		||||
curl -fsSL -o /opt/paperless/paperless.conf https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/paperless.conf.example
 | 
			
		||||
curl -fsSL "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/paperless.conf.example" -o /opt/paperless/paperless.conf
 | 
			
		||||
mkdir -p {consume,data,media,static}
 | 
			
		||||
sed -i -e 's|#PAPERLESS_REDIS=redis://localhost:6379|PAPERLESS_REDIS=redis://localhost:6379|' /opt/paperless/paperless.conf
 | 
			
		||||
sed -i -e "s|#PAPERLESS_CONSUMPTION_DIR=../consume|PAPERLESS_CONSUMPTION_DIR=/opt/paperless/consume|" /opt/paperless/paperless.conf
 | 
			
		||||
sed -i -e "s|#PAPERLESS_DATA_DIR=../data|PAPERLESS_DATA_DIR=/opt/paperless/data|" /opt/paperless/paperless.conf
 | 
			
		||||
sed -i -e "s|#PAPERLESS_MEDIA_ROOT=../media|PAPERLESS_MEDIA_ROOT=/opt/paperless/media|" /opt/paperless/paperless.conf
 | 
			
		||||
sed -i -e "s|#PAPERLESS_STATICDIR=../static|PAPERLESS_STATICDIR=/opt/paperless/static|" /opt/paperless/paperless.conf
 | 
			
		||||
echo "${Paperlessngx}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
echo "${Paperlessngx}" >/opt/"${APPLICATION}"_version.txt
 | 
			
		||||
msg_ok "Installed Paperless-ngx"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Natural Language Toolkit (Patience)"
 | 
			
		||||
@@ -121,7 +121,7 @@ sed -i -e "s|#PAPERLESS_DBNAME=paperless|PAPERLESS_DBNAME=$DB_NAME|" /opt/paperl
 | 
			
		||||
sed -i -e "s|#PAPERLESS_DBUSER=paperless|PAPERLESS_DBUSER=$DB_USER|" /opt/paperless/paperless.conf
 | 
			
		||||
sed -i -e "s|#PAPERLESS_DBPASS=paperless|PAPERLESS_DBPASS=$DB_PASS|" /opt/paperless/paperless.conf
 | 
			
		||||
sed -i -e "s|#PAPERLESS_SECRET_KEY=change-me|PAPERLESS_SECRET_KEY=$SECRET_KEY|" /opt/paperless/paperless.conf
 | 
			
		||||
cd /opt/paperless/src
 | 
			
		||||
cd /opt/paperless/src || exit
 | 
			
		||||
$STD python3 manage.py migrate
 | 
			
		||||
msg_ok "Set up PostgreSQL database"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,19 +22,19 @@ $STD apt-get install -y \
 | 
			
		||||
  composer
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Adding PHP8.3 Repository"
 | 
			
		||||
$STD curl -fsSL "https://packages.sury.org/debsuryorg-archive-keyring.deb" -o /tmp/debsuryorg-archive-keyring.deb
 | 
			
		||||
msg_info "Adding PHP8.4 Repository"
 | 
			
		||||
$STD curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
 | 
			
		||||
$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
 | 
			
		||||
$STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
msg_ok "Added PHP8.3 Repository"
 | 
			
		||||
msg_ok "Added PHP8.4 Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing PHP"
 | 
			
		||||
$STD apt-get remove -y php8.2*
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  php8.3 \
 | 
			
		||||
  php8.3-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,sqlite3,fpm} \
 | 
			
		||||
  libapache2-mod-php8.3
 | 
			
		||||
  php8.4 \
 | 
			
		||||
  php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,sqlite3,fpm} \
 | 
			
		||||
  libapache2-mod-php8.4
 | 
			
		||||
msg_info "Installed PHP"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up MariaDB"
 | 
			
		||||
@@ -55,7 +55,7 @@ msg_ok "Set up MariaDB"
 | 
			
		||||
msg_info "Installing Pelican Panel"
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/pelican-dev/panel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
mkdir /opt/pelican-panel
 | 
			
		||||
cd /opt/pelican-panel
 | 
			
		||||
cd /opt/pelican-panel  || exit
 | 
			
		||||
curl -fsSL "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz" -o $(basename "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz")
 | 
			
		||||
tar -xzf "panel.tar.gz"
 | 
			
		||||
$STD composer install --no-dev --optimize-autoloader --no-interaction
 | 
			
		||||
@@ -64,7 +64,7 @@ $STD php artisan p:environment:queue-service --no-interaction
 | 
			
		||||
echo "* * * * * php /opt/pelican-panel/artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data -
 | 
			
		||||
chown -R www-data:www-data /opt/pelican-panel
 | 
			
		||||
chmod -R 755 /opt/pelican-panel/storage /opt/pelican-panel/bootstrap/cache/
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
 | 
			
		||||
msg_ok "Installed Pelican Panel"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
 
 | 
			
		||||
@@ -35,9 +35,9 @@ msg_info "Installing PhotoPrism (Patience)"
 | 
			
		||||
mkdir -p /opt/photoprism/{cache,config,photos,storage,temp}
 | 
			
		||||
mkdir -p /opt/photoprism/photos/{originals,import}
 | 
			
		||||
mkdir -p /opt/photoprism_backups
 | 
			
		||||
curl -fsSL "-cO - https://dl.photoprism.app/pkg/linux/amd64.tar.gz | tar -xz -C /opt/photoprism --strip-components=1" -o $(basename "-cO - https://dl.photoprism.app/pkg/linux/amd64.tar.gz | tar -xz -C /opt/photoprism --strip-components=1")
 | 
			
		||||
curl -fsSL https://dl.photoprism.app/pkg/linux/amd64.tar.gz | tar -xz -C /opt/photoprism --strip-components=1
 | 
			
		||||
LIBHEIF_URL=$(curl -fsSL "https://dl.photoprism.app/dist/libheif/" | grep -oP "libheif-$(lsb_release -cs)-amd64-v[0-9\.]+\.tar\.gz" | sort -V | tail -n 1)
 | 
			
		||||
curl -fsSL "-cO - "https://dl.photoprism.app/dist/libheif/$LIBHEIF_URL" | tar -xzf - -C /usr/local --strip-components=1" -o $(basename "-cO - "https://dl.photoprism.app/dist/libheif/$LIBHEIF_URL" | tar -xzf - -C /usr/local --strip-components=1")
 | 
			
		||||
curl -fsSL "https://dl.photoprism.app/dist/libheif/$LIBHEIF_URL" | tar -xzf - -C /usr/local --strip-components=1
 | 
			
		||||
ldconfig
 | 
			
		||||
chmod -R 755 /opt/photoprism/photos/originals
 | 
			
		||||
cat <<EOF >/opt/photoprism/config/.env
 | 
			
		||||
 
 | 
			
		||||
@@ -18,11 +18,13 @@ $STD apt-get install -y sqlite3
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Prowlarr"
 | 
			
		||||
temp_file="$(mktemp)"
 | 
			
		||||
mkdir -p /var/lib/prowlarr/
 | 
			
		||||
chmod 775 /var/lib/prowlarr/
 | 
			
		||||
cd /var/lib/prowlarr/
 | 
			
		||||
$STD curl -fsSL 'https://prowlarr.servarr.com/v1/update/master/updatefile?os=linux&runtime=netcore&arch=x64' -o prowlarr.tar.gz
 | 
			
		||||
$STD tar -xvzf prowlarr.tar.gz
 | 
			
		||||
cd /var/lib/prowlarr/ || exit
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Prowlarr/Prowlarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/Prowlarr/Prowlarr/releases/download/v${RELEASE}/Prowlarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
 | 
			
		||||
$STD tar -xvzf "$temp_file"
 | 
			
		||||
mv Prowlarr /opt
 | 
			
		||||
chmod 775 /opt/Prowlarr
 | 
			
		||||
msg_ok "Installed Prowlarr"
 | 
			
		||||
@@ -42,15 +44,14 @@ Restart=on-failure
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl -q daemon-reload
 | 
			
		||||
systemctl enable --now -q prowlarr
 | 
			
		||||
systemctl enable -q --now prowlarr
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf Prowlarr.master.*.tar.gz
 | 
			
		||||
rm -f "$temp_file"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -23,19 +23,19 @@ $STD apt-get install -y \
 | 
			
		||||
  composer
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Adding PHP8.3 Repository"
 | 
			
		||||
$STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
 | 
			
		||||
msg_info "Adding PHP8.4 Repository"
 | 
			
		||||
$STD curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
 | 
			
		||||
$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
 | 
			
		||||
$STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
msg_ok "Added PHP8.3 Repository"
 | 
			
		||||
msg_ok "Added PHP8.4 Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing PHP"
 | 
			
		||||
$STD apt-get remove -y php8.2*
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  php8.3 \
 | 
			
		||||
  php8.3-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm} \
 | 
			
		||||
  libapache2-mod-php8.3
 | 
			
		||||
  php8.4 \
 | 
			
		||||
  php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm} \
 | 
			
		||||
  libapache2-mod-php8.4
 | 
			
		||||
msg_ok "Installed PHP"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up MariaDB"
 | 
			
		||||
@@ -60,7 +60,7 @@ read -p "Enter your Last Name: " NAME_LAST
 | 
			
		||||
msg_info "Installing pterodactyl Panel"
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/pterodactyl/panel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
mkdir /opt/pterodactyl-panel
 | 
			
		||||
cd /opt/pterodactyl-panel
 | 
			
		||||
cd /opt/pterodactyl-panel || exit
 | 
			
		||||
curl -fsSL "https://github.com/pterodactyl/panel/releases/download/v${RELEASE}/panel.tar.gz" -o $(basename "https://github.com/pterodactyl/panel/releases/download/v${RELEASE}/panel.tar.gz")
 | 
			
		||||
tar -xzf "panel.tar.gz"
 | 
			
		||||
cp .env.example .env
 | 
			
		||||
@@ -68,8 +68,8 @@ IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
 | 
			
		||||
$STD composer install --no-dev --optimize-autoloader --no-interaction
 | 
			
		||||
$STD php artisan key:generate --force
 | 
			
		||||
$STD php artisan p:environment:setup --no-interaction --author $ADMIN_EMAIL --url "http://$IP"
 | 
			
		||||
$STD php artisan p:environment:database --no-interaction --database $DB_NAME --username $DB_USER --password $DB_PASS
 | 
			
		||||
$STD php artisan p:environment:setup --no-interaction --author "$ADMIN_EMAIL" --url "http://$IP"
 | 
			
		||||
$STD php artisan p:environment:database --no-interaction --database $DB_NAME --username $DB_USER --password "$DB_PASS"
 | 
			
		||||
$STD php artisan migrate --seed --force --no-interaction
 | 
			
		||||
$STD php artisan p:user:make --no-interaction --admin=1 --email "$ADMIN_EMAIL" --password "$ADMIN_PASS" --name-first "$NAME_FIRST" --name-last "$NAME_LAST" --username "admin"
 | 
			
		||||
echo "* * * * * php /opt/pterodactyl-panel/artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data -
 | 
			
		||||
@@ -82,7 +82,7 @@ chmod -R 755 /opt/pterodactyl-panel/storage/* /opt/pterodactyl-panel/bootstrap/c
 | 
			
		||||
  echo "pterodactyl Admin Password: $ADMIN_PASS"
 | 
			
		||||
} >>~/pterodactyl-panel.creds
 | 
			
		||||
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
 | 
			
		||||
msg_ok "Installed pterodactyl Panel"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
 
 | 
			
		||||
@@ -18,11 +18,13 @@ $STD apt-get install -y sqlite3
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Radarr"
 | 
			
		||||
temp_file="$(mktemp)"
 | 
			
		||||
mkdir -p /var/lib/radarr/
 | 
			
		||||
chmod 775 /var/lib/radarr/
 | 
			
		||||
cd /var/lib/radarr/
 | 
			
		||||
$STD curl -fsSL 'https://radarr.servarr.com/v1/update/master/updatefile?os=linux&runtime=netcore&arch=x64' -o radarr.tar.gz
 | 
			
		||||
$STD tar -xvzf radarr.tar.gz
 | 
			
		||||
cd /var/lib/radarr/ || exit
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Radarr/Radarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/Radarr/Radarr/releases/download/v${RELEASE}/Radarr.master.${RELEASE}.linux-core-x64.tar.gz" -o "$temp_file"
 | 
			
		||||
$STD tar -xvzf "$temp_file"
 | 
			
		||||
mv Radarr /opt
 | 
			
		||||
chmod 775 /opt/Radarr
 | 
			
		||||
msg_ok "Installed Radarr"
 | 
			
		||||
@@ -42,15 +44,14 @@ Restart=on-failure
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl -q daemon-reload
 | 
			
		||||
systemctl enable --now -q radarr
 | 
			
		||||
systemctl enable -q --now radarr
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf Radarr.master.*.tar.gz
 | 
			
		||||
rm -rf "$temp_file"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.zabbix.com/
 | 
			
		||||
 | 
			
		||||
@@ -14,8 +14,11 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Zabbix"
 | 
			
		||||
cd /tmp
 | 
			
		||||
curl -fsSL "https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb" -o $(basename "https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb")
 | 
			
		||||
cd /tmp || exit
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
@@ -39,8 +39,8 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_ADMIN_USER;"
 | 
			
		||||
msg_ok "Installed PostgreSQL"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Zitadel"
 | 
			
		||||
RELEASE=$(curl -fsSL https://github.com/zitadel/zitadel/releases/latest | grep location: | cut -d '/' -f 8 | tr -d '\r')
 | 
			
		||||
curl -fsSL https://github.com/zitadel/zitadel/releases/download/$RELEASE/zitadel-linux-amd64.tar.gz | tar -xz
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/zitadel/zitadel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/zitadel/zitadel/releases/download/v$RELEASE/zitadel-linux-amd64.tar.gz" | tar -xz
 | 
			
		||||
mv zitadel-linux-amd64/zitadel /usr/local/bin
 | 
			
		||||
msg_ok "Installed Zitadel"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -94,12 +94,12 @@ msg_error() {
 | 
			
		||||
# This function sets up the Container OS by generating the locale, setting the timezone, and checking the network connection
 | 
			
		||||
setting_up_container() {
 | 
			
		||||
  msg_info "Setting up Container OS"
 | 
			
		||||
  while [ $i -gt 0 ]; do
 | 
			
		||||
  while [ "$i" -gt 0 ]; do
 | 
			
		||||
    if [ "$(ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d'/' -f1)" != "" ]; then
 | 
			
		||||
      break
 | 
			
		||||
    fi
 | 
			
		||||
    echo 1>&2 -en "${CROSS}${RD} No Network! "
 | 
			
		||||
    sleep $RETRY_EVERY
 | 
			
		||||
    sleep "$RETRY_EVERY"
 | 
			
		||||
    i=$((i - 1))
 | 
			
		||||
  done
 | 
			
		||||
 | 
			
		||||
@@ -194,6 +194,6 @@ customize() {
 | 
			
		||||
    msg_ok "Customized Container"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  echo "bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/ct/${app}.sh)\"" >/usr/bin/update
 | 
			
		||||
  echo "bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/${app}.sh)\"" >/usr/bin/update
 | 
			
		||||
  chmod +x /usr/bin/update
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -44,6 +44,7 @@ color() {
 | 
			
		||||
  CPUCORE="${TAB}🧠${TAB}${CL}"
 | 
			
		||||
  RAMSIZE="${TAB}🛠️${TAB}${CL}"
 | 
			
		||||
  SEARCH="${TAB}🔍${TAB}${CL}"
 | 
			
		||||
  VERBOSE_CROPPED="🔍${TAB}"
 | 
			
		||||
  VERIFYPW="${TAB}🔐${TAB}${CL}"
 | 
			
		||||
  CONTAINERID="${TAB}🆔${TAB}${CL}"
 | 
			
		||||
  HOSTNAME="${TAB}🏠${TAB}${CL}"
 | 
			
		||||
@@ -950,7 +951,7 @@ install_script() {
 | 
			
		||||
      ;;
 | 
			
		||||
    2)
 | 
			
		||||
      header_info
 | 
			
		||||
      echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME (${SEARCH}Verbose)${CL}"
 | 
			
		||||
      echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME (${VERBOSE_CROPPED}Verbose)${CL}"
 | 
			
		||||
      VERB="yes"
 | 
			
		||||
      METHOD="default"
 | 
			
		||||
      base_settings "$VERB"
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@ function clean_container() {
 | 
			
		||||
  header_info
 | 
			
		||||
  name=$(pct exec "$container" hostname)
 | 
			
		||||
  echo -e "${BL}[Info]${GN} Cleaning ${name} ${CL} \n"
 | 
			
		||||
  pct exec $container -- bash -c "apt-get -y --purge autoremove && apt-get -y autoclean && bash <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/clean.sh) && rm -rf /var/lib/apt/lists/* && apt-get update"
 | 
			
		||||
  pct exec $container -- bash -c "apt-get -y --purge autoremove && apt-get -y autoclean && bash <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/clean.sh) && rm -rf /var/lib/apt/lists/* && apt-get update"
 | 
			
		||||
}
 | 
			
		||||
for container in $(pct list | awk '{if(NR>1) print $1}'); do
 | 
			
		||||
  if [[ " ${excluded_containers[@]} " =~ " $container " ]]; then
 | 
			
		||||
 
 | 
			
		||||
@@ -128,4 +128,4 @@ info "Successfully Transferred Data."
 | 
			
		||||
 | 
			
		||||
# Use to copy all data from one Home Assistant LXC to another
 | 
			
		||||
# run from the Proxmox Shell
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/copy-data/home-assistant-container-copy-data-home-assistant-container.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/copy-data/home-assistant-container-copy-data-home-assistant-container.sh)"
 | 
			
		||||
 
 | 
			
		||||
@@ -124,4 +124,4 @@ info "Successfully Transferred Data."
 | 
			
		||||
 | 
			
		||||
# Use to copy all data from a Home Assistant Container LXC to a Home Assistant Core LXC
 | 
			
		||||
# run from the Proxmox Shell
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/copy-data/home-assistant-container-copy-data-home-assistant-core.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/copy-data/home-assistant-container-copy-data-home-assistant-core.sh)"
 | 
			
		||||
 
 | 
			
		||||
@@ -129,4 +129,4 @@ info "Successfully Transferred Data."
 | 
			
		||||
 | 
			
		||||
# Use to copy all data from a Home Assistant LXC to a Podman Home Assistant LXC
 | 
			
		||||
# run from the Proxmox Shell
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/copy-data/home-assistant-container-copy-data-podman-home-assistant.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/copy-data/home-assistant-container-copy-data-podman-home-assistant.sh)"
 | 
			
		||||
 
 | 
			
		||||
@@ -124,4 +124,4 @@ info "Successfully Transferred Data."
 | 
			
		||||
 | 
			
		||||
# Use to copy all data from a Home Assistant Core LXC to a Home Assistant Container LXC
 | 
			
		||||
# run from the Proxmox Shell
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/copy-data/home-assistant-core-copy-data-home-assistant-container.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/copy-data/home-assistant-core-copy-data-home-assistant-container.sh)"
 | 
			
		||||
 
 | 
			
		||||
@@ -123,4 +123,4 @@ info "Successfully Transferred Data."
 | 
			
		||||
 | 
			
		||||
# Use to copy all data from a Home Assistant Core LXC to a Home Assistant Container LXC
 | 
			
		||||
# run from the Proxmox Shell
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/copy-data/home-assistant-core-copy-data-home-assistant-core.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/copy-data/home-assistant-core-copy-data-home-assistant-core.sh)"
 | 
			
		||||
 
 | 
			
		||||
@@ -128,4 +128,4 @@ info "Successfully Transferred Data."
 | 
			
		||||
 | 
			
		||||
# Use to copy all data from one Plex Media Server LXC to another
 | 
			
		||||
# run from the Proxmox Shell
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/copy-data/plex-copy-data-plex.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/copy-data/plex-copy-data-plex.sh)"
 | 
			
		||||
 
 | 
			
		||||
@@ -129,4 +129,4 @@ info "Successfully Transferred Data."
 | 
			
		||||
 | 
			
		||||
# Use to copy all data from a Podman Home Assistant LXC to a Docker Home Assistant LXC.
 | 
			
		||||
# run from the Proxmox Shell
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/copy-data/podman-home-assistant-copy-data-home-assistant-container.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/copy-data/podman-home-assistant-copy-data-home-assistant-container.sh)"
 | 
			
		||||
 
 | 
			
		||||
@@ -128,4 +128,4 @@ info "Successfully Transferred Data."
 | 
			
		||||
 | 
			
		||||
# Use to copy all data from one Zigbee2MQTT LXC to another
 | 
			
		||||
# run from the Proxmox Shell
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/copy-data/z2m-copy-data-z2m.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/copy-data/z2m-copy-data-z2m.sh)"
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ function error_exit() {
 | 
			
		||||
  local REASON="\e[97m${1:-$DEFAULT}\e[39m"
 | 
			
		||||
  local FLAG="\e[91m[ERROR] \e[93m$EXIT@$LINE"
 | 
			
		||||
  msg "$FLAG $REASON"
 | 
			
		||||
  exit $EXIT
 | 
			
		||||
  exit "$EXIT"
 | 
			
		||||
}
 | 
			
		||||
function warn() {
 | 
			
		||||
  local REASON="\e[97m$1\e[39m"
 | 
			
		||||
@@ -53,13 +53,13 @@ function msg() {
 | 
			
		||||
  echo -e "$TEXT"
 | 
			
		||||
}
 | 
			
		||||
function cleanup() {
 | 
			
		||||
  [ -d "${CTID_FROM_PATH:-}" ] && pct unmount $CTID_FROM
 | 
			
		||||
  [ -d "${CTID_TO_PATH:-}" ] && pct unmount $CTID_TO
 | 
			
		||||
  [ -d "${CTID_FROM_PATH:-}" ] && pct unmount "$CTID_FROM"
 | 
			
		||||
  [ -d "${CTID_TO_PATH:-}" ] && pct unmount "$CTID_TO"
 | 
			
		||||
  popd >/dev/null
 | 
			
		||||
  rm -rf $TEMP_DIR
 | 
			
		||||
  rm -rf "$TEMP_DIR"
 | 
			
		||||
}
 | 
			
		||||
TEMP_DIR=$(mktemp -d)
 | 
			
		||||
pushd $TEMP_DIR >/dev/null
 | 
			
		||||
pushd "$TEMP_DIR" >/dev/null
 | 
			
		||||
 | 
			
		||||
TITLE="Zigbee2MQTT to Z-wave JS UI Data Copy"
 | 
			
		||||
while read -r line; do
 | 
			
		||||
@@ -85,27 +85,27 @@ while [ -z "${CTID_TO:+x}" ]; do
 | 
			
		||||
done
 | 
			
		||||
for i in ${!CTID_MENU[@]}; do
 | 
			
		||||
  [ "${CTID_MENU[$i]}" == "$CTID_FROM" ] &&
 | 
			
		||||
    CTID_FROM_HOSTNAME=$(sed 's/[[:space:]]*$//' <<<${CTID_MENU[$i + 1]})
 | 
			
		||||
    CTID_FROM_HOSTNAME=$(sed 's/[[:space:]]*$//' <<<"${CTID_MENU[$i + 1]}")
 | 
			
		||||
  [ "${CTID_MENU[$i]}" == "$CTID_TO" ] &&
 | 
			
		||||
    CTID_TO_HOSTNAME=$(sed 's/[[:space:]]*$//' <<<${CTID_MENU[$i + 1]})
 | 
			
		||||
    CTID_TO_HOSTNAME=$(sed 's/[[:space:]]*$//' <<<"${CTID_MENU[$i + 1]}")
 | 
			
		||||
done
 | 
			
		||||
whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "$TITLE" --yesno \
 | 
			
		||||
  "Are you sure you want to copy data between the following LXCs?
 | 
			
		||||
$CTID_FROM (${CTID_FROM_HOSTNAME}) -> $CTID_TO (${CTID_TO_HOSTNAME})
 | 
			
		||||
Version: 2022.09.21" 13 50 || exit
 | 
			
		||||
info "Zwavejs2MQTT Data from '$CTID_FROM' to '$CTID_TO'"
 | 
			
		||||
if [ $(pct status $CTID_TO | sed 's/.* //') == 'running' ]; then
 | 
			
		||||
if [ $(pct status "$CTID_TO" | sed 's/.* //') == 'running' ]; then
 | 
			
		||||
  msg "Stopping '$CTID_TO'..."
 | 
			
		||||
  pct stop $CTID_TO
 | 
			
		||||
  pct stop "$CTID_TO"
 | 
			
		||||
fi
 | 
			
		||||
msg "Mounting Container Disks..."
 | 
			
		||||
DATA_PATH=/opt/zwavejs2mqtt/store/
 | 
			
		||||
DATA_PATH_NEW=/opt/zwave-js-ui/store/
 | 
			
		||||
CTID_FROM_PATH=$(pct mount $CTID_FROM | sed -n "s/.*'\(.*\)'/\1/p") ||
 | 
			
		||||
CTID_FROM_PATH=$(pct mount "$CTID_FROM" | sed -n "s/.*'\(.*\)'/\1/p") ||
 | 
			
		||||
  die "There was a problem mounting the root disk of LXC '${CTID_FROM}'."
 | 
			
		||||
[ -d "${CTID_FROM_PATH}${DATA_PATH}" ] ||
 | 
			
		||||
  die "Zwavejs2MQTT directories in '$CTID_FROM' not found."
 | 
			
		||||
CTID_TO_PATH=$(pct mount $CTID_TO | sed -n "s/.*'\(.*\)'/\1/p") ||
 | 
			
		||||
CTID_TO_PATH=$(pct mount "$CTID_TO" | sed -n "s/.*'\(.*\)'/\1/p") ||
 | 
			
		||||
  die "There was a problem mounting the root disk of LXC '${CTID_TO}'."
 | 
			
		||||
[ -d "${CTID_TO_PATH}${DATA_PATH_NEW}" ] ||
 | 
			
		||||
  die "Zwavejs2MQTT directories in '$CTID_TO' not found."
 | 
			
		||||
@@ -123,11 +123,11 @@ RSYNC_OPTIONS=(
 | 
			
		||||
  --info=progress2
 | 
			
		||||
)
 | 
			
		||||
msg "<======== Zwavejs Data ========>"
 | 
			
		||||
rsync ${RSYNC_OPTIONS[*]} ${CTID_FROM_PATH}${DATA_PATH} ${CTID_TO_PATH}${DATA_PATH_NEW}
 | 
			
		||||
rsync "${RSYNC_OPTIONS[*]}" "${CTID_FROM_PATH}"${DATA_PATH} "${CTID_TO_PATH}"${DATA_PATH_NEW}
 | 
			
		||||
echo -en "\e[1A\e[0K\e[1A\e[0K"
 | 
			
		||||
 | 
			
		||||
info "Successfully Transferred Data."
 | 
			
		||||
 | 
			
		||||
# Use to copy all data from a Zwavejs2MQTT LXC to a Z-wave JS UI LXC
 | 
			
		||||
# run from the Proxmox Shell
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/copy-data/zwavejs2mqtt-copy-data-zwavejsui.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/copy-data/zwavejs2mqtt-copy-data-zwavejsui.sh)"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/cron-update-lxcs.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/cron-update-lxcs.sh)"
 | 
			
		||||
 | 
			
		||||
clear
 | 
			
		||||
cat <<"EOF"
 | 
			
		||||
@@ -25,7 +25,7 @@ add() {
 | 
			
		||||
    *) echo "Please answer yes or no." ;;
 | 
			
		||||
    esac
 | 
			
		||||
  done
 | 
			
		||||
  sh -c '(crontab -l -u root 2>/dev/null; echo "0 0 * * 0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/update-lxcs-cron.sh)\" >>/var/log/update-lxcs-cron.log 2>/dev/null") | crontab -u root -'
 | 
			
		||||
  sh -c '(crontab -l -u root 2>/dev/null; echo "0 0 * * 0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/update-lxcs-cron.sh)\" >>/var/log/update-lxcs-cron.log 2>/dev/null") | crontab -u root -'
 | 
			
		||||
  clear
 | 
			
		||||
  echo -e "\n To view Cron Update LXCs logs: cat /var/log/update-lxcs-cron.log"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,28 +26,28 @@ alias die='EXIT=$? LINE=$LINENO error_exit'
 | 
			
		||||
trap die ERR
 | 
			
		||||
 | 
			
		||||
function error_exit() {
 | 
			
		||||
    trap - ERR
 | 
			
		||||
    local reason="Unknown failure occured."
 | 
			
		||||
    local msg="${1:-$reason}"
 | 
			
		||||
    local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
 | 
			
		||||
    echo -e "$flag $msg" 1>&2
 | 
			
		||||
    exit $EXIT
 | 
			
		||||
  trap - ERR
 | 
			
		||||
  local reason="Unknown failure occured."
 | 
			
		||||
  local msg="${1:-$reason}"
 | 
			
		||||
  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
 | 
			
		||||
  echo -e "$flag $msg" 1>&2
 | 
			
		||||
  exit "$EXIT"
 | 
			
		||||
}
 | 
			
		||||
if command -v pveversion >/dev/null 2>&1; then
 | 
			
		||||
    echo -e "⚠️  Can't Install on Proxmox "
 | 
			
		||||
    exit
 | 
			
		||||
  echo -e "⚠️  Can't Install on Proxmox "
 | 
			
		||||
  exit
 | 
			
		||||
fi
 | 
			
		||||
while true; do
 | 
			
		||||
    read -p "This will Install ${APP} on $hostname. Proceed(y/n)?" yn
 | 
			
		||||
    case $yn in
 | 
			
		||||
    [Yy]*) break ;;
 | 
			
		||||
    [Nn]*) exit ;;
 | 
			
		||||
    *) echo "Please answer yes or no." ;;
 | 
			
		||||
    esac
 | 
			
		||||
  read -p "This will Install ${APP} on $hostname. Proceed(y/n)?" yn
 | 
			
		||||
  case $yn in
 | 
			
		||||
  [Yy]*) break ;;
 | 
			
		||||
  [Nn]*) exit ;;
 | 
			
		||||
  *) echo "Please answer yes or no." ;;
 | 
			
		||||
  esac
 | 
			
		||||
done
 | 
			
		||||
clear
 | 
			
		||||
function header_info {
 | 
			
		||||
    echo -e "${BL}
 | 
			
		||||
function header_info() {
 | 
			
		||||
  echo -e "${BL}
 | 
			
		||||
   _____                      _  _____           
 | 
			
		||||
  / ____|                    | |/ ____|          
 | 
			
		||||
 | |     _ __ _____      ____| | (___   ___  ___ 
 | 
			
		||||
@@ -60,20 +60,20 @@ ${CL}"
 | 
			
		||||
header_info
 | 
			
		||||
 | 
			
		||||
function msg_info() {
 | 
			
		||||
    local msg="$1"
 | 
			
		||||
    echo -ne " ${HOLD} ${YW}${msg}..."
 | 
			
		||||
  local msg="$1"
 | 
			
		||||
  echo -ne " ${HOLD} ${YW}${msg}..."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function msg_ok() {
 | 
			
		||||
    local msg="$1"
 | 
			
		||||
    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
 | 
			
		||||
  local msg="$1"
 | 
			
		||||
  echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up ${APP} Repository"
 | 
			
		||||
apt-get update &>/dev/null
 | 
			
		||||
apt-get install -y curl &>/dev/null
 | 
			
		||||
apt-get install -y gnupg &>/dev/null
 | 
			
		||||
curl -fsSL https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | bash &>/dev/null
 | 
			
		||||
curl -fsSL "https://install.crowdsec.net" | bash &>/dev/null
 | 
			
		||||
msg_ok "Setup ${APP} Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing ${APP}"
 | 
			
		||||
 
 | 
			
		||||
@@ -89,5 +89,5 @@ EOF
 | 
			
		||||
echo -e "\e[1;33m \nFinished....Reboot ${CTID} LXC to apply the changes.\n \e[0m"
 | 
			
		||||
 | 
			
		||||
# In the Proxmox web shell run
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/frigate-support.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/frigate-support.sh)"
 | 
			
		||||
# Reboot the LXC to apply the changes
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Execute within the Proxmox shell
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/hw-acceleration.sh)"
 | 
			
		||||
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/hw-acceleration.sh)"
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
function header_info {
 | 
			
		||||
 
 | 
			
		||||
@@ -69,7 +69,7 @@ catch_errors() {
 | 
			
		||||
# This function handles errors
 | 
			
		||||
error_handler() {
 | 
			
		||||
  source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
 | 
			
		||||
  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
 | 
			
		||||
  if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi
 | 
			
		||||
  printf "\e[?25h"
 | 
			
		||||
  local exit_code="$?"
 | 
			
		||||
  local line_number="$1"
 | 
			
		||||
@@ -110,7 +110,7 @@ msg_info() {
 | 
			
		||||
 | 
			
		||||
# This function displays a success message with a green color.
 | 
			
		||||
msg_ok() {
 | 
			
		||||
  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
 | 
			
		||||
  if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi
 | 
			
		||||
  printf "\e[?25h"
 | 
			
		||||
  local msg="$1"
 | 
			
		||||
  echo -e "${BFR}${CM}${GN}${msg}${CL}"
 | 
			
		||||
@@ -118,7 +118,7 @@ msg_ok() {
 | 
			
		||||
 | 
			
		||||
# This function displays a error message with a red color.
 | 
			
		||||
msg_error() {
 | 
			
		||||
  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
 | 
			
		||||
  if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi
 | 
			
		||||
  printf "\e[?25h"
 | 
			
		||||
  local msg="$1"
 | 
			
		||||
  echo -e "${BFR}${CROSS}${RD}${msg}${CL}"
 | 
			
		||||
@@ -132,14 +132,14 @@ setting_up_container() {
 | 
			
		||||
  echo "LANG=${locale_line}" >/etc/default/locale
 | 
			
		||||
  locale-gen >/dev/null
 | 
			
		||||
  export LANG=${locale_line}
 | 
			
		||||
  echo $tz >/etc/timezone
 | 
			
		||||
  ln -sf /usr/share/zoneinfo/$tz /etc/localtime
 | 
			
		||||
  echo "$tz" >/etc/timezone
 | 
			
		||||
  ln -sf /usr/share/zoneinfo/"$tz" /etc/localtime
 | 
			
		||||
  for ((i = RETRY_NUM; i > 0; i--)); do
 | 
			
		||||
    if [ "$(hostname -I)" != "" ]; then
 | 
			
		||||
      break
 | 
			
		||||
    fi
 | 
			
		||||
    echo 1>&2 -en "${CROSS}${RD} No Network! "
 | 
			
		||||
    sleep $RETRY_EVERY
 | 
			
		||||
    sleep "$RETRY_EVERY"
 | 
			
		||||
  done
 | 
			
		||||
  if [ "$(hostname -I)" = "" ]; then
 | 
			
		||||
    echo 1>&2 -e "\n${CROSS}${RD} No Network After $RETRY_NUM Tries${CL}"
 | 
			
		||||
@@ -265,7 +265,7 @@ EOF
 | 
			
		||||
    systemctl restart $(basename $(dirname $GETTY_OVERRIDE) | sed 's/\.d//')
 | 
			
		||||
    msg_ok "Customized Container"
 | 
			
		||||
  fi
 | 
			
		||||
  echo "bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/ct/${app}.sh)\"" >/usr/bin/update
 | 
			
		||||
  echo "bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/${app}.sh)\"" >/usr/bin/update
 | 
			
		||||
  chmod +x /usr/bin/update
 | 
			
		||||
 | 
			
		||||
  if [[ -n "${SSH_AUTHORIZED_KEY}" ]]; then
 | 
			
		||||
 
 | 
			
		||||
@@ -424,7 +424,7 @@ msg_info "Retrieving the URL for the Arch Linux .iso File"
 | 
			
		||||
URL=https://geo.mirror.pkgbuild.com/iso/latest/archlinux-x86_64.iso
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -425,7 +425,7 @@ msg_info "Retrieving the URL for the Debian 12 Qcow2 Disk Image"
 | 
			
		||||
URL=https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-nocloud-amd64.qcow2
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -388,7 +388,7 @@ msg_info "Retrieving the URL for the Debian 12 Qcow2 Disk Image"
 | 
			
		||||
URL="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-nocloud-$(dpkg --print-architecture).qcow2"
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@ var_os="homeassistant"
 | 
			
		||||
DISK_SIZE="32G"
 | 
			
		||||
#
 | 
			
		||||
for version in "${VERSIONS[@]}"; do
 | 
			
		||||
  eval "$version=$(curl -fsSL https://raw.githubusercontent.com/home-assistant/version/master/$version.json | grep "ova" | cut -d '"' -f 4)"
 | 
			
		||||
  eval "$version=$(curl -fsSL https://raw.githubusercontent.com/home-assistant/version/master/stable.json | grep '"ova"' | cut -d '"' -f 4)"
 | 
			
		||||
done
 | 
			
		||||
YW=$(echo "\033[33m")
 | 
			
		||||
BL=$(echo "\033[36m")
 | 
			
		||||
@@ -432,7 +432,7 @@ else
 | 
			
		||||
fi
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}haos_ova-${BRANCH}.qcow2.xz${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -254,7 +254,7 @@ URL=https://download.mikrotik.com/routeros/7.15.3/chr-7.15.3.img.zip
 | 
			
		||||
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}$FILE${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -389,7 +389,7 @@ msg_info "Retrieving the URL for the $NAME Disk Image"
 | 
			
		||||
URL=http://mirror.turnkeylinux.org/turnkeylinux/images/iso/turnkey-nextcloud-18.1-bookworm-amd64.iso
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -453,7 +453,7 @@ URL="https://downloads.openwrt.org/releases/$stableversion/targets/x86/64/openwr
 | 
			
		||||
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}$FILE${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -527,7 +527,7 @@ msg_info "Retrieving the URL for the OPNsense Qcow2 Disk Image"
 | 
			
		||||
URL=https://download.freebsd.org/releases/VM-IMAGES/14.2-RELEASE/amd64/Latest/FreeBSD-14.2-RELEASE-amd64.qcow2.xz
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=Fressbsd.qcow2
 | 
			
		||||
unxz -cv $(basename $URL) >${FILE}
 | 
			
		||||
 
 | 
			
		||||
@@ -389,7 +389,7 @@ msg_info "Retrieving the URL for the $NAME Disk Image"
 | 
			
		||||
URL=http://mirror.turnkeylinux.org/turnkeylinux/images/iso/turnkey-owncloud-18.0-bookworm-amd64.iso
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -296,7 +296,7 @@ msg_info "Getting URL for Home Assistant ${BRANCH} Disk Image"
 | 
			
		||||
URL=https://github.com/home-assistant/operating-system/releases/download/${BRANCH}/haos_generic-aarch64-${BRANCH}.qcow2.xz
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}haos_generic-aarch64-${BRANCH}.qcow2.xz${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -423,7 +423,7 @@ msg_info "Retrieving the URL for the Ubuntu 22.04 Disk Image"
 | 
			
		||||
URL=https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -423,7 +423,7 @@ msg_info "Retrieving the URL for the Ubuntu 24.04 Disk Image"
 | 
			
		||||
URL=https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -423,7 +423,7 @@ msg_info "Retrieving the URL for the Ubuntu 24.10 Disk Image"
 | 
			
		||||
URL=https://cloud-images.ubuntu.com/oracular/current/oracular-server-cloudimg-amd64.img
 | 
			
		||||
sleep 2
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
curl -fsSL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
curl -f#SL -o "$(basename "$URL")" "$URL"
 | 
			
		||||
echo -en "\e[1A\e[0K"
 | 
			
		||||
FILE=$(basename $URL)
 | 
			
		||||
msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user