mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			107 Commits
		
	
	
		
			2025-05-26
			...
			2025-05-31
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					fc780646d2 | ||
| 
						 | 
					5f175b4f7b | ||
| 
						 | 
					afaeadd77e | ||
| 
						 | 
					72c7abeb69 | ||
| 
						 | 
					12723c33d0 | ||
| 
						 | 
					7af6bf3fe7 | ||
| 
						 | 
					e56436d3f2 | ||
| 
						 | 
					25de119cad | ||
| 
						 | 
					c8308da95e | ||
| 
						 | 
					9923094a54 | ||
| 
						 | 
					463cc62443 | ||
| 
						 | 
					92227fb9bf | ||
| 
						 | 
					18a9c524ae | ||
| 
						 | 
					d925ae0f04 | ||
| 
						 | 
					cb0d0bd83e | ||
| 
						 | 
					9fcfb2fe49 | ||
| 
						 | 
					d23aa3fda0 | ||
| 
						 | 
					131f83505c | ||
| 
						 | 
					5a95a745ff | ||
| 
						 | 
					809bc6c302 | ||
| 
						 | 
					4fba20d80b | ||
| 
						 | 
					42a7614d15 | ||
| 
						 | 
					2dd7ebda2c | ||
| 
						 | 
					e388ce82a1 | ||
| 
						 | 
					ac902f2098 | ||
| 
						 | 
					a23b83dfc5 | ||
| 
						 | 
					85975fbe15 | ||
| 
						 | 
					23e33c5cb6 | ||
| 
						 | 
					e39e5d5b7d | ||
| 
						 | 
					1619d6a093 | ||
| 
						 | 
					f23b688d55 | ||
| 
						 | 
					b6319b5dd3 | ||
| 
						 | 
					030e6344d2 | ||
| 
						 | 
					85837d8099 | ||
| 
						 | 
					5295ed8cf2 | ||
| 
						 | 
					85ae0e2f74 | ||
| 
						 | 
					b406921c1a | ||
| 
						 | 
					5a16b5995d | ||
| 
						 | 
					fd637c8819 | ||
| 
						 | 
					6d40ca9cd6 | ||
| 
						 | 
					48979104d7 | ||
| 
						 | 
					964950c82c | ||
| 
						 | 
					0677af31c4 | ||
| 
						 | 
					4495ffee6a | ||
| 
						 | 
					6745dad963 | ||
| 
						 | 
					e9470ab1af | ||
| 
						 | 
					5abcb47051 | ||
| 
						 | 
					709a899f8f | ||
| 
						 | 
					b9ff7513a4 | ||
| 
						 | 
					7a963a76b7 | ||
| 
						 | 
					13506d92fb | ||
| 
						 | 
					36f859c062 | ||
| 
						 | 
					adc8225ed2 | ||
| 
						 | 
					640dca8d8b | ||
| 
						 | 
					3b0713b812 | ||
| 
						 | 
					d20165f25c | ||
| 
						 | 
					c79d05ca5f | ||
| 
						 | 
					f0dd1c264d | ||
| 
						 | 
					951782d8f2 | ||
| 
						 | 
					5e8ee6baa8 | ||
| 
						 | 
					7bb9fb09ba | ||
| 
						 | 
					eb04327aa9 | ||
| 
						 | 
					ce39e7c87e | ||
| 
						 | 
					0e75a57582 | ||
| 
						 | 
					8765b7ac1d | ||
| 
						 | 
					56e316b849 | ||
| 
						 | 
					79a5624905 | ||
| 
						 | 
					a4dee03140 | ||
| 
						 | 
					8787ef57b5 | ||
| 
						 | 
					86674ef376 | ||
| 
						 | 
					1e195cac1e | ||
| 
						 | 
					8e8e09668b | ||
| 
						 | 
					6ef1c99f65 | ||
| 
						 | 
					e2a8b8b799 | ||
| 
						 | 
					c356f77efe | ||
| 
						 | 
					dcfe80e069 | ||
| 
						 | 
					010928fee2 | ||
| 
						 | 
					aed2c0e5bf | ||
| 
						 | 
					9e2d66266a | ||
| 
						 | 
					da406b5ce8 | ||
| 
						 | 
					a7bf2679de | ||
| 
						 | 
					7079f428ca | ||
| 
						 | 
					121bd8e557 | ||
| 
						 | 
					d9c4ff9867 | ||
| 
						 | 
					7db94ad73a | ||
| 
						 | 
					56c2682601 | ||
| 
						 | 
					11a7c2e410 | ||
| 
						 | 
					ed9d8e995d | ||
| 
						 | 
					3b67e8dcc1 | ||
| 
						 | 
					f09e57c200 | ||
| 
						 | 
					72c24d5147 | ||
| 
						 | 
					93a179c201 | ||
| 
						 | 
					ac2f0e66ae | ||
| 
						 | 
					5ccf8a7cd6 | ||
| 
						 | 
					db82285b95 | ||
| 
						 | 
					58586cbfc8 | ||
| 
						 | 
					8708980786 | ||
| 
						 | 
					943fa7b7aa | ||
| 
						 | 
					5085547f39 | ||
| 
						 | 
					5685e7e088 | ||
| 
						 | 
					72db97b226 | ||
| 
						 | 
					e6805db9f5 | ||
| 
						 | 
					97073be5e2 | ||
| 
						 | 
					82228189a7 | ||
| 
						 | 
					53bdedfc08 | ||
| 
						 | 
					92ff5a9881 | ||
| 
						 | 
					0bb4509cd7 | 
							
								
								
									
										116
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										116
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -14,8 +14,124 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
 | 
			
		||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 2025-06-01
 | 
			
		||||
 | 
			
		||||
