mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			25 Commits
		
	
	
		
			2025-10-30
			...
			7443b9ead3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					7443b9ead3 | ||
| 
						 | 
					6a4909bee3 | ||
| 
						 | 
					84b0acc185 | ||
| 
						 | 
					1e16f20951 | ||
| 
						 | 
					f36c8d525a | ||
| 
						 | 
					dab9200916 | ||
| 
						 | 
					600da80ff4 | ||
| 
						 | 
					8ec5e3e41f | ||
| 
						 | 
					d8618652d9 | ||
| 
						 | 
					dc90d68d3b | ||
| 
						 | 
					9fa2670348 | ||
| 
						 | 
					9a2fc84789 | ||
| 
						 | 
					a48963ff66 | ||
| 
						 | 
					fe0eb73ceb | ||
| 
						 | 
					a7524317fa | ||
| 
						 | 
					c9e6f85a9c | ||
| 
						 | 
					9db82be59c | ||
| 
						 | 
					b715c1ed18 | ||
| 
						 | 
					7f86f98d8d | ||
| 
						 | 
					3397846bc1 | ||
| 
						 | 
					b3a7e9340a | ||
| 
						 | 
					4def83ef00 | ||
| 
						 | 
					630c223b19 | ||
| 
						 | 
					a1c7471e00 | ||
| 
						 | 
					f9a3c8215b | 
							
								
								
									
										33
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -10,8 +10,41 @@
 | 
				
			|||||||
