mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			27 Commits
		
	
	
		
			2025-07-15
			...
			2025-07-17
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					2600e84a14 | ||
| 
						 | 
					51faa3b03d | ||
| 
						 | 
					a5ed6c1af7 | ||
| 
						 | 
					05f552eca7 | ||
| 
						 | 
					da71a0fa01 | ||
| 
						 | 
					2a359b5d2d | ||
| 
						 | 
					a125d00cad | ||
| 
						 | 
					14f36819c2 | ||
| 
						 | 
					b4df44bc5c | ||
| 
						 | 
					53fa29e01f | ||
| 
						 | 
					33e19bc535 | ||
| 
						 | 
					52bc5f33e6 | ||
| 
						 | 
					51a6024a1b | ||
| 
						 | 
					49aa5ae552 | ||
| 
						 | 
					6dc91a2144 | ||
| 
						 | 
					03813ff991 | ||
| 
						 | 
					c0df5b79f5 | ||
| 
						 | 
					523b3e6a70 | ||
| 
						 | 
					4ce715acd4 | ||
| 
						 | 
					1ad394367e | ||
| 
						 | 
					0b0ae1a3bc | ||
| 
						 | 
					63c5912723 | ||
| 
						 | 
					dafb4af6a8 | ||
| 
						 | 
					88e3a334f7 | ||
| 
						 | 
					bbd600a348 | ||
| 
						 | 
					c90f800a69 | ||
| 
						 | 
					ca5f0629b0 | 
							
								
								
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							@@ -26,6 +26,7 @@ SECURITY.md linguist-documentation
 | 
			
		||||
# ---------------------------------------
 | 
			
		||||
# Exclude generated/config files
 | 
			
		||||
*.json linguist-generated
 | 
			
		||||
