mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			76 Commits
		
	
	
		
			2025-09-22
			...
			2025-09-25
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					c41b18f083 | ||
| 
						 | 
					f983f75b30 | ||
| 
						 | 
					137dd647dd | ||
| 
						 | 
					2f5c608f45 | ||
| 
						 | 
					b8e06c05d0 | ||
| 
						 | 
					2beb89055c | ||
| 
						 | 
					308897fdc7 | ||
| 
						 | 
					5b73367c80 | ||
| 
						 | 
					5c0eefa652 | ||
| 
						 | 
					7c5c654dbe | ||
| 
						 | 
					984eeedf31 | ||
| 
						 | 
					7fd08cbe69 | ||
| 
						 | 
					285447b67f | ||
| 
						 | 
					b394cdf6e0 | ||
| 
						 | 
					ab2a6ed38e | ||
| 
						 | 
					f8e109c529 | ||
| 
						 | 
					46e4bc3a04 | ||
| 
						 | 
					d0a1f305c7 | ||
| 
						 | 
					6948e1f695 | ||
| 
						 | 
					8c860da4ed | ||
| 
						 | 
					d32e9fad59 | ||
| 
						 | 
					9096a388c7 | ||
| 
						 | 
					9f0efc27df | ||
| 
						 | 
					06ca6e2087 | ||
| 
						 | 
					8c48ea6718 | ||
| 
						 | 
					b626e705eb | ||
| 
						 | 
					f103d09c09 | ||
| 
						 | 
					82a7d252ab | ||
| 
						 | 
					48af77e928 | ||
| 
						 | 
					d24308a409 | ||
| 
						 | 
					584365fff1 | ||
| 
						 | 
					95c54dccd7 | ||
| 
						 | 
					eb28463d86 | ||
| 
						 | 
					bddde99252 | ||
| 
						 | 
					f1f8c1b279 | ||
| 
						 | 
					37a0a4add9 | ||
| 
						 | 
					02cede3f5d | ||
| 
						 | 
					42a7d57a42 | ||
| 
						 | 
					53b5f0d1fe | ||
| 
						 | 
					4a56d8d9aa | ||
| 
						 | 
					f819188a5e | ||
| 
						 | 
					4d6e3e5977 | ||
| 
						 | 
					d6fc527200 | ||
| 
						 | 
					c103c3b03d | ||
| 
						 | 
					2d290cb27f | ||
| 
						 | 
					883efd1cd2 | ||
| 
						 | 
					1f40670ea0 | ||
| 
						 | 
					cec4e2d5c1 | ||
| 
						 | 
					1fafb3f661 | ||
| 
						 | 
					b56b053e8b | ||
| 
						 | 
					21f98835dc | ||
| 
						 | 
					ab455d7748 | ||
| 
						 | 
					5382fa1dbd | ||
| 
						 | 
					6fa1938360 | ||
| 
						 | 
					2a2df5b5cc | ||
| 
						 | 
					f99d582eb5 | ||
| 
						 | 
					d3f24ae5b2 | ||
| 
						 | 
					25e89f7bac | ||
| 
						 | 
					2686753448 | ||
| 
						 | 
					19678e2534 | ||
| 
						 | 
					1ac8f90281 | ||
| 
						 | 
					7cd3e40f9c | ||
| 
						 | 
					42191bdb5a | ||
| 
						 | 
					aab1a9bce5 | ||
| 
						 | 
					208226065b | ||
| 
						 | 
					54e62749be | ||
| 
						 | 
					2a8e2e62cd | ||
| 
						 | 
					b15d7be4c3 | ||
| 
						 | 
					e208bc110b | ||
| 
						 | 
					b26ad61a33 | ||
| 
						 | 
					5beaec9514 | ||
| 
						 | 
					3a668870b7 | ||
| 
						 | 
					3266962630 | ||
| 
						 | 
					2a3f5d7b47 | ||
| 
						 | 
					fb4c3cf9e9 | ||