> [!CAUTION]
 | 
					> [!CAUTION]
 | 
				
			||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
 | 
					Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-11-01
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Pangolin ([#8809](https://github.com/community-scripts/ProxmoxVE/pull/8809))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - VictoriaMetrics: Fix release fetching for Victori Logs add-on [@tremor021](https://github.com/tremor021) ([#8807](https://github.com/community-scripts/ProxmoxVE/pull/8807))
 | 
				
			||||||
 | 
					    - Immich: Pin version to 2.2.1 [@vhsdream](https://github.com/vhsdream) ([#8800](https://github.com/community-scripts/ProxmoxVE/pull/8800))
 | 
				
			||||||
 | 
					    - jellyfin: fix: initial update [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8784](https://github.com/community-scripts/ProxmoxVE/pull/8784))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🌐 Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - frontend: chore: bump debian OS [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8798](https://github.com/community-scripts/ProxmoxVE/pull/8798))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 2025-10-31
 | 
					## 2025-10-31
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Reitti: Fix missing data directory [@tremor021](https://github.com/tremor021) ([#8787](https://github.com/community-scripts/ProxmoxVE/pull/8787))
 | 
				
			||||||
 | 
					    - omada: fix update script with mongodb 8 [@MickLesk](https://github.com/MickLesk) ([#8724](https://github.com/community-scripts/ProxmoxVE/pull/8724))
 | 
				
			||||||
 | 
					    - Booklore: Fix port configuration for Nginx [@tremor021](https://github.com/tremor021) ([#8780](https://github.com/community-scripts/ProxmoxVE/pull/8780))
 | 
				
			||||||
 | 
					    - Fix paths in grist.sh [@mrinaldi](https://github.com/mrinaldi) ([#8777](https://github.com/community-scripts/ProxmoxVE/pull/8777))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🌐 Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 📝 Script Information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Removed errant ` from wireguard.json [@AndrewDragonCh](https://github.com/AndrewDragonCh) ([#8791](https://github.com/community-scripts/ProxmoxVE/pull/8791))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 2025-10-30
 | 
					## 2025-10-30
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 🆕 New Scripts
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,13 +36,13 @@ function update_script() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    msg_info "Creating backup"
 | 
					    msg_info "Creating backup"
 | 
				
			||||||
    rm -rf /opt/grist_bak
 | 
					    rm -rf /opt/grist_bak
 | 
				
			||||||
    mv grist grist_bak
 | 
					    mv /opt/grist /opt/grist_bak
 | 
				
			||||||
    msg_ok "Backup created"
 | 
					    msg_ok "Backup created"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
 | 
					    fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating ${APP}"
 | 
					    msg_info "Updating ${APP}"
 | 
				
			||||||
    mkdir -p grist/docs
 | 
					    mkdir -p /opt/grist/docs
 | 
				
			||||||
    cp -n /opt/grist_bak/.env /opt/grist/.env
 | 
					    cp -n /opt/grist_bak/.env /opt/grist/.env
 | 
				
			||||||
    cp -r /opt/grist_bak/docs/* /opt/grist/docs/
 | 
					    cp -r /opt/grist_bak/docs/* /opt/grist/docs/
 | 
				
			||||||
    cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db
 | 
					    cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								ct/headers/pangolin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/pangolin
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ____                          ___     
 | 
				
			||||||
 | 
					   / __ \____ _____  ____ _____  / (_)___ 
 | 
				
			||||||
 | 
					  / /_/ / __ `/ __ \/ __ `/ __ \/ / / __ \
 | 
				
			||||||
 | 
					 / ____/ /_/ / / / / /_/ / /_/ / / / / / /
 | 
				
			||||||
 | 
					/_/    \__,_/_/ /_/\__, /\____/_/_/_/ /_/ 
 | 
				
			||||||
 | 
					                  /____/                  
 | 
				
			||||||
@@ -93,7 +93,7 @@ EOF
 | 
				
			|||||||
    msg_ok "Image-processing libraries up to date"
 | 
					    msg_ok "Image-processing libraries up to date"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE="2.2.0"
 | 
					  RELEASE="2.2.1"
 | 
				
			||||||
  if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
 | 
					  if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
 | 
				
			||||||
    msg_info "Stopping Services"
 | 
					    msg_info "Stopping Services"
 | 
				
			||||||
    systemctl stop immich-web
 | 
					    systemctl stop immich-web
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,7 +30,7 @@ function update_script() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  if ! grep -qEi 'ubuntu' /etc/os-release; then
 | 
					  if ! grep -qEi 'ubuntu' /etc/os-release; then
 | 
				
			||||||
    msg_info "Updating Intel Dependencies"
 | 
					    msg_info "Updating Intel Dependencies"
 | 
				
			||||||
    rm .intel-*
 | 
					    rm -f ~/.intel-* || true
 | 
				
			||||||
    fetch_and_deploy_gh_release "intel-igc-core-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb"
 | 
					    fetch_and_deploy_gh_release "intel-igc-core-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-core-2_*_amd64.deb"
 | 
				
			||||||
    fetch_and_deploy_gh_release "intel-igc-opencl-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb"
 | 
					    fetch_and_deploy_gh_release "intel-igc-opencl-2" "intel/intel-graphics-compiler" "binary" "latest" "" "intel-igc-opencl-2_*_amd64.deb"
 | 
				
			||||||
    fetch_and_deploy_gh_release "intel-libgdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb"
 | 
					    fetch_and_deploy_gh_release "intel-libgdgmm12" "intel/compute-runtime" "binary" "latest" "" "libigdgmm12_*_amd64.deb"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								ct/omada.sh
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								ct/omada.sh
									
									
									
									
									
								
							@@ -29,19 +29,13 @@ function update_script() {
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Updating MongoDB"
 | 
					  msg_info "Updating MongoDB"
 | 
				
			||||||
  MONGODB_VERSION="7.0"
 | 
					  if lscpu | grep -q 'avx'; then
 | 
				
			||||||
  if ! lscpu | grep -q 'avx'; then
 | 
					    MONGO_VERSION="8.0" setup_mongodb
 | 
				
			||||||
    MONGODB_VERSION="4.4"
 | 
					  else
 | 
				
			||||||
    msg_error "No AVX detected: TP-Link Canceled Support for Old MongoDB for Debian 12\n https://www.tp-link.com/baltic/support/faq/4160/"
 | 
					    msg_warn "No AVX detected: Using older MongoDB 4.4"
 | 
				
			||||||
    exit
 | 
					    MONGO_VERSION="4.4" setup_mongodb
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  curl -fsSL "https://www.mongodb.org/static/pgp/server-${MONGODB_VERSION}.asc" | gpg --dearmor >/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
 | 
					 | 
				
			||||||
  echo "deb [signed-by=/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg] http://repo.mongodb.org/apt/debian $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/${MONGODB_VERSION} main" >/etc/apt/sources.list.d/mongodb-org-${MONGODB_VERSION}.list
 | 
					 | 
				
			||||||
  $STD apt update
 | 
					 | 
				
			||||||
  $STD apt install -y --only-upgrade mongodb-org
 | 
					 | 
				
			||||||
  msg_ok "Updated MongoDB to $MONGODB_VERSION"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  msg_info "Checking if right Azul Zulu Java is installed"
 | 
					  msg_info "Checking if right Azul Zulu Java is installed"
 | 
				
			||||||
  java_version=$(java -version 2>&1 | awk -F[\"_] '/version/ {print $2}')
 | 
					  java_version=$(java -version 2>&1 | awk -F[\"_] '/version/ {print $2}')
 | 
				
			||||||
  if [[ "$java_version" =~ ^1\.8\.* ]]; then
 | 
					  if [[ "$java_version" =~ ^1\.8\.* ]]; then
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										83
									
								
								ct/pangolin.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								ct/pangolin.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://pangolin.net/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Pangolin"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-proxy}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-4096}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-5}"
 | 
				
			||||||
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
 | 
					var_version="${var_version:-13}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					var_tun="${var_tun:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					    header_info
 | 
				
			||||||
 | 
					    check_container_storage
 | 
				
			||||||
 | 
					    check_container_resources
 | 
				
			||||||
 | 
					    if [[ ! -d /opt/pangolin ]]; then
 | 
				
			||||||
 | 
					        msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					        exit
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if check_for_gh_release "pangolin" "fosrl/pangolin"; then
 | 
				
			||||||
 | 
					        msg_info "Stopping Service"
 | 
				
			||||||
 | 
					        systemctl stop pangolin
 | 
				
			||||||
 | 
					        msg_info "Service stopped"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        msg_info "Creating backup"
 | 
				
			||||||
 | 
					        tar -czf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin config
 | 
				
			||||||
 | 
					        msg_ok "Created backup"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball"
 | 
				
			||||||
 | 
					        fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        msg_info "Updating Pangolin"
 | 
				
			||||||
 | 
					        export BUILD=oss
 | 
				
			||||||
 | 
					        export DATABASE=sqlite
 | 
				
			||||||
 | 
					        cd /opt/pangolin
 | 
				
			||||||
 | 
					        $STD npm ci
 | 
				
			||||||
 | 
					        echo "export * from \"./$DATABASE\";" > server/db/index.ts
 | 
				
			||||||
 | 
					        echo "export const build = \"$BUILD\" as any;" > server/build.ts
 | 
				
			||||||
 | 
					        cp tsconfig.oss.json tsconfig.json
 | 
				
			||||||
 | 
					        $STD npm run next:build
 | 
				
			||||||
 | 
					        $STD node esbuild.mjs -e server/index.ts -o dist/server.mjs -b $BUILD
 | 
				
			||||||
 | 
					        $STD node esbuild.mjs -e server/setup/migrationsSqlite.ts -o dist/migrations.mjs
 | 
				
			||||||
 | 
					        $STD npm run build:cli
 | 
				
			||||||
 | 
					        cp -R .next/standalone ./
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cat <<EOF >/usr/local/bin/pangctl
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					cd /opt/pangolin
 | 
				
			||||||
 | 
					./dist/cli.mjs "$@"
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					        chmod +x /usr/local/bin/pangctl ./dist/cli.mjs
 | 
				
			||||||
 | 
					        cp server/db/names.json ./dist/names.json
 | 
				
			||||||
 | 
					        msg_ok "Updated Pangolin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        msg_info "Restoring config"
 | 
				
			||||||
 | 
					        tar -xzf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin --overwrite
 | 
				
			||||||
 | 
					        rm -f /opt/pangolin_config_backup.tar.gz
 | 
				
			||||||
 | 
					        msg_ok "Restored config"
 | 
				
			||||||
 | 
					        msg_ok "Updated successfully!"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start
 | 
				
			||||||
 | 
					build_container
 | 
				
			||||||
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3002${CL}"
 | 
				
			||||||
@@ -41,7 +41,7 @@ function update_script() {
 | 
				
			|||||||
    msg_ok "Started Service"
 | 
					    msg_ok "Started Service"
 | 
				
			||||||
    msg_ok "Updated successfully!"
 | 
					    msg_ok "Updated successfully!"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  if check_for_gh_release "photon" "dedicatedcode/reitti"; then
 | 
					  if check_for_gh_release "photon" "komoot/photon"; then
 | 
				
			||||||
    msg_info "Stopping Service"
 | 
					    msg_info "Stopping Service"
 | 
				
			||||||
    systemctl stop photon
 | 
					    systemctl stop photon
 | 
				
			||||||
    msg_ok "Stopped Service"
 | 
					    msg_ok "Stopped Service"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,8 +45,15 @@ function update_script() {
 | 
				
			|||||||
    fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "$vmutils_filename"
 | 
					    fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "$vmutils_filename"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ -f /etc/systemd/system/victoriametrics-logs.service ]]; then
 | 
					    if [[ -f /etc/systemd/system/victoriametrics-logs.service ]]; then
 | 
				
			||||||
      fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
 | 
					      vmlogs_filename=$(curl -fsSL "https://api.github.com/repos/VictoriaMetrics/VictoriaLogs/releases/latest" |
 | 
				
			||||||
      fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
 | 
					        jq -r '.assets[].name' |
 | 
				
			||||||
 | 
					        grep -E '^victoria-logs-linux-amd64-v[0-9.]+\.tar\.gz$')  
 | 
				
			||||||
 | 
					      vlutils_filename=$(curl -fsSL "https://api.github.com/repos/VictoriaMetrics/VictoriaLogs/releases/latest" |
 | 
				
			||||||
 | 
					        jq -r '.assets[].name' |
 | 
				
			||||||
 | 
					        grep -E '^vlutils-linux-amd64-v[0-9.]+\.tar\.gz$')
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					      fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "$vmlogs_filename"
 | 
				
			||||||
 | 
					      fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "$vlutils_filename"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    chmod +x /opt/victoriametrics/*
 | 
					    chmod +x /opt/victoriametrics/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										48
									
								
								frontend/public/json/pangolin.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								frontend/public/json/pangolin.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Pangolin",
 | 
				
			||||||
 | 
					  "slug": "pangolin",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    21
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-11-01",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 3002,
 | 
				
			||||||
 | 
					  "documentation": "https://docs.pangolin.net/",
 | 
				
			||||||
 | 
					  "config_path": "/opt/pangolin/config/config.yml",
 | 
				
			||||||
 | 
					  "website": "https://pangolin.net/",
 | 
				
			||||||
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/pangolin.webp",
 | 
				
			||||||
 | 
					  "description": "Pangolin securely routes traffic over WireGuard tunnels to any private network. It works like a reverse proxy that spans multiple networks — no public IPs, DNS setup, or certificates required.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/pangolin.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 2,
 | 
				
			||||||
 | 
					        "ram": 4096,
 | 
				
			||||||
 | 
					        "hdd": 5,
 | 
				
			||||||
 | 
					        "os": "Debian",
 | 
				
			||||||
 | 
					        "version": "13"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Type `journalctl -u pangolin | grep -oP 'Token:\\s*\\K\\w+'` into LXC console to get admin token which you will use to create admin account.",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "LXC has 4GB of RAM set initially for the build stage. After installation finishes, you can decrease the RAM allocated to 1024MB or 512MB even.",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Make sure you edit `/opt/pangolin/config/config.yml` and change it to match your needs",
 | 
				
			||||||
 | 
					      "type": "warning"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,34 +1,194 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "ollama/ollama",
 | 
					    "name": "inventree/InvenTree",
 | 
				
			||||||
    "version": "v0.12.7",
 | 
					    "version": "1.0.9",
 | 
				
			||||||
    "date": "2025-10-29T18:50:56Z"
 | 
					    "date": "2025-11-01T21:48:35Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "Koenkk/zigbee2mqtt",
 | 
				
			||||||
 | 
					    "version": "2.6.3",
 | 
				
			||||||
 | 
					    "date": "2025-11-01T20:48:39Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "henrygd/beszel",
 | 
				
			||||||
 | 
					    "version": "v0.15.3",
 | 
				
			||||||
 | 
					    "date": "2025-11-01T20:13:33Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "firefly-iii/firefly-iii",
 | 
				
			||||||
 | 
					    "version": "v6.4.4",
 | 
				
			||||||
 | 
					    "date": "2025-11-01T19:48:08Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "Paymenter/Paymenter",
 | 
				
			||||||
 | 
					    "version": "v1.4.1",
 | 
				
			||||||
 | 
					    "date": "2025-11-01T19:38:55Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "BerriAI/litellm",
 | 
					    "name": "BerriAI/litellm",
 | 
				
			||||||
    "version": "v1.79.1.dev1",
 | 
					    "version": "v1.79.1-nightly",
 | 
				
			||||||
    "date": "2025-10-30T22:18:35Z"
 | 
					    "date": "2025-11-01T19:37:32Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "motioneye-project/motioneye",
 | 
				
			||||||
 | 
					    "version": "0.42.1",
 | 
				
			||||||
 | 
					    "date": "2020-06-07T07:27:04Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "chrisbenincasa/tunarr",
 | 
				
			||||||
 | 
					    "version": "v0.23.0-alpha.20",
 | 
				
			||||||
 | 
					    "date": "2025-11-01T11:42:54Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "Luligu/matterbridge",
 | 
				
			||||||
 | 
					    "version": "3.3.6",
 | 
				
			||||||
 | 
					    "date": "2025-11-01T10:41:15Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "fuma-nama/fumadocs",
 | 
				
			||||||
 | 
					    "version": "fumadocs-ui@16.0.7",
 | 
				
			||||||
 | 
					    "date": "2025-11-01T09:43:37Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "Jackett/Jackett",
 | 
				
			||||||
 | 
					    "version": "v0.24.241",
 | 
				
			||||||
 | 
					    "date": "2025-11-01T05:57:29Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "cross-seed/cross-seed",
 | 
				
			||||||
 | 
					    "version": "v6.13.5",
 | 
				
			||||||
 | 
					    "date": "2025-09-27T01:10:59Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "theonedev/onedev",
 | 
				
			||||||
 | 
					    "version": "v13.0.10",
 | 
				
			||||||
 | 
					    "date": "2025-11-01T02:08:01Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "jeedom/core",
 | 
				
			||||||
 | 
					    "version": "4.4.20",
 | 
				
			||||||
 | 
					    "date": "2025-11-01T00:27:06Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "steveiliop56/tinyauth",
 | 
				
			||||||
 | 
					    "version": "v4.0.1",
 | 
				
			||||||
 | 
					    "date": "2025-10-15T16:53:55Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "ollama/ollama",
 | 
				
			||||||
 | 
					    "version": "v0.12.9",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T23:33:13Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "tailscale/tailscale",
 | 
				
			||||||
 | 
					    "version": "v1.90.6",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T22:24:04Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "runtipi/runtipi",
 | 
				
			||||||
 | 
					    "version": "nightly",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T21:55:26Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "evcc-io/evcc",
 | 
				
			||||||
 | 
					    "version": "0.209.6",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T20:13:49Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "homarr-labs/homarr",
 | 
				
			||||||
 | 
					    "version": "v1.43.1",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T19:15:02Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "mealie-recipes/mealie",
 | 
				
			||||||
 | 
					    "version": "v3.4.0",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T18:50:18Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "immich-app/immich",
 | 
				
			||||||
 | 
					    "version": "v2.2.1",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T18:34:59Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "YunoHost/yunohost",
 | 
				
			||||||
 | 
					    "version": "debian/12.1.33",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T12:40:16Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "leiweibau/Pi.Alert",
 | 
				
			||||||
 | 
					    "version": "v2025-10-31",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T17:57:06Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "pommee/goaway",
 | 
				
			||||||
 | 
					    "version": "v0.62.12",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T17:30:55Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "keycloak/keycloak",
 | 
				
			||||||
 | 
					    "version": "26.4.2",
 | 
				
			||||||
 | 
					    "date": "2025-10-23T06:59:32Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "Cleanuparr/Cleanuparr",
 | 
				
			||||||
 | 
					    "version": "v2.4.1",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T15:50:26Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "zitadel/zitadel",
 | 
				
			||||||
 | 
					    "version": "v4.6.2",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T15:41:19Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "bunkerity/bunkerweb",
 | 
				
			||||||
 | 
					    "version": "testing",
 | 
				
			||||||
 | 
					    "date": "2025-10-30T14:33:36Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "wizarrrr/wizarr",
 | 
				
			||||||
 | 
					    "version": "v2025.10.8",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T14:47:28Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "gristlabs/grist-core",
 | 
				
			||||||
 | 
					    "version": "v1.7.5",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T13:42:36Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "plankanban/planka",
 | 
				
			||||||
 | 
					    "version": "planka-1.1.1",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T12:38:47Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "mattermost/mattermost",
 | 
				
			||||||
 | 
					    "version": "mattermost-redux@11.0.4",
 | 
				
			||||||
 | 
					    "date": "2025-10-30T16:44:14Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "chrisvel/tududi",
 | 
				
			||||||
 | 
					    "version": "v0.85.1",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T10:45:26Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "wazuh/wazuh",
 | 
				
			||||||
 | 
					    "version": "coverity-w44-4.14.1",
 | 
				
			||||||
 | 
					    "date": "2025-10-29T11:28:37Z"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "name": "garethgeorge/backrest",
 | 
				
			||||||
 | 
					    "version": "v1.10.1",
 | 
				
			||||||
 | 
					    "date": "2025-10-31T08:25:57Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "getumbrel/umbrel",
 | 
					    "name": "getumbrel/umbrel",
 | 
				
			||||||
    "version": "1.4.2",
 | 
					    "version": "1.4.2",
 | 
				
			||||||
    "date": "2025-05-09T08:54:49Z"
 | 
					    "date": "2025-05-09T08:54:49Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "firefly-iii/firefly-iii",
 | 
					 | 
				
			||||||
    "version": "v6.4.2",
 | 
					 | 
				
			||||||
    "date": "2025-10-07T08:11:58Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "home-assistant/core",
 | 
					    "name": "home-assistant/core",
 | 
				
			||||||
    "version": "2025.10.4",
 | 
					    "version": "2025.10.4",
 | 
				
			||||||
    "date": "2025-10-24T20:03:03Z"
 | 
					    "date": "2025-10-24T20:03:03Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "gristlabs/grist-core",
 | 
					 | 
				
			||||||
    "version": "v1.7.5",
 | 
					 | 
				
			||||||
    "date": "2025-10-30T19:11:58Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "pymedusa/Medusa",
 | 
					    "name": "pymedusa/Medusa",
 | 
				
			||||||
    "version": "v1.0.24",
 | 
					    "version": "v1.0.24",
 | 
				
			||||||
@@ -54,26 +214,11 @@
 | 
				
			|||||||
    "version": "1.0.2",
 | 
					    "version": "1.0.2",
 | 
				
			||||||
    "date": "2025-10-30T18:23:23Z"
 | 
					    "date": "2025-10-30T18:23:23Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "immich-app/immich",
 | 
					 | 
				
			||||||
    "version": "v2.2.0",
 | 
					 | 
				
			||||||
    "date": "2025-10-30T18:02:47Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "tailscale/tailscale",
 | 
					 | 
				
			||||||
    "version": "v1.90.5",
 | 
					 | 
				
			||||||
    "date": "2025-10-30T17:39:20Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "TwiN/gatus",
 | 
					    "name": "TwiN/gatus",
 | 
				
			||||||
    "version": "v5.30.0",
 | 
					    "version": "v5.30.0",
 | 
				
			||||||
    "date": "2025-10-30T16:52:58Z"
 | 
					    "date": "2025-10-30T16:52:58Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "mattermost/mattermost",
 | 
					 | 
				
			||||||
    "version": "mattermost-redux@11.0.4",
 | 
					 | 
				
			||||||
    "date": "2025-10-30T16:44:14Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "OliveTin/OliveTin",
 | 
					    "name": "OliveTin/OliveTin",
 | 
				
			||||||
    "version": "2025.10.30",
 | 
					    "version": "2025.10.30",
 | 
				
			||||||
@@ -89,11 +234,6 @@
 | 
				
			|||||||
    "version": "v0.107.69",
 | 
					    "version": "v0.107.69",
 | 
				
			||||||
    "date": "2025-10-30T15:31:50Z"
 | 
					    "date": "2025-10-30T15:31:50Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "bunkerity/bunkerweb",
 | 
					 | 
				
			||||||
    "version": "v1.6.5",
 | 
					 | 
				
			||||||
    "date": "2025-10-06T15:25:17Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "Lidarr/Lidarr",
 | 
					    "name": "Lidarr/Lidarr",
 | 
				
			||||||
    "version": "v3.0.1.4866",
 | 
					    "version": "v3.0.1.4866",
 | 
				
			||||||
@@ -134,11 +274,6 @@
 | 
				
			|||||||
    "version": "v1.5.3",
 | 
					    "version": "v1.5.3",
 | 
				
			||||||
    "date": "2025-09-20T12:12:33Z"
 | 
					    "date": "2025-09-20T12:12:33Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "Jackett/Jackett",
 | 
					 | 
				
			||||||
    "version": "v0.24.222",
 | 
					 | 
				
			||||||
    "date": "2025-10-30T05:55:32Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "documenso/documenso",
 | 
					    "name": "documenso/documenso",
 | 
				
			||||||
    "version": "v1.13.2",
 | 
					    "version": "v1.13.2",
 | 
				
			||||||
@@ -149,16 +284,6 @@
 | 
				
			|||||||
    "version": "v0.38.2",
 | 
					    "version": "v0.38.2",
 | 
				
			||||||
    "date": "2025-10-30T02:44:09Z"
 | 
					    "date": "2025-10-30T02:44:09Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "jeedom/core",
 | 
					 | 
				
			||||||
    "version": "4.4.20",
 | 
					 | 
				
			||||||
    "date": "2025-10-30T00:27:05Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "steveiliop56/tinyauth",
 | 
					 | 
				
			||||||
    "version": "v4.0.1",
 | 
					 | 
				
			||||||
    "date": "2025-10-15T16:53:55Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "gtsteffaniak/filebrowser",
 | 
					    "name": "gtsteffaniak/filebrowser",
 | 
				
			||||||
    "version": "v1.0.0-beta",
 | 
					    "version": "v1.0.0-beta",
 | 
				
			||||||
@@ -179,26 +304,11 @@
 | 
				
			|||||||
    "version": "jenkins-2.534",
 | 
					    "version": "jenkins-2.534",
 | 
				
			||||||
    "date": "2025-10-29T21:01:24Z"
 | 
					    "date": "2025-10-29T21:01:24Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "chrisvel/tududi",
 | 
					 | 
				
			||||||
    "version": "v0.85",
 | 
					 | 
				
			||||||
    "date": "2025-10-29T20:40:57Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "influxdata/influxdb",
 | 
					    "name": "influxdata/influxdb",
 | 
				
			||||||
    "version": "v2.7.12",
 | 
					    "version": "v2.7.12",
 | 
				
			||||||
    "date": "2025-05-29T17:08:26Z"
 | 
					    "date": "2025-05-29T17:08:26Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "runtipi/runtipi",
 | 
					 | 
				
			||||||
    "version": "nightly",
 | 
					 | 
				
			||||||
    "date": "2025-10-29T19:37:29Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "keycloak/keycloak",
 | 
					 | 
				
			||||||
    "version": "26.4.2",
 | 
					 | 
				
			||||||
    "date": "2025-10-23T06:59:32Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "paperless-ngx/paperless-ngx",
 | 
					    "name": "paperless-ngx/paperless-ngx",
 | 
				
			||||||
    "version": "v2.19.3",
 | 
					    "version": "v2.19.3",
 | 
				
			||||||
@@ -229,21 +339,11 @@
 | 
				
			|||||||
    "version": "2.11.0",
 | 
					    "version": "2.11.0",
 | 
				
			||||||
    "date": "2025-10-29T14:26:23Z"
 | 
					    "date": "2025-10-29T14:26:23Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "zitadel/zitadel",
 | 
					 | 
				
			||||||
    "version": "v4.6.1",
 | 
					 | 
				
			||||||
    "date": "2025-10-29T10:15:50Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "element-hq/synapse",
 | 
					    "name": "element-hq/synapse",
 | 
				
			||||||
    "version": "v1.141.0",
 | 
					    "version": "v1.141.0",
 | 
				
			||||||
    "date": "2025-10-29T11:45:43Z"
 | 
					    "date": "2025-10-29T11:45:43Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "wazuh/wazuh",
 | 
					 | 
				
			||||||
    "version": "coverity-w44-4.14.1",
 | 
					 | 
				
			||||||
    "date": "2025-10-29T11:28:37Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "cockpit-project/cockpit",
 | 
					    "name": "cockpit-project/cockpit",
 | 
				
			||||||
    "version": "350",
 | 
					    "version": "350",
 | 
				
			||||||
@@ -254,31 +354,16 @@
 | 
				
			|||||||
    "version": "v1.14.2",
 | 
					    "version": "v1.14.2",
 | 
				
			||||||
    "date": "2025-10-29T08:37:03Z"
 | 
					    "date": "2025-10-29T08:37:03Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "evcc-io/evcc",
 | 
					 | 
				
			||||||
    "version": "0.209.4",
 | 
					 | 
				
			||||||
    "date": "2025-10-29T08:06:31Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "apache/cassandra",
 | 
					    "name": "apache/cassandra",
 | 
				
			||||||
    "version": "cassandra-5.0.6",
 | 
					    "version": "cassandra-5.0.6",
 | 
				
			||||||
    "date": "2025-10-29T07:40:47Z"
 | 
					    "date": "2025-10-29T07:40:47Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "fuma-nama/fumadocs",
 | 
					 | 
				
			||||||
    "version": "create-fumadocs-app@16.0.7",
 | 
					 | 
				
			||||||
    "date": "2025-10-29T06:44:29Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "SigNoz/signoz",
 | 
					    "name": "SigNoz/signoz",
 | 
				
			||||||
    "version": "v0.99.0",
 | 
					    "version": "v0.99.0",
 | 
				
			||||||
    "date": "2025-10-29T06:32:09Z"
 | 
					    "date": "2025-10-29T06:32:09Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "henrygd/beszel",
 | 
					 | 
				
			||||||
    "version": "v0.15.2",
 | 
					 | 
				
			||||||
    "date": "2025-10-29T05:26:32Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "openobserve/openobserve",
 | 
					    "name": "openobserve/openobserve",
 | 
				
			||||||
    "version": "v0.15.3",
 | 
					    "version": "v0.15.3",
 | 
				
			||||||
@@ -306,8 +391,8 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "javedh-dev/tracktor",
 | 
					    "name": "javedh-dev/tracktor",
 | 
				
			||||||
    "version": "0.4.3",
 | 
					    "version": "0.4.4",
 | 
				
			||||||
    "date": "2025-10-28T17:32:48Z"
 | 
					    "date": "2025-10-28T17:39:14Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "pi-hole/pi-hole",
 | 
					    "name": "pi-hole/pi-hole",
 | 
				
			||||||
@@ -319,11 +404,6 @@
 | 
				
			|||||||
    "version": "2.0.2",
 | 
					    "version": "2.0.2",
 | 
				
			||||||
    "date": "2025-10-28T15:51:35Z"
 | 
					    "date": "2025-10-28T15:51:35Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "chrisbenincasa/tunarr",
 | 
					 | 
				
			||||||
    "version": "v0.22.11",
 | 
					 | 
				
			||||||
    "date": "2025-10-28T15:48:53Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "traefik/traefik",
 | 
					    "name": "traefik/traefik",
 | 
				
			||||||
    "version": "v3.5.4",
 | 
					    "version": "v3.5.4",
 | 
				
			||||||
@@ -344,11 +424,6 @@
 | 
				
			|||||||
    "version": "n8n@1.117.3",
 | 
					    "version": "n8n@1.117.3",
 | 
				
			||||||
    "date": "2025-10-28T12:00:42Z"
 | 
					    "date": "2025-10-28T12:00:42Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "YunoHost/yunohost",
 | 
					 | 
				
			||||||
    "version": "debian/12.1.32.1",
 | 
					 | 
				
			||||||
    "date": "2025-10-28T11:37:10Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "FlareSolverr/FlareSolverr",
 | 
					    "name": "FlareSolverr/FlareSolverr",
 | 
				
			||||||
    "version": "v3.4.3",
 | 
					    "version": "v3.4.3",
 | 
				
			||||||
@@ -409,11 +484,6 @@
 | 
				
			|||||||
    "version": "v1.30.4",
 | 
					    "version": "v1.30.4",
 | 
				
			||||||
    "date": "2025-10-26T17:22:46Z"
 | 
					    "date": "2025-10-26T17:22:46Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "wizarrrr/wizarr",
 | 
					 | 
				
			||||||
    "version": "v2025.10.7",
 | 
					 | 
				
			||||||
    "date": "2025-10-26T15:31:18Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "openhab/openhab-core",
 | 
					    "name": "openhab/openhab-core",
 | 
				
			||||||
    "version": "5.1.0.M2",
 | 
					    "version": "5.1.0.M2",
 | 
				
			||||||
@@ -429,11 +499,6 @@
 | 
				
			|||||||
    "version": "v13.0.2",
 | 
					    "version": "v13.0.2",
 | 
				
			||||||
    "date": "2025-10-26T06:33:05Z"
 | 
					    "date": "2025-10-26T06:33:05Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "cross-seed/cross-seed",
 | 
					 | 
				
			||||||
    "version": "v6.13.5",
 | 
					 | 
				
			||||||
    "date": "2025-09-27T01:10:59Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "Prowlarr/Prowlarr",
 | 
					    "name": "Prowlarr/Prowlarr",
 | 
				
			||||||
    "version": "v2.1.5.5216",
 | 
					    "version": "v2.1.5.5216",
 | 
				
			||||||
@@ -444,11 +509,6 @@
 | 
				
			|||||||
    "version": "v1.19.19",
 | 
					    "version": "v1.19.19",
 | 
				
			||||||
    "date": "2025-10-25T19:39:58Z"
 | 
					    "date": "2025-10-25T19:39:58Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "homarr-labs/homarr",
 | 
					 | 
				
			||||||
    "version": "v1.43.0",
 | 
					 | 
				
			||||||
    "date": "2025-10-24T19:16:05Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "verdaccio/verdaccio",
 | 
					    "name": "verdaccio/verdaccio",
 | 
				
			||||||
    "version": "v6.2.1",
 | 
					    "version": "v6.2.1",
 | 
				
			||||||
@@ -474,16 +534,6 @@
 | 
				
			|||||||
    "version": "prototype-v1.24.0.s3-snapshots-3",
 | 
					    "version": "prototype-v1.24.0.s3-snapshots-3",
 | 
				
			||||||
    "date": "2025-10-24T09:47:47Z"
 | 
					    "date": "2025-10-24T09:47:47Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "Luligu/matterbridge",
 | 
					 | 
				
			||||||
    "version": "3.3.4",
 | 
					 | 
				
			||||||
    "date": "2025-10-24T06:43:49Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "inventree/InvenTree",
 | 
					 | 
				
			||||||
    "version": "1.0.8",
 | 
					 | 
				
			||||||
    "date": "2025-10-24T05:32:09Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "pocketbase/pocketbase",
 | 
					    "name": "pocketbase/pocketbase",
 | 
				
			||||||
    "version": "v0.31.0",
 | 
					    "version": "v0.31.0",
 | 
				
			||||||
@@ -494,11 +544,6 @@
 | 
				
			|||||||
    "version": "2025.10.3",
 | 
					    "version": "2025.10.3",
 | 
				
			||||||
    "date": "2025-10-24T01:08:22Z"
 | 
					    "date": "2025-10-24T01:08:22Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "Cleanuparr/Cleanuparr",
 | 
					 | 
				
			||||||
    "version": "v2.4.0",
 | 
					 | 
				
			||||||
    "date": "2025-10-23T21:12:48Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "drakkan/sftpgo",
 | 
					    "name": "drakkan/sftpgo",
 | 
				
			||||||
    "version": "v2.7.0",
 | 
					    "version": "v2.7.0",
 | 
				
			||||||
@@ -614,11 +659,6 @@
 | 
				
			|||||||
    "version": "v4.5.0",
 | 
					    "version": "v4.5.0",
 | 
				
			||||||
    "date": "2025-10-18T22:00:50Z"
 | 
					    "date": "2025-10-18T22:00:50Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "leiweibau/Pi.Alert",
 | 
					 | 
				
			||||||
    "version": "v2025-10-18",
 | 
					 | 
				
			||||||
    "date": "2025-10-18T20:35:54Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "project-zot/zot",
 | 
					    "name": "project-zot/zot",
 | 
				
			||||||
    "version": "v2.1.10",
 | 
					    "version": "v2.1.10",
 | 
				
			||||||
@@ -639,11 +679,6 @@
 | 
				
			|||||||
    "version": "0.20.4",
 | 
					    "version": "0.20.4",
 | 
				
			||||||
    "date": "2025-10-18T10:00:42Z"
 | 
					    "date": "2025-10-18T10:00:42Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "theonedev/onedev",
 | 
					 | 
				
			||||||
    "version": "v13.0.9",
 | 
					 | 
				
			||||||
    "date": "2025-10-18T09:59:25Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "grokability/snipe-it",
 | 
					    "name": "grokability/snipe-it",
 | 
				
			||||||
    "version": "v8.3.4",
 | 
					    "version": "v8.3.4",
 | 
				
			||||||
@@ -724,11 +759,6 @@
 | 
				
			|||||||
    "version": "v4.5.5",
 | 
					    "version": "v4.5.5",
 | 
				
			||||||
    "date": "2025-10-14T18:48:36Z"
 | 
					    "date": "2025-10-14T18:48:36Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "plankanban/planka",
 | 
					 | 
				
			||||||
    "version": "planka-1.1.0",
 | 
					 | 
				
			||||||
    "date": "2025-10-14T16:51:22Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "home-assistant/operating-system",
 | 
					    "name": "home-assistant/operating-system",
 | 
				
			||||||
    "version": "16.2",
 | 
					    "version": "16.2",
 | 
				
			||||||
@@ -789,11 +819,6 @@
 | 
				
			|||||||
    "version": "10.1.48",
 | 
					    "version": "10.1.48",
 | 
				
			||||||
    "date": "2025-10-10T14:46:53Z"
 | 
					    "date": "2025-10-10T14:46:53Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "mealie-recipes/mealie",
 | 
					 | 
				
			||||||
    "version": "v3.3.2",
 | 
					 | 
				
			||||||
    "date": "2025-10-10T03:45:06Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "projectsend/projectsend",
 | 
					    "name": "projectsend/projectsend",
 | 
				
			||||||
    "version": "r1945",
 | 
					    "version": "r1945",
 | 
				
			||||||
@@ -874,11 +899,6 @@
 | 
				
			|||||||
    "version": "v25.07.3",
 | 
					    "version": "v25.07.3",
 | 
				
			||||||
    "date": "2025-10-05T14:47:20Z"
 | 
					    "date": "2025-10-05T14:47:20Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "pommee/goaway",
 | 
					 | 
				
			||||||
    "version": "v0.62.11",
 | 
					 | 
				
			||||||
    "date": "2025-10-05T07:31:57Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "webmin/webmin",
 | 
					    "name": "webmin/webmin",
 | 
				
			||||||
    "version": "2.520",
 | 
					    "version": "2.520",
 | 
				
			||||||
@@ -889,11 +909,6 @@
 | 
				
			|||||||
    "version": "v25.10.0",
 | 
					    "version": "v25.10.0",
 | 
				
			||||||
    "date": "2025-10-02T11:34:39Z"
 | 
					    "date": "2025-10-02T11:34:39Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "Koenkk/zigbee2mqtt",
 | 
					 | 
				
			||||||
    "version": "2.6.2",
 | 
					 | 
				
			||||||
    "date": "2025-10-01T17:51:09Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "Kozea/Radicale",
 | 
					    "name": "Kozea/Radicale",
 | 
				
			||||||
    "version": "v3.5.7.pypi",
 | 
					    "version": "v3.5.7.pypi",
 | 
				
			||||||
@@ -1019,11 +1034,6 @@
 | 
				
			|||||||
    "version": "v2.4.0p12",
 | 
					    "version": "v2.4.0p12",
 | 
				
			||||||
    "date": "2025-09-16T12:53:03Z"
 | 
					    "date": "2025-09-16T12:53:03Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "Paymenter/Paymenter",
 | 
					 | 
				
			||||||
    "version": "v1.3.4",
 | 
					 | 
				
			||||||
    "date": "2025-09-15T20:48:02Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "apache/tika",
 | 
					    "name": "apache/tika",
 | 
				
			||||||
    "version": "3.2.0",
 | 
					    "version": "3.2.0",
 | 
				
			||||||
@@ -1099,11 +1109,6 @@
 | 
				
			|||||||
    "version": "1.7.0",
 | 
					    "version": "1.7.0",
 | 
				
			||||||
    "date": "2025-08-28T18:10:59Z"
 | 
					    "date": "2025-08-28T18:10:59Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "garethgeorge/backrest",
 | 
					 | 
				
			||||||
    "version": "v1.9.2",
 | 
					 | 
				
			||||||
    "date": "2025-08-28T07:06:14Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "plexguide/Huntarr.io",
 | 
					    "name": "plexguide/Huntarr.io",
 | 
				
			||||||
    "version": "8.2.10",
 | 
					    "version": "8.2.10",
 | 
				
			||||||
@@ -1319,11 +1324,6 @@
 | 
				
			|||||||
    "version": "v0.0.8",
 | 
					    "version": "v0.0.8",
 | 
				
			||||||
    "date": "2025-05-18T11:37:31Z"
 | 
					    "date": "2025-05-18T11:37:31Z"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    "name": "motioneye-project/motioneye",
 | 
					 | 
				
			||||||
    "version": "0.42.1",
 | 
					 | 
				
			||||||
    "date": "2020-06-07T07:27:04Z"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "name": "stackblitz-labs/bolt.diy",
 | 
					    "name": "stackblitz-labs/bolt.diy",
 | 
				
			||||||
    "version": "1.0.0",
 | 
					    "version": "1.0.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,7 @@
 | 
				
			|||||||
      "type": "info"
 | 
					      "type": "info"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "text": "WGDashboard installation is optional.`",
 | 
					      "text": "WGDashboard installation is optional.",
 | 
				
			||||||
      "type": "info"
 | 
					      "type": "info"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,8 +58,8 @@ export const OperatingSystems: OperatingSystem[] = [
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
    name: "Debian",
 | 
					    name: "Debian",
 | 
				
			||||||
    versions: [
 | 
					    versions: [
 | 
				
			||||||
      { name: "11", slug: "bullseye" },
 | 
					 | 
				
			||||||
      { name: "12", slug: "bookworm" },
 | 
					      { name: "12", slug: "bookworm" },
 | 
				
			||||||
 | 
					      { name: "13", slug: "trixie" },
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,7 +77,8 @@ msg_info "Configure Nginx"
 | 
				
			|||||||
rm -rf /usr/share/nginx/html
 | 
					rm -rf /usr/share/nginx/html
 | 
				
			||||||
ln -s /opt/booklore/booklore-ui/dist/booklore/browser /usr/share/nginx/html
 | 
					ln -s /opt/booklore/booklore-ui/dist/booklore/browser /usr/share/nginx/html
 | 
				
			||||||
cp /opt/booklore/nginx.conf /etc/nginx/nginx.conf
 | 
					cp /opt/booklore/nginx.conf /etc/nginx/nginx.conf
 | 
				
			||||||
sed -i "s/listen \${BOOKLORE_PORT};/listen 6060;/" /etc/nginx/nginx.conf
 | 
					sed -i 's/listen \${BOOKLORE_PORT};/listen 6060;/' /etc/nginx/nginx.conf
 | 
				
			||||||
 | 
					sed -i 's/listen \[::\]:${BOOKLORE_PORT};/listen [::]:6060;/' /etc/nginx/nginx.conf
 | 
				
			||||||
systemctl restart nginx
 | 
					systemctl restart nginx
 | 
				
			||||||
msg_ok "Configured Nginx"
 | 
					msg_ok "Configured Nginx"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -288,7 +288,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
 | 
				
			|||||||
mkdir -p "$INSTALL_DIR"
 | 
					mkdir -p "$INSTALL_DIR"
 | 
				
			||||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
 | 
					mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v2.2.0" "$SRC_DIR"
 | 
					fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v2.2.1" "$SRC_DIR"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Installing ${APPLICATION} (patience)"
 | 
					msg_info "Installing ${APPLICATION} (patience)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										137
									
								
								install/pangolin-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								install/pangolin-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,137 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://pangolin.net/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					verb_ip6
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					setting_up_container
 | 
				
			||||||
 | 
					network_check
 | 
				
			||||||
 | 
					update_os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing Dependencies"
 | 
				
			||||||
 | 
					$STD apt install -y \
 | 
				
			||||||
 | 
					  sqlite3 \
 | 
				
			||||||
 | 
					  iptables
 | 
				
			||||||
 | 
					msg_ok "Installed Dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NODE_VERSION="22" setup_nodejs
 | 
				
			||||||
 | 
					fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball"
 | 
				
			||||||
 | 
					fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Setup Pangolin"
 | 
				
			||||||
 | 
					IP_ADDR=$(hostname -I | awk '{print $1}')
 | 
				
			||||||
 | 
					SECRET_KEY=$(openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32)
 | 
				
			||||||
 | 
					export BUILD=oss
 | 
				
			||||||
 | 
					export DATABASE=sqlite
 | 
				
			||||||
 | 
					cd /opt/pangolin
 | 
				
			||||||
 | 
					$STD npm ci
 | 
				
			||||||
 | 
					echo "export * from \"./$DATABASE\";" > server/db/index.ts
 | 
				
			||||||
 | 
					echo "export const build = \"$BUILD\" as any;" > server/build.ts
 | 
				
			||||||
 | 
					cp tsconfig.oss.json tsconfig.json
 | 
				
			||||||
 | 
					mkdir -p dist
 | 
				
			||||||
 | 
					$STD npm run next:build
 | 
				
			||||||
 | 
					$STD node esbuild.mjs -e server/index.ts -o dist/server.mjs -b $BUILD
 | 
				
			||||||
 | 
					$STD node esbuild.mjs -e server/setup/migrationsSqlite.ts -o dist/migrations.mjs
 | 
				
			||||||
 | 
					$STD npm run build:cli
 | 
				
			||||||
 | 
					cp -R .next/standalone ./
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat <<EOF >/usr/local/bin/pangctl
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					cd /opt/pangolin
 | 
				
			||||||
 | 
					./dist/cli.mjs "$@"
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					chmod +x /usr/local/bin/pangctl ./dist/cli.mjs
 | 
				
			||||||
 | 
					cp server/db/names.json ./dist/names.json
 | 
				
			||||||
 | 
					mkdir -p /var/config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat <<EOF >/opt/pangolin/config/config.yml
 | 
				
			||||||
 | 
					app:
 | 
				
			||||||
 | 
					  dashboard_url: http://$IP_ADDR:3002
 | 
				
			||||||
 | 
					  log_level: debug
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					domains:
 | 
				
			||||||
 | 
					  domain1:
 | 
				
			||||||
 | 
					    base_domain: example.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					server:
 | 
				
			||||||
 | 
					  secret: $SECRET_KEY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gerbil:
 | 
				
			||||||
 | 
					  base_endpoint: example.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					orgs:
 | 
				
			||||||
 | 
					  block_size: 24
 | 
				
			||||||
 | 
					  subnet_group: 100.90.137.0/20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					flags:
 | 
				
			||||||
 | 
					  require_email_verification: false
 | 
				
			||||||
 | 
					  disable_signup_without_invite: true
 | 
				
			||||||
 | 
					  disable_user_create_org: true
 | 
				
			||||||
 | 
					  allow_raw_resources: true
 | 
				
			||||||
 | 
					  enable_integration_api: true
 | 
				
			||||||
 | 
					  enable_clients: true
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					$STD npm run db:sqlite:generate
 | 
				
			||||||
 | 
					$STD npm run db:sqlite:push
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					. /etc/os-release
 | 
				
			||||||
 | 
					if [ "$VERSION_CODENAME" = "trixie" ]; then
 | 
				
			||||||
 | 
					  echo "net.ipv4.ip_forward=1" >>/etc/sysctl.d/sysctl.conf
 | 
				
			||||||
 | 
					  $STD sysctl -p /etc/sysctl.d/sysctl.conf
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf
 | 
				
			||||||
 | 
					  $STD sysctl -p /etc/sysctl.conf
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					msg_ok "Setup Pangolin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Creating Services"
 | 
				
			||||||
 | 
					cat <<EOF >/etc/systemd/system/pangolin.service
 | 
				
			||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Pangolin Service
 | 
				
			||||||
 | 
					After=network.target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					Type=simple
 | 
				
			||||||
 | 
					User=root
 | 
				
			||||||
 | 
					WorkingDirectory=/opt/pangolin
 | 
				
			||||||
 | 
					ExecStart=/usr/bin/npm start
 | 
				
			||||||
 | 
					Restart=always
 | 
				
			||||||
 | 
					RestartSec=10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					systemctl enable -q --now pangolin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat <<EOF >/etc/systemd/system/gerbil.service
 | 
				
			||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Gerbil Service
 | 
				
			||||||
 | 
					After=network.target
 | 
				
			||||||
 | 
					Requires=pangolin.service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					Type=simple
 | 
				
			||||||
 | 
					User=root
 | 
				
			||||||
 | 
					ExecStart=/usr/bin/gerbil --reachableAt=http://$IP_ADDR:3004 --generateAndSaveKeyTo=/var/config/key --remoteConfig=http://$IP_ADDR:3001/api/v1/
 | 
				
			||||||
 | 
					Restart=always
 | 
				
			||||||
 | 
					RestartSec=10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					systemctl enable -q --now gerbil
 | 
				
			||||||
 | 
					msg_ok "Created Services"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					motd_ssh
 | 
				
			||||||
 | 
					customize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Cleaning up"
 | 
				
			||||||
 | 
					$STD apt -y autoremove
 | 
				
			||||||
 | 
					$STD apt -y autoclean
 | 
				
			||||||
 | 
					$STD apt -y clean
 | 
				
			||||||
 | 
					msg_ok "Cleaned"
 | 
				
			||||||
@@ -65,6 +65,7 @@ USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon
 | 
				
			|||||||
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
 | 
					mv /opt/photon/photon-*.jar /opt/photon/photon.jar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Creating Reitti Configuration-File"
 | 
					msg_info "Creating Reitti Configuration-File"
 | 
				
			||||||
 | 
					mkdir -p /opt/reitti/data
 | 
				
			||||||
cat <<EOF >/opt/reitti/application.properties
 | 
					cat <<EOF >/opt/reitti/application.properties
 | 
				
			||||||
# Reitti Server Base URI
 | 
					# Reitti Server Base URI
 | 
				
			||||||
reitti.server.advertise-uri=http://127.0.0.1:8080
 | 
					reitti.server.advertise-uri=http://127.0.0.1:8080
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,8 +28,14 @@ fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuil
 | 
				
			|||||||
read -r -p "${TAB3}Would you like to add VictoriaLogs? <y/N> " prompt
 | 
					read -r -p "${TAB3}Would you like to add VictoriaLogs? <y/N> " prompt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
					if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
				
			||||||
  fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
 | 
					  vmlogs_filename=$(curl -fsSL "https://api.github.com/repos/VictoriaMetrics/VictoriaLogs/releases/latest" |
 | 
				
			||||||
  fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
 | 
					    jq -r '.assets[].name' |
 | 
				
			||||||
 | 
					    grep -E '^victoria-logs-linux-amd64-v[0-9.]+\.tar\.gz$')  
 | 
				
			||||||
 | 
					  vlutils_filename=$(curl -fsSL "https://api.github.com/repos/VictoriaMetrics/VictoriaLogs/releases/latest" |
 | 
				
			||||||
 | 
					    jq -r '.assets[].name' |
 | 
				
			||||||
 | 
					    grep -E '^vlutils-linux-amd64-v[0-9.]+\.tar\.gz$')
 | 
				
			||||||
 | 
					  fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "$vmlogs_filename"
 | 
				
			||||||
 | 
					  fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "$vlutils_filename"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Setup VictoriaMetrics"
 | 
					msg_info "Setup VictoriaMetrics"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user