frontend/public/json/*.json linguist-generated=false
 | 
			
		||||
*.lock linguist-generated
 | 
			
		||||
*.yml linguist-generated
 | 
			
		||||
*.yaml linguist-generated
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -10,8 +10,40 @@
 | 
			
		||||
> [!CAUTION]
 | 
			
		||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
 | 
			
		||||
 | 
			
		||||
## 2025-07-18
 | 
			
		||||
 | 
			
		||||
## 2025-07-17
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Cloudreve ([#6044](https://github.com/community-scripts/ProxmoxVE/pull/6044))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - config-file: set GATE [@ahmaddxb](https://github.com/ahmaddxb) ([#6042](https://github.com/community-scripts/ProxmoxVE/pull/6042))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - add "setup_composer" in update_script (baikal, bar-assistant, firefly) [@MickLesk](https://github.com/MickLesk) ([#6047](https://github.com/community-scripts/ProxmoxVE/pull/6047))
 | 
			
		||||
    - PLANKA: Fix update procedure [@tremor021](https://github.com/tremor021) ([#6031](https://github.com/community-scripts/ProxmoxVE/pull/6031))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Reactive Resume: switch source to community-maintained fork [@vhsdream](https://github.com/vhsdream) ([#6051](https://github.com/community-scripts/ProxmoxVE/pull/6051))
 | 
			
		||||
 | 
			
		||||
## 2025-07-16
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - homepage.sh: resolves #6028 [@vhsdream](https://github.com/vhsdream) ([#6032](https://github.com/community-scripts/ProxmoxVE/pull/6032))
 | 
			
		||||
    - karakeep-install: Disable Playwright browser download, remove MCP build [@vhsdream](https://github.com/vhsdream) ([#5833](https://github.com/community-scripts/ProxmoxVE/pull/5833))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - chore: reorganize nginxproxymanager update script [@Kirbo](https://github.com/Kirbo) ([#5971](https://github.com/community-scripts/ProxmoxVE/pull/5971))
 | 
			
		||||
 | 
			
		||||
## 2025-07-15
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,7 @@ function update_script() {
 | 
			
		||||
    msg_ok "Backed up data"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
 | 
			
		||||
    setup_composer
 | 
			
		||||
 | 
			
		||||
    msg_info "Configuring Baikal"
 | 
			
		||||
    cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,7 @@ function update_script() {
 | 
			
		||||
    msg_ok "Backed up Bar Assistant"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "bar-assistant" "karlomikus/bar-assistant" "tarball" "latest" "/opt/bar-assistant"
 | 
			
		||||
    setup_composer
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE_BARASSISTANT}"
 | 
			
		||||
    cp -r /opt/bar-assistant-backup/.env /opt/bar-assistant/.env
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										58
									
								
								ct/cloudreve.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								ct/cloudreve.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
#!/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://cloudreve.org/
 | 
			
		||||
 | 
			
		||||
APP="Cloudreve"
 | 
			
		||||
var_tags="${var_tags:-cloud}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/cloudreve ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/cloudreve/cloudreve/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.cloudreve 2>/dev/null)" ]] || [[ ! -f ~/.cloudreve ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop cloudreve
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_amd64.tar.gz"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start cloudreve
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5212${CL}"
 | 
			
		||||
@@ -40,6 +40,7 @@ function update_script() {
 | 
			
		||||
    msg_ok "Backed up data"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii" "prebuild" "latest" "/opt/firefly" "FireflyIII-*.zip"
 | 
			
		||||
    setup_composer
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    rm -rf /opt/firefly/storage
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/cloudreve
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/cloudreve
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   ________                __                  
 | 
			
		||||
  / ____/ /___  __  ______/ /_______ _   _____ 
 | 
			
		||||
 / /   / / __ \/ / / / __  / ___/ _ \ | / / _ \
 | 
			
		||||
/ /___/ / /_/ / /_/ / /_/ / /  /  __/ |/ /  __/
 | 
			
		||||
\____/_/\____/\__,_/\__,_/_/   \___/|___/\___/ 
 | 
			
		||||
                                               
 | 
			
		||||
@@ -56,7 +56,7 @@ function update_script() {
 | 
			
		||||
    rm -rf homepage-${RELEASE}
 | 
			
		||||
    cd /opt/homepage
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    $STD npx --yes update-browserslist-db@latest
 | 
			
		||||
    $STD pnpm update --no-save caniuse-lite
 | 
			
		||||
    export NEXT_PUBLIC_VERSION="v$RELEASE"
 | 
			
		||||
    export NEXT_PUBLIC_REVISION="source"
 | 
			
		||||
    export NEXT_PUBLIC_BUILDTIME=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | jq -r '.published_at')
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										110
									
								
								ct/karakeep.sh
									
									
									
									
									
								
							
							
						
						
									
										110
									
								
								ct/karakeep.sh
									
									
									
									
									
								
							@@ -27,59 +27,67 @@ function update_script() {
 | 
			
		||||
    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 yt-dlp"
 | 
			
		||||
    $STD yt-dlp --update-to nightly
 | 
			
		||||
    msg_ok "Updated yt-dlp"
 | 
			
		||||
    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
 | 
			
		||||
    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"
 | 
			
		||||
    $STD unzip "v${RELEASE}.zip"
 | 
			
		||||
    mv karakeep-"${RELEASE}" /opt/karakeep
 | 
			
		||||
    cd /opt/karakeep/apps/web
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    cd /opt/karakeep/apps/workers
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    cd /opt/karakeep/apps/cli
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    cd /opt/karakeep/apps/mcp
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    export DATA_DIR=/opt/karakeep_data
 | 
			
		||||
    cd /opt/karakeep/packages/db
 | 
			
		||||
    $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}."
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/karakeep-app/karakeep/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ -f ~/.karakeep && "$RELEASE" == "$(cat ~/.karakeep)" ]]; then
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping Services"
 | 
			
		||||
  systemctl stop karakeep-web karakeep-workers karakeep-browser
 | 
			
		||||
  msg_ok "Stopped Services"
 | 
			
		||||
  
 | 
			
		||||
  msg_info "Updating yt-dlp"
 | 
			
		||||
  $STD yt-dlp --update-to nightly
 | 
			
		||||
  msg_ok "Updated yt-dlp"
 | 
			
		||||
  
 | 
			
		||||
  msg_info "Prepare update"
 | 
			
		||||
  if [[ -f /opt/${APP}_version.txt && "$(cat /opt/${APP}_version.txt)" < "0.23.0" ]]; then
 | 
			
		||||
    $STD apt-get install -y graphicsmagick ghostscript
 | 
			
		||||
  fi
 | 
			
		||||
  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
 | 
			
		||||
  msg_ok "Update prepared"
 | 
			
		||||
  
 | 
			
		||||
  fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
 | 
			
		||||
  if command -v corepack; then
 | 
			
		||||
    $STD corepack disable
 | 
			
		||||
  fi
 | 
			
		||||
  MODULE_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/karakeep/package.json)"
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
 | 
			
		||||
  
 | 
			
		||||
  msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
  export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
			
		||||
  export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD="true"
 | 
			
		||||
  export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
  export CI="true"
 | 
			
		||||
  cd /opt/karakeep/apps/web
 | 
			
		||||
  $STD pnpm install --frozen-lockfile
 | 
			
		||||
  $STD pnpm build
 | 
			
		||||
  cd /opt/karakeep/apps/workers
 | 
			
		||||
  $STD pnpm install --frozen-lockfile
 | 
			
		||||
  cd /opt/karakeep/apps/cli
 | 
			
		||||
  $STD pnpm install --frozen-lockfile
 | 
			
		||||
  $STD pnpm build
 | 
			
		||||
  export DATA_DIR=/opt/karakeep_data
 | 
			
		||||
  cd /opt/karakeep/packages/db
 | 
			
		||||
  $STD pnpm migrate
 | 
			
		||||
  $STD pnpm store prune
 | 
			
		||||
  sed -i "s/^SERVER_VERSION=.*$/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"
 | 
			
		||||
  $STD apt-get autoremove -y
 | 
			
		||||
  $STD apt-get autoclean -y
 | 
			
		||||
  msg_ok "Cleaned"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,15 +27,32 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if ! command -v pnpm &>/dev/null; then
 | 
			
		||||
    msg_info "Installing pnpm"
 | 
			
		||||
    #export NODE_OPTIONS=--openssl-legacy-provider
 | 
			
		||||
    $STD npm install -g pnpm@8.15
 | 
			
		||||
    msg_ok "Installed pnpm"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
 | 
			
		||||
    grep "tag_name" |
 | 
			
		||||
    awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
 | 
			
		||||
  msg_info "Downloading NPM v${RELEASE}"
 | 
			
		||||
  curl -fsSL "https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE}" | tar -xz
 | 
			
		||||
  cd nginx-proxy-manager-"${RELEASE}" || exit
 | 
			
		||||
  msg_ok "Downloaded NPM v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Building Frontend"
 | 
			
		||||
  (
 | 
			
		||||
    cd ./frontend || exit
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    $STD pnpm upgrade
 | 
			
		||||
    $STD pnpm run build
 | 
			
		||||
  )
 | 
			
		||||
  msg_ok "Built Frontend"
 | 
			
		||||
 | 
			
		||||
  msg_info "Stopping Services"
 | 
			
		||||
  systemctl stop openresty
 | 
			
		||||
  systemctl stop npm
 | 
			
		||||
@@ -50,12 +67,7 @@ function update_script() {
 | 
			
		||||
    "$STD" /var/cache/nginx
 | 
			
		||||
  msg_ok "Cleaned Old Files"
 | 
			
		||||
 | 
			
		||||
  msg_info "Downloading NPM v${RELEASE}"
 | 
			
		||||
  curl -fsSL "https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE}" | tar -xz
 | 
			
		||||
  cd nginx-proxy-manager-"${RELEASE}"
 | 
			
		||||
  msg_ok "Downloaded NPM v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Setting up Enviroment"
 | 
			
		||||
  msg_info "Setting up Environment"
 | 
			
		||||
  ln -sf /usr/bin/python3 /usr/bin/python
 | 
			
		||||
  ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
 | 
			
		||||
  ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
 | 
			
		||||
@@ -97,19 +109,12 @@ function update_script() {
 | 
			
		||||
    $STD openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" -keyout /data/nginx/dummykey.pem -out /data/nginx/dummycert.pem
 | 
			
		||||
  fi
 | 
			
		||||
  mkdir -p /app/global /app/frontend/images
 | 
			
		||||
  cp -r frontend/dist/* /app/frontend
 | 
			
		||||
  cp -r frontend/app-images/* /app/frontend/images
 | 
			
		||||
  cp -r backend/* /app
 | 
			
		||||
  cp -r global/* /app/global
 | 
			
		||||
  $STD python3 -m pip install --no-cache-dir --break-system-packages certbot-dns-cloudflare
 | 
			
		||||
  msg_ok "Setup Enviroment"
 | 
			
		||||
 | 
			
		||||
  msg_info "Building Frontend"
 | 
			
		||||
  cd ./frontend
 | 
			
		||||
  $STD pnpm install
 | 
			
		||||
  $STD pnpm upgrade
 | 
			
		||||
  $STD pnpm run build
 | 
			
		||||
  cp -r dist/* /app/frontend
 | 
			
		||||
  cp -r app-images/* /app/frontend/images
 | 
			
		||||
  msg_ok "Built Frontend"
 | 
			
		||||
  msg_ok "Setup Environment"
 | 
			
		||||
 | 
			
		||||
  msg_info "Initializing Backend"
 | 
			
		||||
  $STD rm -rf /app/config/default.json
 | 
			
		||||
@@ -128,7 +133,7 @@ function update_script() {
 | 
			
		||||
}
 | 
			
		||||
EOF
 | 
			
		||||
  fi
 | 
			
		||||
  cd /app
 | 
			
		||||
  cd /app || exit
 | 
			
		||||
  $STD pnpm install
 | 
			
		||||
  msg_ok "Initialized Backend"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								ct/planka.sh
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								ct/planka.sh
									
									
									
									
									
								
							@@ -28,33 +28,33 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/plankanban/planka/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/plankanban/planka/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.planka 2>/dev/null)" ]] || [[ ! -f ~/.planka ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop planka
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    mkdir -p /opt/planka-backup
 | 
			
		||||
    mkdir -p /opt/planka-backup/favicons
 | 
			
		||||
    mkdir -p /opt/planka-backup/user-avatars
 | 
			
		||||
    mkdir -p /opt/planka-backup/background-images
 | 
			
		||||
    mkdir -p /opt/planka-backup/attachments
 | 
			
		||||
    msg_info "Backing up data"
 | 
			
		||||
    mkdir -p /opt/planka-backup/{favicons,user-avatars,background-images,attachments}
 | 
			
		||||
    mv /opt/planka/.env /opt/planka-backup
 | 
			
		||||
    [ -n "$(ls -A /opt/planka/public/favicons 2>/dev/null)" ] && mv /opt/planka/public/favicons/* /opt/planka-backup/favicons/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka/public/user-avatars 2>/dev/null)" ] && mv /opt/planka/public/user-avatars/* /opt/planka-backup/user-avatars/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka/public/background-images 2>/dev/null)" ] && mv /opt/planka/public/background-images/* /opt/planka-backup/background-images/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka/private/attachments 2>/dev/null)" ] && mv /opt/planka/private/attachments/* /opt/planka-backup/attachments/
 | 
			
		||||
    [ -d /opt/planka/public/favicons ] && find /opt/planka/public/favicons -maxdepth 1 -type f -exec mv -t /opt/planka-backup/favicons {} +
 | 
			
		||||
    [ -d /opt/planka/public/user-avatars ] && find /opt/planka/public/user-avatars -maxdepth 1 -type f -exec mv -t /opt/planka-backup/user-avatars {} +
 | 
			
		||||
    [ -d /opt/planka/public/background-images ] && find /opt/planka/public/background-images -maxdepth 1 -type f -exec mv -t /opt/planka-backup/background-images {} +
 | 
			
		||||
    [ -d /opt/planka/private/attachments ] && find /opt/planka/private/attachments -maxdepth 1 -type f -exec mv -t /opt/planka-backup/attachments {} +
 | 
			
		||||
    rm -rf /opt/planka
 | 
			
		||||
    msg_ok "Backed up data"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip"
 | 
			
		||||
    cd /opt/planka
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Restoring data"
 | 
			
		||||
    mv /opt/planka-backup/.env /opt/planka/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka-backup/favicons 2>/dev/null)" ] && mv /opt/planka-backup/favicons/* /opt/planka/public/favicons/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka-backup/user-avatars 2>/dev/null)" ] && mv /opt/planka-backup/user-avatars/* /opt/planka/public/user-avatars/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka-backup/background-images 2>/dev/null)" ] && mv /opt/planka-backup/background-images/* /opt/planka/public/background-images/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka-backup/attachments 2>/dev/null)" ] && mv /opt/planka-backup/attachments/* /opt/planka/private/attachments/
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
    [ -d /opt/planka-backup/favicons ] && find /opt/planka-backup/favicons -maxdepth 1 -type f -exec mv -t /opt/planka/public/favicons {} +
 | 
			
		||||
    [ -d /opt/planka-backup/user-avatars ] && find /opt/planka-backup/user-avatars -maxdepth 1 -type f -exec mv -t /opt/planka/public/user-avatars {} +
 | 
			
		||||
    [ -d /opt/planka-backup/background-images ] && find /opt/planka-backup/background-images -maxdepth 1 -type f -exec mv -t /opt/planka/public/background-images {} +
 | 
			
		||||
    [ -d /opt/planka-backup/attachments ] && find /opt/planka-backup/attachments -maxdepth 1 -type f -exec mv -t /opt/planka/private/attachments {} +
 | 
			
		||||
    msg_ok "Restored data"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start planka
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://rxresu.me
 | 
			
		||||
# Source: https://rxresume.org
 | 
			
		||||
 | 
			
		||||
APP="Reactive-Resume"
 | 
			
		||||
var_tags="${var_tags:-documents}"
 | 
			
		||||
@@ -20,80 +20,75 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f /etc/systemd/system/Reactive-Resume.service ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/AmruthPillai/Reactive-Resume/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 services"
 | 
			
		||||
        systemctl stop Reactive-Resume
 | 
			
		||||
        msg_ok "Stopped services"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
        cp /opt/${APP}/.env /opt/rxresume.env
 | 
			
		||||
        res_tmp=$(mktemp)
 | 
			
		||||
        rm -rf /opt/${APP}
 | 
			
		||||
        curl -fsSL "https://github.com/AmruthPillai/Reactive-Resume/archive/refs/tags/v${RELEASE}.zip" -O $res_tmp
 | 
			
		||||
        $STD unzip $res_tmp
 | 
			
		||||
        mv ${APP}-${RELEASE}/ /opt/${APP}
 | 
			
		||||
        cd /opt/${APP}
 | 
			
		||||
        export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
			
		||||
        export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
        export CI="true"
 | 
			
		||||
        export NODE_ENV="production"
 | 
			
		||||
        $STD pnpm install --frozen-lockfile
 | 
			
		||||
        $STD pnpm run build
 | 
			
		||||
        $STD pnpm run prisma:generate
 | 
			
		||||
        mv /opt/rxresume.env /opt/${APP}/.env
 | 
			
		||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating Minio"
 | 
			
		||||
        systemctl stop minio
 | 
			
		||||
        cd /tmp
 | 
			
		||||
        curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio.deb -o minio.deb
 | 
			
		||||
        $STD dpkg -i minio.deb
 | 
			
		||||
        msg_ok "Updated Minio"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating Browserless (Patience)"
 | 
			
		||||
        systemctl stop browserless
 | 
			
		||||
        cp /opt/browserless/.env /opt/browserless.env
 | 
			
		||||
        rm -rf browserless
 | 
			
		||||
        brwsr_tmp=$(mktemp)
 | 
			
		||||
        TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
        curl -fsSL https://github.com/browserless/browserless/archive/refs/tags/v${TAG}.zip -O $brwsr_tmp
 | 
			
		||||
        $STD unzip $brwsr_tmp
 | 
			
		||||
        mv browserless-${TAG}/ /opt/browserless
 | 
			
		||||
        cd /opt/browserless
 | 
			
		||||
        $STD npm install
 | 
			
		||||
        rm -rf src/routes/{chrome,edge,firefox,webkit}
 | 
			
		||||
        $STD node_modules/playwright-core/cli.js install --with-deps chromium
 | 
			
		||||
        $STD npm run build
 | 
			
		||||
        $STD npm run build:function
 | 
			
		||||
        $STD npm prune production
 | 
			
		||||
        mv /opt/browserless.env /opt/browserless/.env
 | 
			
		||||
        msg_ok "Updated Browserless"
 | 
			
		||||
 | 
			
		||||
        msg_info "Restarting services"
 | 
			
		||||
        systemctl start minio Reactive-Resume browserless
 | 
			
		||||
        msg_ok "Restarted services"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -f /tmp/minio.deb
 | 
			
		||||
        rm -f $brwsr_tmp
 | 
			
		||||
        rm -f $res_tmp
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
  if [[ ! -f /etc/systemd/system/Reactive-Resume.service ]]; then
 | 
			
		||||
    msg_error "No $APP Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/lazy-media/Reactive-Resume/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ ! -f "$HOME"/.reactive-resume ]] || [[ "$RELEASE" != "$(cat "$HOME"/.reactive-resume)" ]]; then
 | 
			
		||||
    msg_info "Stopping services"
 | 
			
		||||
    systemctl stop Reactive-Resume
 | 
			
		||||
    msg_ok "Stopped services"
 | 
			
		||||
 | 
			
		||||
    cp /opt/"$APP"/.env /opt/rxresume.env
 | 
			
		||||
    rm -rf /opt/"$APP"
 | 
			
		||||
    fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume"
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    cd /opt/"$APP"
 | 
			
		||||
    export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
			
		||||
    export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
    export CI="true"
 | 
			
		||||
    export NODE_ENV="production"
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    $STD pnpm run build
 | 
			
		||||
    $STD pnpm run prisma:generate
 | 
			
		||||
    mv /opt/rxresume.env /opt/"$APP"/.env
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Minio"
 | 
			
		||||
    systemctl stop minio
 | 
			
		||||
    cd /tmp
 | 
			
		||||
    curl -fsSL https://dl.min.io/server/minio/release/linux-amd64/minio.deb -o minio.deb
 | 
			
		||||
    $STD dpkg -i minio.deb
 | 
			
		||||
    msg_ok "Updated Minio"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Browserless (Patience)"
 | 
			
		||||
    systemctl stop browserless
 | 
			
		||||
    cp /opt/browserless/.env /opt/browserless.env
 | 
			
		||||
    rm -rf /opt/browserless
 | 
			
		||||
    brwsr_tmp=$(mktemp)
 | 
			
		||||
    TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    curl -fsSL https://github.com/browserless/browserless/archive/refs/tags/v"$TAG".zip -o "$brwsr_tmp"
 | 
			
		||||
    $STD unzip "$brwsr_tmp"
 | 
			
		||||
    mv browserless-"$TAG"/ /opt/browserless
 | 
			
		||||
    cd /opt/browserless
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    rm -rf src/routes/{chrome,edge,firefox,webkit}
 | 
			
		||||
    $STD node_modules/playwright-core/cli.js install --with-deps chromium
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    $STD npm run build:function
 | 
			
		||||
    $STD npm prune production
 | 
			
		||||
    mv /opt/browserless.env /opt/browserless/.env
 | 
			
		||||
    msg_ok "Updated Browserless"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restarting services"
 | 
			
		||||
    systemctl start minio Reactive-Resume browserless
 | 
			
		||||
    msg_ok "Restarted services"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -f /tmp/minio.deb
 | 
			
		||||
    rm -f "$brwsr_tmp"
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. $APP is already at v{$RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								frontend/public/json/cloudreve.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/cloudreve.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Cloudreve",
 | 
			
		||||
  "slug": "cloudreve",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    12
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-07-17",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 5212,
 | 
			
		||||
  "documentation": "https://docs.cloudreve.org/en/",
 | 
			
		||||
  "website": "https://cloudreve.org/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/cloudreve.webp",
 | 
			
		||||
  "config_path": "/opt/cloudreve/data/config.ini",
 | 
			
		||||
  "description": "Cloudreve is an open-source, community-driven cloud storage system that provides file sharing, synchronization, and management features. It supports a wide range of storage backends and integrates with various notification and logging platforms.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/cloudreve.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 10,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "After Installation: Register your user -> Login -> Dashboard -> Accept Primary URL.",
 | 
			
		||||
      "type": "warn"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "config_path": "/opt/mealie/mealie.env",
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "interface_port": 9000,
 | 
			
		||||
  "documentation": "https://mealie.io/",
 | 
			
		||||
  "website": "https://mealie.io/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mealie.webp",
 | 
			
		||||
 
 | 
			
		||||
@@ -9,8 +9,8 @@
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": "https://docs.rxresu.me/",
 | 
			
		||||
  "website": "https://rxresu.me",
 | 
			
		||||
  "documentation": "https://docs.rxresume.org/",
 | 
			
		||||
  "website": "https://rxresume.org",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/reactive-resume-light.png",
 | 
			
		||||
    "config_path": "/opt/reactive-resume/.env",
 | 
			
		||||
  "description": "A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever.",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,173 @@
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "name": "esphome/esphome",
 | 
			
		||||
    "version": "2025.6.3",
 | 
			
		||||
    "date": "2025-07-03T01:07:26Z"
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.13.1",
 | 
			
		||||
    "date": "2025-07-17T21:36:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "coder/code-server",
 | 
			
		||||
    "version": "v4.101.2",
 | 
			
		||||
    "date": "2025-06-25T21:18:52Z"
 | 
			
		||||
    "version": "v4.102.1",
 | 
			
		||||
    "date": "2025-07-17T21:20:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.1.1.0-2.1.1.0_experimental_2025-07-17",
 | 
			
		||||
    "date": "2025-07-17T20:11:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "grafana/grafana",
 | 
			
		||||
    "version": "v12.0.2+security-01",
 | 
			
		||||
    "date": "2025-07-17T19:13:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jhuckaby/Cronicle",
 | 
			
		||||
    "version": "v0.9.83",
 | 
			
		||||
    "date": "2025-07-17T17:48:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r8.0.12",
 | 
			
		||||
    "date": "2025-07-17T17:43:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wavelog/wavelog",
 | 
			
		||||
    "version": "2.0.7",
 | 
			
		||||
    "date": "2025-07-17T15:33:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Brandawg93/PeaNUT",
 | 
			
		||||
    "version": "v5.9.2",
 | 
			
		||||
    "date": "2025-07-17T15:31:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "forgejo/forgejo",
 | 
			
		||||
    "version": "v12.0.0",
 | 
			
		||||
    "date": "2025-07-17T14:38:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "linuxserver/Heimdall",
 | 
			
		||||
    "version": "v2.7.0",
 | 
			
		||||
    "date": "2025-07-17T14:08:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "openhab/openhab-core",
 | 
			
		||||
    "version": "4.3.6",
 | 
			
		||||
    "date": "2025-07-17T13:07:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "oauth2-proxy/oauth2-proxy",
 | 
			
		||||
    "version": "v7.10.0",
 | 
			
		||||
    "date": "2025-07-17T12:08:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "steveiliop56/tinyauth",
 | 
			
		||||
    "version": "v3.6.1",
 | 
			
		||||
    "date": "2025-07-12T13:41:57Z"
 | 
			
		||||
    "version": "v3.6.2",
 | 
			
		||||
    "date": "2025-07-17T12:08:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.102.4",
 | 
			
		||||
    "date": "2025-07-17T11:27:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.2.6",
 | 
			
		||||
    "date": "2025-07-17T11:16:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "esphome/esphome",
 | 
			
		||||
    "version": "2025.7.1",
 | 
			
		||||
    "date": "2025-07-17T09:54:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "icereed/paperless-gpt",
 | 
			
		||||
    "version": "v0.22.0",
 | 
			
		||||
    "date": "2025-07-17T06:35:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.22.2162",
 | 
			
		||||
    "date": "2025-07-17T06:00:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.2.21",
 | 
			
		||||
    "date": "2025-07-17T04:46:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "advplyr/audiobookshelf",
 | 
			
		||||
    "version": "v2.26.1",
 | 
			
		||||
    "date": "2025-07-16T22:48:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "linkwarden/linkwarden",
 | 
			
		||||
    "version": "v2.11.4",
 | 
			
		||||
    "date": "2025-07-16T21:53:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Luligu/matterbridge",
 | 
			
		||||
    "version": "3.1.4",
 | 
			
		||||
    "date": "2025-07-16T20:53:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.10.0-rc0",
 | 
			
		||||
    "date": "2025-07-16T18:18:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "plexguide/Huntarr.io",
 | 
			
		||||
    "version": "8.1.15",
 | 
			
		||||
    "date": "2025-07-16T18:06:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "benjaminjonard/koillection",
 | 
			
		||||
    "version": "1.6.15",
 | 
			
		||||
    "date": "2025-07-16T16:47:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "usememos/memos",
 | 
			
		||||
    "version": "v0.25.0",
 | 
			
		||||
    "date": "2025-07-16T14:57:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fuma-nama/fumadocs",
 | 
			
		||||
    "version": "fumadocs-ui@15.6.4",
 | 
			
		||||
    "date": "2025-07-16T14:34:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TryGhost/Ghost-CLI",
 | 
			
		||||
    "version": "v1.27.1",
 | 
			
		||||
    "date": "2025-07-16T13:29:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Checkmk/checkmk",
 | 
			
		||||
    "version": "v2.4.0p8-rc2",
 | 
			
		||||
    "date": "2025-07-16T13:21:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "coverity-w29-4.13.0",
 | 
			
		||||
    "date": "2025-07-16T12:35:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "emqx/emqx",
 | 
			
		||||
    "version": "e6.0.0-M1.202507-beta.1",
 | 
			
		||||
    "date": "2025-07-16T12:35:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "glpi-project/glpi",
 | 
			
		||||
    "version": "10.0.19",
 | 
			
		||||
    "date": "2025-07-16T09:45:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "NLnetLabs/unbound",
 | 
			
		||||
    "version": "release-1.23.1",
 | 
			
		||||
    "date": "2025-07-16T09:20:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "meilisearch/meilisearch",
 | 
			
		||||
    "version": "prototype-chat-completions-with-filters-0",
 | 
			
		||||
    "date": "2025-07-16T08:54:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sbondCo/Watcharr",
 | 
			
		||||
@@ -24,26 +179,11 @@
 | 
			
		||||
    "version": "v3.42.0",
 | 
			
		||||
    "date": "2025-07-14T22:07:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r8.2.0-alpha2",
 | 
			
		||||
    "date": "2025-07-15T20:47:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "plexguide/Huntarr.io",
 | 
			
		||||
    "version": "8.1.12",
 | 
			
		||||
    "date": "2025-07-15T20:06:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "netbox-community/netbox",
 | 
			
		||||
    "version": "v4.3.4",
 | 
			
		||||
    "date": "2025-07-15T18:01:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.0.13",
 | 
			
		||||
    "date": "2025-07-15T17:22:26Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gethomepage/homepage",
 | 
			
		||||
    "version": "v1.4.0",
 | 
			
		||||
@@ -54,11 +194,6 @@
 | 
			
		||||
    "version": "v1.24.0",
 | 
			
		||||
    "date": "2025-07-15T16:02:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.1.0.125-2.1.0.125_canary_2025-07-15",
 | 
			
		||||
    "date": "2025-07-15T15:39:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v2.70.14",
 | 
			
		||||
@@ -84,11 +219,6 @@
 | 
			
		||||
    "version": "v1.134.0",
 | 
			
		||||
    "date": "2025-07-15T13:43:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Checkmk/checkmk",
 | 
			
		||||
    "version": "v2.4.0p8-rc1",
 | 
			
		||||
    "date": "2025-07-15T12:09:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zabbix/zabbix",
 | 
			
		||||
    "version": "7.2.11rc1",
 | 
			
		||||
@@ -109,21 +239,11 @@
 | 
			
		||||
    "version": "1.22.1",
 | 
			
		||||
    "date": "2025-07-15T06:44:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.22.2159",
 | 
			
		||||
    "date": "2025-07-15T05:47:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "go-gitea/gitea",
 | 
			
		||||
    "version": "v1.24.3",
 | 
			
		||||
    "date": "2025-07-15T04:56:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jhuckaby/Cronicle",
 | 
			
		||||
    "version": "v0.9.82",
 | 
			
		||||
    "date": "2025-07-15T03:45:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pi-hole/pi-hole",
 | 
			
		||||
    "version": "v6.1.4",
 | 
			
		||||
@@ -154,11 +274,6 @@
 | 
			
		||||
    "version": "v1.2.3",
 | 
			
		||||
    "date": "2025-07-14T16:28:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.102.3",
 | 
			
		||||
    "date": "2025-07-14T14:53:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.7.2",
 | 
			
		||||
@@ -167,43 +282,18 @@
 | 
			
		||||
  {
 | 
			
		||||
    "name": "theonedev/onedev",
 | 
			
		||||
    "version": "v12.0.0",
 | 
			
		||||
    "date": "2025-07-14T06:19:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "coverity-w28-4.13.0",
 | 
			
		||||
    "date": "2025-07-08T11:25:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Luligu/matterbridge",
 | 
			
		||||
    "version": "3.1.3",
 | 
			
		||||
    "date": "2025-07-14T07:14:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.2.20",
 | 
			
		||||
    "date": "2025-07-02T04:03:37Z"
 | 
			
		||||
    "date": "2025-07-14T10:08:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "homebridge/homebridge",
 | 
			
		||||
    "version": "v1.11.0",
 | 
			
		||||
    "date": "2025-07-13T19:22:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wavelog/wavelog",
 | 
			
		||||
    "version": "2.0.6",
 | 
			
		||||
    "date": "2025-07-13T19:10:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MediaBrowser/Emby.Releases",
 | 
			
		||||
    "version": "4.9.1.2",
 | 
			
		||||
    "date": "2025-06-26T22:08:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "openhab/openhab-core",
 | 
			
		||||
    "version": "5.0.0.M4",
 | 
			
		||||
    "date": "2025-07-13T16:04:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mayswind/AriaNg",
 | 
			
		||||
    "version": "1.3.11",
 | 
			
		||||
@@ -234,21 +324,11 @@
 | 
			
		||||
    "version": "v4.47.1",
 | 
			
		||||
    "date": "2025-01-05T21:14:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "advplyr/audiobookshelf",
 | 
			
		||||
    "version": "v2.26.0",
 | 
			
		||||
    "date": "2025-07-12T19:31:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jellyfin/jellyfin",
 | 
			
		||||
    "version": "v10.10.7",
 | 
			
		||||
    "date": "2025-04-05T19:14:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.13.0",
 | 
			
		||||
    "date": "2025-07-12T15:52:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "blakeblackshear/frigate",
 | 
			
		||||
    "version": "v0.14.1",
 | 
			
		||||
@@ -264,16 +344,6 @@
 | 
			
		||||
    "version": "v2025-07-12",
 | 
			
		||||
    "date": "2025-07-12T07:53:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fuma-nama/fumadocs",
 | 
			
		||||
    "version": "fumadocs-openapi@9.1.2",
 | 
			
		||||
    "date": "2025-07-12T03:58:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.9.7-rc1",
 | 
			
		||||
    "date": "2025-07-11T22:15:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "eclipse-mosquitto/mosquitto",
 | 
			
		||||
    "version": "v2.0.22",
 | 
			
		||||
@@ -329,21 +399,11 @@
 | 
			
		||||
    "version": "v2.13.0",
 | 
			
		||||
    "date": "2025-07-10T19:27:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "forgejo/forgejo",
 | 
			
		||||
    "version": "v11.0.3",
 | 
			
		||||
    "date": "2025-07-10T13:12:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "crowdsecurity/crowdsec",
 | 
			
		||||
    "version": "v1.6.10",
 | 
			
		||||
    "date": "2025-07-10T12:04:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "meilisearch/meilisearch",
 | 
			
		||||
    "version": "prototype-incremental-vector-store-3",
 | 
			
		||||
    "date": "2025-07-07T10:27:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pocket-id/pocket-id",
 | 
			
		||||
    "version": "v1.6.2",
 | 
			
		||||
@@ -509,16 +569,6 @@
 | 
			
		||||
    "version": "v4.3.0",
 | 
			
		||||
    "date": "2025-07-05T12:14:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "linkwarden/linkwarden",
 | 
			
		||||
    "version": "v2.11.3",
 | 
			
		||||
    "date": "2025-07-05T04:34:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "emqx/emqx",
 | 
			
		||||
    "version": "e6.0.0-M1.202507-alpha.1",
 | 
			
		||||
    "date": "2025-07-04T14:58:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "kimai/kimai",
 | 
			
		||||
    "version": "2.37.0",
 | 
			
		||||
@@ -559,11 +609,6 @@
 | 
			
		||||
    "version": "2.5.1",
 | 
			
		||||
    "date": "2025-07-02T19:38:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "glpi-project/glpi",
 | 
			
		||||
    "version": "10.0.18",
 | 
			
		||||
    "date": "2025-02-12T11:07:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "apache/tomcat",
 | 
			
		||||
    "version": "9.0.107",
 | 
			
		||||
@@ -714,11 +759,6 @@
 | 
			
		||||
    "version": "v2.17.1",
 | 
			
		||||
    "date": "2025-06-19T19:35:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "icereed/paperless-gpt",
 | 
			
		||||
    "version": "v0.21.0",
 | 
			
		||||
    "date": "2025-06-19T11:54:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "prometheus-pve/prometheus-pve-exporter",
 | 
			
		||||
    "version": "v3.5.5",
 | 
			
		||||
@@ -749,11 +789,6 @@
 | 
			
		||||
    "version": "2.0.0-pre3",
 | 
			
		||||
    "date": "2025-06-18T08:01:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "grafana/grafana",
 | 
			
		||||
    "version": "v11.5.6",
 | 
			
		||||
    "date": "2025-06-17T22:00:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "project-zot/zot",
 | 
			
		||||
    "version": "v2.1.5",
 | 
			
		||||
@@ -819,11 +854,6 @@
 | 
			
		||||
    "version": "v0.8.4",
 | 
			
		||||
    "date": "2025-06-10T07:57:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Brandawg93/PeaNUT",
 | 
			
		||||
    "version": "v5.8.0",
 | 
			
		||||
    "date": "2025-06-09T16:08:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ellite/Wallos",
 | 
			
		||||
    "version": "v3.3.0",
 | 
			
		||||
@@ -859,11 +889,6 @@
 | 
			
		||||
    "version": "v0.26.1",
 | 
			
		||||
    "date": "2025-06-06T11:22:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "benjaminjonard/koillection",
 | 
			
		||||
    "version": "1.6.14",
 | 
			
		||||
    "date": "2025-06-05T16:40:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MariaDB/server",
 | 
			
		||||
    "version": "mariadb-11.8.2",
 | 
			
		||||
@@ -889,11 +914,6 @@
 | 
			
		||||
    "version": "1.26.3",
 | 
			
		||||
    "date": "2025-06-02T22:00:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "usememos/memos",
 | 
			
		||||
    "version": "v0.24.4",
 | 
			
		||||
    "date": "2025-06-02T02:49:05Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "release-argus/Argus",
 | 
			
		||||
    "version": "0.26.3",
 | 
			
		||||
@@ -999,11 +1019,6 @@
 | 
			
		||||
    "version": "deluge-2.2.0",
 | 
			
		||||
    "date": "2025-04-28T21:31:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "oauth2-proxy/oauth2-proxy",
 | 
			
		||||
    "version": "v7.9.0",
 | 
			
		||||
    "date": "2025-04-28T16:28:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gotify/server",
 | 
			
		||||
    "version": "v2.6.3",
 | 
			
		||||
@@ -1019,11 +1034,6 @@
 | 
			
		||||
    "version": "v1.4.0",
 | 
			
		||||
    "date": "2025-04-24T16:20:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "NLnetLabs/unbound",
 | 
			
		||||
    "version": "release-1.23.0",
 | 
			
		||||
    "date": "2025-04-24T08:07:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "monicahq/monica",
 | 
			
		||||
    "version": "v4.1.2",
 | 
			
		||||
@@ -1204,11 +1214,6 @@
 | 
			
		||||
    "version": "v7.4.1",
 | 
			
		||||
    "date": "2025-02-15T20:54:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TryGhost/Ghost-CLI",
 | 
			
		||||
    "version": "v1.27.0",
 | 
			
		||||
    "date": "2025-02-13T15:55:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "actualbudget/actual-server",
 | 
			
		||||
    "version": "v25.2.1",
 | 
			
		||||
@@ -1284,11 +1289,6 @@
 | 
			
		||||
    "version": "v0.4.4",
 | 
			
		||||
    "date": "2024-11-05T23:06:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "linuxserver/Heimdall",
 | 
			
		||||
    "version": "v2.6.3",
 | 
			
		||||
    "date": "2024-11-05T11:00:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zerotier/ZeroTierOne",
 | 
			
		||||
    "version": "1.14.2",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										43
									
								
								install/cloudreve-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								install/cloudreve-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
#!/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://cloudreve.org/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_amd64.tar.gz"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/cloudreve.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Cloudreve Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
ExecStart=/opt/cloudreve/cloudreve
 | 
			
		||||
Restart=on-failure
 | 
			
		||||
RestartSec=5
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
systemctl enable -q --now cloudreve
 | 
			
		||||
msg_ok "Service Setup"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -22,7 +22,8 @@ $STD apt-get install -y \
 | 
			
		||||
  chromium/stable \
 | 
			
		||||
  chromium-common/stable \
 | 
			
		||||
  graphicsmagick \
 | 
			
		||||
  ghostscript
 | 
			
		||||
  ghostscript \
 | 
			
		||||
  jq
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Additional Tools"
 | 
			
		||||
@@ -48,18 +49,14 @@ sed -i \
 | 
			
		||||
  /etc/meilisearch.toml
 | 
			
		||||
msg_ok "Installed Meilisearch"
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
$STD npm install -g corepack@0.31.0
 | 
			
		||||
fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
 | 
			
		||||
cd /opt/karakeep
 | 
			
		||||
MODULE_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/karakeep/package.json)"
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
 | 
			
		||||
 | 
			
		||||
msg_info "Installing karakeep"
 | 
			
		||||
cd /opt
 | 
			
		||||
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"
 | 
			
		||||
$STD unzip "v${RELEASE}.zip"
 | 
			
		||||
mv karakeep-"${RELEASE}" /opt/karakeep
 | 
			
		||||
cd /opt/karakeep
 | 
			
		||||
corepack enable
 | 
			
		||||
export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
			
		||||
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD="true"
 | 
			
		||||
export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
export CI="true"
 | 
			
		||||
cd /opt/karakeep/apps/web
 | 
			
		||||
@@ -70,15 +67,13 @@ $STD pnpm install --frozen-lockfile
 | 
			
		||||
cd /opt/karakeep/apps/cli
 | 
			
		||||
$STD pnpm install --frozen-lockfile
 | 
			
		||||
$STD pnpm build
 | 
			
		||||
cd /opt/karakeep/apps/mcp
 | 
			
		||||
$STD pnpm install --frozen-lockfile
 | 
			
		||||
$STD pnpm build
 | 
			
		||||
$STD pnpm store prune
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
SERVER_VERSION="$(cat ~/.karakeep)"
 | 
			
		||||
NEXTAUTH_SECRET="$karakeep_SECRET"
 | 
			
		||||
NEXTAUTH_URL="http://localhost:3000"
 | 
			
		||||
DATA_DIR="$DATA_DIR"
 | 
			
		||||
@@ -112,7 +107,6 @@ BROWSER_WEB_URL="http://127.0.0.1:9222"
 | 
			
		||||
# CRAWLER_VIDEO_DOWNLOAD_MAX_SIZE="50"
 | 
			
		||||
# CRAWLER_ENABLE_ADBLOCKER=true
 | 
			
		||||
EOF
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
msg_ok "Installed karakeep"
 | 
			
		||||
 | 
			
		||||
msg_info "Running Database Migration"
 | 
			
		||||
@@ -190,7 +184,6 @@ customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /tmp/meilisearch.deb
 | 
			
		||||
rm -f /opt/v"${RELEASE}".zip
 | 
			
		||||
$STD apt-get autoremove -y
 | 
			
		||||
$STD apt-get autoclean -y
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://rxresu.me
 | 
			
		||||
# Source: https://rxresume.org
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
@@ -32,19 +32,16 @@ $STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
 | 
			
		||||
msg_ok "Set up Database"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing ${APPLICATION}"
 | 
			
		||||
msg_info "Installing $APPLICATION"
 | 
			
		||||
MINIO_PASS=$(openssl rand -base64 48)
 | 
			
		||||
ACCESS_TOKEN=$(openssl rand -base64 48)
 | 
			
		||||
REFRESH_TOKEN=$(openssl rand -base64 48)
 | 
			
		||||
CHROME_TOKEN=$(openssl rand -hex 32)
 | 
			
		||||
LOCAL_IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/AmruthPillai/Reactive-Resume/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/AmruthPillai/Reactive-Resume/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip
 | 
			
		||||
$STD unzip v${RELEASE}.zip
 | 
			
		||||
mv ${APPLICATION}-${RELEASE}/ /opt/${APPLICATION}
 | 
			
		||||
cd /opt/${APPLICATION}
 | 
			
		||||
corepack enable
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume"
 | 
			
		||||
cd /opt/"$APPLICATION"
 | 
			
		||||
export CI="true"
 | 
			
		||||
export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
			
		||||
export NODE_ENV="production"
 | 
			
		||||
@@ -53,13 +50,13 @@ $STD pnpm install --frozen-lockfile
 | 
			
		||||
$STD pnpm run build
 | 
			
		||||
$STD pnpm install --prod --frozen-lockfile
 | 
			
		||||
$STD pnpm run prisma:generate
 | 
			
		||||
msg_ok "Installed ${APPLICATION}"
 | 
			
		||||
msg_ok "Installed $APPLICATION"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Browserless (Patience)"
 | 
			
		||||
cd /tmp
 | 
			
		||||
curl -fsSL https://github.com/browserless/browserless/archive/refs/tags/v${TAG}.zip -o v${TAG}.zip
 | 
			
		||||
$STD unzip v${TAG}.zip
 | 
			
		||||
mv browserless-${TAG} /opt/browserless
 | 
			
		||||
curl -fsSL https://github.com/browserless/browserless/archive/refs/tags/v"$TAG".zip -o v"$TAG".zip
 | 
			
		||||
$STD unzip v"$TAG".zip
 | 
			
		||||
mv browserless-"$TAG" /opt/browserless
 | 
			
		||||
cd /opt/browserless
 | 
			
		||||
$STD npm install
 | 
			
		||||
rm -rf src/routes/{chrome,edge,firefox,webkit}
 | 
			
		||||
@@ -77,9 +74,10 @@ MINIO_ROOT_PASSWORD="${MINIO_PASS}"
 | 
			
		||||
MINIO_VOLUMES=/opt/minio
 | 
			
		||||
MINIO_OPTS="--address :9000 --console-address 127.0.0.1:9001"
 | 
			
		||||
EOF
 | 
			
		||||
cat <<EOF >/opt/${APPLICATION}/.env
 | 
			
		||||
cat <<EOF >/opt/"$APPLICATION"/.env
 | 
			
		||||
NODE_ENV=production
 | 
			
		||||
PORT=3000
 | 
			
		||||
# for use behind a reverse proxy, use your FQDN for PUBLIC_URL and STORAGE_URL
 | 
			
		||||
PUBLIC_URL=http://${LOCAL_IP}:3000
 | 
			
		||||
STORAGE_URL=http://${LOCAL_IP}:9000/rxresume
 | 
			
		||||
DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}?schema=public
 | 
			
		||||
@@ -116,14 +114,13 @@ HOST=localhost
 | 
			
		||||
PORT=8080
 | 
			
		||||
TOKEN=${CHROME_TOKEN}
 | 
			
		||||
EOF
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
{
 | 
			
		||||
  echo "${APPLICATION} Credentials"
 | 
			
		||||
  echo "Database User: $DB_USER"
 | 
			
		||||
  echo "Database Password: $DB_PASS"
 | 
			
		||||
  echo "Database Name: $DB_NAME"
 | 
			
		||||
  echo "Minio Root Password: ${MINIO_PASS}"
 | 
			
		||||
} >>~/${APPLICATION}.creds
 | 
			
		||||
} >>~/"$APPLICATION".creds
 | 
			
		||||
msg_ok "Configured applications"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Services"
 | 
			
		||||
@@ -136,7 +133,7 @@ WorkingDirectory=/usr/local/bin
 | 
			
		||||
EnvironmentFile=/opt/minio/.env
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
 | 
			
		||||
cat <<EOF >/etc/systemd/system/"$APPLICATION".service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=${APPLICATION} Service
 | 
			
		||||
After=network.target postgresql.service minio.service
 | 
			
		||||
@@ -167,15 +164,14 @@ Restart=unless-stopped
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl daemon-reload
 | 
			
		||||
systemctl enable -q --now minio.service ${APPLICATION}.service browserless.service
 | 
			
		||||
systemctl enable -q --now minio.service "$APPLICATION".service browserless.service
 | 
			
		||||
msg_ok "Created Services"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -f /tmp/v${RELEASE}.zip
 | 
			
		||||
rm -f /tmp/v${TAG}.zip
 | 
			
		||||
rm -f /tmp/v"$TAG".zip
 | 
			
		||||
rm -f /tmp/minio.deb
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
 
 | 
			
		||||
@@ -269,6 +269,7 @@ config_file() {
 | 
			
		||||
    if [ "$NET" == "dhcp" ]; then
 | 
			
		||||
      echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}DHCP${CL}"
 | 
			
		||||
      echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}Default${CL}"
 | 
			
		||||
      GATE=""
 | 
			
		||||
    elif [[ "$NET" =~ $ip_cidr_regex ]]; then
 | 
			
		||||
      echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}"
 | 
			
		||||
      if [ ! -z "$GATE" ]; then
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user