## 2025-05-31
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Silverbullet: Fix Installation (wrong path) [@MickLesk](https://github.com/MickLesk) ([#4873](https://github.com/community-scripts/ProxmoxVE/pull/4873))
 | 
			
		||||
    - ActualBudget: fix update check (file instead of folder check) [@MickLesk](https://github.com/MickLesk) ([#4874](https://github.com/community-scripts/ProxmoxVE/pull/4874))
 | 
			
		||||
    - Omada Controller: Fix libssl url [@tremor021](https://github.com/tremor021) ([#4868](https://github.com/community-scripts/ProxmoxVE/pull/4868))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Revert "Update package dependencies in package.json and package-lock.json (#4845) [@BramSuurdje](https://github.com/BramSuurdje) ([#4869](https://github.com/community-scripts/ProxmoxVE/pull/4869))
 | 
			
		||||
 | 
			
		||||
### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
  - Remove Authentik script [@tremor021](https://github.com/tremor021) ([#4867](https://github.com/community-scripts/ProxmoxVE/pull/4867))
 | 
			
		||||
 | 
			
		||||
## 2025-05-30
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - slskd: add space in sed command [@vhsdream](https://github.com/vhsdream) ([#4853](https://github.com/community-scripts/ProxmoxVE/pull/4853))
 | 
			
		||||
    - Alpine Traefik: Fix working directory and plugins [@tremor021](https://github.com/tremor021) ([#4838](https://github.com/community-scripts/ProxmoxVE/pull/4838))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Update package dependencies in package.json and package-lock.json [@enough-jainil](https://github.com/enough-jainil) ([#4845](https://github.com/community-scripts/ProxmoxVE/pull/4845))
 | 
			
		||||
 | 
			
		||||
## 2025-05-29
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - SearXNG fix limiter [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4834](https://github.com/community-scripts/ProxmoxVE/pull/4834))
 | 
			
		||||
    - Docmost: add jq before nodejs install [@MickLesk](https://github.com/MickLesk) ([#4831](https://github.com/community-scripts/ProxmoxVE/pull/4831))
 | 
			
		||||
    - Alpine Traefik: Fix Dashboard not beign accessible [@tremor021](https://github.com/tremor021) ([#4828](https://github.com/community-scripts/ProxmoxVE/pull/4828))
 | 
			
		||||
    - MySQL: Fix Wrong Command [@MickLesk](https://github.com/MickLesk) ([#4820](https://github.com/community-scripts/ProxmoxVE/pull/4820))
 | 
			
		||||
    - docs: fix casing of OpenWrt [@GoetzGoerisch](https://github.com/GoetzGoerisch) ([#4805](https://github.com/community-scripts/ProxmoxVE/pull/4805))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Docker-VM: set individual Hostname / Disk-Space formatting [@MickLesk](https://github.com/MickLesk) ([#4821](https://github.com/community-scripts/ProxmoxVE/pull/4821))
 | 
			
		||||
 | 
			
		||||
## 2025-05-28
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Umbrel-OS [@MickLesk](https://github.com/MickLesk) ([#4788](https://github.com/community-scripts/ProxmoxVE/pull/4788))
 | 
			
		||||
- oauth2-proxy ([#4784](https://github.com/community-scripts/ProxmoxVE/pull/4784))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Habitica: Use Node20 [@MickLesk](https://github.com/MickLesk) ([#4796](https://github.com/community-scripts/ProxmoxVE/pull/4796))
 | 
			
		||||
    - Alpine-Node-RED: add service to rc [@MickLesk](https://github.com/MickLesk) ([#4783](https://github.com/community-scripts/ProxmoxVE/pull/4783))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Pulse: use prebuild tarball file / remove unneeded npm actions [@MickLesk](https://github.com/MickLesk) ([#4776](https://github.com/community-scripts/ProxmoxVE/pull/4776))
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - Refactor: Linkwarden + OS Upgrade [@MickLesk](https://github.com/MickLesk) ([#4756](https://github.com/community-scripts/ProxmoxVE/pull/4756))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - refactor: use binary and randomize credentials in tinyauth [@steveiliop56](https://github.com/steveiliop56) ([#4632](https://github.com/community-scripts/ProxmoxVE/pull/4632))
 | 
			
		||||
    - MariaDB CLI Update, Go Install Helper & Minor Cleanup [@MickLesk](https://github.com/MickLesk) ([#4793](https://github.com/community-scripts/ProxmoxVE/pull/4793))
 | 
			
		||||
    - Refactor: Remove redundant dependencies & unify unzip usage [@MickLesk](https://github.com/MickLesk) ([#4780](https://github.com/community-scripts/ProxmoxVE/pull/4780))
 | 
			
		||||
    - Refactor: Remove gpg / gnupg from script base [@MickLesk](https://github.com/MickLesk) ([#4775](https://github.com/community-scripts/ProxmoxVE/pull/4775))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - pulse: correct url in note [@xb00tt](https://github.com/xb00tt) ([#4809](https://github.com/community-scripts/ProxmoxVE/pull/4809))
 | 
			
		||||
 | 
			
		||||
## 2025-05-27
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Backrest ([#4766](https://github.com/community-scripts/ProxmoxVE/pull/4766))
 | 
			
		||||
- Pulse ([#4728](https://github.com/community-scripts/ProxmoxVE/pull/4728))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Alpine-Vaultwarden: Increase min disk requirements to 1GB [@neyzm](https://github.com/neyzm) ([#4764](https://github.com/community-scripts/ProxmoxVE/pull/4764))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - lldap: fix update-check [@MickLesk](https://github.com/MickLesk) ([#4742](https://github.com/community-scripts/ProxmoxVE/pull/4742))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Big NodeJS Update: Use Helper Function on all Install-Scripts [@MickLesk](https://github.com/MickLesk) ([#4744](https://github.com/community-scripts/ProxmoxVE/pull/4744))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - merge MariaDB to tools.func Installer [@MickLesk](https://github.com/MickLesk) ([#4753](https://github.com/community-scripts/ProxmoxVE/pull/4753))
 | 
			
		||||
    - merge PostgreSQL to tools.func Installer [@MickLesk](https://github.com/MickLesk) ([#4752](https://github.com/community-scripts/ProxmoxVE/pull/4752))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Increase default RAM allocation for BunkerWeb to 8192MB [@TheophileDiot](https://github.com/TheophileDiot) ([#4762](https://github.com/community-scripts/ProxmoxVE/pull/4762))
 | 
			
		||||
 | 
			
		||||
## 2025-05-26
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										144
									
								
								ct/2fauth.sh
									
									
									
									
									
								
							
							
						
						
									
										144
									
								
								ct/2fauth.sh
									
									
									
									
									
								
							@@ -20,79 +20,79 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
    # Check if installation is present | -f for file, -d for folder
 | 
			
		||||
    if [[ ! -d "/opt/2fauth" ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Crawling the new version and checking whether an update is required
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/2fauth_version.txt)" ]] || [[ ! -f /opt/2fauth_version.txt ]]; then
 | 
			
		||||
        msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        $STD apt-get update
 | 
			
		||||
        $STD apt-get -y upgrade
 | 
			
		||||
 | 
			
		||||
        # Creating Backup
 | 
			
		||||
        msg_info "Creating Backup"
 | 
			
		||||
        mv "/opt/2fauth" "/opt/2fauth-backup"
 | 
			
		||||
        if ! dpkg -l | grep -q 'php8.3'; then
 | 
			
		||||
            cp /etc/nginx/conf.d/2fauth.conf /etc/nginx/conf.d/2fauth.conf.bak
 | 
			
		||||
        fi
 | 
			
		||||
        msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
        # Upgrade PHP
 | 
			
		||||
        if ! dpkg -l | grep -q 'php8.3'; then
 | 
			
		||||
            $STD apt-get install -y \
 | 
			
		||||
                lsb-release \
 | 
			
		||||
                gpg
 | 
			
		||||
            curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/deb.sury.org-php.gpg
 | 
			
		||||
            echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
 | 
			
		||||
            $STD apt-get update
 | 
			
		||||
            $STD apt-get install -y php8.3-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli,intl}
 | 
			
		||||
            sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        # Execute Update
 | 
			
		||||
        curl -fsSL -o "${RELEASE}.zip" "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip"
 | 
			
		||||
        unzip -q "${RELEASE}.zip"
 | 
			
		||||
        mv "2FAuth-${RELEASE//v/}/" "/opt/2fauth"
 | 
			
		||||
        mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
 | 
			
		||||
        mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
 | 
			
		||||
        cd "/opt/2fauth" || return
 | 
			
		||||
 | 
			
		||||
        chown -R www-data: "/opt/2fauth"
 | 
			
		||||
        chmod -R 755 "/opt/2fauth"
 | 
			
		||||
 | 
			
		||||
        export COMPOSER_ALLOW_SUPERUSER=1
 | 
			
		||||
        $STD composer install --no-dev --prefer-source
 | 
			
		||||
 | 
			
		||||
        php artisan 2fauth:install
 | 
			
		||||
 | 
			
		||||
        $STD systemctl restart nginx
 | 
			
		||||
 | 
			
		||||
        # Cleaning up
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf "v${RELEASE}.zip"
 | 
			
		||||
        if dpkg -l | grep -q 'php8.2'; then
 | 
			
		||||
            $STD apt-get remove --purge -y php8.2*
 | 
			
		||||
        fi
 | 
			
		||||
        $STD apt-get -y autoremove
 | 
			
		||||
        $STD apt-get -y autoclean
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        # Last Action
 | 
			
		||||
        echo "${RELEASE}" >/opt/2fauth_version.txt
 | 
			
		||||
        msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
  # Check if installation is present | -f for file, -d for folder
 | 
			
		||||
  if [[ ! -d "/opt/2fauth" ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Crawling the new version and checking whether an update is required
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/2fauth_version.txt)" ]] || [[ ! -f /opt/2fauth_version.txt ]]; then
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
 | 
			
		||||
    # Creating Backup
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    mv "/opt/2fauth" "/opt/2fauth-backup"
 | 
			
		||||
    if ! dpkg -l | grep -q 'php8.3'; then
 | 
			
		||||
      cp /etc/nginx/conf.d/2fauth.conf /etc/nginx/conf.d/2fauth.conf.bak
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    # Upgrade PHP
 | 
			
		||||
    if ! dpkg -l | grep -q 'php8.3'; then
 | 
			
		||||
      $STD apt-get install -y \
 | 
			
		||||
        lsb-release \
 | 
			
		||||
        gpg
 | 
			
		||||
      curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/deb.sury.org-php.gpg
 | 
			
		||||
      echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" >/etc/apt/sources.list.d/php.list
 | 
			
		||||
      $STD apt-get update
 | 
			
		||||
      $STD apt-get install -y php8.3-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli,intl}
 | 
			
		||||
      sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Execute Update
 | 
			
		||||
    curl -fsSL -o "${RELEASE}.zip" "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "${RELEASE}.zip"
 | 
			
		||||
    mv "2FAuth-${RELEASE//v/}/" "/opt/2fauth"
 | 
			
		||||
    mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
 | 
			
		||||
    mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
 | 
			
		||||
    cd "/opt/2fauth" || return
 | 
			
		||||
 | 
			
		||||
    chown -R www-data: "/opt/2fauth"
 | 
			
		||||
    chmod -R 755 "/opt/2fauth"
 | 
			
		||||
 | 
			
		||||
    export COMPOSER_ALLOW_SUPERUSER=1
 | 
			
		||||
    $STD composer install --no-dev --prefer-source
 | 
			
		||||
 | 
			
		||||
    php artisan 2fauth:install
 | 
			
		||||
 | 
			
		||||
    $STD systemctl restart nginx
 | 
			
		||||
 | 
			
		||||
    # Cleaning up
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf "v${RELEASE}.zip"
 | 
			
		||||
    if dpkg -l | grep -q 'php8.2'; then
 | 
			
		||||
      $STD apt-get remove --purge -y php8.2*
 | 
			
		||||
    fi
 | 
			
		||||
    $STD apt-get -y autoremove
 | 
			
		||||
    $STD apt-get -y autoclean
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
    # Last Action
 | 
			
		||||
    echo "${RELEASE}" >/opt/2fauth_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -102,4 +102,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ function update_script() {
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/actualbudget ]]; then
 | 
			
		||||
  if [[ ! -f /opt/actualbudget_version.txt ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    mv /opt/adventurelog/ /opt/adventurelog-backup/
 | 
			
		||||
    curl -fsSL -o /opt/v${RELEASE}.zip "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
    unzip -q /opt/v${RELEASE}.zip -d /opt/
 | 
			
		||||
    $STD unzip /opt/v${RELEASE}.zip -d /opt/
 | 
			
		||||
    mv /opt/AdventureLog-${RELEASE} /opt/adventurelog
 | 
			
		||||
 | 
			
		||||
    mv /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
 | 
			
		||||
@@ -78,4 +78,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
			
		||||
    curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
			
		||||
    mkdir -p /usr/share/nginx/html
 | 
			
		||||
    rm -rf /usr/share/nginx/html/*
 | 
			
		||||
    unzip -q it-tools.zip -d /tmp/it-tools
 | 
			
		||||
    $STD unzip it-tools.zip -d /tmp/it-tools
 | 
			
		||||
    cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
			
		||||
    rm -rf /tmp/it-tools
 | 
			
		||||
    rm -f it-tools.zip
 | 
			
		||||
 
 | 
			
		||||
@@ -32,10 +32,6 @@ function update_script() {
 | 
			
		||||
  $STD npm install -g --unsafe-perm node-red
 | 
			
		||||
  msg_ok "Updated Node-RED"
 | 
			
		||||
 | 
			
		||||
  msg_info "Restarting Node-RED"
 | 
			
		||||
  $STD rc-service nodered restart
 | 
			
		||||
  msg_ok "Restarted Node-RED"
 | 
			
		||||
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,15 @@
 | 
			
		||||
#!/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: Slaviša Arežina (tremor021)
 | 
			
		||||
# Author: Slaviša Arežina (tremor021) | Co-Author: Stavros (steveiliop56)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/steveiliop56/tinyauth
 | 
			
		||||
 | 
			
		||||
APP="Alpine-tinyauth"
 | 
			
		||||
APP="Alpine-Tinyauth"
 | 
			
		||||
var_tags="${var_tags:-alpine;auth}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-3}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -25,34 +25,23 @@ function update_script() {
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  msg_info "Updating packages"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
  msg_ok "Updated packages"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating tinyauth"
 | 
			
		||||
  msg_info "Updating Tinyauth"
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  
 | 
			
		||||
  if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
 | 
			
		||||
    $STD service tinyauth stop
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    cp /opt/tinyauth/.env /opt
 | 
			
		||||
    rm -rf /opt/tinyauth
 | 
			
		||||
    mkdir -p /opt/tinyauth
 | 
			
		||||
    curl -fsSL "https://github.com/steveiliop56/tinyauth/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar -xzf "$temp_file" -C /opt/tinyauth --strip-components=1
 | 
			
		||||
    cd /opt/tinyauth/frontend
 | 
			
		||||
    $STD bun install
 | 
			
		||||
    $STD bun run build
 | 
			
		||||
    mv dist /opt/tinyauth/internal/assets/
 | 
			
		||||
    cd /opt/tinyauth
 | 
			
		||||
    $STD go mod download
 | 
			
		||||
    CGO_ENABLED=0 go build -ldflags "-s -w"
 | 
			
		||||
    cp /opt/.env /opt/tinyauth
 | 
			
		||||
    echo "${RELEASE}" >/opt/tinyauth_version.txt
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    msg_info "Restarting tinyauth"
 | 
			
		||||
    rm -f /opt/tinyauth/tinyauth
 | 
			
		||||
    curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
 | 
			
		||||
    chmod +x /opt/tinyauth/tinyauth
 | 
			
		||||
    echo "${RELEASE}" > /opt/tinyauth_version.txt
 | 
			
		||||
    msg_info "Restarting Tinyauth"
 | 
			
		||||
    $STD service tinyauth start
 | 
			
		||||
    msg_ok "Restarted tinyauth"
 | 
			
		||||
    msg_ok "Updated tinyauth"
 | 
			
		||||
    msg_ok "Restarted Tinyauth"
 | 
			
		||||
    msg_ok "Updated Tinyauth"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="Alpine-Vaultwarden"
 | 
			
		||||
var_tags="${var_tags:-alpine;vault}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-0.5}"
 | 
			
		||||
var_disk="${var_disk:-1}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -66,4 +66,4 @@ description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${APP} should be reachable by going to the following URL.
 | 
			
		||||
         ${BL}http://${IP}:8000${CL} \n"
 | 
			
		||||
         ${BL}https://${IP}:8000${CL} \n"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,91 +0,0 @@
 | 
			
		||||
#!/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: remz1337
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://goauthentik.io/
 | 
			
		||||
 | 
			
		||||
APP="Authentik"
 | 
			
		||||
var_tags="${var_tags:-identity-provider}"
 | 
			
		||||
var_disk="${var_disk:-12}"
 | 
			
		||||
var_cpu="${var_cpu:-6}"
 | 
			
		||||
var_ram="${var_ram:-10240}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /etc/systemd/system/authentik-server.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    NODE_VERSION="22"
 | 
			
		||||
    PG_VERSION="16"
 | 
			
		||||
    setup_uv
 | 
			
		||||
    install_postgresql
 | 
			
		||||
    install_node_and_modules
 | 
			
		||||
    install_go
 | 
			
		||||
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop authentik-server
 | 
			
		||||
    systemctl stop authentik-worker
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building ${APP} website"
 | 
			
		||||
    mkdir -p /opt/authentik
 | 
			
		||||
    curl -fsSL "${RELEASE}" -o "authentik.tar.gz"
 | 
			
		||||
    tar -xzf authentik.tar.gz -C /opt/authentik --strip-components 1 --overwrite
 | 
			
		||||
    rm -rf authentik.tar.gz
 | 
			
		||||
    cd /opt/authentik/website
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run build-bundled
 | 
			
		||||
    cd /opt/authentik/web
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    msg_ok "Built ${APP} website"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building ${APP} server"
 | 
			
		||||
    cd /opt/authentik
 | 
			
		||||
    go mod download
 | 
			
		||||
    go build -o /go/authentik ./cmd/server
 | 
			
		||||
    go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
 | 
			
		||||
    msg_ok "Built ${APP} server"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building Authentik"
 | 
			
		||||
    cd /opt/authentik
 | 
			
		||||
    $STD uv sync --frozen --no-install-project --no-dev
 | 
			
		||||
    uv run python -m lifecycle.migrate
 | 
			
		||||
    ln -s /opt/authentik/.venv/bin/gunicorn /usr/local/bin/gunicorn
 | 
			
		||||
    ln -s /opt/authentik/.venv/bin/celery /usr/local/bin/celery
 | 
			
		||||
    msg_ok "Authentik built"
 | 
			
		||||
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start authentik-server
 | 
			
		||||
    systemctl start authentik-worker
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
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}:9000/if/flow/initial-setup/${CL}"
 | 
			
		||||
							
								
								
									
										66
									
								
								ct/backrest.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								ct/backrest.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
#!/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: ksad (enirys31)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://garethgeorge.github.io/backrest/
 | 
			
		||||
 | 
			
		||||
APP="Backrest"
 | 
			
		||||
var_tags="${var_tags:-backup}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
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/backrest ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop backrest
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    rm -f /opt/backrest/bin/backrest
 | 
			
		||||
    curl -fsSL "https://github.com/garethgeorge/backrest/releases/download/v${RELEASE}/backrest_Linux_x86_64.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar xzf $temp_file -C /opt/backrest/bin
 | 
			
		||||
    chmod +x /opt/backrest/bin/backrest
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start backrest
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    msg_ok "Cleaned up"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9898${CL}"
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip" -o $(basename "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip")
 | 
			
		||||
    mv /opt/baikal /opt/baikal-backup
 | 
			
		||||
    unzip -o -q "baikal-${RELEASE}.zip"
 | 
			
		||||
    $STD unzip -o "baikal-${RELEASE}.zip"
 | 
			
		||||
    cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
 | 
			
		||||
    cp -r /opt/baikal-backup/Specific/ /opt/baikal/
 | 
			
		||||
    chown -R www-data:www-data /opt/baikal/
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
 | 
			
		||||
    curl -fsSL "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q "v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "v${RELEASE}.zip"
 | 
			
		||||
    mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
 | 
			
		||||
    cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
 | 
			
		||||
    chown -R www-data:www-data /opt/barcodebuddy/data
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    mv /opt/bookstack /opt/bookstack-backup
 | 
			
		||||
    curl -fsSL "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" -o "/opt/BookStack-${RELEASE}.zip"
 | 
			
		||||
    unzip -q "/opt/BookStack-${RELEASE}.zip" -d /opt
 | 
			
		||||
    $STD unzip "/opt/BookStack-${RELEASE}.zip" -d /opt
 | 
			
		||||
    mv "/opt/BookStack-${RELEASE}" /opt/bookstack
 | 
			
		||||
    cp /opt/bookstack-backup/.env /opt/bookstack/.env
 | 
			
		||||
    [[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
APP="BunkerWeb"
 | 
			
		||||
var_tags="${var_tags:-webserver}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_ram="${var_ram:-8192}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
@@ -55,4 +55,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/setup${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/setup${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    curl -fsSL "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip" -o $(basename "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip")
 | 
			
		||||
    unzip -q commafeed-"${RELEASE}"-h2-jvm.zip
 | 
			
		||||
    $STD unzip commafeed-"${RELEASE}"-h2-jvm.zip
 | 
			
		||||
    rsync -a --exclude 'data/' commafeed-"${RELEASE}"-h2/ /opt/commafeed/
 | 
			
		||||
    rm -rf commafeed-"${RELEASE}"-h2 commafeed-"${RELEASE}"-h2-jvm.zip
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Crafty-Controller to v${RELEASE}"
 | 
			
		||||
    curl -fsSL "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip" -o $(basename "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip")
 | 
			
		||||
    unzip -q crafty-4-v${RELEASE}.zip
 | 
			
		||||
    $STD unzip crafty-4-v${RELEASE}.zip
 | 
			
		||||
    cp -a crafty-4-v${RELEASE}/. /opt/crafty-controller/crafty/crafty-4/
 | 
			
		||||
    rm -rf crafty-4-v${RELEASE}
 | 
			
		||||
    cd /opt/crafty-controller/crafty/crafty-4
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/documenso
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    mv documenso-${RELEASE} /opt/documenso
 | 
			
		||||
    cd /opt/documenso
 | 
			
		||||
    mv /opt/.env /opt/documenso/.env
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating $APP to latest version"
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
 | 
			
		||||
    unzip -oq -d /opt/fileflows "$temp_file"
 | 
			
		||||
    $STD unzip -o -d /opt/fileflows "$temp_file"
 | 
			
		||||
    msg_ok "Updated $APP to latest version"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -39,8 +39,8 @@ function update_script() {
 | 
			
		||||
        cp /opt/fluid-calendar/.env /opt/fluid.env
 | 
			
		||||
        rm -rf /opt/fluid-calendar
 | 
			
		||||
        tmp_file=$(mktemp)
 | 
			
		||||
curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
 | 
			
		||||
        unzip -q $tmp_file
 | 
			
		||||
        curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
 | 
			
		||||
        $STD unzip $tmp_file
 | 
			
		||||
        mv ${APP}-${RELEASE}/ /opt/fluid-calendar
 | 
			
		||||
        mv /opt/fluid.env /opt/fluid-calendar/.env
 | 
			
		||||
        cd /opt/fluid-calendar
 | 
			
		||||
@@ -74,4 +74,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    cd /opt/gotify
 | 
			
		||||
    curl -fsSL "https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip" -o $(basename "https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip")
 | 
			
		||||
    unzip -oq gotify-linux-amd64.zip
 | 
			
		||||
    $STD unzip -o gotify-linux-amd64.zip
 | 
			
		||||
    rm -rf gotify-linux-amd64.zip
 | 
			
		||||
    chmod +x gotify-linux-amd64
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    rm -rf grist_bak
 | 
			
		||||
    mv grist grist_bak
 | 
			
		||||
    curl -fsSL "https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v$RELEASE.zip
 | 
			
		||||
    $STD unzip v$RELEASE.zip
 | 
			
		||||
    mv grist-core-${RELEASE} grist
 | 
			
		||||
 | 
			
		||||
    mkdir -p grist/docs
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
    ___    __      _                  __  _                         __  __  
 | 
			
		||||
   /   |  / /___  (_)___  ___        / /_(_)___  __  ______ ___  __/ /_/ /_ 
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ __/ / __ \/ / / / __ `/ / / / __/ __ \
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ /_/ / / / / /_/ / /_/ / /_/ / /_/ / / /
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/      \__/_/_/ /_/\__, /\__,_/\__,_/\__/_/ /_/ 
 | 
			
		||||
    ___    __      _                _______                         __  __  
 | 
			
		||||
   /   |  / /___  (_)___  ___      /_  __(_)___  __  ______ ___  __/ /_/ /_ 
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ / / / __ \/ / / / __ `/ / / / __/ __ \
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ / / / / / / /_/ / /_/ / /_/ / /_/ / / /
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/     /_/ /_/_/ /_/\__, /\__,_/\__,_/\__/_/ /_/ 
 | 
			
		||||
        /_/                                   /____/                        
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
    ___         __  __               __  _ __  
 | 
			
		||||
   /   | __  __/ /_/ /_  ___  ____  / /_(_) /__
 | 
			
		||||
  / /| |/ / / / __/ __ \/ _ \/ __ \/ __/ / //_/
 | 
			
		||||
 / ___ / /_/ / /_/ / / /  __/ / / / /_/ / ,<   
 | 
			
		||||
/_/  |_\__,_/\__/_/ /_/\___/_/ /_/\__/_/_/|_|  
 | 
			
		||||
                                               
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/backrest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/backrest
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____             __                  __ 
 | 
			
		||||
   / __ )____ ______/ /__________  _____/ /_
 | 
			
		||||
  / __  / __ `/ ___/ //_/ ___/ _ \/ ___/ __/
 | 
			
		||||
 / /_/ / /_/ / /__/ ,< / /  /  __(__  ) /_  
 | 
			
		||||
/_____/\__,_/\___/_/|_/_/   \___/____/\__/  
 | 
			
		||||
                                            
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/oauth2-proxy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/oauth2-proxy
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
                     __  __   ___                                   
 | 
			
		||||
  ____  ____ ___  __/ /_/ /_ |__ \      ____  _________  _  ____  __
 | 
			
		||||
 / __ \/ __ `/ / / / __/ __ \__/ /_____/ __ \/ ___/ __ \| |/_/ / / /
 | 
			
		||||
/ /_/ / /_/ / /_/ / /_/ / / / __/_____/ /_/ / /  / /_/ />  </ /_/ / 
 | 
			
		||||
\____/\__,_/\__,_/\__/_/ /_/____/    / .___/_/   \____/_/|_|\__, /  
 | 
			
		||||
                                    /_/                    /____/   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/pulse
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/pulse
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____        __        
 | 
			
		||||
   / __ \__  __/ /_______ 
 | 
			
		||||
  / /_/ / / / / / ___/ _ \
 | 
			
		||||
 / ____/ /_/ / (__  )  __/
 | 
			
		||||
/_/    \__,_/_/____/\___/ 
 | 
			
		||||
                          
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
   __  __          __              __
 | 
			
		||||
  / / / /___ ___  / /_  ________  / /
 | 
			
		||||
 / / / / __ `__ \/ __ \/ ___/ _ \/ / 
 | 
			
		||||
/ /_/ / / / / / / /_/ / /  /  __/ /  
 | 
			
		||||
\____/_/ /_/ /_/_.___/_/   \___/_/   
 | 
			
		||||
                                     
 | 
			
		||||
@@ -47,7 +47,7 @@ function update_script() {
 | 
			
		||||
    fi
 | 
			
		||||
    rm -rf /opt/hoarder
 | 
			
		||||
    curl -fsSL "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
 | 
			
		||||
    unzip -q v"${RELEASE}".zip
 | 
			
		||||
    $STD unzip v"${RELEASE}".zip
 | 
			
		||||
    mv karakeep-"${RELEASE}" /opt/hoarder
 | 
			
		||||
    cd /opt/hoarder/apps/web
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
 
 | 
			
		||||
@@ -104,7 +104,6 @@ function update_script() {
 | 
			
		||||
  if [ "$UPD" == "2" ]; then
 | 
			
		||||
    msg_info "Installing Home Assistant Community Store (HACS)"
 | 
			
		||||
    $STD apt update
 | 
			
		||||
    $STD apt install -y unzip
 | 
			
		||||
    cd /root/.homeassistant
 | 
			
		||||
    $STD bash <(curl -fsSL https://get.hacs.xyz)
 | 
			
		||||
    msg_ok "Installed Home Assistant Community Store (HACS)"
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,6 @@ function update_script() {
 | 
			
		||||
  if [ "$UPD" == "3" ]; then
 | 
			
		||||
    msg_info "Installing Home Assistant Community Store (HACS)"
 | 
			
		||||
    $STD apt update
 | 
			
		||||
    $STD apt install unzip
 | 
			
		||||
    cd /var/lib/docker/volumes/hass_config/_data
 | 
			
		||||
    $STD bash <(curl -fsSL https://get.hacs.xyz)
 | 
			
		||||
    msg_ok "Installed Home Assistant Community Store (HACS)"
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,7 @@ function update_script() {
 | 
			
		||||
    fi
 | 
			
		||||
    rm -rf /opt/karakeep
 | 
			
		||||
    curl -fsSL "https://github.com/karakeep-app/karakeep/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
 | 
			
		||||
    unzip -q "v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "v${RELEASE}.zip"
 | 
			
		||||
    mv karakeep-"${RELEASE}" /opt/karakeep
 | 
			
		||||
    cd /opt/karakeep/apps/web
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
 
 | 
			
		||||
@@ -64,7 +64,7 @@ function update_script() {
 | 
			
		||||
    trap "echo Unable to download release file for version ${RELEASE}; try again later" ERR
 | 
			
		||||
    set -e
 | 
			
		||||
    curl -fsSL "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q "${RELEASE}".zip
 | 
			
		||||
    $STD unzip "${RELEASE}".zip
 | 
			
		||||
    set +e
 | 
			
		||||
    trap - ERR
 | 
			
		||||
    rm -rf /opt/kimai
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/koillection/ /opt/koillection-backup
 | 
			
		||||
    curl -fsSL "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q "${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "${RELEASE}.zip"
 | 
			
		||||
    mv "/opt/koillection-${RELEASE}" /opt/koillection
 | 
			
		||||
    cd /opt/koillection
 | 
			
		||||
    cp -r /opt/koillection-backup/.env.local /opt/koillection
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +1,17 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://linkwarden.app/
 | 
			
		||||
 | 
			
		||||
APP="Linkwarden"
 | 
			
		||||
var_tags="${var_tags:-bookmark}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-12}"
 | 
			
		||||
var_os="${var_os:-ubuntu}"
 | 
			
		||||
var_version="${var_version:-22.04}"
 | 
			
		||||
var_version="${var_version:-24.04}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
@@ -27,48 +27,36 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    NODE_VERSION="22"
 | 
			
		||||
    NODE_MODULE="yarn@latest"
 | 
			
		||||
    install_node_and_modules
 | 
			
		||||
    
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/linkwarden_version.txt)" ]] || [[ ! -f /opt/linkwarden_version.txt ]]; then
 | 
			
		||||
    NODE_VERSION="22" NODE_MODULE="yarn@latest" install_node_and_modules
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop linkwarden
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Rust"
 | 
			
		||||
    $STD apt-get install -y build-essential
 | 
			
		||||
    $STD curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
 | 
			
		||||
    source $HOME/.cargo/env
 | 
			
		||||
    echo 'export PATH=/usr/local/cargo/bin:$PATH' >>/etc/profile
 | 
			
		||||
    source /etc/profile
 | 
			
		||||
    $STD cargo install monolith
 | 
			
		||||
    msg_ok "Updated Rust"
 | 
			
		||||
    RUST_CRATES="monolith" install_rust_and_crates
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/linkwarden/.env /opt/.env
 | 
			
		||||
    rm -rf /opt/linkwarden
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o ${RELEASE}.zip
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    mv linkwarden-${RELEASE:1} /opt/linkwarden
 | 
			
		||||
    fetch_and_deploy_gh_release "linkwarden/linkwarden"
 | 
			
		||||
    cd /opt/linkwarden
 | 
			
		||||
    $STD yarn
 | 
			
		||||
    $STD npx playwright install-deps
 | 
			
		||||
    $STD yarn playwright install
 | 
			
		||||
    cp /opt/.env /opt/linkwarden/.env
 | 
			
		||||
    mv /opt/.env /opt/linkwarden/.env
 | 
			
		||||
    $STD yarn prisma:generate
 | 
			
		||||
    $STD yarn web:build
 | 
			
		||||
    $STD yarn prisma:deploy
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start linkwarden
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf /opt/${RELEASE}.zip
 | 
			
		||||
    rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache ~/.rustup
 | 
			
		||||
    rm -rf /root/.cache/yarn
 | 
			
		||||
    rm -rf /opt/linkwarden/.next/cache
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -f /etc/systemd/system/lldap.service ]]; then
 | 
			
		||||
    if [[ ! -f /lib/systemd/system/lldap.service ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
@@ -41,4 +41,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:17170${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:17170${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,7 @@ function update_script() {
 | 
			
		||||
    [[ -e /opt/lubelogger/wwwroot/temp ]] && cp -r /opt/lubelogger/wwwroot/temp /tmp/lubeloggerData/data/
 | 
			
		||||
    [[ -e /opt/lubelogger/log ]] && cp -r /opt/lubelogger/log /tmp/lubeloggerData/
 | 
			
		||||
    rm -rf /opt/lubelogger
 | 
			
		||||
    unzip -qq LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip -d lubelogger
 | 
			
		||||
    $STD unzip LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip -d lubelogger
 | 
			
		||||
    chmod 700 /opt/lubelogger/CarCareTracker
 | 
			
		||||
    cp -rf /tmp/lubeloggerData/* /opt/lubelogger/
 | 
			
		||||
    echo "${RELEASE}" >"/opt/${APP}_version.txt"
 | 
			
		||||
 
 | 
			
		||||
@@ -69,7 +69,7 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/meilisearch-ui
 | 
			
		||||
    mkdir -p /opt/meilisearch-ui
 | 
			
		||||
    curl -fsSL "https://github.com/riccox/meilisearch-ui/archive/refs/tags/${RELEASE_UI}.zip" -o $tmp_file
 | 
			
		||||
    unzip -q "$tmp_file" -d "$tmp_dir"
 | 
			
		||||
    $STD unzip "$tmp_file" -d "$tmp_dir"
 | 
			
		||||
    mv "$tmp_dir"/*/* /opt/meilisearch-ui/
 | 
			
		||||
    cd /opt/meilisearch-ui
 | 
			
		||||
    sed -i 's|const hash = execSync("git rev-parse HEAD").toString().trim();|const hash = "unknown";|' /opt/meilisearch-ui/vite.config.ts
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    rm -rf myspeed_bak
 | 
			
		||||
    mv myspeed myspeed_bak
 | 
			
		||||
    curl -fsSL "https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip" -o $(basename "https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip")
 | 
			
		||||
    unzip -q MySpeed-$RELEASE.zip -d myspeed
 | 
			
		||||
    $STD unzip MySpeed-$RELEASE.zip -d myspeed
 | 
			
		||||
    cd myspeed
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    mv /opt/netbox/ /opt/netbox-backup
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q "v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "v${RELEASE}.zip"
 | 
			
		||||
    mv /opt/netbox-${RELEASE}/ /opt/netbox/
 | 
			
		||||
 | 
			
		||||
    cp -r /opt/netbox-backup/netbox/netbox/configuration.py /opt/netbox/netbox/netbox/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										64
									
								
								ct/oauth2-proxy.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								ct/oauth2-proxy.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
#!/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: bvdberg01
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/oauth2-proxy/oauth2-proxy/
 | 
			
		||||
 | 
			
		||||
APP="oauth2-proxy"
 | 
			
		||||
var_tags="${var_tags:-os}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-3}"
 | 
			
		||||
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/oauth2-proxy ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/oauth2-proxy/oauth2-proxy/releases/latest | jq -r .tag_name | sed 's/^v//')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP} services"
 | 
			
		||||
    systemctl stop oauth2-proxy
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    rm -f /opt/oauth2-proxy/oauth2-proxy
 | 
			
		||||
    curl -fsSL "https://github.com/oauth2-proxy/oauth2-proxy/releases/download/v${RELEASE}/oauth2-proxy-v${RELEASE}.linux-amd64.tar.gz" -o /opt/oauth2-proxy.tar.gz
 | 
			
		||||
    tar -xzf /opt/oauth2-proxy.tar.gz
 | 
			
		||||
    mv /opt/oauth2-proxy-v${RELEASE}.linux-amd64/oauth2-proxy /opt/oauth2-proxy
 | 
			
		||||
    systemctl start oauth2-proxy
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -f "/opt/oauth2-proxy.tar.gz"
 | 
			
		||||
    rm -rf "/opt/oauth2-proxy-v${RELEASE}.linux-amd64"
 | 
			
		||||
    $STD apt-get -y autoremove
 | 
			
		||||
    $STD apt-get -y autoclean
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "${APP} is already up to date (${RELEASE})"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Now you can modify /opt/oauth2-proxy/config.toml with your needed config.${CL}"
 | 
			
		||||
@@ -40,7 +40,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/paperless-ai /opt/paperless-ai_bak
 | 
			
		||||
    curl -fsSL "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    mv paperless-ai-${RELEASE} /opt/paperless-ai
 | 
			
		||||
    mkdir -p /opt/paperless-ai/data
 | 
			
		||||
    cp -a /opt/paperless-ai_bak/data/. /opt/paperless-ai/data/
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/partdb/ /opt/partdb-backup
 | 
			
		||||
    curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q "v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "v${RELEASE}.zip"
 | 
			
		||||
    mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
 | 
			
		||||
 | 
			
		||||
    cd /opt/partdb/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								ct/petio.sh
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								ct/petio.sh
									
									
									
									
									
								
							@@ -19,20 +19,20 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/Petio ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    systemctl stop petio.service
 | 
			
		||||
    curl -fsSL https://petio.tv/releases/latest -o petio-latest.zip
 | 
			
		||||
    unzip petio-latest.zip -d /opt/Petio
 | 
			
		||||
    systemctl start petio.service
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/Petio ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating $APP"
 | 
			
		||||
  systemctl stop petio.service
 | 
			
		||||
  curl -fsSL https://petio.tv/releases/latest -o petio-latest.zip
 | 
			
		||||
  $STD unzip petio-latest.zip -d /opt/Petio
 | 
			
		||||
  systemctl start petio.service
 | 
			
		||||
  msg_ok "Updated $APP"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    $STD unzip ${RELEASE}.zip
 | 
			
		||||
    rm -rf "/opt/${APP}"
 | 
			
		||||
    mv ${APP}-${RELEASE:1} /opt/${APP}
 | 
			
		||||
    cd /opt/Pf2eTools
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/phpipam/ /opt/phpipam-backup
 | 
			
		||||
    curl -fsSL "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip" -o $(basename "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip")
 | 
			
		||||
    unzip -q "phpipam-v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "phpipam-v${RELEASE}.zip"
 | 
			
		||||
    cp /opt/phpipam-backup/config.php /opt/phpipam
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating Pingvin Share to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    cp -rf pingvin-share-${RELEASE}/* /opt/pingvin-share
 | 
			
		||||
    cd /opt/pingvin-share
 | 
			
		||||
    cd backend
 | 
			
		||||
 
 | 
			
		||||
@@ -58,7 +58,6 @@ function update_script() {
 | 
			
		||||
  if [ "$UPD" == "2" ]; then
 | 
			
		||||
    msg_info "Installing Home Assistant Community Store (HACS)"
 | 
			
		||||
    $STD apt update
 | 
			
		||||
    $STD apt install unzip
 | 
			
		||||
    cd /var/lib/containers/storage/volumes/hass_config/_data
 | 
			
		||||
    $STD bash <(curl -fsSL https://get.hacs.xyz)
 | 
			
		||||
    msg_ok "Installed Home Assistant Community Store (HACS)"
 | 
			
		||||
@@ -110,4 +109,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ function update_script() {
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    cp -f /opt/privatebin/cfg/conf.php /tmp/privatebin_conf.bak
 | 
			
		||||
    curl -fsSL "https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    $STD unzip ${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/privatebin/*
 | 
			
		||||
    mv PrivateBin-${RELEASE}/* /opt/privatebin/
 | 
			
		||||
    mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/projectsend/projectsend/releases/download/r${RELEASE}/projectsend-r${RELEASE}.zip" -o $(basename "https://github.com/projectsend/projectsend/releases/download/r${RELEASE}/projectsend-r${RELEASE}.zip")
 | 
			
		||||
    unzip -o -q "projectsend-r${RELEASE}.zip" -d projectsend
 | 
			
		||||
    $STD unzip -o "projectsend-r${RELEASE}.zip" -d projectsend
 | 
			
		||||
    chown -R www-data:www-data /opt/projectsend
 | 
			
		||||
    chmod -R 775 /opt/projectsend
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										73
									
								
								ct/pulse.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								ct/pulse.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
			
		||||
#!/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: rcourtman
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/rcourtman/Pulse
 | 
			
		||||
 | 
			
		||||
APP="Pulse"
 | 
			
		||||
var_tags="${var_tags:-monitoring,proxmox}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
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/pulse-proxmox ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop pulse-monitor
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Pulse"
 | 
			
		||||
    if [[ -f /opt/pulse-proxmox/.env ]]; then
 | 
			
		||||
      cp /opt/pulse-proxmox/.env /tmp/.env.backup.pulse
 | 
			
		||||
    fi
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    mkdir -p /opt/pulse-proxmox
 | 
			
		||||
    rm -rf /opt/pulse-proxmox/*
 | 
			
		||||
    curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar zxf "$temp_file" --strip-components=1 -C /opt/pulse-proxmox
 | 
			
		||||
    if [[ -f /tmp/.env.backup.pulse ]]; then
 | 
			
		||||
      mv /tmp/.env.backup.pulse /opt/pulse-proxmox/.env
 | 
			
		||||
    fi
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Pulse to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Setting permissions for /opt/pulse-proxmox..."
 | 
			
		||||
    chown -R pulse:pulse "/opt/pulse-proxmox"
 | 
			
		||||
    find "/opt/pulse-proxmox" -type d -exec chmod 755 {} \;
 | 
			
		||||
    find "/opt/pulse-proxmox" -type f -exec chmod 644 {} \;
 | 
			
		||||
    chmod 600 /opt/pulse-proxmox/.env
 | 
			
		||||
    msg_ok "Set permissions."
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start pulse-monitor
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}(:your_port)${CL}"
 | 
			
		||||
@@ -20,38 +20,38 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/rdtc/ ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop rdtc
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then
 | 
			
		||||
        $STD apt-get remove --purge -y dotnet-sdk-8.0
 | 
			
		||||
        $STD apt-get install -y dotnet-sdk-9.0
 | 
			
		||||
    fi
 | 
			
		||||
    mkdir -p rdtc-backup
 | 
			
		||||
    cp -R /opt/rdtc/appsettings.json rdtc-backup/
 | 
			
		||||
    curl -fsSL "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip" -o $(basename "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip")
 | 
			
		||||
    unzip -oqq RealDebridClient.zip -d /opt/rdtc
 | 
			
		||||
    cp -R rdtc-backup/appsettings.json /opt/rdtc/
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start rdtc
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf rdtc-backup RealDebridClient.zip
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/rdtc/ ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping ${APP}"
 | 
			
		||||
  systemctl stop rdtc
 | 
			
		||||
  msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ${APP}"
 | 
			
		||||
  if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then
 | 
			
		||||
    $STD apt-get remove --purge -y dotnet-sdk-8.0
 | 
			
		||||
    $STD apt-get install -y dotnet-sdk-9.0
 | 
			
		||||
  fi
 | 
			
		||||
  mkdir -p rdtc-backup
 | 
			
		||||
  cp -R /opt/rdtc/appsettings.json rdtc-backup/
 | 
			
		||||
  curl -fsSL "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip" -o $(basename "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip")
 | 
			
		||||
  $STD unzip -o RealDebridClient.zip -d /opt/rdtc
 | 
			
		||||
  cp -R rdtc-backup/appsettings.json /opt/rdtc/
 | 
			
		||||
  msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP}"
 | 
			
		||||
  systemctl start rdtc
 | 
			
		||||
  msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning Up"
 | 
			
		||||
  rm -rf rdtc-backup RealDebridClient.zip
 | 
			
		||||
  msg_ok "Cleaned"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
        res_tmp=$(mktemp)
 | 
			
		||||
        rm -rf /opt/${APP}
 | 
			
		||||
        curl -fsSL "https://github.com/AmruthPillai/Reactive-Resume/archive/refs/tags/v${RELEASE}.zip" -O $res_tmp
 | 
			
		||||
        unzip -q $res_tmp
 | 
			
		||||
        $STD unzip $res_tmp
 | 
			
		||||
        mv ${APP}-${RELEASE}/ /opt/${APP}
 | 
			
		||||
        cd /opt/${APP}
 | 
			
		||||
        export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
			
		||||
@@ -66,7 +66,7 @@ function update_script() {
 | 
			
		||||
        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
 | 
			
		||||
        unzip -q $brwsr_tmp
 | 
			
		||||
        $STD unzip $brwsr_tmp
 | 
			
		||||
        mv browserless-${TAG}/ /opt/browserless
 | 
			
		||||
        cd /opt/browserless
 | 
			
		||||
        $STD npm install
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  sed -i 's/^\([[:space:]]*limiter:\)[[:space:]]*true/\1 false/' /etc/searxng/settings.yml
 | 
			
		||||
  if cd /usr/local/searxng/searxng-src && git pull | grep -q 'Already up to date'; then
 | 
			
		||||
    msg_ok "There is currently no update available."
 | 
			
		||||
  fi
 | 
			
		||||
@@ -39,4 +40,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8888${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8888${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    curl -fsSL "https://github.com/silverbulletmd/silverbullet/releases/download/${RELEASE}/silverbullet-server-linux-x86_64.zip" -o $(basename "https://github.com/silverbulletmd/silverbullet/releases/download/${RELEASE}/silverbullet-server-linux-x86_64.zip")
 | 
			
		||||
    unzip -q silverbullet-server-linux-x86_64.zip
 | 
			
		||||
    $STD unzip silverbullet-server-linux-x86_64.zip
 | 
			
		||||
    mv silverbullet /opt/silverbullet/bin/
 | 
			
		||||
    chmod +x /opt/silverbullet/bin/silverbullet
 | 
			
		||||
    echo "${RELEASE}" >/opt/silverbullet/${APP}_version.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    tmp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/slskd/slskd/releases/download/${RELEASE}/slskd-${RELEASE}-linux-x64.zip" -o $tmp_file
 | 
			
		||||
    unzip -q -oj $tmp_file slskd -d /opt/${APP}
 | 
			
		||||
    $STD unzip -oj $tmp_file slskd -d /opt/${APP}
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
@@ -55,7 +55,7 @@ function update_script() {
 | 
			
		||||
  cd /tmp
 | 
			
		||||
  rm -rf /opt/soularr
 | 
			
		||||
  curl -fsSL -o main.zip https://github.com/mrusse/soularr/archive/refs/heads/main.zip
 | 
			
		||||
  unzip -q main.zip
 | 
			
		||||
  $STD unzip main.zip
 | 
			
		||||
  mv soularr-main /opt/soularr
 | 
			
		||||
  cd /opt/soularr
 | 
			
		||||
  $STD pip install -r requirements.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    rm -rf spoolman_bak
 | 
			
		||||
    mv spoolman spoolman_bak
 | 
			
		||||
    curl -fsSL "https://github.com/Donkie/Spoolman/releases/download/${RELEASE}/spoolman.zip" -o $(basename "https://github.com/Donkie/Spoolman/releases/download/${RELEASE}/spoolman.zip")
 | 
			
		||||
    unzip -q spoolman.zip -d spoolman
 | 
			
		||||
    $STD unzip spoolman.zip -d spoolman
 | 
			
		||||
    cd spoolman
 | 
			
		||||
    $STD pip3 install -r requirements.txt
 | 
			
		||||
    curl -fsSL "https://raw.githubusercontent.com/Donkie/Spoolman/master/.env.example" -o ".env"
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/teddycloud /opt/teddycloud_bak
 | 
			
		||||
    curl -fsSL "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip" -o $(basename "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip")
 | 
			
		||||
    unzip -q -d /opt/teddycloud teddycloud.amd64.release_v${VERSION}.zip
 | 
			
		||||
    $STD unzip -d /opt/teddycloud teddycloud.amd64.release_v${VERSION}.zip
 | 
			
		||||
    cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud
 | 
			
		||||
    echo "${VERSION}" >"/opt/${APP}_version.txt"
 | 
			
		||||
    msg_ok "Updated ${APP} to v${VERSION}"
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,7 @@ function update_script() {
 | 
			
		||||
    cp /opt/tianji/src/server/.env /opt/.env
 | 
			
		||||
    mv /opt/tianji /opt/tianji_bak
 | 
			
		||||
    curl -fsSL "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    mv tianji-${RELEASE} /opt/tianji
 | 
			
		||||
    cd tianji
 | 
			
		||||
    export NODE_OPTIONS="--max_old_space_size=4096"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								ct/umbrel.sh
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								ct/umbrel.sh
									
									
									
									
									
								
							@@ -1,40 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://umbrel.com/
 | 
			
		||||
 | 
			
		||||
APP="Umbrel"
 | 
			
		||||
var_tags="${var_tags:-os}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    msg_info "Updating ${APP} LXC"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
    msg_ok "Updated ${APP} LXC"
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized! (manual reboot is required!)${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
@@ -35,7 +35,7 @@ function update_script() {
 | 
			
		||||
    mkdir -p /opt/logos
 | 
			
		||||
    mv /opt/wallos/db/wallos.db /opt/wallos.db
 | 
			
		||||
    mv /opt/wallos/images/uploads/logos /opt/logos/
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/wallos
 | 
			
		||||
    mv Wallos-${RELEASE} /opt/wallos
 | 
			
		||||
    rm -rf /opt/wallos/db/wallos.empty.db
 | 
			
		||||
 
 | 
			
		||||
@@ -20,28 +20,28 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/wastebin ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    # Dirty-Fix 03/2025 for missing APP_version.txt on old installations, set to pre-latest release
 | 
			
		||||
    msg_info "Running Migration"
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
        echo "2.7.1" >/opt/${APP}_version.txt
 | 
			
		||||
        mkdir -p /opt/wastebin-data
 | 
			
		||||
        cat <<EOF >/opt/wastebin-data/.env
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/wastebin ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  # Dirty-Fix 03/2025 for missing APP_version.txt on old installations, set to pre-latest release
 | 
			
		||||
  msg_info "Running Migration"
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    echo "2.7.1" >/opt/${APP}_version.txt
 | 
			
		||||
    mkdir -p /opt/wastebin-data
 | 
			
		||||
    cat <<EOF >/opt/wastebin-data/.env
 | 
			
		||||
WASTEBIN_DATABASE_PATH=/opt/wastebin-data/wastebin.db
 | 
			
		||||
WASTEBIN_CACHE_SIZE=1024
 | 
			
		||||
WASTEBIN_HTTP_TIMEOUT=30
 | 
			
		||||
WASTEBIN_SIGNING_KEY=$(openssl rand -hex 32)
 | 
			
		||||
WASTEBIN_PASTE_EXPIRATIONS=0,600,3600=d,86400,604800,2419200,29030400
 | 
			
		||||
EOF
 | 
			
		||||
        systemctl stop wastebin
 | 
			
		||||
        cat <<EOF >/etc/systemd/system/wastebin.service
 | 
			
		||||
    systemctl stop wastebin
 | 
			
		||||
    cat <<EOF >/etc/systemd/system/wastebin.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Wastebin Service
 | 
			
		||||
After=network.target
 | 
			
		||||
@@ -54,35 +54,35 @@ EnvironmentFile=/opt/wastebin-data/.env
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
        systemctl daemon-reload
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Migration Done"
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping Wastebin"
 | 
			
		||||
        systemctl stop wastebin
 | 
			
		||||
        msg_ok "Wastebin Stopped"
 | 
			
		||||
    systemctl daemon-reload
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Migration Done"
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping Wastebin"
 | 
			
		||||
    systemctl stop wastebin
 | 
			
		||||
    msg_ok "Wastebin Stopped"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating Wastebin"
 | 
			
		||||
        temp_file=$(mktemp)
 | 
			
		||||
curl -fsSL "https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.zip" -o "$temp_file"
 | 
			
		||||
        unzip -o -q $temp_file
 | 
			
		||||
        cp -f wastebin /opt/wastebin/
 | 
			
		||||
        chmod +x /opt/wastebin/wastebin
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Updated Wastebin"
 | 
			
		||||
    msg_info "Updating Wastebin"
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.zip" -o "$temp_file"
 | 
			
		||||
    $STD unzip -o $temp_file
 | 
			
		||||
    cp -f wastebin /opt/wastebin/
 | 
			
		||||
    chmod +x /opt/wastebin/wastebin
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Wastebin"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting Wastebin"
 | 
			
		||||
        systemctl start wastebin
 | 
			
		||||
        msg_ok "Started Wastebin"
 | 
			
		||||
    msg_info "Starting Wastebin"
 | 
			
		||||
    systemctl start wastebin
 | 
			
		||||
    msg_ok "Started Wastebin"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -f $temp_file
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -f $temp_file
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -92,4 +92,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8088${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8088${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ function update_script() {
 | 
			
		||||
      cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js
 | 
			
		||||
    fi
 | 
			
		||||
    curl -fsSL "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    $STD unzip ${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/wavelog
 | 
			
		||||
    mv wavelog-${RELEASE}/ /opt/wavelog
 | 
			
		||||
    rm -rf /opt/wavelog/install
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    $STD unzip ${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/zigbee2mqtt
 | 
			
		||||
    mv zigbee2mqtt-${RELEASE} /opt/zigbee2mqtt
 | 
			
		||||
    rm -rf /opt/zigbee2mqtt/data
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ function update_script() {
 | 
			
		||||
    mkdir -p /opt/zipline-upload
 | 
			
		||||
    cp -R /opt/zipline/upload/* /opt/zipline-upload/
 | 
			
		||||
    curl -fsSL "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v"${RELEASE}".zip
 | 
			
		||||
    $STD unzip v"${RELEASE}".zip
 | 
			
		||||
    rm -R /opt/zipline
 | 
			
		||||
    mv zipline-"${RELEASE}" /opt/zipline
 | 
			
		||||
    cd /opt/zipline
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/zwave-js-ui/*
 | 
			
		||||
    cd /opt/zwave-js-ui
 | 
			
		||||
    curl -fsSL "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip" -o $(basename "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip")
 | 
			
		||||
    unzip -q zwave-js-ui-${RELEASE}-linux.zip
 | 
			
		||||
    $STD unzip zwave-js-ui-${RELEASE}-linux.zip
 | 
			
		||||
    msg_ok "Updated Z-Wave JS UI"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Alpine-tinyauth",
 | 
			
		||||
  "name": "Alpine-Tinyauth",
 | 
			
		||||
  "slug": "alpine-tinyauth",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    6
 | 
			
		||||
@@ -9,11 +9,11 @@
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": "https://tinyauth.app/docs/getting-started.html",
 | 
			
		||||
  "website": "https://tinyauth.app/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tinyauth.webp",
 | 
			
		||||
  "documentation": "https://tinyauth.app",
 | 
			
		||||
  "config_path": "/opt/tinyauth/.env",
 | 
			
		||||
  "description": "Tinyauth is a simple authentication middleware that adds simple username/password login or OAuth with Google, Github and any generic provider to all of your docker apps. It is designed for traefik but it can be extended to work with all reverse proxies like caddy and nginx.",
 | 
			
		||||
  "website": "https://tinyauth.app",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tinyauth.webp",
 | 
			
		||||
  "description": "Tinyauth is a simple authentication middleware that adds simple username/password login or OAuth with Google, Github and any generic provider to all of your docker apps.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 256,
 | 
			
		||||
        "hdd": 3,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "alpine",
 | 
			
		||||
        "version": "3.21"
 | 
			
		||||
      }
 | 
			
		||||
@@ -32,7 +32,7 @@
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 256,
 | 
			
		||||
        "hdd": 3,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "alpine",
 | 
			
		||||
        "version": "3.21"
 | 
			
		||||
      }
 | 
			
		||||
@@ -44,8 +44,8 @@
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "info",
 | 
			
		||||
      "text": "`cat ~/tinyauth.creds` to view login credentials"
 | 
			
		||||
      "text": "The default credentials are located in `/opt/tinyauth/credentials.txt`.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,44 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "authentik",
 | 
			
		||||
    "slug": "authentik",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        6
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2024-12-27",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": true,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 9000,
 | 
			
		||||
    "documentation": "https://docs.goauthentik.io/docs/",
 | 
			
		||||
    "website": "https://goauthentik.io/",
 | 
			
		||||
    "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/authentik.webp",
 | 
			
		||||
    "config_path": "/etc/authentik/config.yml",
 | 
			
		||||
    "description": "authentik is an IdP (Identity Provider) and SSO (single sign on) that is built with security at the forefront of every piece of code, every feature, with an emphasis on flexibility and versatility.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/authentik.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 6,
 | 
			
		||||
                "ram": 10240,
 | 
			
		||||
                "hdd": 12,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Authentik is very resource-heavy, it is recommended to use at least 10GB RAM anytime!",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Some updates don't work due to massive dependency errors, it's recommended to do a backup before updating or a pg_dump and a new LXC.",
 | 
			
		||||
            "type": "warning"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								frontend/public/json/backrest.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/backrest.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Backrest",
 | 
			
		||||
  "slug": "backrest",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    7
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-05-27",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 9898,
 | 
			
		||||
  "documentation": "https://garethgeorge.github.io/backrest/introduction/getting-started",
 | 
			
		||||
  "website": "https://garethgeorge.github.io/backrest",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/backrest.webp",
 | 
			
		||||
  "config_path": "/opt/backrest/config/config.json",
 | 
			
		||||
  "description": "Backrest is a web-accessible backup solution built on top of restic and providing a WebUI which wraps the restic CLI and makes it easy to create repos, browse snapshots, and restore files. Additionally, Backrest can run in the background and take an opinionated approach to scheduling snapshots and orchestrating repo health operations.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/backrest.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 8,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "info",
 | 
			
		||||
      "text": "`cat ~/.ssh/id_ed25519.pub` to view ssh public key. This key is used to authenticate with sftp targets. You can add this key on the sftp server."
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
      "script": "ct/bunkerweb.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "ram": 8192,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 8,
 | 
			
		||||
        "hdd": 10,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 12,
 | 
			
		||||
        "os": "ubuntu",
 | 
			
		||||
        "version": "22.04"
 | 
			
		||||
        "version": "24.04"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								frontend/public/json/oauth2-proxy.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								frontend/public/json/oauth2-proxy.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "OAuth2-Proxy",
 | 
			
		||||
  "slug": "oauth2-proxy",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    4,
 | 
			
		||||
    6
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-05-28",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": "https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview",
 | 
			
		||||
  "website": "https://oauth2-proxy.github.io/oauth2-proxy/",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/oauth2-proxy/oauth2-proxy/f82e90426a1881d36bf995f25de9b7b1db4c2564/docs/static/img/logos/OAuth2_Proxy_icon.svg",
 | 
			
		||||
  "config_path": "/opt/oauth2-proxy/config.toml",
 | 
			
		||||
  "description": "A reverse proxy that provides authentication with Google, Azure, OpenID Connect and many more identity providers.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/oauth2-proxy.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 3,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "This application includes a blank configuration file by default due to the wide range of available configuration options. We recommend referring to the official documentation for guidance: `https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview`. With this you can make your config.toml file accordingly to your needs.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "After changing the config restart OAuth2-Proxy with: `systemctl restart oauth2-proxy`",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								frontend/public/json/pulse.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/pulse.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Pulse",
 | 
			
		||||
  "slug": "pulse",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    9
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-05-27",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 7655,
 | 
			
		||||
  "documentation": null,
 | 
			
		||||
  "website": "https://github.com/rcourtman/Pulse",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/rcourtman/Pulse/main/src/public/logos/pulse-logo-256x256.png",
 | 
			
		||||
  "config_path": "/opt/pulse-proxmox/.env",
 | 
			
		||||
  "description": "A lightweight monitoring application for Proxmox VE that displays real-time status for VMs and containers via a simple web interface.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/pulse.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Create Proxmox-API-Token first: `https://github.com/rcourtman/Pulse?tab=readme-ov-file#creating-a-proxmox-api-token`",
 | 
			
		||||
      "type": "Info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								frontend/public/json/umbrel-os-vm.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/umbrel-os-vm.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Umbrel OS",
 | 
			
		||||
  "slug": "umbrel-os-vm",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    2
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-05-28",
 | 
			
		||||
  "type": "vm",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 80,
 | 
			
		||||
  "documentation": "https://community.umbrel.com/c/guides/",
 | 
			
		||||
  "website": "https://umbrel.com/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/umbrelos.webp",
 | 
			
		||||
  "config_path": "",
 | 
			
		||||
  "description": "Take control of your digital life with Umbrel — a private, personal server that lets you self-host powerful open source apps with ease. Whether you want to run a Bitcoin or Lightning node, manage your files with Nextcloud, stream media, block ads across your network, or explore self-hosted AI tools, Umbrel gives you full ownership and privacy. All through a beautiful, user-friendly interface — no cloud, no tracking, just your data under your control.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "vm/umbrel-os-vm.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 20,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": "umbrel",
 | 
			
		||||
    "password": "umbrel"
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "This VM use as base a Debian 12 OS with a custom kernel and some additional packages to run Umbrel OS. It is not a standard Debian VM, but it is optimized for Umbrel OS.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -32,7 +32,7 @@
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 256,
 | 
			
		||||
        "hdd": 0.5,
 | 
			
		||||
        "hdd": 1,
 | 
			
		||||
        "os": "alpine",
 | 
			
		||||
        "version": "3.21"
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,278 @@
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.5.3",
 | 
			
		||||
    "date": "2025-05-23T15:10:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "kimai/kimai",
 | 
			
		||||
    "version": "2.35.1",
 | 
			
		||||
    "date": "2025-05-31T15:05:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "prometheus/prometheus",
 | 
			
		||||
    "version": "v3.4.1",
 | 
			
		||||
    "date": "2025-05-31T13:45:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "BookStackApp/BookStack",
 | 
			
		||||
    "version": "v25.05",
 | 
			
		||||
    "date": "2025-05-31T13:36:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Forceu/Gokapi",
 | 
			
		||||
    "version": "v2.0.0",
 | 
			
		||||
    "date": "2025-05-31T12:32:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "blakeblackshear/frigate",
 | 
			
		||||
    "version": "v0.14.1",
 | 
			
		||||
    "date": "2024-08-29T22:32:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.2.16",
 | 
			
		||||
    "date": "2025-05-27T16:27:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.22.1974",
 | 
			
		||||
    "date": "2025-05-31T05:50:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "goauthentik/authentik",
 | 
			
		||||
    "version": "version/2025.4.1",
 | 
			
		||||
    "date": "2025-05-15T17:48:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pi-hole/pi-hole",
 | 
			
		||||
    "version": "v6.1",
 | 
			
		||||
    "date": "2025-05-30T22:07:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "moghtech/komodo",
 | 
			
		||||
    "version": "v1.18.0",
 | 
			
		||||
    "date": "2025-05-30T20:12:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "homarr-labs/homarr",
 | 
			
		||||
    "version": "v1.22.0",
 | 
			
		||||
    "date": "2025-05-30T19:17:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "emqx/emqx",
 | 
			
		||||
    "version": "e5.10.0-beta.1",
 | 
			
		||||
    "date": "2025-05-30T16:49:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "msgbyte/tianji",
 | 
			
		||||
    "version": "v1.21.2",
 | 
			
		||||
    "date": "2025-05-30T15:17:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "element-hq/synapse",
 | 
			
		||||
    "version": "test-pro",
 | 
			
		||||
    "date": "2025-05-30T14:53:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "icereed/paperless-gpt",
 | 
			
		||||
    "version": "v0.20.0",
 | 
			
		||||
    "date": "2025-05-30T14:39:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "evcc-io/evcc",
 | 
			
		||||
    "version": "0.204.0",
 | 
			
		||||
    "date": "2025-05-30T14:39:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "coverity-w22-4.13.0",
 | 
			
		||||
    "date": "2025-05-26T15:04:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.2.5",
 | 
			
		||||
    "date": "2025-05-28T06:49:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v25.0",
 | 
			
		||||
    "date": "2025-05-12T09:12:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "binwiederhier/ntfy",
 | 
			
		||||
    "version": "v2.12.0",
 | 
			
		||||
    "date": "2025-05-30T00:26:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "VictoriaMetrics/VictoriaMetrics",
 | 
			
		||||
    "version": "v1.23.2-victorialogs",
 | 
			
		||||
    "date": "2025-05-29T22:26:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "open-webui/open-webui",
 | 
			
		||||
    "version": "v0.6.11",
 | 
			
		||||
    "date": "2025-05-26T22:27:26Z"
 | 
			
		||||
    "version": "v0.6.13",
 | 
			
		||||
    "date": "2025-05-29T21:37:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gristlabs/grist-core",
 | 
			
		||||
    "version": "v1.6.0",
 | 
			
		||||
    "date": "2025-05-29T19:11:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "navidrome/navidrome",
 | 
			
		||||
    "version": "v0.56.1",
 | 
			
		||||
    "date": "2025-05-29T19:09:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "tailscale/tailscale",
 | 
			
		||||
    "version": "v1.84.1",
 | 
			
		||||
    "date": "2025-05-29T17:41:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.36.5",
 | 
			
		||||
    "date": "2025-05-29T17:06:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "FlowiseAI/Flowise",
 | 
			
		||||
    "version": "flowise@3.0.1",
 | 
			
		||||
    "date": "2025-05-29T17:00:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.94.1",
 | 
			
		||||
    "date": "2025-05-27T10:36:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "syncthing/syncthing",
 | 
			
		||||
    "version": "v1.29.6",
 | 
			
		||||
    "date": "2025-05-06T07:57:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mattermost/mattermost",
 | 
			
		||||
    "version": "server/public/v0.1.14",
 | 
			
		||||
    "date": "2025-05-29T15:35:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "readeck/readeck",
 | 
			
		||||
    "version": "0.19.2",
 | 
			
		||||
    "date": "2025-05-29T14:39:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zwave-js/zwave-js-ui",
 | 
			
		||||
    "version": "v10.6.1",
 | 
			
		||||
    "date": "2025-05-29T13:36:09Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "runtipi/runtipi",
 | 
			
		||||
    "version": "v4.1.1",
 | 
			
		||||
    "date": "2025-05-16T17:37:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.1.0.119-2.1.0.119_canary_2025-05-29",
 | 
			
		||||
    "date": "2025-05-29T06:14:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.9.0",
 | 
			
		||||
    "date": "2025-05-29T05:41:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "webmin/webmin",
 | 
			
		||||
    "version": "2.400",
 | 
			
		||||
    "date": "2025-05-28T22:36:05Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "apache/cassandra",
 | 
			
		||||
    "version": "cassandra-4.0.18",
 | 
			
		||||
    "date": "2025-05-28T21:45:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r6.0.24",
 | 
			
		||||
    "date": "2025-05-28T21:25:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "influxdata/influxdb",
 | 
			
		||||
    "version": "v3.1.0",
 | 
			
		||||
    "date": "2025-05-28T18:48:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jenkinsci/jenkins",
 | 
			
		||||
    "version": "jenkins-2.504.2",
 | 
			
		||||
    "date": "2025-05-28T14:36:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pocket-id/pocket-id",
 | 
			
		||||
    "version": "v1.1.0",
 | 
			
		||||
    "date": "2025-05-28T09:39:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v2.71.11",
 | 
			
		||||
    "date": "2025-05-28T09:16:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Checkmk/checkmk",
 | 
			
		||||
    "version": "v2.2.0p43-rc1",
 | 
			
		||||
    "date": "2025-05-28T06:23:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Athou/commafeed",
 | 
			
		||||
    "version": "5.10.0",
 | 
			
		||||
    "date": "2025-05-28T05:48:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.12.6",
 | 
			
		||||
    "date": "2025-05-28T00:13:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bluenviron/mediamtx",
 | 
			
		||||
    "version": "v1.12.3",
 | 
			
		||||
    "date": "2025-05-27T20:43:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Threadfin/Threadfin",
 | 
			
		||||
    "version": "1.2.34",
 | 
			
		||||
    "date": "2025-05-27T18:18:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "immich-app/immich",
 | 
			
		||||
    "version": "v1.134.0",
 | 
			
		||||
    "date": "2025-05-27T17:28:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "neo4j/neo4j",
 | 
			
		||||
    "version": "5.26.7",
 | 
			
		||||
    "date": "2025-05-27T14:59:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "redis/redis",
 | 
			
		||||
    "version": "7.2.9",
 | 
			
		||||
    "date": "2025-05-27T14:08:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "traefik/traefik",
 | 
			
		||||
    "version": "v3.4.1",
 | 
			
		||||
    "date": "2025-05-27T12:53:58Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "AdguardTeam/AdGuardHome",
 | 
			
		||||
    "version": "v0.107.62",
 | 
			
		||||
    "date": "2025-05-27T12:10:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "esphome/esphome",
 | 
			
		||||
    "version": "2025.5.1",
 | 
			
		||||
    "date": "2025-05-27T09:01:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "semaphoreui/semaphore",
 | 
			
		||||
    "version": "v2.14.12",
 | 
			
		||||
    "date": "2025-05-27T03:58:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Radarr/Radarr",
 | 
			
		||||
@@ -14,81 +284,26 @@
 | 
			
		||||
    "version": "1.34.1",
 | 
			
		||||
    "date": "2025-05-26T21:40:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.5.3",
 | 
			
		||||
    "date": "2025-05-23T15:10:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mattermost/mattermost",
 | 
			
		||||
    "version": "mattermost-redux@10.8.0",
 | 
			
		||||
    "date": "2025-05-26T19:17:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "semaphoreui/semaphore",
 | 
			
		||||
    "version": "v2.14.12",
 | 
			
		||||
    "date": "2025-05-26T19:08:26Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "dgtlmoon/changedetection.io",
 | 
			
		||||
    "version": "0.49.18",
 | 
			
		||||
    "date": "2025-05-26T18:36:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.2.15",
 | 
			
		||||
    "date": "2025-05-25T05:11:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MediaBrowser/Emby.Releases",
 | 
			
		||||
    "version": "4.8.11.0",
 | 
			
		||||
    "date": "2025-03-10T06:39:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v25.0",
 | 
			
		||||
    "date": "2025-05-12T09:12:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zitadel/zitadel",
 | 
			
		||||
    "version": "v3.2.1",
 | 
			
		||||
    "date": "2025-05-26T14:27:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jupyter/notebook",
 | 
			
		||||
    "version": "v7.4.3",
 | 
			
		||||
    "date": "2025-05-26T14:27:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Checkmk/checkmk",
 | 
			
		||||
    "version": "v2.3.0p33",
 | 
			
		||||
    "date": "2025-05-26T13:57:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "syncthing/syncthing",
 | 
			
		||||
    "version": "v1.29.6",
 | 
			
		||||
    "date": "2025-05-06T07:57:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "VictoriaMetrics/VictoriaMetrics",
 | 
			
		||||
    "version": "pmm-6401-v1.118.0",
 | 
			
		||||
    "date": "2025-05-26T13:09:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.91.3",
 | 
			
		||||
    "date": "2025-05-08T12:25:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Graylog2/graylog2-server",
 | 
			
		||||
    "version": "6.3.0-beta.3",
 | 
			
		||||
    "date": "2025-05-26T12:40:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "AdguardTeam/AdGuardHome",
 | 
			
		||||
    "version": "v0.107.61",
 | 
			
		||||
    "date": "2025-04-22T12:42:26Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "OliveTin/OliveTin",
 | 
			
		||||
    "version": "2025.5.26",
 | 
			
		||||
@@ -104,26 +319,11 @@
 | 
			
		||||
    "version": "v1.5.2",
 | 
			
		||||
    "date": "2025-05-11T16:40:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.22.1951",
 | 
			
		||||
    "date": "2025-05-26T05:51:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "stonith404/pingvin-share",
 | 
			
		||||
    "version": "v1.13.0",
 | 
			
		||||
    "date": "2025-05-25T20:21:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "msgbyte/tianji",
 | 
			
		||||
    "version": "v1.21.0",
 | 
			
		||||
    "date": "2025-05-25T16:41:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cross-seed/cross-seed",
 | 
			
		||||
    "version": "v6.12.5",
 | 
			
		||||
    "date": "2025-05-17T02:52:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Prowlarr/Prowlarr",
 | 
			
		||||
    "version": "v1.36.3.5071",
 | 
			
		||||
@@ -134,11 +334,6 @@
 | 
			
		||||
    "version": "v2.11.2.4629",
 | 
			
		||||
    "date": "2025-04-28T11:59:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "runtipi/runtipi",
 | 
			
		||||
    "version": "nightly",
 | 
			
		||||
    "date": "2025-05-25T09:44:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Kozea/Radicale",
 | 
			
		||||
    "version": "v3.5.4",
 | 
			
		||||
@@ -149,11 +344,6 @@
 | 
			
		||||
    "version": "v4.39.4",
 | 
			
		||||
    "date": "2025-05-25T02:27:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pocket-id/pocket-id",
 | 
			
		||||
    "version": "v1.0.0",
 | 
			
		||||
    "date": "2025-05-24T22:06:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "minio/minio",
 | 
			
		||||
    "version": "RELEASE.2025-05-24T17-08-30Z",
 | 
			
		||||
@@ -179,21 +369,6 @@
 | 
			
		||||
    "version": "v6.7.1",
 | 
			
		||||
    "date": "2025-05-24T04:51:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "homarr-labs/homarr",
 | 
			
		||||
    "version": "v1.21.0",
 | 
			
		||||
    "date": "2025-05-23T19:17:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "immich-app/immich",
 | 
			
		||||
    "version": "v1.133.1",
 | 
			
		||||
    "date": "2025-05-23T18:14:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Threadfin/Threadfin",
 | 
			
		||||
    "version": "1.2.33",
 | 
			
		||||
    "date": "2025-05-23T15:59:05Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "docker/compose",
 | 
			
		||||
    "version": "v2.36.2",
 | 
			
		||||
@@ -204,21 +379,6 @@
 | 
			
		||||
    "version": "v8.1.4",
 | 
			
		||||
    "date": "2025-05-23T12:29:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "v4.10.2",
 | 
			
		||||
    "date": "2025-05-23T11:56:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.0.12",
 | 
			
		||||
    "date": "2025-05-15T14:06:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.7.1-rc2",
 | 
			
		||||
    "date": "2025-05-23T01:53:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rogerfar/rdt-client",
 | 
			
		||||
    "version": "v2.0.113",
 | 
			
		||||
@@ -239,16 +399,6 @@
 | 
			
		||||
    "version": "mariadb-11.4.7",
 | 
			
		||||
    "date": "2025-05-22T14:22:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "neo4j/neo4j",
 | 
			
		||||
    "version": "4.4.44",
 | 
			
		||||
    "date": "2025-05-22T13:58:43Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "apache/cassandra",
 | 
			
		||||
    "version": "4.0.18-tentative",
 | 
			
		||||
    "date": "2025-05-22T11:46:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "0xERR0R/blocky",
 | 
			
		||||
    "version": "v0.26.2",
 | 
			
		||||
@@ -264,21 +414,11 @@
 | 
			
		||||
    "version": "3.2.0-rc2",
 | 
			
		||||
    "date": "2025-05-21T20:09:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "tailscale/tailscale",
 | 
			
		||||
    "version": "v1.84.0",
 | 
			
		||||
    "date": "2025-05-21T19:39:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "clusterzx/paperless-ai",
 | 
			
		||||
    "version": "v3.0.4",
 | 
			
		||||
    "date": "2025-05-21T19:03:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r8.0.10-rc0",
 | 
			
		||||
    "date": "2025-05-21T18:22:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ipfs/kubo",
 | 
			
		||||
    "version": "v0.35.0",
 | 
			
		||||
@@ -299,11 +439,6 @@
 | 
			
		||||
    "version": "10.0.18",
 | 
			
		||||
    "date": "2025-02-12T11:07:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "esphome/esphome",
 | 
			
		||||
    "version": "2025.5.0",
 | 
			
		||||
    "date": "2025-05-21T08:32:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "inventree/InvenTree",
 | 
			
		||||
    "version": "0.17.12",
 | 
			
		||||
@@ -314,26 +449,11 @@
 | 
			
		||||
    "version": "v4.1.0",
 | 
			
		||||
    "date": "2025-05-21T04:12:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "icereed/paperless-gpt",
 | 
			
		||||
    "version": "v0.19.0",
 | 
			
		||||
    "date": "2025-05-21T03:46:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "matze/wastebin",
 | 
			
		||||
    "version": "3.1.0",
 | 
			
		||||
    "date": "2025-05-20T19:20:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jenkinsci/jenkins",
 | 
			
		||||
    "version": "jenkins-2.511",
 | 
			
		||||
    "date": "2025-05-20T15:39:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "element-hq/synapse",
 | 
			
		||||
    "version": "v1.130.0",
 | 
			
		||||
    "date": "2025-05-20T15:33:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "documenso/documenso",
 | 
			
		||||
    "version": "v1.11.1",
 | 
			
		||||
@@ -354,11 +474,6 @@
 | 
			
		||||
    "version": "v4.4.9",
 | 
			
		||||
    "date": "2025-05-20T00:08:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.36.4",
 | 
			
		||||
    "date": "2025-05-19T22:28:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "glanceapp/glance",
 | 
			
		||||
    "version": "v0.8.3",
 | 
			
		||||
@@ -369,11 +484,6 @@
 | 
			
		||||
    "version": "v1.6.1",
 | 
			
		||||
    "date": "2025-03-15T17:29:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Forceu/Gokapi",
 | 
			
		||||
    "version": "v1.9.6",
 | 
			
		||||
    "date": "2024-12-18T14:35:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Part-DB/Part-DB-server",
 | 
			
		||||
    "version": "v1.17.1",
 | 
			
		||||
@@ -389,11 +499,6 @@
 | 
			
		||||
    "version": "debian/12.1.6.1",
 | 
			
		||||
    "date": "2025-05-18T17:01:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "kimai/kimai",
 | 
			
		||||
    "version": "2.34.0",
 | 
			
		||||
    "date": "2025-05-18T13:22:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "hansmi/prometheus-paperless-exporter",
 | 
			
		||||
    "version": "v0.0.8",
 | 
			
		||||
@@ -404,26 +509,11 @@
 | 
			
		||||
    "version": "v25.05.2",
 | 
			
		||||
    "date": "2025-05-17T12:53:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "BookStackApp/BookStack",
 | 
			
		||||
    "version": "v25.02.5",
 | 
			
		||||
    "date": "2025-05-17T11:24:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Paymenter/Paymenter",
 | 
			
		||||
    "version": "v1.1.1",
 | 
			
		||||
    "date": "2025-05-17T10:10:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "evcc-io/evcc",
 | 
			
		||||
    "version": "0.203.6",
 | 
			
		||||
    "date": "2025-05-17T07:30:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "prometheus/prometheus",
 | 
			
		||||
    "version": "v0.304.0",
 | 
			
		||||
    "date": "2025-05-17T07:29:09Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "advplyr/audiobookshelf",
 | 
			
		||||
    "version": "v2.23.0",
 | 
			
		||||
@@ -434,21 +524,11 @@
 | 
			
		||||
    "version": "v4.4.1",
 | 
			
		||||
    "date": "2025-05-16T16:37:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "influxdata/influxdb",
 | 
			
		||||
    "version": "v3.0.3",
 | 
			
		||||
    "date": "2025-05-16T15:41:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wavelog/wavelog",
 | 
			
		||||
    "version": "2.0.4",
 | 
			
		||||
    "date": "2025-05-16T15:09:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "emqx/emqx",
 | 
			
		||||
    "version": "e5.10.0-alpha.1",
 | 
			
		||||
    "date": "2025-05-16T13:30:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gotson/komga",
 | 
			
		||||
    "version": "1.21.3",
 | 
			
		||||
@@ -459,11 +539,6 @@
 | 
			
		||||
    "version": "v4.100.2",
 | 
			
		||||
    "date": "2025-05-15T23:02:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "goauthentik/authentik",
 | 
			
		||||
    "version": "version/2025.4.1",
 | 
			
		||||
    "date": "2025-05-15T17:48:29Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cloudflare/cloudflared",
 | 
			
		||||
    "version": "2025.5.0",
 | 
			
		||||
@@ -474,26 +549,11 @@
 | 
			
		||||
    "version": "v3.1.1",
 | 
			
		||||
    "date": "2025-05-15T15:17:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zwave-js/zwave-js-ui",
 | 
			
		||||
    "version": "v10.5.1",
 | 
			
		||||
    "date": "2025-05-15T09:59:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "FlowiseAI/Flowise",
 | 
			
		||||
    "version": "flowise@3.0.0",
 | 
			
		||||
    "date": "2025-05-15T01:49:47Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Ombi-app/Ombi",
 | 
			
		||||
    "version": "v4.47.1",
 | 
			
		||||
    "date": "2025-01-05T21:14:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Athou/commafeed",
 | 
			
		||||
    "version": "5.9.0",
 | 
			
		||||
    "date": "2025-05-14T15:29:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "juanfont/headscale",
 | 
			
		||||
    "version": "v0.26.0",
 | 
			
		||||
@@ -504,11 +564,6 @@
 | 
			
		||||
    "version": "0.42.1",
 | 
			
		||||
    "date": "2020-06-07T07:27:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "blakeblackshear/frigate",
 | 
			
		||||
    "version": "v0.14.1",
 | 
			
		||||
    "date": "2024-08-29T22:32:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TandoorRecipes/recipes",
 | 
			
		||||
    "version": "2.0.0-alpha-4",
 | 
			
		||||
@@ -524,11 +579,6 @@
 | 
			
		||||
    "version": "1.11.1",
 | 
			
		||||
    "date": "2025-05-13T13:32:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "redis/redis",
 | 
			
		||||
    "version": "8.0.1",
 | 
			
		||||
    "date": "2025-05-13T13:31:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "go-gitea/gitea",
 | 
			
		||||
    "version": "v1.23.8",
 | 
			
		||||
@@ -539,11 +589,6 @@
 | 
			
		||||
    "version": "v2025-05-11",
 | 
			
		||||
    "date": "2025-05-12T19:14:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.1.0.118-2.1.0.118_canary_2025-05-12",
 | 
			
		||||
    "date": "2025-05-12T18:50:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "usememos/memos",
 | 
			
		||||
    "version": "v0.24.3",
 | 
			
		||||
@@ -584,11 +629,6 @@
 | 
			
		||||
    "version": "10.1.41",
 | 
			
		||||
    "date": "2025-05-08T12:45:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "readeck/readeck",
 | 
			
		||||
    "version": "0.18.2",
 | 
			
		||||
    "date": "2025-05-07T19:22:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "donaldzou/WGDashboard",
 | 
			
		||||
    "version": "v4.2.3",
 | 
			
		||||
@@ -614,11 +654,6 @@
 | 
			
		||||
    "version": "v0.19.0",
 | 
			
		||||
    "date": "2025-05-06T18:05:42Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bluenviron/mediamtx",
 | 
			
		||||
    "version": "v1.12.2",
 | 
			
		||||
    "date": "2025-05-06T15:30:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "linkwarden/linkwarden",
 | 
			
		||||
    "version": "v2.10.2",
 | 
			
		||||
@@ -644,16 +679,6 @@
 | 
			
		||||
    "version": "3.5.0",
 | 
			
		||||
    "date": "2025-05-05T16:28:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "traefik/traefik",
 | 
			
		||||
    "version": "v3.4.0",
 | 
			
		||||
    "date": "2025-05-05T13:59:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "moghtech/komodo",
 | 
			
		||||
    "version": "v1.17.5",
 | 
			
		||||
    "date": "2025-05-04T22:17:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Readarr/Readarr",
 | 
			
		||||
    "version": "v2.0.0.4645",
 | 
			
		||||
@@ -709,11 +734,6 @@
 | 
			
		||||
    "version": "2025.3",
 | 
			
		||||
    "date": "2025-04-30T02:52:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gristlabs/grist-core",
 | 
			
		||||
    "version": "v1.5.2",
 | 
			
		||||
    "date": "2025-04-29T20:42:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "hargata/lubelog",
 | 
			
		||||
    "version": "v1.4.7",
 | 
			
		||||
@@ -874,11 +894,6 @@
 | 
			
		||||
    "version": "2.3",
 | 
			
		||||
    "date": "2025-04-05T18:05:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "navidrome/navidrome",
 | 
			
		||||
    "version": "v0.55.2",
 | 
			
		||||
    "date": "2025-04-05T12:07:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MagicMirrorOrg/MagicMirror",
 | 
			
		||||
    "version": "v2.31.0",
 | 
			
		||||
@@ -899,11 +914,6 @@
 | 
			
		||||
    "version": "1.5.0",
 | 
			
		||||
    "date": "2025-03-30T17:42:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pi-hole/pi-hole",
 | 
			
		||||
    "version": "v6.0.6",
 | 
			
		||||
    "date": "2025-03-30T16:59:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "aceberg/WatchYourLAN",
 | 
			
		||||
    "version": "2.1.2-alpine",
 | 
			
		||||
@@ -964,11 +974,6 @@
 | 
			
		||||
    "version": "v4.0.14.2939",
 | 
			
		||||
    "date": "2025-03-17T19:12:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "webmin/webmin",
 | 
			
		||||
    "version": "2.303",
 | 
			
		||||
    "date": "2025-03-17T04:54:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "transmission/transmission",
 | 
			
		||||
    "version": "4.0.1-beta.1",
 | 
			
		||||
@@ -1214,11 +1219,6 @@
 | 
			
		||||
    "version": "v1.0.9",
 | 
			
		||||
    "date": "2024-05-21T22:15:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "binwiederhier/ntfy",
 | 
			
		||||
    "version": "v2.11.0",
 | 
			
		||||
    "date": "2024-05-13T20:19:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pterodactyl/wings",
 | 
			
		||||
    "version": "v1.11.13",
 | 
			
		||||
 
 | 
			
		||||
@@ -14,11 +14,8 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  lsb-release \
 | 
			
		||||
  gpg
 | 
			
		||||
 | 
			
		||||
  lsb-release
 | 
			
		||||
curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/deb.sury.org-php.gpg
 | 
			
		||||
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" >/etc/apt/sources.list.d/php.list
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
@@ -26,17 +23,18 @@ $STD apt-get update
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  nginx \
 | 
			
		||||
  composer \
 | 
			
		||||
  php8.3-{bcmath,common,ctype,curl,fileinfo,fpm,gd,intl,mbstring,mysql,xml,cli} \
 | 
			
		||||
  mariadb-server
 | 
			
		||||
  php8.3-{bcmath,common,ctype,curl,fileinfo,fpm,gd,intl,mbstring,mysql,xml,cli}
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
install_mariadb
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Database"
 | 
			
		||||
DB_NAME=2fauth_db
 | 
			
		||||
DB_USER=2fauth
 | 
			
		||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
 | 
			
		||||
$STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
 | 
			
		||||
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
 | 
			
		||||
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
 | 
			
		||||
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
 | 
			
		||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
 | 
			
		||||
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
 | 
			
		||||
{
 | 
			
		||||
  echo "2FAuth Credentials"
 | 
			
		||||
  echo "Database User: $DB_USER"
 | 
			
		||||
@@ -47,8 +45,8 @@ msg_ok "Set up Database"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup 2FAuth"
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
curl -fsSL "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
unzip -q "${RELEASE}.zip"
 | 
			
		||||
curl -fsSL "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip" -o "${RELEASE}.zip"
 | 
			
		||||
$STD unzip "${RELEASE}.zip"
 | 
			
		||||
mv "2FAuth-${RELEASE//v/}/" /opt/2fauth
 | 
			
		||||
 | 
			
		||||
cd "/opt/2fauth" || return
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,6 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  gpg \
 | 
			
		||||
  gdal-bin \
 | 
			
		||||
  libgdal-dev \
 | 
			
		||||
  git \
 | 
			
		||||
@@ -24,25 +23,10 @@ $STD apt-get install -y \
 | 
			
		||||
  python3-pip
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Node.js Repository"
 | 
			
		||||
mkdir -p /etc/apt/keyrings
 | 
			
		||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
 | 
			
		||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
 | 
			
		||||
msg_ok "Set up Node.js Repository"
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="pnpm@latest" install_node_and_modules
 | 
			
		||||
PG_VERSION="16" PG_MODULES="postgis" install_postgresql
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up PostgreSQL Repository"
 | 
			
		||||
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
 | 
			
		||||
echo "deb https://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" >/etc/apt/sources.list.d/pgdg.list
 | 
			
		||||
msg_ok "Set up PostgreSQL Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Node.js"
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y nodejs
 | 
			
		||||
$STD npm install -g pnpm
 | 
			
		||||
msg_ok "Installed Node.js"
 | 
			
		||||
 | 
			
		||||
msg_info "Install/Set up PostgreSQL Database"
 | 
			
		||||
$STD apt-get install -y postgresql-16 postgresql-16-postgis
 | 
			
		||||
msg_info "Set up PostgreSQL Database"
 | 
			
		||||
DB_NAME="adventurelog_db"
 | 
			
		||||
DB_USER="adventurelog_user"
 | 
			
		||||
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
 | 
			
		||||
@@ -68,8 +52,8 @@ DJANGO_ADMIN_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
 | 
			
		||||
LOCAL_IP="$(hostname -I | awk '{print $1}')"
 | 
			
		||||
cd /opt
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
unzip -q v${RELEASE}.zip
 | 
			
		||||
curl -fsSL "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
 | 
			
		||||
$STD unzip v${RELEASE}.zip
 | 
			
		||||
mv AdventureLog-${RELEASE} /opt/adventurelog
 | 
			
		||||
cat <<EOF >/opt/adventurelog/backend/server/.env
 | 
			
		||||
PGHOST='localhost'
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,6 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y unzip
 | 
			
		||||
$STD apt-get install -y apt-transport-https
 | 
			
		||||
$STD apt-get install -y alsa-utils
 | 
			
		||||
$STD apt-get install -y libxext-dev
 | 
			
		||||
 
 | 
			
		||||
@@ -14,12 +14,7 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add newt
 | 
			
		||||
$STD apk add curl
 | 
			
		||||
$STD apk add openssh
 | 
			
		||||
$STD apk add tzdata
 | 
			
		||||
$STD apk add nano
 | 
			
		||||
$STD apk add mc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Docker"
 | 
			
		||||
 
 | 
			
		||||
@@ -13,17 +13,6 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add \
 | 
			
		||||
    newt \
 | 
			
		||||
    curl \
 | 
			
		||||
    openssh \
 | 
			
		||||
    nano \
 | 
			
		||||
    mc \
 | 
			
		||||
    gpg
 | 
			
		||||
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Gitea"
 | 
			
		||||
$STD apk add --no-cache gitea
 | 
			
		||||
msg_ok "Installed Gitea"
 | 
			
		||||
 
 | 
			
		||||
@@ -13,14 +13,6 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add newt
 | 
			
		||||
$STD apk add curl
 | 
			
		||||
$STD apk add openssh
 | 
			
		||||
$STD apk add nano
 | 
			
		||||
$STD apk add mc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Grafana"
 | 
			
		||||
$STD apk add grafana
 | 
			
		||||
$STD sed -i '/http_addr/s/127.0.0.1/0.0.0.0/g' /etc/conf.d/grafana
 | 
			
		||||
 
 | 
			
		||||
@@ -14,11 +14,7 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add newt
 | 
			
		||||
$STD apk add curl
 | 
			
		||||
$STD apk add openssh
 | 
			
		||||
$STD apk add nano
 | 
			
		||||
$STD apk add mc
 | 
			
		||||
$STD apk add sudo
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
 
 | 
			
		||||
@@ -14,12 +14,7 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add \
 | 
			
		||||
  curl \
 | 
			
		||||
  mc \
 | 
			
		||||
  openssh \
 | 
			
		||||
  nginx \
 | 
			
		||||
  unzip
 | 
			
		||||
$STD apk add nginx
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing IT-Tools"
 | 
			
		||||
@@ -28,7 +23,7 @@ DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE
 | 
			
		||||
 | 
			
		||||
curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
			
		||||
mkdir -p /usr/share/nginx/html
 | 
			
		||||
unzip -q it-tools.zip -d /tmp/it-tools
 | 
			
		||||
$STD unzip it-tools.zip -d /tmp/it-tools
 | 
			
		||||
cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
			
		||||
cat <<'EOF' >/etc/nginx/http.d/default.conf
 | 
			
		||||
server {
 | 
			
		||||
 
 | 
			
		||||
@@ -13,12 +13,6 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add \
 | 
			
		||||
  gpg \
 | 
			
		||||
  sudo
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing MariaDB"
 | 
			
		||||
$STD apk add --no-cache mariadb mariadb-client
 | 
			
		||||
$STD rc-update add mariadb default
 | 
			
		||||
 
 | 
			
		||||
@@ -14,12 +14,7 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add newt
 | 
			
		||||
$STD apk add curl
 | 
			
		||||
$STD apk add openssl
 | 
			
		||||
$STD apk add openssh
 | 
			
		||||
$STD apk add nano
 | 
			
		||||
$STD apk add mc
 | 
			
		||||
$STD apk add nginx
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
@@ -53,7 +48,7 @@ $STD apk add nextcloud-mysql mariadb mariadb-client
 | 
			
		||||
$STD mariadb-install-db --user=mysql --datadir=/var/lib/mysql
 | 
			
		||||
$STD service mariadb start
 | 
			
		||||
$STD rc-update add mariadb
 | 
			
		||||
mysql -uroot -p"$ADMIN_PASS" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '$ADMIN_PASS' WITH GRANT OPTION; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'; CREATE DATABASE $DB_NAME; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS'; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost.localdomain' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;"
 | 
			
		||||
mariadb -uroot -p"$ADMIN_PASS" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '$ADMIN_PASS' WITH GRANT OPTION; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'; CREATE DATABASE $DB_NAME; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS'; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost.localdomain' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;"
 | 
			
		||||
$STD apk del mariadb-client
 | 
			
		||||
msg_ok "Installed MySQL Database"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,6 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add --no-cache \
 | 
			
		||||
  gpg \
 | 
			
		||||
  git \
 | 
			
		||||
  nodejs \
 | 
			
		||||
  npm
 | 
			
		||||
@@ -45,16 +44,17 @@ command="/usr/local/bin/node-red"
 | 
			
		||||
command_args="--max-old-space-size=128 -v"
 | 
			
		||||
command_user="nodered"
 | 
			
		||||
pidfile="/var/run/nodered.pid"
 | 
			
		||||
command_background="yes"
 | 
			
		||||
 | 
			
		||||
depend() {
 | 
			
		||||
    use net
 | 
			
		||||
}' >$service_path
 | 
			
		||||
 | 
			
		||||
chmod +x $service_path
 | 
			
		||||
$STD rc-update add nodered default
 | 
			
		||||
msg_ok "Created Node-RED Service"
 | 
			
		||||
 | 
			
		||||
msg_info "Starting Node-RED"
 | 
			
		||||
$STD rc-update add nodered
 | 
			
		||||
$STD rc-service nodered start
 | 
			
		||||
msg_ok "Started Node-RED"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,11 +13,6 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add \
 | 
			
		||||
    gpg
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Prometheus"
 | 
			
		||||
$STD apk add --no-cache prometheus
 | 
			
		||||
msg_ok "Installed Prometheus"
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,6 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing dependencies"
 | 
			
		||||
$STD apk add --no-cache \
 | 
			
		||||
  unzip \
 | 
			
		||||
  apache2-utils
 | 
			
		||||
msg_ok "Installed dependencies"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,17 +13,6 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add \
 | 
			
		||||
	newt \
 | 
			
		||||
	curl \
 | 
			
		||||
	openssh \
 | 
			
		||||
	nano \
 | 
			
		||||
	mc \
 | 
			
		||||
	gpg
 | 
			
		||||
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Redis"
 | 
			
		||||
$STD apk add redis
 | 
			
		||||
$STD sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis.conf
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# Author: Slaviša Arežina (tremor021) | Co-Author: Stavros (steveiliop56)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/steveiliop56/tinyauth
 | 
			
		||||
 | 
			
		||||
@@ -14,45 +14,44 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add --no-cache \
 | 
			
		||||
  npm \
 | 
			
		||||
  curl \
 | 
			
		||||
  go
 | 
			
		||||
$STD apk add --no-cache curl openssl apache2-utils
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing tinyauth"
 | 
			
		||||
temp_file=$(mktemp)
 | 
			
		||||
$STD npm install -g bun
 | 
			
		||||
msg_info "Installing Tinyauth"
 | 
			
		||||
mkdir -p /opt/tinyauth
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/steveiliop56/tinyauth/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
tar -xzf "$temp_file" -C /opt/tinyauth --strip-components=1
 | 
			
		||||
cd /opt/tinyauth/frontend
 | 
			
		||||
$STD bun install
 | 
			
		||||
$STD bun run build
 | 
			
		||||
mv dist /opt/tinyauth/internal/assets/
 | 
			
		||||
cd /opt/tinyauth
 | 
			
		||||
$STD go mod download
 | 
			
		||||
CGO_ENABLED=0 go build -ldflags "-s -w"
 | 
			
		||||
{
 | 
			
		||||
  echo "tinyauth Credentials"
 | 
			
		||||
  echo "Username: admin@example.com"
 | 
			
		||||
  echo "Password: admin"
 | 
			
		||||
} >>~/tinyauth.creds
 | 
			
		||||
echo "${RELEASE}" >/opt/tinyauth_version.txt
 | 
			
		||||
msg_ok "Installed tinyauth"
 | 
			
		||||
 | 
			
		||||
msg_info "Enabling tinyauth Service"
 | 
			
		||||
SECRET=$(head -c 16 /dev/urandom | xxd -p -c 16 | tr -d '\n')
 | 
			
		||||
{
 | 
			
		||||
  echo "SECRET=${SECRET}"
 | 
			
		||||
  echo "USERS=admin@example.com:\$2a\$10\$CrTK.W7WXSClo3ZY1yJUFupg5UdV8WNcynEhZhJFNjhGQB.Ga0ZDm"
 | 
			
		||||
  echo "APP_URL=http://localhost:3000"
 | 
			
		||||
} >>/opt/tinyauth/.env
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
 | 
			
		||||
chmod +x /opt/tinyauth/tinyauth
 | 
			
		||||
 | 
			
		||||
PASSWORD=$(openssl rand -base64 8 | tr -dc 'a-zA-Z0-9' | head -c 8)
 | 
			
		||||
USER=$(htpasswd -Bbn "tinyauth" "${PASSWORD}")
 | 
			
		||||
 | 
			
		||||
cat <<EOF > /opt/tinyauth/credentials.txt
 | 
			
		||||
Tinyauth Credentials
 | 
			
		||||
Username: tinyauth
 | 
			
		||||
Password: ${PASSWORD}
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
echo "${RELEASE}" >/opt/tinyauth_version.txt
 | 
			
		||||
msg_ok "Installed Tinyauth"
 | 
			
		||||
 | 
			
		||||
read -p "${TAB3}Enter your Tinyauth subdomain (e.g. https://tinyauth.example.com): " app_url
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Tinyauth Service"
 | 
			
		||||
SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32)
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/opt/tinyauth/.env
 | 
			
		||||
SECRET=${SECRET}
 | 
			
		||||
USERS=${USER}
 | 
			
		||||
APP_URL=${app_url}
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
sed -i -e 's/\$/\$\$/g' /opt/tinyauth/.env
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/init.d/tinyauth
 | 
			
		||||
#!/sbin/openrc-run
 | 
			
		||||
description="tinyauth Service"
 | 
			
		||||
description="Tinyauth Service"
 | 
			
		||||
 | 
			
		||||
command="/opt/tinyauth/tinyauth"
 | 
			
		||||
directory="/opt/tinyauth"
 | 
			
		||||
@@ -73,11 +72,11 @@ EOF
 | 
			
		||||
 | 
			
		||||
chmod +x /etc/init.d/tinyauth
 | 
			
		||||
$STD rc-update add tinyauth default
 | 
			
		||||
msg_ok "Enabled tinyauth Service"
 | 
			
		||||
msg_ok "Enabled Tinyauth Service"
 | 
			
		||||
 | 
			
		||||
msg_info "Starting tinyauth"
 | 
			
		||||
msg_info "Starting Tinyauth"
 | 
			
		||||
$STD service tinyauth start
 | 
			
		||||
msg_ok "Started tinyauth"
 | 
			
		||||
msg_ok "Started Tinyauth"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 
 | 
			
		||||
@@ -24,31 +24,13 @@ msg_ok "Installed Traefik"
 | 
			
		||||
read -p "${TAB3}Enable Traefik WebUI (Port 8080)? [y/N]: " enable_webui
 | 
			
		||||
if [[ "$enable_webui" =~ ^[Yy]$ ]]; then
 | 
			
		||||
  msg_info "Configuring Traefik WebUI"
 | 
			
		||||
  mkdir -p /etc/traefik/config
 | 
			
		||||
  cat <<EOF >/etc/traefik/traefik.yml
 | 
			
		||||
entryPoints:
 | 
			
		||||
  web:
 | 
			
		||||
    address: ":80"
 | 
			
		||||
  traefik:
 | 
			
		||||
    address: ":8080"
 | 
			
		||||
 | 
			
		||||
api:
 | 
			
		||||
  dashboard: true
 | 
			
		||||
  insecure: true
 | 
			
		||||
 | 
			
		||||
log:
 | 
			
		||||
  level: INFO
 | 
			
		||||
 | 
			
		||||
providers:
 | 
			
		||||
  file:
 | 
			
		||||
    directory: /etc/traefik/config
 | 
			
		||||
    watch: true
 | 
			
		||||
EOF
 | 
			
		||||
  sed -i 's/localhost//g' /etc/traefik/traefik.yaml
 | 
			
		||||
  msg_ok "Configured Traefik WebUI"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Enabling and starting Traefik service"
 | 
			
		||||
$STD rc-update add traefik default
 | 
			
		||||
sed -i '/^command=.*/i directory="/etc/traefik"' /etc/init.d/traefik
 | 
			
		||||
$STD rc-service traefik start
 | 
			
		||||
msg_ok "Traefik service started"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,12 +15,6 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add \
 | 
			
		||||
  newt \
 | 
			
		||||
  curl \
 | 
			
		||||
  openssh \
 | 
			
		||||
  nano \
 | 
			
		||||
  mc \
 | 
			
		||||
  gpg \
 | 
			
		||||
  iptables \
 | 
			
		||||
  openrc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 
 | 
			
		||||
@@ -13,14 +13,6 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apk add newt
 | 
			
		||||
$STD apk add curl
 | 
			
		||||
$STD apk add openssh
 | 
			
		||||
$STD apk add nano
 | 
			
		||||
$STD apk add mc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Alpine-Zigbee2MQTT"
 | 
			
		||||
$STD apk add zigbee2mqtt
 | 
			
		||||
mkdir -p /root/.z2m
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,6 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y apt-transport-https
 | 
			
		||||
$STD apt-get install -y gpg
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Eclipse Temurin (Patience)"
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,6 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y apt-transport-https
 | 
			
		||||
$STD apt-get install -y gnupg
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Apache CouchDB"
 | 
			
		||||
 
 | 
			
		||||
@@ -14,31 +14,32 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
    build-essential \
 | 
			
		||||
    jq \
 | 
			
		||||
    libcairo2-dev \
 | 
			
		||||
    libturbojpeg0 \
 | 
			
		||||
    libpng-dev \
 | 
			
		||||
    libtool-bin \
 | 
			
		||||
    libossp-uuid-dev \
 | 
			
		||||
    libvncserver-dev \
 | 
			
		||||
    freerdp2-dev \
 | 
			
		||||
    libssh2-1-dev \
 | 
			
		||||
    libtelnet-dev \
 | 
			
		||||
    libwebsockets-dev \
 | 
			
		||||
    libpulse-dev \
 | 
			
		||||
    libvorbis-dev \
 | 
			
		||||
    libwebp-dev \
 | 
			
		||||
    libssl-dev \
 | 
			
		||||
    libpango1.0-dev \
 | 
			
		||||
    libswscale-dev \
 | 
			
		||||
    libavcodec-dev \
 | 
			
		||||
    libavutil-dev \
 | 
			
		||||
    libavformat-dev \
 | 
			
		||||
    mariadb-server \
 | 
			
		||||
    default-jdk
 | 
			
		||||
  build-essential \
 | 
			
		||||
  jq \
 | 
			
		||||
  libcairo2-dev \
 | 
			
		||||
  libturbojpeg0 \
 | 
			
		||||
  libpng-dev \
 | 
			
		||||
  libtool-bin \
 | 
			
		||||
  libossp-uuid-dev \
 | 
			
		||||
  libvncserver-dev \
 | 
			
		||||
  freerdp2-dev \
 | 
			
		||||
  libssh2-1-dev \
 | 
			
		||||
  libtelnet-dev \
 | 
			
		||||
  libwebsockets-dev \
 | 
			
		||||
  libpulse-dev \
 | 
			
		||||
  libvorbis-dev \
 | 
			
		||||
  libwebp-dev \
 | 
			
		||||
  libssl-dev \
 | 
			
		||||
  libpango1.0-dev \
 | 
			
		||||
  libswscale-dev \
 | 
			
		||||
  libavcodec-dev \
 | 
			
		||||
  libavutil-dev \
 | 
			
		||||
  libavformat-dev \
 | 
			
		||||
  default-jdk
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
install_mariadb
 | 
			
		||||
 | 
			
		||||
msg_info "Setup Apache Tomcat"
 | 
			
		||||
RELEASE=$(curl -fsSL https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP '(?<=href=")v[^"/]+(?=/")' | sed 's/^v//' | sort -V | tail -n1)
 | 
			
		||||
mkdir -p /opt/apache-guacamole/tomcat9
 | 
			
		||||
@@ -75,23 +76,23 @@ msg_info "Setup Database"
 | 
			
		||||
DB_NAME=guacamole_db
 | 
			
		||||
DB_USER=guacamole_user
 | 
			
		||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
 | 
			
		||||
mysql -u root -e "CREATE DATABASE $DB_NAME;"
 | 
			
		||||
mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
 | 
			
		||||
mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
 | 
			
		||||
mariadb -u root -e "CREATE DATABASE $DB_NAME;"
 | 
			
		||||
mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
 | 
			
		||||
mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
 | 
			
		||||
{
 | 
			
		||||
    echo "Guacamole-Credentials"
 | 
			
		||||
    echo "Database User: $DB_USER"
 | 
			
		||||
    echo "Database Password: $DB_PASS"
 | 
			
		||||
    echo "Database Name: $DB_NAME"
 | 
			
		||||
  echo "Guacamole-Credentials"
 | 
			
		||||
  echo "Database User: $DB_USER"
 | 
			
		||||
  echo "Database Password: $DB_PASS"
 | 
			
		||||
  echo "Database Name: $DB_NAME"
 | 
			
		||||
} >>~/guacamole.creds
 | 
			
		||||
cd guacamole-auth-jdbc-1.5.5/mysql/schema
 | 
			
		||||
cat *.sql | mysql -u root ${DB_NAME}
 | 
			
		||||
cat *.sql | mariadb -u root ${DB_NAME}
 | 
			
		||||
{
 | 
			
		||||
    echo "mysql-hostname: 127.0.0.1"
 | 
			
		||||
    echo "mysql-port: 3306"
 | 
			
		||||
    echo "mysql-database: $DB_NAME"
 | 
			
		||||
    echo "mysql-username: $DB_USER"
 | 
			
		||||
    echo "mysql-password: $DB_PASS"
 | 
			
		||||
  echo "mysql-hostname: 127.0.0.1"
 | 
			
		||||
  echo "mysql-port: 3306"
 | 
			
		||||
  echo "mysql-database: $DB_NAME"
 | 
			
		||||
  echo "mysql-username: $DB_USER"
 | 
			
		||||
  echo "mysql-password: $DB_PASS"
 | 
			
		||||
 | 
			
		||||
} >>/etc/guacamole/guacamole.properties
 | 
			
		||||
msg_ok "Setup Database"
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ msg_info "Installing Apache Tika"
 | 
			
		||||
mkdir -p /opt/apache-tika
 | 
			
		||||
cd /opt/apache-tika
 | 
			
		||||
RELEASE="$(curl -fsSL https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)"
 | 
			
		||||
curl -fsSL "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar" -o $(basename "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar")
 | 
			
		||||
curl -fsSL "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar" -o tika-server-standard-${RELEASE}.jar
 | 
			
		||||
mv tika-server-standard-${RELEASE}.jar tika-server-standard.jar
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
msg_ok "Installed Apache Tika"
 | 
			
		||||
 
 | 
			
		||||
@@ -15,9 +15,7 @@ update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  gnupg2 \
 | 
			
		||||
  lsb-release \
 | 
			
		||||
  gpg \
 | 
			
		||||
  apt-transport-https
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -33,16 +33,7 @@ $STD apt-get install -y \
 | 
			
		||||
  python3-regex
 | 
			
		||||
msg_ok "Installed Python Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Node.js Repository"
 | 
			
		||||
mkdir -p /etc/apt/keyrings
 | 
			
		||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
 | 
			
		||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
 | 
			
		||||
msg_ok "Set up Node.js Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Node.js"
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y nodejs
 | 
			
		||||
msg_ok "Installed Node.js"
 | 
			
		||||
NODE_VERSION="22" install_node_and_modules
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Playwright"
 | 
			
		||||
$STD pip install playwright
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user