| 
						 | 
					e96ea4eb40 | 
							
								
								
									
										38
									
								
								.github/label-priority.json
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								.github/label-priority.json
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,38 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "priorities": {
 | 
			
		||||
    "refactor": 3,
 | 
			
		||||
    "feature": 2,
 | 
			
		||||
    "bugfix": 1,
 | 
			
		||||
    "new script": 3,
 | 
			
		||||
    "update script": 2,
 | 
			
		||||
    "delete script": 2,
 | 
			
		||||
    "json": 3,
 | 
			
		||||
    "website": 2,
 | 
			
		||||
    "maintenance": 1,
 | 
			
		||||
    "documentation": 1,
 | 
			
		||||
    "core": 2,
 | 
			
		||||
    "api": 2,
 | 
			
		||||
    "addon": 2,
 | 
			
		||||
    "pve-tool": 2,
 | 
			
		||||
    "vm": 2,
 | 
			
		||||
    "github": 1
 | 
			
		||||
  },
 | 
			
		||||
  "conflicts": {
 | 
			
		||||
    "bugfix": ["refactor"],
 | 
			
		||||
    "website": ["json"],
 | 
			
		||||
    "update script": ["new script", "delete script"],
 | 
			
		||||
    "new script": ["update script", "delete script"],
 | 
			
		||||
    "delete script": ["new script", "update script"]
 | 
			
		||||
  },
 | 
			
		||||
  "rules": {
 | 
			
		||||
    "always_combine": [
 | 
			
		||||
      "maintenance",
 | 
			
		||||
      "core",
 | 
			
		||||
      "api",
 | 
			
		||||
      "addon",
 | 
			
		||||
      "pve-tool",
 | 
			
		||||
      "vm",
 | 
			
		||||
      "github"
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										116
									
								
								.github/workflows/autolabeler.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										116
									
								
								.github/workflows/autolabeler.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -112,119 +112,3 @@ jobs:
 | 
			
		||||
                labels: Array.from(labelsToAdd),
 | 
			
		||||
              });
 | 
			
		||||
            }
 | 
			
		||||
  ai-check:
 | 
			
		||||
    needs: autolabeler
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    permissions:
 | 
			
		||||
      pull-requests: write
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Load priority config
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "PRIORITY_JSON=$(jq -c . .github/label-priority.json)" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
      - name: Fetch PR metadata
 | 
			
		||||
        id: pr
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const pr = context.payload.pull_request;
 | 
			
		||||
            const files = await github.rest.pulls.listFiles({
 | 
			
		||||
              owner: context.repo.owner,
 | 
			
		||||
              repo: context.repo.repo,
 | 
			
		||||
              pull_number: pr.number
 | 
			
		||||
            });
 | 
			
		||||
            const prData = {
 | 
			
		||||
              title: pr.title || "",
 | 
			
		||||
              body: pr.body || "",
 | 
			
		||||
              files: files.data.map(f => f.filename)
 | 
			
		||||
            };
 | 
			
		||||
            require('fs').writeFileSync(process.env.GITHUB_ENV, `PR_DATA=${JSON.stringify(prData)}\n`, {flag: 'a'});
 | 
			
		||||
 | 
			
		||||
      - name: AI Label Review
 | 
			
		||||
        id: ai
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        env:
 | 
			
		||||
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const prData = JSON.parse(process.env.PR_DATA);
 | 
			
		||||
 | 
			
		||||
            const prompt = `
 | 
			
		||||
            You are a GitHub labeling bot.
 | 
			
		||||
            Task:
 | 
			
		||||
            - Analyze PR title, body, and file list.
 | 
			
		||||
            - For each possible label, return a confidence score (0–1).
 | 
			
		||||
            - If both bugfix and refactor apply, prefer refactor.
 | 
			
		||||
            - Output JSON: {"labels":[{"name":"bugfix","score":0.9},{"name":"refactor","score":0.6}]}
 | 
			
		||||
 | 
			
		||||
            Valid labels: [new script, update script, delete script, bugfix, feature, maintenance, refactor, website, json, api, core, github, addon, pve-tool, vm].
 | 
			
		||||
 | 
			
		||||
            PR data: ${JSON.stringify(prData)}
 | 
			
		||||
            `;
 | 
			
		||||
 | 
			
		||||
            const response = await fetch("https://api.openai.com/v1/chat/completions", {
 | 
			
		||||
              method: "POST",
 | 
			
		||||
              headers: {
 | 
			
		||||
                "Content-Type": "application/json",
 | 
			
		||||
                "Authorization": "Bearer " + process.env.OPENAI_API_KEY,
 | 
			
		||||
              },
 | 
			
		||||
              body: JSON.stringify({
 | 
			
		||||
                model: "gpt-4.1-mini",
 | 
			
		||||
                messages: [{ role: "user", content: prompt }],
 | 
			
		||||
                temperature: 0
 | 
			
		||||
              })
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            const data = await response.json();
 | 
			
		||||
            const labels = JSON.parse(data.choices[0].message.content).labels;
 | 
			
		||||
            core.setOutput("labels", JSON.stringify(labels));
 | 
			
		||||
 | 
			
		||||
      - name: Apply AI Labels
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const raw = JSON.parse('${{ steps.ai.outputs.labels }}');
 | 
			
		||||
            const prNumber = context.payload.pull_request.number;
 | 
			
		||||
            const config = JSON.parse(process.env.PRIORITY_JSON);
 | 
			
		||||
 | 
			
		||||
            let toApply = [];
 | 
			
		||||
            let toSuggest = [];
 | 
			
		||||
 | 
			
		||||
            raw.forEach(l => {
 | 
			
		||||
              if (l.score >= 0.8) {
 | 
			
		||||
                const conflicts = config.conflicts[l.name] || [];
 | 
			
		||||
                const hasStrongerConflict = conflicts.some(c =>
 | 
			
		||||
                  raw.some(x =>
 | 
			
		||||
                    x.name === c &&
 | 
			
		||||
                    x.score >= 0.6 &&
 | 
			
		||||
                    (config.priorities[c] || 0) >= (config.priorities[l.name] || 0)
 | 
			
		||||
                  )
 | 
			
		||||
                );
 | 
			
		||||
                if (!hasStrongerConflict) {
 | 
			
		||||
                  toApply.push(l.name);
 | 
			
		||||
                }
 | 
			
		||||
              } else if (l.score >= 0.5) {
 | 
			
		||||
                toSuggest.push(`${l.name} (${Math.round(l.score*100)}%)`);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            if (toApply.length > 0) {
 | 
			
		||||
              await github.rest.issues.addLabels({
 | 
			
		||||
                owner: context.repo.owner,
 | 
			
		||||
                repo: context.repo.repo,
 | 
			
		||||
                issue_number: prNumber,
 | 
			
		||||
                labels: toApply
 | 
			
		||||
              });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (toSuggest.length > 0) {
 | 
			
		||||
              await github.rest.issues.createComment({
 | 
			
		||||
                owner: context.repo.owner,
 | 
			
		||||
                repo: context.repo.repo,
 | 
			
		||||
                issue_number: prNumber,
 | 
			
		||||
                body: `🤖 AI suggests these possible labels (uncertain): ${toSuggest.join(", ")}`
 | 
			
		||||
              });
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										81
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										81
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -10,8 +10,89 @@
 | 
			
		||||
> [!CAUTION]
 | 
			
		||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
 | 
			
		||||
 | 
			
		||||
## 2025-09-26
 | 
			
		||||
 | 
			
		||||
## 2025-09-25
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - GoAway ([#7900](https://github.com/community-scripts/ProxmoxVE/pull/7900))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - ntfy: bump to debian 13 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7895](https://github.com/community-scripts/ProxmoxVE/pull/7895))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - feat: add menu icons to website [@BramSuurdje](https://github.com/BramSuurdje) ([#7894](https://github.com/community-scripts/ProxmoxVE/pull/7894))
 | 
			
		||||
 | 
			
		||||
## 2025-09-24
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Add Script: Joplin Server ([#7879](https://github.com/community-scripts/ProxmoxVE/pull/7879))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Monica: Fix dependencies [@tremor021](https://github.com/tremor021) ([#7877](https://github.com/community-scripts/ProxmoxVE/pull/7877))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Update name in lxc-delete.json to 'PVE LXC Deletion' [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7872](https://github.com/community-scripts/ProxmoxVE/pull/7872))
 | 
			
		||||
 | 
			
		||||
## 2025-09-23
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - UpSnap ([#7825](https://github.com/community-scripts/ProxmoxVE/pull/7825))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - tools.func: Check for /usr/local/bin in PATH during yq setup [@vhsdream](https://github.com/vhsdream) ([#7856](https://github.com/community-scripts/ProxmoxVE/pull/7856))
 | 
			
		||||
    - BookLore: increase RAM [@vhsdream](https://github.com/vhsdream) ([#7855](https://github.com/community-scripts/ProxmoxVE/pull/7855))
 | 
			
		||||
    - Bump Immich to v1.143.1 [@vhsdream](https://github.com/vhsdream) ([#7864](https://github.com/community-scripts/ProxmoxVE/pull/7864))
 | 
			
		||||
    - zabbix: Remove not exist admin credentials from output [@MickLesk](https://github.com/MickLesk) ([#7849](https://github.com/community-scripts/ProxmoxVE/pull/7849))
 | 
			
		||||
    - Suppress wrong errors from uv shell integration in setup_uv [@MickLesk](https://github.com/MickLesk) ([#7822](https://github.com/community-scripts/ProxmoxVE/pull/7822))
 | 
			
		||||
    - Refactor Caddyfile configuration for headscale-admin [@MickLesk](https://github.com/MickLesk) ([#7821](https://github.com/community-scripts/ProxmoxVE/pull/7821))
 | 
			
		||||
    - Improve subscription element removal (mobile) in post-pve script [@MickLesk](https://github.com/MickLesk) ([#7814](https://github.com/community-scripts/ProxmoxVE/pull/7814))
 | 
			
		||||
    - Blocky: Fix release fetching [@tremor021](https://github.com/tremor021) ([#7807](https://github.com/community-scripts/ProxmoxVE/pull/7807))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Improve globaleaks install ensuring install can proceed without user … [@evilaliv3](https://github.com/evilaliv3) ([#7860](https://github.com/community-scripts/ProxmoxVE/pull/7860))
 | 
			
		||||
    - Manage My Damn Life: use NodeJS 22 [@vhsdream](https://github.com/vhsdream) ([#7861](https://github.com/community-scripts/ProxmoxVE/pull/7861))
 | 
			
		||||
    - VM: Increase pv & xz functions (HA OS / Umbrel OS) [@MickLesk](https://github.com/MickLesk) ([#7838](https://github.com/community-scripts/ProxmoxVE/pull/7838))
 | 
			
		||||
    - Tandoor: update for newer dependencies (psql) + bump nodejs to 22 [@MickLesk](https://github.com/MickLesk) ([#7826](https://github.com/community-scripts/ProxmoxVE/pull/7826))
 | 
			
		||||
    - Update Monica and Outline to use Node.js 22 [@MickLesk](https://github.com/MickLesk) ([#7833](https://github.com/community-scripts/ProxmoxVE/pull/7833))
 | 
			
		||||
    - Update Zabbix install for Debian 13 and agent selection [@MickLesk](https://github.com/MickLesk) ([#7819](https://github.com/community-scripts/ProxmoxVE/pull/7819))
 | 
			
		||||
    - tracktor: bump to debian 13 | feature bump [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7818](https://github.com/community-scripts/ProxmoxVE/pull/7818))
 | 
			
		||||
    - LiteLLM: Bump to Debian 13 & add deps [@MickLesk](https://github.com/MickLesk) ([#7815](https://github.com/community-scripts/ProxmoxVE/pull/7815))
 | 
			
		||||
    - Immich: bump to v1.143.0 [@vhsdream](https://github.com/vhsdream) ([#7801](https://github.com/community-scripts/ProxmoxVE/pull/7801))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - gh: remove ai autolabel test [@MickLesk](https://github.com/MickLesk) ([#7817](https://github.com/community-scripts/ProxmoxVE/pull/7817))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - OpenWebUI: Add information about Ollama [@tremor021](https://github.com/tremor021) ([#7843](https://github.com/community-scripts/ProxmoxVE/pull/7843))
 | 
			
		||||
    - cosmos: add info note for configuration file [@MickLesk](https://github.com/MickLesk) ([#7824](https://github.com/community-scripts/ProxmoxVE/pull/7824))
 | 
			
		||||
    - ElementSynapse: add note for Bridge Install Methods [@MickLesk](https://github.com/MickLesk) ([#7820](https://github.com/community-scripts/ProxmoxVE/pull/7820))
 | 
			
		||||
 | 
			
		||||
## 2025-09-22
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/blocky
 | 
			
		||||
    msg_ok "Removed Old Version"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
 | 
			
		||||
    fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restore Config"
 | 
			
		||||
    mv /opt/config.yml /opt/blocky/config.yml
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
APP="BookLore"
 | 
			
		||||
var_tags="${var_tags:-books;library}"
 | 
			
		||||
var_cpu="${var_cpu:-3}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_ram="${var_ram:-3072}"
 | 
			
		||||
var_disk="${var_disk:-7}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								ct/goaway.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ct/goaway.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/pommee/goaway
 | 
			
		||||
 | 
			
		||||
APP="GoAway"
 | 
			
		||||
var_tags="${var_tags:-network}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/goaway ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "goaway" "pommee/goaway"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop goaway
 | 
			
		||||
    msg_ok "Stopped Services"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "goaway" "pommee/goaway" "prebuild" "latest" "/opt/goaway" "goaway_*_linux_amd64.tar.gz"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl start goaway
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/goaway
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/goaway
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   ______      ___                      
 | 
			
		||||
  / ____/___  /   |_      ______ ___  __
 | 
			
		||||
 / / __/ __ \/ /| | | /| / / __ `/ / / /
 | 
			
		||||
/ /_/ / /_/ / ___ | |/ |/ / /_/ / /_/ / 
 | 
			
		||||
\____/\____/_/  |_|__/|__/\__,_/\__, /  
 | 
			
		||||
                               /____/   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/joplin-server
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/joplin-server
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
       __            ___            _____                          
 | 
			
		||||
      / /___  ____  / (_)___       / ___/___  ______   _____  _____
 | 
			
		||||
 __  / / __ \/ __ \/ / / __ \______\__ \/ _ \/ ___/ | / / _ \/ ___/
 | 
			
		||||
/ /_/ / /_/ / /_/ / / / / / /_____/__/ /  __/ /   | |/ /  __/ /    
 | 
			
		||||
\____/\____/ .___/_/_/_/ /_/     /____/\___/_/    |___/\___/_/     
 | 
			
		||||
          /_/                                                      
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/upsnap
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/upsnap
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   __  __     _____                 
 | 
			
		||||
  / / / /___ / ___/____  ____ _____ 
 | 
			
		||||
 / / / / __ \\__ \/ __ \/ __ `/ __ \
 | 
			
		||||
/ /_/ / /_/ /__/ / / / / /_/ / /_/ /
 | 
			
		||||
\____/ .___/____/_/ /_/\__,_/ .___/ 
 | 
			
		||||
    /_/                    /_/      
 | 
			
		||||
@@ -53,3 +53,5 @@ description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}Headscale API: ${IP}/api (no Frontend) | headscale-admin: http://${IP}/admin/${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -74,7 +74,7 @@ function update_script() {
 | 
			
		||||
    done
 | 
			
		||||
    msg_ok "Image-processing libraries up to date"
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE="1.142.1"
 | 
			
		||||
  RELEASE="1.143.1"
 | 
			
		||||
  if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop immich-web
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										62
									
								
								ct/joplin-server.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								ct/joplin-server.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://joplinapp.org/
 | 
			
		||||
 | 
			
		||||
APP="Joplin-Server"
 | 
			
		||||
var_tags="${var_tags:-notes}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-20}"
 | 
			
		||||
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/joplin-server ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "joplin-server" "laurent22/joplin"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop joplin-server
 | 
			
		||||
    msg_ok "Stopped Services"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" "latest"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/joplin-server
 | 
			
		||||
    sed -i "/onenote-converter/d" packages/lib/package.json
 | 
			
		||||
    $STD yarn config set --home enableTelemetry 0
 | 
			
		||||
    export BUILD_SEQUENCIAL=1
 | 
			
		||||
    $STD yarn install --inline-builds
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl start joplin-server
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:22300${CL}"
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -29,23 +29,24 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Stopping ${APP}"
 | 
			
		||||
  msg_info "Stopping Service"
 | 
			
		||||
  systemctl stop litellm
 | 
			
		||||
  msg_ok "Stopped ${APP}"
 | 
			
		||||
  msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
  VENV_PATH="/opt/litellm/.venv"
 | 
			
		||||
  PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP"
 | 
			
		||||
  msg_info "Updating LiteLLM"
 | 
			
		||||
  $STD "$VENV_PATH/bin/python" -m pip install --upgrade litellm[proxy] prisma
 | 
			
		||||
  msg_ok "LiteLLM updated"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating DB Schema"
 | 
			
		||||
  $STD uv --directory=/opt/litellm run litellm --config /opt/litellm/litellm.yaml --use_prisma_db_push --skip_server_startup
 | 
			
		||||
  msg_ok "DB Schema Updated"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP}"
 | 
			
		||||
  msg_info "Starting Service"
 | 
			
		||||
  systemctl start litellm
 | 
			
		||||
  msg_ok "Started ${APP}"
 | 
			
		||||
  msg_ok "Started Service"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -35,12 +35,15 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    cp /opt/mmdl/.env /opt/mmdl.env
 | 
			
		||||
    rm -rf /opt/mmdl
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs" "tarball"
 | 
			
		||||
    NODE_VERSION="22" setup_nodejs
 | 
			
		||||
 | 
			
		||||
    msg_info "Configuring ${APP}"
 | 
			
		||||
    cd /opt/mmdl
 | 
			
		||||
    export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run migrate
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,9 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "monica" "monicahq/monica"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
@@ -43,6 +46,7 @@ function update_script() {
 | 
			
		||||
    cp -r /opt/monica-backup/.env /opt/monica
 | 
			
		||||
    cp -r /opt/monica-backup/storage/* /opt/monica/storage/
 | 
			
		||||
    $STD composer install --no-interaction --no-dev
 | 
			
		||||
    $STD yarn config set ignore-engines true
 | 
			
		||||
    $STD yarn install
 | 
			
		||||
    $STD yarn run production
 | 
			
		||||
    $STD php artisan monica:update --force
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								ct/ntfy.sh
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								ct/ntfy.sh
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: CrazyWolf13
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://ntfy.sh/
 | 
			
		||||
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -23,13 +23,31 @@ function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /var ]]; then
 | 
			
		||||
    if [[ ! -d /etc/ntfy ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [ -f /etc/apt/keyrings/archive.heckel.io.gpg ]; then
 | 
			
		||||
        msg_info "Correcting old Ntfy Repository"
 | 
			
		||||
        rm -f /etc/apt/keyrings/archive.heckel.io.gpg
 | 
			
		||||
        rm -f /etc/apt/sources.list.d/archive.heckel.io.list
 | 
			
		||||
        rm -f /etc/apt/sources.list.d/archive.heckel.io.list.bak
 | 
			
		||||
        rm -f /etc/apt/sources.list.d/archive.heckel.io.sources
 | 
			
		||||
        curl -fsSL -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg
 | 
			
		||||
        cat <<'EOF' >/etc/apt/sources.list.d/ntfy.sources 
 | 
			
		||||
Types: deb
 | 
			
		||||
URIs: https://archive.ntfy.sh/apt/
 | 
			
		||||
Suites: stable
 | 
			
		||||
Components: main
 | 
			
		||||
Signed-By: /etc/apt/keyrings/ntfy.gpg
 | 
			
		||||
EOF
 | 
			
		||||
        msg_ok "Corrected old Ntfy Repository"
 | 
			
		||||
    fi
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Updating $APP LXC"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
    $STD apt update
 | 
			
		||||
    $STD apt -y upgrade
 | 
			
		||||
    msg_ok "Updated $APP LXC"
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,8 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "outline" "outline/outline"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop outline
 | 
			
		||||
@@ -37,7 +39,7 @@ function update_script() {
 | 
			
		||||
    cp /opt/outline/.env /opt
 | 
			
		||||
    msg_ok "Backup created"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
 | 
			
		||||
    CLEAN_INSTALL=1 fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/outline
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ function update_script() {
 | 
			
		||||
    mv /opt/tandoor /opt/tandoor.bak
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    NODE_VERSION="20" NODE_MODULE="yarn" setup_nodejs
 | 
			
		||||
    NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
 | 
			
		||||
    PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
    fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -33,22 +33,23 @@ function update_script() {
 | 
			
		||||
    systemctl stop tracktor
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    cp /opt/tracktor/app/backend/.env /opt/tracktor.env
 | 
			
		||||
    msg_ok "Created Backup"
 | 
			
		||||
    msg_info "Correcting Services"
 | 
			
		||||
    if [ -f /opt/tracktor/app/backend/.env ]; then
 | 
			
		||||
        mv /opt/tracktor/app/backend/.env /opt/tracktor.env
 | 
			
		||||
        echo 'AUTH_PIN=123456' >> /opt/tracktor.env
 | 
			
		||||
        sed -i 's|^EnvironmentFile=.*|EnvironmentFile=/opt/tracktor.env|' /etc/systemd/system/tracktor.service
 | 
			
		||||
        systemctl daemon-reload
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Corrected Services"
 | 
			
		||||
 | 
			
		||||
    setup_nodejs
 | 
			
		||||
    CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    msg_info "Updating tracktor"
 | 
			
		||||
    cd /opt/tracktor
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restoring Backup"
 | 
			
		||||
    cp /opt/tracktor.env /opt/tracktor/app/backend/.env
 | 
			
		||||
    msg_ok "Restored Backup"
 | 
			
		||||
    msg_ok "Updated tracktor"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start tracktor
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										53
									
								
								ct/upsnap.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								ct/upsnap.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/seriousm4x/UpSnap
 | 
			
		||||
 | 
			
		||||
APP="UpSnap"
 | 
			
		||||
var_tags="${var_tags:-network}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/upsnap ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if check_for_gh_release "upsnap" "seriousm4x/UpSnap"; then
 | 
			
		||||
        msg_info "Stopping Services"
 | 
			
		||||
        systemctl stop upsnap
 | 
			
		||||
        msg_ok "Stopped Services"
 | 
			
		||||
 | 
			
		||||
        fetch_and_deploy_gh_release "upsnap" "seriousm4x/UpSnap" "prebuild" "latest" "/opt/upsnap" "UpSnap_*_linux_amd64.zip"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting Services"
 | 
			
		||||
        systemctl start upsnap
 | 
			
		||||
        msg_ok "Started Services"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
 | 
			
		||||
							
								
								
									
										65
									
								
								ct/zabbix.sh
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								ct/zabbix.sh
									
									
									
									
									
								
							@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_version="${var_version:-13}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -23,37 +23,72 @@ function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping ${APP} Services"
 | 
			
		||||
  systemctl stop zabbix-server zabbix-agent2
 | 
			
		||||
  msg_ok "Stopped ${APP} Services"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  . /etc/os-release
 | 
			
		||||
  if [ "$VERSION_CODENAME" != "trixie" ]; then
 | 
			
		||||
    msg_error "Unsupported Debian version: $VERSION_CODENAME – please upgrade to Debian 13 (Trixie) before updating Zabbix."
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if systemctl list-unit-files | grep -q zabbix-agent2.service; then
 | 
			
		||||
    AGENT_SERVICE="zabbix-agent2"
 | 
			
		||||
  else
 | 
			
		||||
    AGENT_SERVICE="zabbix-agent"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Stopping Services"
 | 
			
		||||
  systemctl stop zabbix-server $AGENT_SERVICE
 | 
			
		||||
  msg_ok "Stopped Services"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating Zabbix"
 | 
			
		||||
  mkdir -p /opt/zabbix-backup/
 | 
			
		||||
  cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
 | 
			
		||||
  cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
 | 
			
		||||
  cp -R /usr/share/zabbix/ /opt/zabbix-backup/
 | 
			
		||||
  #cp -R /usr/share/zabbix-* /opt/zabbix-backup/ Remove temporary
 | 
			
		||||
 | 
			
		||||
  rm -Rf /etc/apt/sources.list.d/zabbix.list
 | 
			
		||||
  cd /tmp
 | 
			
		||||
  curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
 | 
			
		||||
    grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
 | 
			
		||||
    xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb")" \
 | 
			
		||||
    -o /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
  $STD dpkg -i zabbix-release_latest+debian12_all.deb
 | 
			
		||||
  $STD apt-get update
 | 
			
		||||
  $STD apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-*
 | 
			
		||||
    xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
 | 
			
		||||
    -o /tmp/zabbix-release_latest+debian13_all.deb
 | 
			
		||||
  $STD dpkg -i zabbix-release_latest+debian13_all.deb
 | 
			
		||||
  $STD apt update
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP} Services"
 | 
			
		||||
  systemctl start zabbix-server zabbix-agent2
 | 
			
		||||
  $STD apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql
 | 
			
		||||
 | 
			
		||||
  if [ "$AGENT_SERVICE" = "zabbix-agent2" ]; then
 | 
			
		||||
    $STD apt install --only-upgrade zabbix-agent2 zabbix-agent2-plugin-postgresql
 | 
			
		||||
    if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
 | 
			
		||||
      sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
 | 
			
		||||
        /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    $STD apt install --only-upgrade zabbix-agent
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if command -v fping >/dev/null 2>&1; then
 | 
			
		||||
    FPING_PATH=$(command -v fping)
 | 
			
		||||
    sed -i "s|^#\?FpingLocation=.*|FpingLocation=$FPING_PATH|" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
  fi
 | 
			
		||||
  if command -v fping6 >/dev/null 2>&1; then
 | 
			
		||||
    FPING6_PATH=$(command -v fping6)
 | 
			
		||||
    sed -i "s|^#\?Fping6Location=.*|Fping6Location=$FPING6_PATH|" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Updated Zabbix"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting Services"
 | 
			
		||||
  systemctl start zabbix-server $AGENT_SERVICE
 | 
			
		||||
  systemctl restart apache2
 | 
			
		||||
  msg_ok "Started ${APP} Services"
 | 
			
		||||
  msg_ok "Started Services"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning Up"
 | 
			
		||||
  rm -rf /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
  rm -rf /tmp/zabbix-release_latest+debian13_all.deb
 | 
			
		||||
  msg_ok "Cleaned"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
      "script": "ct/booklore.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 3,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "ram": 3072,
 | 
			
		||||
        "hdd": 7,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
 
 | 
			
		||||
@@ -32,5 +32,10 @@
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "info",
 | 
			
		||||
      "text": "The file `/etc/sysconfig/CosmosCloud` is optional. If you need custom settings, you can create it yourself."
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,10 @@
 | 
			
		||||
    {
 | 
			
		||||
      "type": "info",
 | 
			
		||||
      "text": "Synapse-Admin is running on port 5173"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "info",
 | 
			
		||||
      "text": "For bridges Installation methods (WhatsApp, Signal, Discord, etc.), see: ´https://docs.mau.fi/bridges/go/setup.html´"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								frontend/public/json/goaway.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/goaway.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "GoAway",
 | 
			
		||||
  "slug": "goaway",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    5
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-09-25",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8080,
 | 
			
		||||
  "documentation": "https://github.com/pommee/goaway#configuration-file",
 | 
			
		||||
  "config_path": "/opt/goaway/config/settings.yaml",
 | 
			
		||||
  "website": "https://github.com/pommee/goaway",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/goaway.webp",
 | 
			
		||||
  "description": "Lightweight DNS sinkhole written in Go with a modern dashboard client. Very good looking new alternative to Pi-Hole and Adguard Home.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/goaway.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Type `cat ~/goaway.creds` to see login credentials.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								frontend/public/json/joplin-server.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/joplin-server.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Joplin Server",
 | 
			
		||||
  "slug": "joplin-server",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    12
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-09-24",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 22300,
 | 
			
		||||
  "documentation": "https://joplinapp.org/help/",
 | 
			
		||||
  "config_path": "/opt/joplin-server/.env",
 | 
			
		||||
  "website": "https://joplinapp.org/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/joplin.webp",
 | 
			
		||||
  "description": "Joplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/joplin-server.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 20,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": "admin@localhost",
 | 
			
		||||
    "password": "admin"
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Application can take some time to build, depending on your host speed. Please be patient.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 4,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Container LXC Deletion",
 | 
			
		||||
  "name": "PVE LXC Deletion",
 | 
			
		||||
  "slug": "lxc-delete",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +1,186 @@
 | 
			
		||||
{
 | 
			
		||||
  "categories": [
 | 
			
		||||
		{ "name": "Proxmox & Virtualization", "id": 1, "sort_order": 1.0, "description": "Tools and scripts to manage Proxmox VE and virtualization platforms effectively." },
 | 
			
		||||
		{ "name": "Operating Systems", "id": 2, "sort_order": 2.0, "description": "Scripts for deploying and managing various operating systems." },
 | 
			
		||||
		{ "name": "Containers & Docker", "id": 3, "sort_order": 3.0, "description": "Solutions for containerization using Docker and related technologies." },
 | 
			
		||||
		{ "name": "Network & Firewall", "id": 4, "sort_order": 4.0, "description": "Enhance network security and configure firewalls with ease." },
 | 
			
		||||
		{ "name": "Adblock & DNS", "id": 5, "sort_order": 5.0, "description": "Optimize your network with DNS and ad-blocking solutions." },
 | 
			
		||||
		{ "name": "Authentication & Security", "id": 6, "sort_order": 6.0, "description": "Secure your infrastructure with authentication and security tools." },
 | 
			
		||||
		{ "name": "Backup & Recovery", "id": 7, "sort_order": 7.0, "description": "Reliable backup and recovery scripts to protect your data." },
 | 
			
		||||
		{ "name": "Databases", "id": 8, "sort_order": 8.0, "description": "Deploy and manage robust database systems with ease." },
 | 
			
		||||
		{ "name": "Monitoring & Analytics", "id": 9, "sort_order": 9.0, "description": "Monitor system performance and analyze data seamlessly." },
 | 
			
		||||
		{ "name": "Dashboards & Frontends", "id": 10, "sort_order": 10.0, "description": "Create interactive dashboards and user-friendly frontends." },
 | 
			
		||||
		{ "name": "Files & Downloads", "id": 11, "sort_order": 11.0, "description": "Manage file sharing and downloading solutions efficiently." },
 | 
			
		||||
		{ "name": "Documents & Notes", "id": 12, "sort_order": 12.0, "description": "Organize and manage documents and note-taking tools." },
 | 
			
		||||
		{ "name": "Media & Streaming", "id": 13, "sort_order": 13.0, "description": "Stream and manage media effortlessly across devices." },
 | 
			
		||||
		{ "name": "*Arr Suite", "id": 14, "sort_order": 14.0, "description": "Automated media management with the popular *Arr suite tools." },
 | 
			
		||||
		{ "name": "NVR & Cameras", "id": 15, "sort_order": 15.0, "description": "Manage network video recorders and camera setups." },
 | 
			
		||||
		{ "name": "IoT & Smart Home", "id": 16, "sort_order": 16.0, "description": "Control and automate IoT devices and smart home systems." },
 | 
			
		||||
		{ "name": "ZigBee, Z-Wave & Matter", "id": 17, "sort_order": 17.0, "description": "Solutions for ZigBee, Z-Wave, and Matter-based device management." },
 | 
			
		||||
		{ "name": "MQTT & Messaging", "id": 18, "sort_order": 18.0, "description": "Set up reliable messaging and MQTT-based communication systems." },
 | 
			
		||||
		{ "name": "Automation & Scheduling", "id": 19, "sort_order": 19.0, "description": "Automate tasks and manage scheduling with powerful tools." },
 | 
			
		||||
		{ "name": "AI / Coding & Dev-Tools", "id": 20, "sort_order": 20.0, "description": "Leverage AI and developer tools for smarter coding workflows." },
 | 
			
		||||
		{ "name": "Webservers & Proxies", "id": 21, "sort_order": 21.0, "description": "Deploy and configure web servers and proxy solutions." },
 | 
			
		||||
		{ "name": "Bots & ChatOps", "id": 22, "sort_order": 22.0, "description": "Enhance collaboration with bots and ChatOps integrations." },
 | 
			
		||||
		{ "name": "Finance & Budgeting", "id": 23, "sort_order": 23.0, "description": "Track expenses and manage budgets efficiently." },
 | 
			
		||||
		{ "name": "Gaming & Leisure", "id": 24, "sort_order": 24.0, "description": "Scripts for gaming servers and leisure-related tools." },
 | 
			
		||||
		{ "name": "Business & ERP", "id": 25, "sort_order": 25.0, "description": "Streamline business operations with ERP and management tools." },
 | 
			
		||||
		{ "name": "Miscellaneous", "id": 0, "sort_order": 99.0, "description": "General scripts and tools that don't fit into other categories." }
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Proxmox & Virtualization",
 | 
			
		||||
      "id": 1,
 | 
			
		||||
      "sort_order": 1.0,
 | 
			
		||||
      "description": "Tools and scripts to manage Proxmox VE and virtualization platforms effectively.",
 | 
			
		||||
      "icon": "server"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Operating Systems",
 | 
			
		||||
      "id": 2,
 | 
			
		||||
      "sort_order": 2.0,
 | 
			
		||||
      "description": "Scripts for deploying and managing various operating systems.",
 | 
			
		||||
      "icon": "monitor"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Containers & Docker",
 | 
			
		||||
      "id": 3,
 | 
			
		||||
      "sort_order": 3.0,
 | 
			
		||||
      "description": "Solutions for containerization using Docker and related technologies.",
 | 
			
		||||
      "icon": "box"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Network & Firewall",
 | 
			
		||||
      "id": 4,
 | 
			
		||||
      "sort_order": 4.0,
 | 
			
		||||
      "description": "Enhance network security and configure firewalls with ease.",
 | 
			
		||||
      "icon": "shield"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Adblock & DNS",
 | 
			
		||||
      "id": 5,
 | 
			
		||||
      "sort_order": 5.0,
 | 
			
		||||
      "description": "Optimize your network with DNS and ad-blocking solutions.",
 | 
			
		||||
      "icon": "ban"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Authentication & Security",
 | 
			
		||||
      "id": 6,
 | 
			
		||||
      "sort_order": 6.0,
 | 
			
		||||
      "description": "Secure your infrastructure with authentication and security tools.",
 | 
			
		||||
      "icon": "lock"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Backup & Recovery",
 | 
			
		||||
      "id": 7,
 | 
			
		||||
      "sort_order": 7.0,
 | 
			
		||||
      "description": "Reliable backup and recovery scripts to protect your data.",
 | 
			
		||||
      "icon": "archive"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Databases",
 | 
			
		||||
      "id": 8,
 | 
			
		||||
      "sort_order": 8.0,
 | 
			
		||||
      "description": "Deploy and manage robust database systems with ease.",
 | 
			
		||||
      "icon": "database"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Monitoring & Analytics",
 | 
			
		||||
      "id": 9,
 | 
			
		||||
      "sort_order": 9.0,
 | 
			
		||||
      "description": "Monitor system performance and analyze data seamlessly.",
 | 
			
		||||
      "icon": "bar-chart"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Dashboards & Frontends",
 | 
			
		||||
      "id": 10,
 | 
			
		||||
      "sort_order": 10.0,
 | 
			
		||||
      "description": "Create interactive dashboards and user-friendly frontends.",
 | 
			
		||||
      "icon": "layout"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Files & Downloads",
 | 
			
		||||
      "id": 11,
 | 
			
		||||
      "sort_order": 11.0,
 | 
			
		||||
      "description": "Manage file sharing and downloading solutions efficiently.",
 | 
			
		||||
      "icon": "download"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Documents & Notes",
 | 
			
		||||
      "id": 12,
 | 
			
		||||
      "sort_order": 12.0,
 | 
			
		||||
      "description": "Organize and manage documents and note-taking tools.",
 | 
			
		||||
      "icon": "file-text"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Media & Streaming",
 | 
			
		||||
      "id": 13,
 | 
			
		||||
      "sort_order": 13.0,
 | 
			
		||||
      "description": "Stream and manage media effortlessly across devices.",
 | 
			
		||||
      "icon": "play"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "*Arr Suite",
 | 
			
		||||
      "id": 14,
 | 
			
		||||
      "sort_order": 14.0,
 | 
			
		||||
      "description": "Automated media management with the popular *Arr suite tools.",
 | 
			
		||||
      "icon": "tv"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "NVR & Cameras",
 | 
			
		||||
      "id": 15,
 | 
			
		||||
      "sort_order": 15.0,
 | 
			
		||||
      "description": "Manage network video recorders and camera setups.",
 | 
			
		||||
      "icon": "camera"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "IoT & Smart Home",
 | 
			
		||||
      "id": 16,
 | 
			
		||||
      "sort_order": 16.0,
 | 
			
		||||
      "description": "Control and automate IoT devices and smart home systems.",
 | 
			
		||||
      "icon": "home"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "ZigBee, Z-Wave & Matter",
 | 
			
		||||
      "id": 17,
 | 
			
		||||
      "sort_order": 17.0,
 | 
			
		||||
      "description": "Solutions for ZigBee, Z-Wave, and Matter-based device management.",
 | 
			
		||||
      "icon": "radio"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "MQTT & Messaging",
 | 
			
		||||
      "id": 18,
 | 
			
		||||
      "sort_order": 18.0,
 | 
			
		||||
      "description": "Set up reliable messaging and MQTT-based communication systems.",
 | 
			
		||||
      "icon": "message-circle"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Automation & Scheduling",
 | 
			
		||||
      "id": 19,
 | 
			
		||||
      "sort_order": 19.0,
 | 
			
		||||
      "description": "Automate tasks and manage scheduling with powerful tools.",
 | 
			
		||||
      "icon": "clock"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "AI / Coding & Dev-Tools",
 | 
			
		||||
      "id": 20,
 | 
			
		||||
      "sort_order": 20.0,
 | 
			
		||||
      "description": "Leverage AI and developer tools for smarter coding workflows.",
 | 
			
		||||
      "icon": "code"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Webservers & Proxies",
 | 
			
		||||
      "id": 21,
 | 
			
		||||
      "sort_order": 21.0,
 | 
			
		||||
      "description": "Deploy and configure web servers and proxy solutions.",
 | 
			
		||||
      "icon": "globe"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Bots & ChatOps",
 | 
			
		||||
      "id": 22,
 | 
			
		||||
      "sort_order": 22.0,
 | 
			
		||||
      "description": "Enhance collaboration with bots and ChatOps integrations.",
 | 
			
		||||
      "icon": "bot"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Finance & Budgeting",
 | 
			
		||||
      "id": 23,
 | 
			
		||||
      "sort_order": 23.0,
 | 
			
		||||
      "description": "Track expenses and manage budgets efficiently.",
 | 
			
		||||
      "icon": "dollar-sign"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Gaming & Leisure",
 | 
			
		||||
      "id": 24,
 | 
			
		||||
      "sort_order": 24.0,
 | 
			
		||||
      "description": "Scripts for gaming servers and leisure-related tools.",
 | 
			
		||||
      "icon": "gamepad-2"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Business & ERP",
 | 
			
		||||
      "id": 25,
 | 
			
		||||
      "sort_order": 25.0,
 | 
			
		||||
      "description": "Streamline business operations with ERP and management tools.",
 | 
			
		||||
      "icon": "building"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Miscellaneous",
 | 
			
		||||
      "id": 0,
 | 
			
		||||
      "sort_order": 99.0,
 | 
			
		||||
      "description": "General scripts and tools that don't fit into other categories.",
 | 
			
		||||
      "icon": "more-horizontal"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 
 | 
			
		||||
@@ -31,5 +31,10 @@
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Script contains optional installation of Ollama.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": "https://tracktor.bytedge.in/introduction.html",
 | 
			
		||||
  "config_path": "/opt/tracktor/app/server/.env",
 | 
			
		||||
  "config_path": "/opt/tracktor.env",
 | 
			
		||||
  "website": "https://tracktor.bytedge.in/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tracktor.webp",
 | 
			
		||||
  "description": "Tracktor is an open-source web application for comprehensive vehicle management.\nEasily track fuel consumption, maintenance, insurance, and regulatory documents for all your vehicles in one place.",
 | 
			
		||||
@@ -23,17 +23,17 @@
 | 
			
		||||
        "ram": 1024,
 | 
			
		||||
        "hdd": 6,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
    "password": "123456"
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Please check and update the '/opt/tracktor/app/backend/.env' file if using behind reverse proxy.",
 | 
			
		||||
      "text": "Please check and update the '/opt/tracktor.env' file if using behind reverse proxy.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								frontend/public/json/upsnap.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/upsnap.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "UpSnap",
 | 
			
		||||
  "slug": "upsnap",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    4
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-09-23",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8090,
 | 
			
		||||
  "documentation": "https://github.com/seriousm4x/UpSnap/wiki",
 | 
			
		||||
  "config_path": "",
 | 
			
		||||
  "website": "https://github.com/seriousm4x/UpSnap",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/upsnap.webp",
 | 
			
		||||
  "description": "UpSnap is a self-hosted web app that lets you wake up, manage and monitor devices on your network with ease. Built with SvelteKit, Go and PocketBase, it offers a clean dashboard, scheduled wake-ups, device discovery and secure user management.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/upsnap.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "The first user you register will be the admin user.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,44 +1,314 @@
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "name": "henrygd/beszel",
 | 
			
		||||
    "version": "v0.12.10",
 | 
			
		||||
    "date": "2025-09-22T22:40:43Z"
 | 
			
		||||
    "version": "v0.12.12",
 | 
			
		||||
    "date": "2025-09-25T23:46:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "immich-app/immich",
 | 
			
		||||
    "version": "v1.143.0",
 | 
			
		||||
    "date": "2025-09-22T19:57:20Z"
 | 
			
		||||
    "name": "javedh-dev/tracktor",
 | 
			
		||||
    "version": "0.3.10",
 | 
			
		||||
    "date": "2025-09-25T21:32:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gtsteffaniak/filebrowser",
 | 
			
		||||
    "version": "v0.8.7-beta",
 | 
			
		||||
    "date": "2025-09-22T18:24:54Z"
 | 
			
		||||
    "name": "booklore-app/booklore",
 | 
			
		||||
    "version": "v1.3.4",
 | 
			
		||||
    "date": "2025-09-25T21:19:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bunkerity/bunkerweb",
 | 
			
		||||
    "version": "v1.6.4",
 | 
			
		||||
    "date": "2025-08-18T20:22:07Z"
 | 
			
		||||
    "name": "open-webui/open-webui",
 | 
			
		||||
    "version": "v0.6.31",
 | 
			
		||||
    "date": "2025-09-25T20:28:17Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "go-gitea/gitea",
 | 
			
		||||
    "version": "v1.26.0-dev",
 | 
			
		||||
    "date": "2025-09-24T16:45:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "crowdsecurity/crowdsec",
 | 
			
		||||
    "version": "v1.7.0",
 | 
			
		||||
    "date": "2025-09-01T10:10:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TandoorRecipes/recipes",
 | 
			
		||||
    "version": "2.2.7",
 | 
			
		||||
    "date": "2025-09-25T19:04:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "kyantech/Palmr",
 | 
			
		||||
    "version": "v3.2.2-beta",
 | 
			
		||||
    "date": "2025-09-25T18:44:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.9.4",
 | 
			
		||||
    "date": "2025-09-19T21:09:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "pommee/goaway",
 | 
			
		||||
    "version": "v0.62.2",
 | 
			
		||||
    "date": "2025-09-25T17:21:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.4.0",
 | 
			
		||||
    "date": "2025-09-13T16:38:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Threadfin/Threadfin",
 | 
			
		||||
    "version": "1.2.39",
 | 
			
		||||
    "date": "2025-09-25T15:57:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "tailscale/tailscale",
 | 
			
		||||
    "version": "v1.88.3",
 | 
			
		||||
    "date": "2025-09-25T15:49:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "v4.13.1",
 | 
			
		||||
    "date": "2025-09-25T15:43:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.1.1.103-2.1.1.103_canary_2025-09-25",
 | 
			
		||||
    "date": "2025-09-25T15:17:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "linkwarden/linkwarden",
 | 
			
		||||
    "version": "v2.13.0",
 | 
			
		||||
    "date": "2025-09-25T15:19:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "SigNoz/signoz",
 | 
			
		||||
    "version": "v0.96.1",
 | 
			
		||||
    "date": "2025-09-25T15:18:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "meilisearch/meilisearch",
 | 
			
		||||
    "version": "latest",
 | 
			
		||||
    "date": "2025-09-25T14:32:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bluenviron/mediamtx",
 | 
			
		||||
    "version": "v1.15.1",
 | 
			
		||||
    "date": "2025-09-25T13:35:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "silverbulletmd/silverbullet",
 | 
			
		||||
    "version": "2.1.3",
 | 
			
		||||
    "date": "2025-09-25T13:31:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "forgejo/forgejo",
 | 
			
		||||
    "version": "v14.0.0-dev",
 | 
			
		||||
    "date": "2025-09-25T13:19:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "laurent22/joplin",
 | 
			
		||||
    "version": "server-v3.4.4",
 | 
			
		||||
    "date": "2025-09-25T13:19:26Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "documenso/documenso",
 | 
			
		||||
    "version": "v1.12.6",
 | 
			
		||||
    "date": "2025-09-25T12:14:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "influxdata/influxdb",
 | 
			
		||||
    "version": "v1.10.9",
 | 
			
		||||
    "date": "2025-09-25T11:52:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "element-hq/synapse",
 | 
			
		||||
    "version": "v1.138.2",
 | 
			
		||||
    "date": "2025-09-24T12:45:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Cleanuparr/Cleanuparr",
 | 
			
		||||
    "version": "v2.3.2",
 | 
			
		||||
    "date": "2025-09-25T09:34:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v25.3",
 | 
			
		||||
    "date": "2025-09-01T09:47:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.3.5",
 | 
			
		||||
    "date": "2025-09-25T06:23:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.23.62",
 | 
			
		||||
    "date": "2025-09-25T05:54:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rabbitmq/rabbitmq-server",
 | 
			
		||||
    "version": "v4.1.4",
 | 
			
		||||
    "date": "2025-09-02T14:26:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jellyfin/jellyfin",
 | 
			
		||||
    "version": "v10.10.7",
 | 
			
		||||
    "date": "2025-04-05T19:14:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jeedom/core",
 | 
			
		||||
    "version": "4.4.20",
 | 
			
		||||
    "date": "2025-09-25T00:27:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "steveiliop56/tinyauth",
 | 
			
		||||
    "version": "v3.6.2",
 | 
			
		||||
    "date": "2025-07-17T12:08:03Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MediaBrowser/Emby.Releases",
 | 
			
		||||
    "version": "4.9.1.2",
 | 
			
		||||
    "date": "2025-06-26T22:08:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.12.2",
 | 
			
		||||
    "date": "2025-09-24T21:19:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r8.2.1-rc1",
 | 
			
		||||
    "date": "2025-09-24T19:54:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gelbphoenix/autocaliweb",
 | 
			
		||||
    "version": "v0.10.2",
 | 
			
		||||
    "date": "2025-09-24T18:23:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "BerriAI/litellm",
 | 
			
		||||
    "version": "v1.77.4-nightly",
 | 
			
		||||
    "date": "2025-09-24T18:23:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "msgbyte/tianji",
 | 
			
		||||
    "version": "v1.26.1",
 | 
			
		||||
    "date": "2025-09-22T16:46:29Z"
 | 
			
		||||
    "version": "v1.26.3",
 | 
			
		||||
    "date": "2025-09-24T17:37:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rclone/rclone",
 | 
			
		||||
    "version": "v1.71.1",
 | 
			
		||||
    "date": "2025-09-24T16:32:16Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.112.5",
 | 
			
		||||
    "date": "2025-09-24T14:44:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "alexta69/metube",
 | 
			
		||||
    "version": "2025.09.24",
 | 
			
		||||
    "date": "2025-09-24T13:51:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "AlexxIT/go2rtc",
 | 
			
		||||
    "version": "v1.9.10",
 | 
			
		||||
    "date": "2025-09-24T13:49:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fuma-nama/fumadocs",
 | 
			
		||||
    "version": "fumadocs-typescript@4.0.9",
 | 
			
		||||
    "date": "2025-09-24T12:52:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zwave-js/zwave-js-ui",
 | 
			
		||||
    "version": "v11.3.1",
 | 
			
		||||
    "date": "2025-09-24T11:58:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jupyter/notebook",
 | 
			
		||||
    "version": "@jupyter-notebook/ui-components@7.5.0-alpha.3",
 | 
			
		||||
    "date": "2025-09-24T09:14:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "syncthing/syncthing",
 | 
			
		||||
    "version": "v2.0.10",
 | 
			
		||||
    "date": "2025-09-24T08:33:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "chrisbenincasa/tunarr",
 | 
			
		||||
    "version": "v0.22.5",
 | 
			
		||||
    "date": "2025-09-24T00:01:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "grafana/grafana",
 | 
			
		||||
    "version": "v12.2.0",
 | 
			
		||||
    "date": "2025-09-23T23:47:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "9001/copyparty",
 | 
			
		||||
    "version": "v1.19.14",
 | 
			
		||||
    "date": "2025-09-23T22:57:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.41.3",
 | 
			
		||||
    "date": "2025-09-23T22:21:04Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Part-DB/Part-DB-server",
 | 
			
		||||
    "version": "v2.2.0",
 | 
			
		||||
    "date": "2025-09-23T21:46:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "immich-app/immich",
 | 
			
		||||
    "version": "v1.143.1",
 | 
			
		||||
    "date": "2025-09-23T19:00:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "getumbrel/umbrel",
 | 
			
		||||
    "version": "1.4.2",
 | 
			
		||||
    "date": "2025-05-09T08:54:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bunkerity/bunkerweb",
 | 
			
		||||
    "version": "v1.6.4",
 | 
			
		||||
    "date": "2025-08-18T20:22:07Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jenkinsci/jenkins",
 | 
			
		||||
    "version": "jenkins-2.529",
 | 
			
		||||
    "date": "2025-09-23T14:40:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zabbix/zabbix",
 | 
			
		||||
    "version": "7.4.3rc1",
 | 
			
		||||
    "date": "2025-09-23T13:54:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "chrisvel/tududi",
 | 
			
		||||
    "version": "v0.82-rc5",
 | 
			
		||||
    "date": "2025-09-23T07:31:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "morpheus65535/bazarr",
 | 
			
		||||
    "version": "v1.5.3",
 | 
			
		||||
    "date": "2025-09-20T12:12:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "postgres/postgres",
 | 
			
		||||
    "version": "REL_18_0",
 | 
			
		||||
    "date": "2025-09-22T20:11:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gtsteffaniak/filebrowser",
 | 
			
		||||
    "version": "v0.8.7-beta",
 | 
			
		||||
    "date": "2025-09-22T18:24:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gethomepage/homepage",
 | 
			
		||||
    "version": "v1.5.0",
 | 
			
		||||
    "date": "2025-09-22T15:28:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "n8n-io/n8n",
 | 
			
		||||
    "version": "n8n@1.111.1",
 | 
			
		||||
    "date": "2025-09-19T09:26:05Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cloudflare/cloudflared",
 | 
			
		||||
    "version": "2025.9.1",
 | 
			
		||||
@@ -49,11 +319,6 @@
 | 
			
		||||
    "version": "4.5.3",
 | 
			
		||||
    "date": "2025-08-25T13:59:56Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "nzbgetcom/nzbget",
 | 
			
		||||
    "version": "v25.3",
 | 
			
		||||
    "date": "2025-09-01T09:47:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Graylog2/graylog2-server",
 | 
			
		||||
    "version": "7.0.0-beta.1",
 | 
			
		||||
@@ -69,46 +334,16 @@
 | 
			
		||||
    "version": "v3.6.0",
 | 
			
		||||
    "date": "2025-09-22T08:24:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "MediaBrowser/Emby.Releases",
 | 
			
		||||
    "version": "4.9.1.2",
 | 
			
		||||
    "date": "2025-06-26T22:08:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Jackett/Jackett",
 | 
			
		||||
    "version": "v0.23.52",
 | 
			
		||||
    "date": "2025-09-22T05:54:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "firefly-iii/firefly-iii",
 | 
			
		||||
    "version": "v6.4.0",
 | 
			
		||||
    "date": "2025-09-13T16:38:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Athou/commafeed",
 | 
			
		||||
    "version": "5.11.1",
 | 
			
		||||
    "date": "2025-09-22T02:21:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jeedom/core",
 | 
			
		||||
    "version": "4.4.20",
 | 
			
		||||
    "date": "2025-09-22T00:27:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TwiN/gatus",
 | 
			
		||||
    "version": "v5.24.3",
 | 
			
		||||
    "date": "2025-09-22T00:04:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ollama/ollama",
 | 
			
		||||
    "version": "v0.12.0-rc1",
 | 
			
		||||
    "date": "2025-09-18T23:11:08Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "9001/copyparty",
 | 
			
		||||
    "version": "v1.19.12",
 | 
			
		||||
    "date": "2025-09-21T22:39:26Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Radarr/Radarr",
 | 
			
		||||
    "version": "v5.27.5.10198",
 | 
			
		||||
@@ -149,6 +384,11 @@
 | 
			
		||||
    "version": "v2.7.3",
 | 
			
		||||
    "date": "2025-09-21T12:07:19Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "globaleaks/globaleaks-whistleblowing-software",
 | 
			
		||||
    "version": "v5.0.83",
 | 
			
		||||
    "date": "2025-09-21T07:40:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "thomiceli/opengist",
 | 
			
		||||
    "version": "v1.11.0",
 | 
			
		||||
@@ -179,26 +419,6 @@
 | 
			
		||||
    "version": "v6.10.0",
 | 
			
		||||
    "date": "2025-09-20T15:40:36Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "morpheus65535/bazarr",
 | 
			
		||||
    "version": "v1.5.3",
 | 
			
		||||
    "date": "2025-09-20T12:12:33Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "fuma-nama/fumadocs",
 | 
			
		||||
    "version": "fumadocs-openapi@9.3.11",
 | 
			
		||||
    "date": "2025-09-20T09:52:40Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "keycloak/keycloak",
 | 
			
		||||
    "version": "26.2.9",
 | 
			
		||||
    "date": "2025-09-17T15:11:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "forgejo/forgejo",
 | 
			
		||||
    "version": "v12.0.4",
 | 
			
		||||
    "date": "2025-09-20T07:16:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "theonedev/onedev",
 | 
			
		||||
    "version": "v13.0.1",
 | 
			
		||||
@@ -210,20 +430,15 @@
 | 
			
		||||
    "date": "2025-09-19T22:28:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "HabitRPG/habitica",
 | 
			
		||||
    "version": "v5.41.2",
 | 
			
		||||
    "date": "2025-09-19T21:47:42Z"
 | 
			
		||||
    "name": "mmastrac/stylus",
 | 
			
		||||
    "version": "v0.17.0",
 | 
			
		||||
    "date": "2025-09-19T22:23:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ipfs/kubo",
 | 
			
		||||
    "version": "v0.37.0",
 | 
			
		||||
    "date": "2025-08-27T20:03:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "home-assistant/core",
 | 
			
		||||
    "version": "2025.9.4",
 | 
			
		||||
    "date": "2025-09-19T21:09:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "coder/code-server",
 | 
			
		||||
    "version": "v4.104.1",
 | 
			
		||||
@@ -234,16 +449,6 @@
 | 
			
		||||
    "version": "v1.38.0",
 | 
			
		||||
    "date": "2025-09-19T19:14:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wazuh/wazuh",
 | 
			
		||||
    "version": "v4.13.0",
 | 
			
		||||
    "date": "2025-09-19T16:35:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "TandoorRecipes/recipes",
 | 
			
		||||
    "version": "2.2.3",
 | 
			
		||||
    "date": "2025-09-19T15:02:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "hargata/lubelog",
 | 
			
		||||
    "version": "v1.5.2",
 | 
			
		||||
@@ -274,11 +479,6 @@
 | 
			
		||||
    "version": "v0.23.2",
 | 
			
		||||
    "date": "2025-09-18T17:18:59Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bluenviron/mediamtx",
 | 
			
		||||
    "version": "v1.15.0",
 | 
			
		||||
    "date": "2025-09-18T17:14:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "emqx/emqx",
 | 
			
		||||
    "version": "e5.10.1",
 | 
			
		||||
@@ -289,6 +489,11 @@
 | 
			
		||||
    "version": "debian/12.1.25",
 | 
			
		||||
    "date": "2025-09-18T15:40:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "sassanix/Warracker",
 | 
			
		||||
    "version": "0.10.1.12",
 | 
			
		||||
    "date": "2025-09-18T14:24:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "grokability/snipe-it",
 | 
			
		||||
    "version": "v8.3.2",
 | 
			
		||||
@@ -299,11 +504,6 @@
 | 
			
		||||
    "version": "v4.2.2",
 | 
			
		||||
    "date": "2025-09-18T10:45:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "chrisvel/tududi",
 | 
			
		||||
    "version": "v0.82-rc5",
 | 
			
		||||
    "date": "2025-09-18T09:57:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "NLnetLabs/unbound",
 | 
			
		||||
    "version": "release-1.24.0",
 | 
			
		||||
@@ -324,16 +524,6 @@
 | 
			
		||||
    "version": "2.1.0-test1",
 | 
			
		||||
    "date": "2025-09-17T18:21:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "open-webui/open-webui",
 | 
			
		||||
    "version": "v0.6.30",
 | 
			
		||||
    "date": "2025-09-17T17:25:37Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "tailscale/tailscale",
 | 
			
		||||
    "version": "v1.88.2",
 | 
			
		||||
    "date": "2025-09-17T17:25:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "heiher/hev-socks5-server",
 | 
			
		||||
    "version": "2.10.0",
 | 
			
		||||
@@ -344,16 +534,6 @@
 | 
			
		||||
    "version": "10.0.20",
 | 
			
		||||
    "date": "2025-09-10T12:00:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "silverbulletmd/silverbullet",
 | 
			
		||||
    "version": "2.0.0",
 | 
			
		||||
    "date": "2025-08-29T13:38:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jenkinsci/jenkins",
 | 
			
		||||
    "version": "jenkins-2.528",
 | 
			
		||||
    "date": "2025-09-17T13:09:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cockpit-project/cockpit",
 | 
			
		||||
    "version": "347",
 | 
			
		||||
@@ -379,11 +559,6 @@
 | 
			
		||||
    "version": "v4.3.0.1",
 | 
			
		||||
    "date": "2025-09-17T08:50:39Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Cleanuparr/Cleanuparr",
 | 
			
		||||
    "version": "v2.3.1",
 | 
			
		||||
    "date": "2025-09-16T20:41:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "webmin/webmin",
 | 
			
		||||
    "version": "2.510",
 | 
			
		||||
@@ -394,11 +569,6 @@
 | 
			
		||||
    "version": "v0.107.66",
 | 
			
		||||
    "date": "2025-09-15T13:39:52Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "booklore-app/booklore",
 | 
			
		||||
    "version": "v1.3.2",
 | 
			
		||||
    "date": "2025-09-16T16:04:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "netbox-community/netbox",
 | 
			
		||||
    "version": "v4.4.1",
 | 
			
		||||
@@ -409,11 +579,6 @@
 | 
			
		||||
    "version": "version/2025.8.3",
 | 
			
		||||
    "date": "2025-09-16T15:19:06Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zwave-js/zwave-js-ui",
 | 
			
		||||
    "version": "v11.3.0",
 | 
			
		||||
    "date": "2025-09-16T13:53:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "tobychui/zoraxy",
 | 
			
		||||
    "version": "v3.2.5r2",
 | 
			
		||||
@@ -434,16 +599,16 @@
 | 
			
		||||
    "version": "2.1.1",
 | 
			
		||||
    "date": "2025-09-16T06:21:32Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "seriousm4x/UpSnap",
 | 
			
		||||
    "version": "5.2.1",
 | 
			
		||||
    "date": "2025-09-15T21:26:25Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Paymenter/Paymenter",
 | 
			
		||||
    "version": "v1.3.4",
 | 
			
		||||
    "date": "2025-09-15T20:48:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rabbitmq/rabbitmq-server",
 | 
			
		||||
    "version": "v4.1.4",
 | 
			
		||||
    "date": "2025-09-02T14:26:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Kozea/Radicale",
 | 
			
		||||
    "version": "v3.5.6",
 | 
			
		||||
@@ -489,11 +654,6 @@
 | 
			
		||||
    "version": "v2.7.6",
 | 
			
		||||
    "date": "2025-09-15T15:50:44Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mongodb/mongo",
 | 
			
		||||
    "version": "r8.0.14",
 | 
			
		||||
    "date": "2025-09-15T15:39:18Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "usememos/memos",
 | 
			
		||||
    "version": "v0.25.1",
 | 
			
		||||
@@ -504,11 +664,6 @@
 | 
			
		||||
    "version": "pmm-6401-v1.126.0",
 | 
			
		||||
    "date": "2025-09-15T11:32:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "meilisearch/meilisearch",
 | 
			
		||||
    "version": "latest",
 | 
			
		||||
    "date": "2025-09-15T11:12:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "authelia/authelia",
 | 
			
		||||
    "version": "v4.39.10",
 | 
			
		||||
@@ -544,16 +699,6 @@
 | 
			
		||||
    "version": "v0.8.1",
 | 
			
		||||
    "date": "2025-09-14T06:45:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "syncthing/syncthing",
 | 
			
		||||
    "version": "v2.0.9",
 | 
			
		||||
    "date": "2025-09-13T09:37:24Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "documenso/documenso",
 | 
			
		||||
    "version": "v1.12.4",
 | 
			
		||||
    "date": "2025-09-13T08:08:55Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "cloudreve/cloudreve",
 | 
			
		||||
    "version": "4.8.0",
 | 
			
		||||
@@ -564,51 +709,21 @@
 | 
			
		||||
    "version": "v1.0.0-rc0",
 | 
			
		||||
    "date": "2025-08-17T18:47:15Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "influxdata/influxdb",
 | 
			
		||||
    "version": "v3.4.2",
 | 
			
		||||
    "date": "2025-09-11T20:43:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zerotier/ZeroTierOne",
 | 
			
		||||
    "version": "1.16.0",
 | 
			
		||||
    "date": "2025-09-11T18:01:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Threadfin/Threadfin",
 | 
			
		||||
    "version": "1.2.37",
 | 
			
		||||
    "date": "2025-09-11T16:13:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rcourtman/Pulse",
 | 
			
		||||
    "version": "v4.14.0",
 | 
			
		||||
    "date": "2025-09-05T18:28:28Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "go-gitea/gitea",
 | 
			
		||||
    "version": "v1.24.6",
 | 
			
		||||
    "date": "2025-09-11T04:20:27Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "aceberg/WatchYourLAN",
 | 
			
		||||
    "version": "2.1.4",
 | 
			
		||||
    "date": "2025-09-10T12:08:09Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "kyantech/Palmr",
 | 
			
		||||
    "version": "v3.2.1-beta",
 | 
			
		||||
    "date": "2025-09-09T19:47:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Part-DB/Part-DB-server",
 | 
			
		||||
    "version": "v2.1.2",
 | 
			
		||||
    "date": "2025-09-09T19:34:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "element-hq/synapse",
 | 
			
		||||
    "version": "v1.138.0",
 | 
			
		||||
    "date": "2025-09-09T11:25:50Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "traefik/traefik",
 | 
			
		||||
    "version": "v3.5.2",
 | 
			
		||||
@@ -619,6 +734,11 @@
 | 
			
		||||
    "version": "1.11.3",
 | 
			
		||||
    "date": "2025-09-09T08:03:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "influxdata/telegraf",
 | 
			
		||||
    "version": "v1.36.1",
 | 
			
		||||
    "date": "2025-09-09T06:44:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "gotson/komga",
 | 
			
		||||
    "version": "1.23.4",
 | 
			
		||||
@@ -740,9 +860,9 @@
 | 
			
		||||
    "date": "2025-09-03T08:46:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "postgres/postgres",
 | 
			
		||||
    "version": "REL_18_RC1",
 | 
			
		||||
    "date": "2025-09-01T20:03:08Z"
 | 
			
		||||
    "name": "healthchecks/healthchecks",
 | 
			
		||||
    "version": "v3.11.2",
 | 
			
		||||
    "date": "2025-09-02T08:36:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "project-zot/zot",
 | 
			
		||||
@@ -759,16 +879,6 @@
 | 
			
		||||
    "version": "v0.11.0",
 | 
			
		||||
    "date": "2025-09-01T16:19:38Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "grafana/grafana",
 | 
			
		||||
    "version": "rrc_steady_12.2.0-17245430286.patch1",
 | 
			
		||||
    "date": "2025-09-01T14:19:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "crowdsecurity/crowdsec",
 | 
			
		||||
    "version": "v1.7.0",
 | 
			
		||||
    "date": "2025-09-01T10:10:34Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "LibreTranslate/LibreTranslate",
 | 
			
		||||
    "version": "v1.7.3",
 | 
			
		||||
@@ -779,11 +889,6 @@
 | 
			
		||||
    "version": "v2.1.0",
 | 
			
		||||
    "date": "2025-08-29T12:56:13Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "linkwarden/linkwarden",
 | 
			
		||||
    "version": "v2.12.2",
 | 
			
		||||
    "date": "2025-08-28T20:34:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "benjaminjonard/koillection",
 | 
			
		||||
    "version": "1.7.0",
 | 
			
		||||
@@ -809,11 +914,6 @@
 | 
			
		||||
    "version": "v2.29.0",
 | 
			
		||||
    "date": "2025-08-25T22:43:20Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "zabbix/zabbix",
 | 
			
		||||
    "version": "7.4.2",
 | 
			
		||||
    "date": "2025-08-25T12:38:14Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "plexguide/Huntarr.io",
 | 
			
		||||
    "version": "8.2.10",
 | 
			
		||||
@@ -829,26 +929,21 @@
 | 
			
		||||
    "version": "v0.21.0",
 | 
			
		||||
    "date": "2025-08-23T18:33:53Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "maxdorninger/MediaManager",
 | 
			
		||||
    "version": "1.8.0",
 | 
			
		||||
    "date": "2025-08-23T16:22:30Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "caddyserver/caddy",
 | 
			
		||||
    "version": "v2.10.2",
 | 
			
		||||
    "date": "2025-08-23T03:10:31Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "rclone/rclone",
 | 
			
		||||
    "version": "v1.71.0",
 | 
			
		||||
    "date": "2025-08-22T16:41:23Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "lazy-media/Reactive-Resume",
 | 
			
		||||
    "version": "v1.2.4",
 | 
			
		||||
    "date": "2025-08-22T07:40:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicati/duplicati",
 | 
			
		||||
    "version": "v2.1.2.0-2.1.2.0_beta_2025-08-20",
 | 
			
		||||
    "date": "2025-08-20T08:15:46Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "karlomikus/bar-assistant",
 | 
			
		||||
    "version": "v5.8.0",
 | 
			
		||||
@@ -874,11 +969,6 @@
 | 
			
		||||
    "version": "8.2.1",
 | 
			
		||||
    "date": "2025-08-18T15:42:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jupyter/notebook",
 | 
			
		||||
    "version": "@jupyter-notebook/ui-components@7.5.0-alpha.2",
 | 
			
		||||
    "date": "2025-08-18T07:39:41Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "lldap/lldap",
 | 
			
		||||
    "version": "v0.6.2",
 | 
			
		||||
@@ -894,21 +984,31 @@
 | 
			
		||||
    "version": "3.3.0",
 | 
			
		||||
    "date": "2025-08-17T19:57:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "thecfu/scraparr",
 | 
			
		||||
    "version": "v2.2.4",
 | 
			
		||||
    "date": "2025-08-17T10:12:21Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "mylar3/mylar3",
 | 
			
		||||
    "version": "v0.8.3",
 | 
			
		||||
    "date": "2025-08-17T06:24:54Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "jellyfin/jellyfin",
 | 
			
		||||
    "version": "v10.10.7",
 | 
			
		||||
    "date": "2025-04-05T19:14:59Z"
 | 
			
		||||
    "name": "Leantime/leantime",
 | 
			
		||||
    "version": "latest",
 | 
			
		||||
    "date": "2025-08-15T15:33:51Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Kometa-Team/Kometa",
 | 
			
		||||
    "version": "v2.2.1",
 | 
			
		||||
    "date": "2025-08-13T19:49:01Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "swapplications/uhf-server-dist",
 | 
			
		||||
    "version": "1.5.1",
 | 
			
		||||
    "date": "2025-08-13T15:43:57Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "requarks/wiki",
 | 
			
		||||
    "version": "v2.5.308",
 | 
			
		||||
@@ -964,11 +1064,6 @@
 | 
			
		||||
    "version": "v4.8.0",
 | 
			
		||||
    "date": "2025-08-02T09:12:10Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "alexta69/metube",
 | 
			
		||||
    "version": "2025.07.31",
 | 
			
		||||
    "date": "2025-08-01T14:44:48Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Suwayomi/Suwayomi-Server",
 | 
			
		||||
    "version": "v2.1.1867",
 | 
			
		||||
@@ -1019,6 +1114,11 @@
 | 
			
		||||
    "version": "v2.19.0",
 | 
			
		||||
    "date": "2025-07-27T22:25:00Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "verdaccio/verdaccio",
 | 
			
		||||
    "version": "v6.1.6",
 | 
			
		||||
    "date": "2025-07-25T06:43:12Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "PCJones/UmlautAdaptarr",
 | 
			
		||||
    "version": "v0.7.3",
 | 
			
		||||
@@ -1199,11 +1299,6 @@
 | 
			
		||||
    "version": "v0.2.3",
 | 
			
		||||
    "date": "2025-05-10T21:14:45Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "getumbrel/umbrel",
 | 
			
		||||
    "version": "1.4.2",
 | 
			
		||||
    "date": "2025-05-09T08:54:49Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ZoeyVid/NPMplus",
 | 
			
		||||
    "version": "2025-05-07-r1",
 | 
			
		||||
@@ -1279,6 +1374,11 @@
 | 
			
		||||
    "version": "v1.55.4",
 | 
			
		||||
    "date": "2025-03-24T11:31:02Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "redlib-org/redlib",
 | 
			
		||||
    "version": "v0.36.0",
 | 
			
		||||
    "date": "2025-03-20T03:06:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "Donkie/Spoolman",
 | 
			
		||||
    "version": "v0.22.1",
 | 
			
		||||
@@ -1294,11 +1394,6 @@
 | 
			
		||||
    "version": "v0.18.0",
 | 
			
		||||
    "date": "2025-03-11T12:47:22Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "AlexxIT/go2rtc",
 | 
			
		||||
    "version": "v1.9.9",
 | 
			
		||||
    "date": "2025-03-10T03:22:11Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "awawa-dev/HyperHDR",
 | 
			
		||||
    "version": "v21.0.0.0",
 | 
			
		||||
@@ -1448,5 +1543,10 @@
 | 
			
		||||
    "name": "thelounge/thelounge-deb",
 | 
			
		||||
    "version": "v4.4.3",
 | 
			
		||||
    "date": "2024-04-06T12:24:35Z"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "deepch/RTSPtoWeb",
 | 
			
		||||
    "version": "v2.4.3",
 | 
			
		||||
    "date": "2023-03-29T12:05:02Z"
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "ram": 4096,
 | 
			
		||||
        "hdd": 6,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
        "version": "13"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
@@ -33,11 +33,19 @@
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Database credentials: `cat zabbix.creds`",
 | 
			
		||||
      "text": "Database credentials: `cat ~/zabbix.creds`",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Zabbix agent 2 is used by default",
 | 
			
		||||
      "text": "You can choose between Zabbix agent (classic) and agent2 (modern) during installation",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "For agent2 the PostgreSQL plugin is installed by default; all plugins are optional",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "If agent2 with NVIDIA plugin is installed in an environment without GPU, the installer disables it automatically",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
import { useCallback, useEffect, useRef, useState } from "react";
 | 
			
		||||
import * as Icons from "lucide-react";
 | 
			
		||||
import Image from "next/image";
 | 
			
		||||
import Link from "next/link";
 | 
			
		||||
 | 
			
		||||
@@ -9,6 +10,17 @@ import { formattedBadge } from "@/components/command-menu";
 | 
			
		||||
import { basePath } from "@/config/site-config";
 | 
			
		||||
import { cn } from "@/lib/utils";
 | 
			
		||||
 | 
			
		||||
function getCategoryIcon(iconName: string) {
 | 
			
		||||
  // Convert kebab-case to PascalCase for Lucide icon names
 | 
			
		||||
  const pascalCaseName = iconName
 | 
			
		||||
    .split("-")
 | 
			
		||||
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
 | 
			
		||||
    .join("");
 | 
			
		||||
 | 
			
		||||
  const IconComponent = (Icons as any)[pascalCaseName];
 | 
			
		||||
  return IconComponent ? <IconComponent className="size-4 text-[#0083c3] mr-2" /> : null;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default function ScriptAccordion({
 | 
			
		||||
  items,
 | 
			
		||||
  selectedScript,
 | 
			
		||||
@@ -81,10 +93,13 @@ export default function ScriptAccordion({
 | 
			
		||||
            )}
 | 
			
		||||
          >
 | 
			
		||||
            <div className="mr-2 flex w-full items-center justify-between">
 | 
			
		||||
              <span className="pl-2 text-left">
 | 
			
		||||
              <div className="flex items-center pl-2 text-left">
 | 
			
		||||
                {getCategoryIcon(category.icon)}
 | 
			
		||||
                <span>
 | 
			
		||||
                  {category.name}
 | 
			
		||||
                  {" "}
 | 
			
		||||
                </span>
 | 
			
		||||
              </div>
 | 
			
		||||
              <span className="rounded-full bg-gray-200 px-2 py-1 text-xs text-muted-foreground hover:no-underline dark:bg-blue-800/20">
 | 
			
		||||
                {category.scripts.length}
 | 
			
		||||
              </span>
 | 
			
		||||
@@ -103,8 +118,7 @@ export default function ScriptAccordion({
 | 
			
		||||
                      query: { id: script.slug, category: category.name },
 | 
			
		||||
                    }}
 | 
			
		||||
                    prefetch={false}
 | 
			
		||||
                    className={`flex cursor-pointer items-center justify-between gap-1 px-1 py-1 text-muted-foreground hover:rounded-lg hover:bg-accent/60 hover:dark:bg-accent/20 ${
 | 
			
		||||
                      selectedScript === script.slug
 | 
			
		||||
                    className={`flex cursor-pointer items-center justify-between gap-1 px-1 py-1 text-muted-foreground hover:rounded-lg hover:bg-accent/60 hover:dark:bg-accent/20 ${selectedScript === script.slug
 | 
			
		||||
                      ? "rounded-lg bg-accent font-semibold dark:bg-accent/30 dark:text-white"
 | 
			
		||||
                      : ""
 | 
			
		||||
                    }`}
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +41,8 @@ export type Category = {
 | 
			
		||||
  name: string;
 | 
			
		||||
  id: number;
 | 
			
		||||
  sort_order: number;
 | 
			
		||||
  description: string;
 | 
			
		||||
  icon: string;
 | 
			
		||||
  scripts: Script[];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
 | 
			
		||||
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz"
 | 
			
		||||
 | 
			
		||||
msg_info "Configuring Blocky"
 | 
			
		||||
if systemctl is-active systemd-resolved >/dev/null 2>&1; then
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ curl -fsSL https://deb.globaleaks.org/globaleaks.asc | gpg --dearmor -o /etc/apt
 | 
			
		||||
echo "deb [signed-by=/etc/apt/trusted.gpg.d/globaleaks.gpg] http://deb.globaleaks.org $DISTRO_CODENAME/" >/etc/apt/sources.list.d/globaleaks.list
 | 
			
		||||
echo 'APPARMOR_SANDBOXING=0' >/etc/default/globaleaks
 | 
			
		||||
$STD apt update
 | 
			
		||||
$STD apt -y install globaleaks
 | 
			
		||||
$STD apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install globaleaks
 | 
			
		||||
msg_ok "Setup GlobaLeaks"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										58
									
								
								install/goaway-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								install/goaway-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/pommee/goaway
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y net-tools
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "goaway" "pommee/goaway" "prebuild" "latest" "/opt/goaway" "goaway_*_linux_amd64.tar.gz"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/goaway.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=GoAway Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
User=root
 | 
			
		||||
WorkingDirectory=/opt/goaway
 | 
			
		||||
ExecStart=/opt/goaway/goaway
 | 
			
		||||
StandardOutput=file:/var/log/goaway.log
 | 
			
		||||
StandardError=inherit
 | 
			
		||||
Restart=on-failure
 | 
			
		||||
RestartSec=5
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now goaway
 | 
			
		||||
sleep 10
 | 
			
		||||
ADMIN_PASS=$(awk -F': ' '/Randomly generated admin password:/ {print $2}' /var/log/goaway.log | tail -n1)
 | 
			
		||||
{
 | 
			
		||||
  echo "GoAway Credentials"
 | 
			
		||||
  echo "Admin User: admin"
 | 
			
		||||
  echo "Admin Password: $ADMIN_PASS"
 | 
			
		||||
} >>~/goaway.creds
 | 
			
		||||
msg_ok "Service Created"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -24,28 +24,26 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
 | 
			
		||||
  $STD caddy stop
 | 
			
		||||
  rm /etc/caddy/Caddyfile
 | 
			
		||||
  cat <<'EOF' >/etc/caddy/Caddyfile
 | 
			
		||||
:{$PORT:80}
 | 
			
		||||
:80
 | 
			
		||||
 | 
			
		||||
redir /admin /admin/
 | 
			
		||||
 | 
			
		||||
handle_path /admin* {
 | 
			
		||||
    root * /opt/headscale-admin
 | 
			
		||||
    encode gzip zstd
 | 
			
		||||
 | 
			
		||||
        # Correct MIME types for JS/WASM
 | 
			
		||||
    header {
 | 
			
		||||
                @js_files path *.js
 | 
			
		||||
                @wasm_files path *.wasm
 | 
			
		||||
 | 
			
		||||
                Content-Type @js_files application/javascript
 | 
			
		||||
                Content-Type @wasm_files application/wasm
 | 
			
		||||
 | 
			
		||||
        X-Content-Type-Options nosniff
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
        # Fallback for SPA routing
 | 
			
		||||
        try_files {path} {path}/ index.html
 | 
			
		||||
    try_files {path} {path}/ /opt/headscale-admin/index.html
 | 
			
		||||
    file_server
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
handle /api/* {
 | 
			
		||||
    reverse_proxy localhost:8080
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
EOF
 | 
			
		||||
  caddy fmt --overwrite /etc/caddy/Caddyfile
 | 
			
		||||
  systemctl start caddy
 | 
			
		||||
 
 | 
			
		||||
@@ -272,7 +272,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
 | 
			
		||||
mkdir -p "$INSTALL_DIR"
 | 
			
		||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.142.1" "$SRC_DIR"
 | 
			
		||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.143.1" "$SRC_DIR"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing ${APPLICATION} (patience)"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										98
									
								
								install/joplin-server-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								install/joplin-server-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://joplinapp.org/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  git \
 | 
			
		||||
  rsync
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
PG_VERSION="17" setup_postgresql
 | 
			
		||||
NODE_VERSION=22 NODE_MODULE="yarn@latest,npm@latest,pm2@latest" setup_nodejs
 | 
			
		||||
mkdir -p /opt/pm2
 | 
			
		||||
export PM2_HOME=/opt/pm2
 | 
			
		||||
$STD pm2 install pm2-logrotate
 | 
			
		||||
$STD pm2 set pm2-logrotate:max_size 100MB
 | 
			
		||||
$STD pm2 set pm2-logrotate:retain 5
 | 
			
		||||
$STD pm2 set pm2-logrotate:compress tr
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up PostgreSQL Database"
 | 
			
		||||
DB_NAME=joplin
 | 
			
		||||
DB_USER=joplin
 | 
			
		||||
DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
 | 
			
		||||
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
 | 
			
		||||
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
 | 
			
		||||
{
 | 
			
		||||
  echo "Joplin-Credentials"
 | 
			
		||||
  echo "Joplin Database User: $DB_USER"
 | 
			
		||||
  echo "Joplin Database Password: $DB_PASS"
 | 
			
		||||
  echo "Joplin Database Name: $DB_NAME"
 | 
			
		||||
} >>~/joplin.creds
 | 
			
		||||
msg_ok "Set up PostgreSQL Database"
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" "latest"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Joplin Server (Patience)"
 | 
			
		||||
LOCAL_IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
cd /opt/joplin-server
 | 
			
		||||
sed -i "/onenote-converter/d" packages/lib/package.json
 | 
			
		||||
$STD yarn config set --home enableTelemetry 0
 | 
			
		||||
export BUILD_SEQUENCIAL=1
 | 
			
		||||
$STD yarn install --inline-builds
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/opt/joplin-server/.env
 | 
			
		||||
PM2_HOME=/opt/pm2
 | 
			
		||||
NODE_ENV=production
 | 
			
		||||
APP_BASE_URL=http://$LOCAL_IP:22300
 | 
			
		||||
APP_PORT=22300
 | 
			
		||||
DB_CLIENT=pg
 | 
			
		||||
POSTGRES_PASSWORD=$DB_PASS
 | 
			
		||||
POSTGRES_DATABASE=$DB_NAME
 | 
			
		||||
POSTGRES_USER=$DB_USER
 | 
			
		||||
POSTGRES_PORT=5432
 | 
			
		||||
POSTGRES_HOST=localhost
 | 
			
		||||
EOF
 | 
			
		||||
msg_ok "Setup Joplin Server"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/joplin-server.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Joplin Server Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
WorkingDirectory=/opt/joplin-server/packages/server
 | 
			
		||||
EnvironmentFile=/opt/joplin-server/.env
 | 
			
		||||
ExecStart=/usr/bin/yarn start-prod
 | 
			
		||||
Restart=on-failure
 | 
			
		||||
RestartSec=5
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now joplin-server
 | 
			
		||||
msg_ok "Service Setup"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -13,6 +13,12 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt install -y \
 | 
			
		||||
  build-essential \
 | 
			
		||||
  python3-dev
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
PG_VERSION="17" setup_postgresql
 | 
			
		||||
PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
 | 
			
		||||
@@ -75,6 +81,7 @@ motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ msg_info "Installing dependencies"
 | 
			
		||||
$STD apt-get install --no-install-recommends -y build-essential
 | 
			
		||||
msg_ok "Installed dependencies"
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="20" setup_nodejs
 | 
			
		||||
NODE_VERSION="22" setup_nodejs
 | 
			
		||||
MYSQL_VERSION="8.0" setup_mysql
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Database"
 | 
			
		||||
@@ -48,7 +48,7 @@ sed -i -e 's|db|localhost|' \
 | 
			
		||||
  -e "s|=PASSWORD|=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9' | head -c40)|" \
 | 
			
		||||
  /opt/mmdl/.env
 | 
			
		||||
cd /opt/mmdl
 | 
			
		||||
export NEXT_TELEMETRY_DISABLE=1
 | 
			
		||||
export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
export CI="true"
 | 
			
		||||
$STD npm install
 | 
			
		||||
$STD npm run migrate
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ update_os
 | 
			
		||||
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="dom,gmp,iconv,mysqli,pdo-mysql,redis,tokenizer" setup_php
 | 
			
		||||
setup_composer
 | 
			
		||||
setup_mariadb
 | 
			
		||||
NODE_VERSION="20" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up MariaDB"
 | 
			
		||||
DB_NAME=monica
 | 
			
		||||
@@ -44,6 +44,7 @@ sed -i -e "s|^DB_USERNAME=.*|DB_USERNAME=${DB_USER}|" \
 | 
			
		||||
  -e "s|^HASH_SALT=.*|HASH_SALT=${HASH_SALT}|" \
 | 
			
		||||
  /opt/monica/.env
 | 
			
		||||
$STD composer install --no-dev -o --no-interaction
 | 
			
		||||
$STD yarn config set ignore-engines true
 | 
			
		||||
$STD yarn install
 | 
			
		||||
$STD yarn run production
 | 
			
		||||
$STD php artisan key:generate
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: CrazyWolf13
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://ntfy.sh/
 | 
			
		||||
 | 
			
		||||
@@ -13,17 +13,19 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  apt-transport-https
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing ntfy"
 | 
			
		||||
mkdir -p /etc/apt/keyrings
 | 
			
		||||
curl -fsSL https://archive.heckel.io/apt/pubkey.txt | gpg --dearmor -o /etc/apt/keyrings/archive.heckel.io.gpg
 | 
			
		||||
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/archive.heckel.io.gpg] https://archive.heckel.io/apt debian main" >/etc/apt/sources.list.d/archive.heckel.io.list
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y ntfy
 | 
			
		||||
curl -fsSL -o /etc/apt/keyrings/ntfy.gpg https://archive.ntfy.sh/apt/keyring.gpg
 | 
			
		||||
cat <<EOF >/etc/apt/sources.list.d/ntfy.sources 
 | 
			
		||||
Types: deb
 | 
			
		||||
URIs: https://archive.ntfy.sh/apt/
 | 
			
		||||
Suites: stable
 | 
			
		||||
Components: main
 | 
			
		||||
Signed-By: /etc/apt/keyrings/ntfy.gpg
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
$STD apt update
 | 
			
		||||
$STD apt install -y ntfy
 | 
			
		||||
systemctl enable -q --now ntfy
 | 
			
		||||
msg_ok "Installed ntfy"
 | 
			
		||||
 | 
			
		||||
@@ -31,6 +33,7 @@ motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ $STD apt-get install -y \
 | 
			
		||||
  redis
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="20" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
PG_VERSION="16" setup_postgresql
 | 
			
		||||
 | 
			
		||||
msg_info "Set up PostgreSQL Database"
 | 
			
		||||
 
 | 
			
		||||
@@ -30,9 +30,9 @@ $STD apt-get install -y --no-install-recommends \
 | 
			
		||||
  libxmlsec1-openssl
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
NODE_VERSION="20" NODE_MODULE="yarn" setup_nodejs
 | 
			
		||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
 | 
			
		||||
fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
 | 
			
		||||
PG_VERSION="16" setup_postgresql
 | 
			
		||||
PG_VERSION="17" PG_MODULES="contrib" setup_postgresql
 | 
			
		||||
PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
 | 
			
		||||
msg_info "Set up PostgreSQL Database"
 | 
			
		||||
@@ -45,6 +45,8 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
 | 
			
		||||
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
 | 
			
		||||
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
 | 
			
		||||
{
 | 
			
		||||
  echo "Tandoor-Credentials"
 | 
			
		||||
  echo "Tandoor Database Name: $DB_NAME"
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ $STD npm install
 | 
			
		||||
$STD npm run build
 | 
			
		||||
mkdir /opt/tracktor-data
 | 
			
		||||
HOST_IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
cat <<EOF >/opt/tracktor/app/backend/.env
 | 
			
		||||
cat <<EOF >/opt/tracktor.env
 | 
			
		||||
NODE_ENV=production
 | 
			
		||||
PUBLIC_DEMO_MODE=false
 | 
			
		||||
DB_PATH=/opt/tracktor-data/tracktor.db
 | 
			
		||||
@@ -31,6 +31,7 @@ PUBLIC_API_BASE_URL=http://$HOST_IP:3000
 | 
			
		||||
# Here add the reverse proxy url as well to avoid cross errors from the app. 
 | 
			
		||||
CORS_ORIGINS=http://$HOST_IP:3000 
 | 
			
		||||
PORT=3000
 | 
			
		||||
AUTH_PIN=123456
 | 
			
		||||
EOF
 | 
			
		||||
msg_ok "Configured Tracktor"
 | 
			
		||||
 | 
			
		||||
@@ -43,7 +44,7 @@ After=network.target
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
WorkingDirectory=/opt/tracktor
 | 
			
		||||
EnvironmentFile=/opt/tracktor/app/backend/.env
 | 
			
		||||
EnvironmentFile=/opt/tracktor.env
 | 
			
		||||
ExecStart=/usr/bin/npm start
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
@@ -56,6 +57,7 @@ motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										56
									
								
								install/upsnap-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								install/upsnap-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/seriousm4x/UpSnap
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt install -y \
 | 
			
		||||
  nmap \
 | 
			
		||||
  samba \
 | 
			
		||||
  samba-common-bin \
 | 
			
		||||
  openssh-client \
 | 
			
		||||
  openssh-server \
 | 
			
		||||
  sshpass
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
fetch_and_deploy_gh_release "upsnap" "seriousm4x/UpSnap" "prebuild" "latest" "/opt/upsnap" "UpSnap_*_linux_amd64.zip"
 | 
			
		||||
setcap 'cap_net_raw=+ep' /opt/upsnap/upsnap
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/upsnap.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=UpSnap Service
 | 
			
		||||
Documentation=https://github.com/seriousm4x/UpSnap/wiki
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
User=root
 | 
			
		||||
Restart=on-failure
 | 
			
		||||
WorkingDirectory=/opt/upsnap
 | 
			
		||||
ExecStart=/opt/upsnap/upsnap serve --http=0.0.0.0:8090
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now upsnap
 | 
			
		||||
msg_ok "Service Created"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -13,20 +13,61 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
PG_VERSION="17" setup_postgresql
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Zabbix"
 | 
			
		||||
cd /tmp
 | 
			
		||||
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
 | 
			
		||||
  grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
 | 
			
		||||
  xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb")" \
 | 
			
		||||
  -o /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
$STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts
 | 
			
		||||
$STD apt-get install -y zabbix-agent2 zabbix-agent2-plugin-*
 | 
			
		||||
  xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
 | 
			
		||||
  -o /tmp/zabbix-release_latest+debian13_all.deb
 | 
			
		||||
$STD dpkg -i /tmp/zabbix-release_latest+debian13_all.deb
 | 
			
		||||
$STD apt update
 | 
			
		||||
$STD apt install -y zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql zabbix-apache-conf zabbix-sql-scripts
 | 
			
		||||
msg_ok "Installed Zabbix"
 | 
			
		||||
 | 
			
		||||
while true; do
 | 
			
		||||
  read -rp "Which agent do you want to install? [1=agent (classic), 2=agent2 (modern), default=1]: " AGENT_CHOICE
 | 
			
		||||
  case "$AGENT_CHOICE" in
 | 
			
		||||
  2)
 | 
			
		||||
    AGENT_PKG="zabbix-agent2"
 | 
			
		||||
    break
 | 
			
		||||
    ;;
 | 
			
		||||
  "" | 1)
 | 
			
		||||
    AGENT_PKG="zabbix-agent"
 | 
			
		||||
    break
 | 
			
		||||
    ;;
 | 
			
		||||
  *)
 | 
			
		||||
    echo "Invalid choice. Please enter 1 or 2."
 | 
			
		||||
    ;;
 | 
			
		||||
  esac
 | 
			
		||||
done
 | 
			
		||||
msg_ok "Selected $AGENT_PKG"
 | 
			
		||||
 | 
			
		||||
if [ "$AGENT_PKG" = "zabbix-agent2" ]; then
 | 
			
		||||
  echo "Choose plugins for Zabbix Agent2:"
 | 
			
		||||
  echo "1) PostgreSQL only (default, recommended)"
 | 
			
		||||
  echo "2) All plugins (may cause issues)"
 | 
			
		||||
  read -rp "Choose option [1-2]: " PLUGIN_CHOICE
 | 
			
		||||
 | 
			
		||||
  case "$PLUGIN_CHOICE" in
 | 
			
		||||
  2)
 | 
			
		||||
    $STD apt install -y zabbix-agent2 zabbix-agent2-plugin-*
 | 
			
		||||
    ;;
 | 
			
		||||
  *)
 | 
			
		||||
    $STD apt install -y zabbix-agent2 zabbix-agent2-plugin-postgresql
 | 
			
		||||
    ;;
 | 
			
		||||
  esac
 | 
			
		||||
 | 
			
		||||
  if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
 | 
			
		||||
    sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
 | 
			
		||||
      /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
 | 
			
		||||
  fi
 | 
			
		||||
else
 | 
			
		||||
  $STD apt install -y zabbix-agent
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up PostgreSQL"
 | 
			
		||||
$STD apt-get install -y postgresql
 | 
			
		||||
DB_NAME=zabbixdb
 | 
			
		||||
DB_USER=zabbix
 | 
			
		||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
 | 
			
		||||
@@ -35,18 +76,31 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCO
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
 | 
			
		||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
 | 
			
		||||
{
 | 
			
		||||
  echo "Zabbix-Credentials"
 | 
			
		||||
  echo "Zabbix Database User: $DB_USER"
 | 
			
		||||
  echo "Zabbix Database Password: $DB_PASS"
 | 
			
		||||
  echo "Zabbix Database Name: $DB_NAME"
 | 
			
		||||
} >>~/zabbix.creds
 | 
			
		||||
 | 
			
		||||
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u $DB_USER psql $DB_NAME &>/dev/null
 | 
			
		||||
sed -i "s/^DBName=.*/DBName=$DB_NAME/" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
sed -i "s/^DBUser=.*/DBUser=$DB_USER/" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
sed -i "s/^# DBPassword=.*/DBPassword=$DB_PASS/" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
echo "" >~/zabbix.creds
 | 
			
		||||
echo "zabbix Database Credentials" >>~/zabbix.creds
 | 
			
		||||
echo "" >>~/zabbix.creds
 | 
			
		||||
echo -e "zabbix Database User: \e[32m$DB_USER\e[0m" >>~/zabbix.creds
 | 
			
		||||
echo -e "zabbix Database Password: \e[32m$DB_PASS\e[0m" >>~/zabbix.creds
 | 
			
		||||
echo -e "zabbix Database Name: \e[32m$DB_NAME\e[0m" >>~/zabbix.creds
 | 
			
		||||
msg_ok "Set up PostgreSQL"
 | 
			
		||||
 | 
			
		||||
msg_info "Configuring Fping"
 | 
			
		||||
if command -v fping >/dev/null 2>&1; then
 | 
			
		||||
  FPING_PATH=$(command -v fping)
 | 
			
		||||
  sed -i "s|^#\?FpingLocation=.*|FpingLocation=$FPING_PATH|" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if command -v fping6 >/dev/null 2>&1; then
 | 
			
		||||
  FPING6_PATH=$(command -v fping6)
 | 
			
		||||
  sed -i "s|^#\?Fping6Location=.*|Fping6Location=$FPING6_PATH|" /etc/zabbix/zabbix_server.conf
 | 
			
		||||
fi
 | 
			
		||||
msg_ok "Configured Fping"
 | 
			
		||||
 | 
			
		||||
msg_info "Starting Services"
 | 
			
		||||
systemctl restart zabbix-server zabbix-agent2 apache2
 | 
			
		||||
systemctl enable -q --now zabbix-server zabbix-agent2 apache2
 | 
			
		||||
@@ -56,7 +110,8 @@ motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
 | 
			
		||||
$STD apt -y autoremove
 | 
			
		||||
$STD apt -y autoclean
 | 
			
		||||
$STD apt -y clean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -1970,9 +1970,8 @@ function setup_uv() {
 | 
			
		||||
    export PATH="/usr/local/bin:$PATH"
 | 
			
		||||
  fi
 | 
			
		||||
  ensure_usr_local_bin_persist
 | 
			
		||||
  if ! $STD uv python update-shell; then
 | 
			
		||||
    msg_error "uv shell integration failed – continuing anyway"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  $STD uv python update-shell >/dev/null 2>&1 || true
 | 
			
		||||
  msg_ok "Setup uv $LATEST_VERSION"
 | 
			
		||||
 | 
			
		||||
  # Optional: install specific Python version
 | 
			
		||||
@@ -2022,6 +2021,8 @@ function setup_yq() {
 | 
			
		||||
    }
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  [[ ":$PATH:" != *":/usr/local/bin:"* ]] && echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc && source ~/.bashrc
 | 
			
		||||
 | 
			
		||||
  if command -v yq &>/dev/null; then
 | 
			
		||||
    if ! yq --version 2>&1 | grep -q 'mikefarah'; then
 | 
			
		||||
      rm -f "$(command -v yq)"
 | 
			
		||||
 
 | 
			
		||||
@@ -532,20 +532,28 @@ if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
 | 
			
		||||
      "$MARKER" \
 | 
			
		||||
      "<script>" \
 | 
			
		||||
      "  function removeSubscriptionElements() {" \
 | 
			
		||||
      "    // --- Remove subscription dialogs ---" \
 | 
			
		||||
      "    const dialogs = document.querySelectorAll('dialog.pwt-outer-dialog');" \
 | 
			
		||||
      "    dialogs.forEach(dialog => {" \
 | 
			
		||||
      "      const closeButton = dialog.querySelector('.fa-close');" \
 | 
			
		||||
      "      const exclamationIcon = dialog.querySelector('.fa-exclamation-triangle');" \
 | 
			
		||||
      "      const continueButton = dialog.querySelector('button');" \
 | 
			
		||||
      "      if (closeButton && exclamationIcon && continueButton) { dialog.remove(); console.log('Removed subscription dialog'); }" \
 | 
			
		||||
      "      const text = (dialog.textContent || '').toLowerCase();" \
 | 
			
		||||
      "      if (text.includes('subscription')) {" \
 | 
			
		||||
      "        dialog.remove();" \
 | 
			
		||||
      "        console.log('Removed subscription dialog');" \
 | 
			
		||||
      "      }" \
 | 
			
		||||
      "    });" \
 | 
			
		||||
      "" \
 | 
			
		||||
      "    // --- Remove subscription cards, but keep Reboot/Shutdown/Console ---" \
 | 
			
		||||
      "    const cards = document.querySelectorAll('.pwt-card.pwt-p-2.pwt-d-flex.pwt-interactive.pwt-justify-content-center');" \
 | 
			
		||||
      "    cards.forEach(card => {" \
 | 
			
		||||
      "      const hasInteractiveElements = card.querySelector('button, input, a');" \
 | 
			
		||||
      "      const hasComplexStructure = card.querySelector('.pwt-grid, .pwt-flex, .pwt-button');" \
 | 
			
		||||
      "      if (!hasInteractiveElements && !hasComplexStructure) { card.remove(); console.log('Removed subscription card'); }" \
 | 
			
		||||
      "      const text = (card.textContent || '').toLowerCase();" \
 | 
			
		||||
      "      const hasButton = card.querySelector('button');" \
 | 
			
		||||
      "      if (!hasButton && text.includes('subscription')) {" \
 | 
			
		||||
      "        card.remove();" \
 | 
			
		||||
      "        console.log('Removed subscription card');" \
 | 
			
		||||
      "      }" \
 | 
			
		||||
      "    });" \
 | 
			
		||||
      "  }" \
 | 
			
		||||
      "" \
 | 
			
		||||
      "  const observer = new MutationObserver(removeSubscriptionElements);" \
 | 
			
		||||
      "  observer.observe(document.body, { childList: true, subtree: true });" \
 | 
			
		||||
      "  removeSubscriptionElements();" \
 | 
			
		||||
@@ -555,7 +563,6 @@ if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
 | 
			
		||||
      "" >> "$MOBILE_TPL"
 | 
			
		||||
fi
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
    chmod 755 /usr/local/bin/pve-remove-nag.sh
 | 
			
		||||
 | 
			
		||||
    cat >/etc/apt/apt.conf.d/no-nag-script <<'EOF'
 | 
			
		||||
 
 | 
			
		||||
@@ -205,15 +205,69 @@ function exit-script() {
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Ensure pv is installed or abort with instructions
 | 
			
		||||
function ensure_pv() {
 | 
			
		||||
  if ! command -v pv &>/dev/null; then
 | 
			
		||||
    msg_info "Installing required package: pv"
 | 
			
		||||
    apt-get update -qq &>/dev/null
 | 
			
		||||
    apt-get install -y pv &>/dev/null
 | 
			
		||||
    if ! apt-get update -qq &>/dev/null || ! apt-get install -y pv &>/dev/null; then
 | 
			
		||||
      msg_error "Failed to install pv automatically."
 | 
			
		||||
      echo -e "\nPlease run manually on the Proxmox host:\n  apt install pv\n"
 | 
			
		||||
      exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Installed pv"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Download an .xz file and validate it
 | 
			
		||||
# Args: $1=url $2=cache_file
 | 
			
		||||
function download_and_validate_xz() {
 | 
			
		||||
  local url="$1"
 | 
			
		||||
  local file="$2"
 | 
			
		||||
 | 
			
		||||
  # If file exists, check validity
 | 
			
		||||
  if [[ -s "$file" ]]; then
 | 
			
		||||
    if xz -t "$file" &>/dev/null; then
 | 
			
		||||
      msg_ok "Using cached image $(basename "$file")"
 | 
			
		||||
      return 0
 | 
			
		||||
    else
 | 
			
		||||
      msg_error "Cached file $(basename "$file") is corrupted. Deleting and retrying download..."
 | 
			
		||||
      rm -f "$file"
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Download fresh file
 | 
			
		||||
  msg_info "Downloading image: $(basename "$file")"
 | 
			
		||||
  if ! curl -fSL -o "$file" "$url"; then
 | 
			
		||||
    msg_error "Download failed: $url"
 | 
			
		||||
    rm -f "$file"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Validate again
 | 
			
		||||
  if ! xz -t "$file" &>/dev/null; then
 | 
			
		||||
    msg_error "Downloaded file $(basename "$file") is corrupted. Please try again later."
 | 
			
		||||
    rm -f "$file"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Downloaded and validated $(basename "$file")"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Extract .xz with pv
 | 
			
		||||
# Args: $1=cache_file $2=target_img
 | 
			
		||||
function extract_xz_with_pv() {
 | 
			
		||||
  set -o pipefail
 | 
			
		||||
  local file="$1"
 | 
			
		||||
  local target="$2"
 | 
			
		||||
 | 
			
		||||
  msg_info "Decompressing $(basename "$file") to $target"
 | 
			
		||||
  if ! xz -dc "$file" | pv -N "Extracting" >"$target"; then
 | 
			
		||||
    msg_error "Failed to extract $file"
 | 
			
		||||
    rm -f "$target"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Decompressed to $target"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function default_settings() {
 | 
			
		||||
  BRANCH="$stable"
 | 
			
		||||
  VMID=$(get_valid_nextid)
 | 
			
		||||
@@ -507,23 +561,15 @@ FILE_IMG="/var/lib/vz/template/tmp/${CACHE_FILE##*/%.xz}" # .qcow2
 | 
			
		||||
mkdir -p "$CACHE_DIR" "$(dirname "$FILE_IMG")"
 | 
			
		||||
msg_ok "${CL}${BL}${URL}${CL}"
 | 
			
		||||
 | 
			
		||||
if [[ ! -s "$CACHE_FILE" ]]; then
 | 
			
		||||
  curl -f#SL -o "$CACHE_FILE" "$URL"
 | 
			
		||||
  msg_ok "Downloaded ${CL}${BL}$(basename "$CACHE_FILE")${CL}"
 | 
			
		||||
else
 | 
			
		||||
  msg_ok "Using cached image ${CL}${BL}$(basename "$CACHE_FILE")${CL}"
 | 
			
		||||
fi
 | 
			
		||||
download_and_validate_xz "$URL" "$CACHE_FILE"
 | 
			
		||||
 | 
			
		||||
set -o pipefail
 | 
			
		||||
msg_info "Creating Home Assistant OS VM shell"
 | 
			
		||||
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
 | 
			
		||||
  -cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \
 | 
			
		||||
  -net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 -scsihw virtio-scsi-pci >/dev/null
 | 
			
		||||
msg_ok "Created VM shell"
 | 
			
		||||
 | 
			
		||||
msg_info "Decompressing $(basename "$CACHE_FILE") to $FILE_IMG"
 | 
			
		||||
xz -dc "$CACHE_FILE" | pv -N "Extracting" >"$FILE_IMG"
 | 
			
		||||
msg_ok "Decompressed to $FILE_IMG"
 | 
			
		||||
extract_xz_with_pv "$CACHE_FILE" "$FILE_IMG"
 | 
			
		||||
 | 
			
		||||
msg_info "Importing disk into storage ($STORAGE)"
 | 
			
		||||
if qm disk import --help >/dev/null 2>&1; then
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,6 @@ GN=$(echo "\033[1;92m")
 | 
			
		||||
DGN=$(echo "\033[32m")
 | 
			
		||||
CL=$(echo "\033[m")
 | 
			
		||||
 | 
			
		||||
CL=$(echo "\033[m")
 | 
			
		||||
BOLD=$(echo "\033[1m")
 | 
			
		||||
BFR="\\r\\033[K"
 | 
			
		||||
HOLD=" "
 | 
			
		||||
@@ -201,15 +200,69 @@ function exit-script() {
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Ensure pv is installed or abort with instructions
 | 
			
		||||
function ensure_pv() {
 | 
			
		||||
  if ! command -v pv &>/dev/null; then
 | 
			
		||||
    msg_info "Installing required package: pv"
 | 
			
		||||
    apt-get update -qq &>/dev/null
 | 
			
		||||
    apt-get install -y pv &>/dev/null
 | 
			
		||||
    if ! apt-get update -qq &>/dev/null || ! apt-get install -y pv &>/dev/null; then
 | 
			
		||||
      msg_error "Failed to install pv automatically."
 | 
			
		||||
      echo -e "\nPlease run manually on the Proxmox host:\n  apt install pv\n"
 | 
			
		||||
      exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Installed pv"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Download an .xz file and validate it
 | 
			
		||||
# Args: $1=url $2=cache_file
 | 
			
		||||
function download_and_validate_xz() {
 | 
			
		||||
  local url="$1"
 | 
			
		||||
  local file="$2"
 | 
			
		||||
 | 
			
		||||
  # If file exists, check validity
 | 
			
		||||
  if [[ -s "$file" ]]; then
 | 
			
		||||
    if xz -t "$file" &>/dev/null; then
 | 
			
		||||
      msg_ok "Using cached image $(basename "$file")"
 | 
			
		||||
      return 0
 | 
			
		||||
    else
 | 
			
		||||
      msg_error "Cached file $(basename "$file") is corrupted. Deleting and retrying download..."
 | 
			
		||||
      rm -f "$file"
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Download fresh file
 | 
			
		||||
  msg_info "Downloading image: $(basename "$file")"
 | 
			
		||||
  if ! curl -fSL -o "$file" "$url"; then
 | 
			
		||||
    msg_error "Download failed: $url"
 | 
			
		||||
    rm -f "$file"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Validate again
 | 
			
		||||
  if ! xz -t "$file" &>/dev/null; then
 | 
			
		||||
    msg_error "Downloaded file $(basename "$file") is corrupted. Please try again later."
 | 
			
		||||
    rm -f "$file"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Downloaded and validated $(basename "$file")"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Extract .xz with pv
 | 
			
		||||
# Args: $1=cache_file $2=target_img
 | 
			
		||||
function extract_xz_with_pv() {
 | 
			
		||||
  set -o pipefail
 | 
			
		||||
  local file="$1"
 | 
			
		||||
  local target="$2"
 | 
			
		||||
 | 
			
		||||
  msg_info "Decompressing $(basename "$file") to $target"
 | 
			
		||||
  if ! xz -dc "$file" | pv -N "Extracting" >"$target"; then
 | 
			
		||||
    msg_error "Failed to extract $file"
 | 
			
		||||
    rm -f "$target"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Decompressed to $target"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function default_settings() {
 | 
			
		||||
  VMID=$(get_valid_nextid)
 | 
			
		||||
  MACHINE="q35"
 | 
			
		||||
@@ -475,19 +528,13 @@ FILE_IMG="/var/lib/vz/template/tmp/${CACHE_FILE##*/%.xz}"
 | 
			
		||||
 | 
			
		||||
mkdir -p "$CACHE_DIR" "$(dirname "$FILE_IMG")"
 | 
			
		||||
 | 
			
		||||
if [[ ! -s "$CACHE_FILE" ]]; then
 | 
			
		||||
  msg_ok "Downloading Umbrel OS image"
 | 
			
		||||
  curl -f#SL -o "$CACHE_FILE" "$URL"
 | 
			
		||||
else
 | 
			
		||||
  msg_ok "Using cached Umbrel OS image"
 | 
			
		||||
fi
 | 
			
		||||
download_and_validate_xz "$URL" "$CACHE_FILE"
 | 
			
		||||
 | 
			
		||||
set -o pipefail
 | 
			
		||||
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
 | 
			
		||||
  -cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \
 | 
			
		||||
  -net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 -scsihw virtio-scsi-pci >/dev/null
 | 
			
		||||
 | 
			
		||||
xz -dc "$CACHE_FILE" | pv -N "Extracting" >"$FILE_IMG"
 | 
			
		||||
extract_xz_with_pv "$CACHE_FILE" "$FILE_IMG"
 | 
			
		||||
 | 
			
		||||
if qm disk import --help >/dev/null 2>&1; then
 | 
			
		||||
  IMPORT_CMD=(qm disk import)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user