mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			134 Commits
		
	
	
		
			2025-02-11
			...
			2025-02-19
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					87c61de11e | ||
| 
						 | 
					b293638c40 | ||
| 
						 | 
					d1e0c2d164 | ||
| 
						 | 
					7e6a7468df | ||
| 
						 | 
					1ffe6b1c3c | ||
| 
						 | 
					a76733df60 | ||
| 
						 | 
					70f5280fcc | ||
| 
						 | 
					4cbe90597e | ||
| 
						 | 
					0afe60e11a | ||
| 
						 | 
					6982d02489 | ||
| 
						 | 
					031aefe05a | ||
| 
						 | 
					fa01cfd840 | ||
| 
						 | 
					331bc0f5a6 | ||
| 
						 | 
					7e9eb2f98a | ||
| 
						 | 
					5a72b1e523 | ||
| 
						 | 
					2693fabac2 | ||
| 
						 | 
					ce16be6393 | ||
| 
						 | 
					b694c339cb | ||
| 
						 | 
					3957b46d98 | ||
| 
						 | 
					54929e4b0d | ||
| 
						 | 
					ca20d52ac1 | ||
| 
						 | 
					e22a6dad6f | ||
| 
						 | 
					ee84468498 | ||
| 
						 | 
					746f19b0b8 | ||
| 
						 | 
					a646a035d8 | ||
| 
						 | 
					505cb23467 | ||
| 
						 | 
					345e109d9f | ||
| 
						 | 
					bca944034a | ||
| 
						 | 
					be27905776 | ||
| 
						 | 
					53196c7603 | ||
| 
						 | 
					0777ddfbfc | ||
| 
						 | 
					18bd71da89 | ||
| 
						 | 
					ecd13dd5a4 | ||
| 
						 | 
					3ef1ac434a | ||
| 
						 | 
					60e32a05cd | ||
| 
						 | 
					b7df0ee936 | ||
| 
						 | 
					4cf24c54d7 | ||
| 
						 | 
					c4ed0738cf | ||
| 
						 | 
					88b20e5545 | ||
| 
						 | 
					7c5b072303 | ||
| 
						 | 
					347a23ad60 | ||
| 
						 | 
					29806c4525 | ||
| 
						 | 
					a045dc8012 | ||
| 
						 | 
					80e7e2f5b6 | ||
| 
						 | 
					1789d181aa | ||
| 
						 | 
					f0ca0c3379 | ||
| 
						 | 
					1711e44a4d | ||
| 
						 | 
					afe4af2ff6 | ||
| 
						 | 
					ec8c564e25 | ||
| 
						 | 
					fd9d64b342 | ||
| 
						 | 
					1d928f7ea8 | ||
| 
						 | 
					f3c9e8f013 | ||
| 
						 | 
					99813136fe | ||
| 
						 | 
					21a29d7212 | ||
| 
						 | 
					f679a4a1dc | ||
| 
						 | 
					d27f7f13e5 | ||
| 
						 | 
					80cfc3b8a5 | ||
| 
						 | 
					d159e47a62 | ||
| 
						 | 
					47fd890bcd | ||
| 
						 | 
					af01193bc2 | ||
| 
						 | 
					8373e26f1e | ||
| 
						 | 
					1cc2a90b08 | ||
| 
						 | 
					a8a729fcda | ||
| 
						 | 
					fe93224d77 | ||
| 
						 | 
					ddccd1dd3f | ||
| 
						 | 
					2b61b184f2 | ||
| 
						 | 
					01d761ce71 | ||
| 
						 | 
					cfa6b28131 | ||
| 
						 | 
					431fbd471f | ||
| 
						 | 
					ca5e4559df | ||
| 
						 | 
					928946cd4c | ||
| 
						 | 
					221bbdeff3 | ||
| 
						 | 
					879989b5b6 | ||
| 
						 | 
					1d42ce6282 | ||
| 
						 | 
					6f131933b7 | ||
| 
						 | 
					aaa6ae879b | ||
| 
						 | 
					da8c40dca8 | ||
| 
						 | 
					caa4b7d19e | ||
| 
						 | 
					b99adb5e1a | ||
| 
						 | 
					8b23cafed9 | ||
| 
						 | 
					3c82ae04d7 | ||
| 
						 | 
					504cecfe97 | ||
| 
						 | 
					880b6e0476 | ||
| 
						 | 
					4b430aac7c | ||
| 
						 | 
					819bda4573 | ||
| 
						 | 
					8b327552b2 | ||
| 
						 | 
					24a2bbdb65 | ||
| 
						 | 
					2692cbe5e0 | ||
| 
						 | 
					3b01e633a7 | ||
| 
						 | 
					8a720c328a | ||
| 
						 | 
					585bb697b5 | ||
| 
						 | 
					3b905f29ef | ||
| 
						 | 
					f2512b032f | ||
| 
						 | 
					29d3073539 | ||
| 
						 | 
					2a91a5d2e9 | ||
| 
						 | 
					2492497417 | ||
| 
						 | 
					dc3a0eca69 | ||
| 
						 | 
					d5714eb749 | ||
| 
						 | 
					bd90b30300 | ||
| 
						 | 
					5946079f47 | ||
| 
						 | 
					72b546e945 | ||
| 
						 | 
					65f8495a12 | ||
| 
						 | 
					ab64e7e013 | ||
| 
						 | 
					80053c1cc3 | ||
| 
						 | 
					067c962baf | ||
| 
						 | 
					e5c6953e98 | ||
| 
						 | 
					03d8d095cc | ||
| 
						 | 
					22f44d117a | ||
| 
						 | 
					417d4089d7 | ||
| 
						 | 
					c892401218 | ||
| 
						 | 
					3483ea7025 | ||
| 
						 | 
					9ec1b651cd | ||
| 
						 | 
					f06b37f180 | ||
| 
						 | 
					ca01015586 | ||
| 
						 | 
					362b5cd031 | ||
| 
						 | 
					64e9eac80f | ||
| 
						 | 
					e4c2485823 | ||
| 
						 | 
					a5f77f23e9 | ||
| 
						 | 
					0f7ff181df | ||
| 
						 | 
					1788551393 | ||
| 
						 | 
					1c9d23713d | ||
| 
						 | 
					3f779e14fa | ||
| 
						 | 
					58eff8c4cb | ||
| 
						 | 
					6c495bcafc | ||
| 
						 | 
					6de6b1542c | ||
| 
						 | 
					62425bc514 | ||
| 
						 | 
					8cf1c2969b | ||
| 
						 | 
					5d56822d1b | ||
| 
						 | 
					c014bc200e | ||
| 
						 | 
					56de05a392 | ||
| 
						 | 
					76ca5181ae | ||
| 
						 | 
					8181518c24 | ||
| 
						 | 
					ba636ed25d | ||
| 
						 | 
					e797cba504 | 
							
								
								
									
										5
									
								
								.github/CONTRIBUTOR_GUIDE/ct/AppName.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/CONTRIBUTOR_GUIDE/ct/AppName.md
									
									
									
									
										vendored
									
									
								
							@@ -119,18 +119,13 @@ var_unprivileged="1"
 | 
			
		||||
## 2.2 **📋 App output & base settings**
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
- `header_info`: Generates ASCII header for APP
 | 
			
		||||
- `base_settings`: Allows overwriting variable values
 | 
			
		||||
 | 
			
		||||
## 2.3 **🛠 Core functions**
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								.github/CONTRIBUTOR_GUIDE/ct/AppName.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/CONTRIBUTOR_GUIDE/ct/AppName.sh
									
									
									
									
										vendored
									
									
								
							@@ -23,11 +23,7 @@ var_version="[VERSION]"
 | 
			
		||||
var_unprivileged="[UNPRIVILEGED]"
 | 
			
		||||
# 1 = unprivileged container, 0 = privileged container
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
@@ -46,8 +42,6 @@ function update_script() {
 | 
			
		||||
    # Crawling the new version and checking whether an update is required
 | 
			
		||||
    RELEASE=$(curl -fsSL [RELEASE_URL] | [PARSE_RELEASE_COMMAND])
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
        msg_info "Updating $APP"
 | 
			
		||||
 | 
			
		||||
        # Stopping Services
 | 
			
		||||
        msg_info "Stopping $APP"
 | 
			
		||||
        systemctl stop [SERVICE_NAME]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
name: "🐞 Script Issue Report"
 | 
			
		||||
description: Report a specific issue with a script. For other inquiries, please use the Discussions section.
 | 
			
		||||
 | 
			
		||||
labels: ["bug"]
 | 
			
		||||
body:
 | 
			
		||||
  - type: markdown
 | 
			
		||||
    attributes:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
									
									
									
										vendored
									
									
								
							@@ -3,7 +3,7 @@ contact_links:
 | 
			
		||||
    - name: 🤔 Questions and Help
 | 
			
		||||
      url: https://github.com/community-scripts/ProxmoxVE/discussions
 | 
			
		||||
      about: For suggestions or questions, please use the Discussions section.
 | 
			
		||||
    - name: 🌟 Feature request
 | 
			
		||||
    - name: 🌟 new Script request
 | 
			
		||||
      url: https://github.com/community-scripts/ProxmoxVE/discussions/new?category=request-script
 | 
			
		||||
      about: For feature/script requests, please use the Discussions section.
 | 
			
		||||
    - name: 💻 Discord
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										33
									
								
								.github/ISSUE_TEMPLATE/feature_request.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.github/ISSUE_TEMPLATE/feature_request.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
name: "✨ Feature Request"
 | 
			
		||||
description: "Suggest a new feature or enhancement."
 | 
			
		||||
labels: ["enhancement"]
 | 
			
		||||
body:
 | 
			
		||||
  - type: markdown
 | 
			
		||||
    attributes:
 | 
			
		||||
      value: |
 | 
			
		||||
        # ✨ **Feature Request**
 | 
			
		||||
        Have an idea for a new feature? Share your thoughts below!
 | 
			
		||||
 | 
			
		||||
  - type: input
 | 
			
		||||
    id: feature_summary
 | 
			
		||||
    attributes:
 | 
			
		||||
      label: "🌟 Briefly describe the feature"
 | 
			
		||||
      placeholder: "e.g., Add support for XYZ"
 | 
			
		||||
    validations:
 | 
			
		||||
      required: true
 | 
			
		||||
 | 
			
		||||
  - type: textarea
 | 
			
		||||
    id: feature_description
 | 
			
		||||
    attributes:
 | 
			
		||||
      label: "📝 Detailed description"
 | 
			
		||||
      placeholder: "Explain the feature in detail"
 | 
			
		||||
    validations:
 | 
			
		||||
      required: true
 | 
			
		||||
 | 
			
		||||
  - type: textarea
 | 
			
		||||
    id: use_case
 | 
			
		||||
    attributes:
 | 
			
		||||
      label: "💡 Why is this useful?"
 | 
			
		||||
      placeholder: "Describe the benefit of this feature"
 | 
			
		||||
    validations:
 | 
			
		||||
      required: true
 | 
			
		||||
							
								
								
									
										25
									
								
								.github/ISSUE_TEMPLATE/task.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								.github/ISSUE_TEMPLATE/task.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
name: "🛠️ Task / General Request"
 | 
			
		||||
description: "Request a general task, improvement, or refactor."
 | 
			
		||||
labels: ["task"]
 | 
			
		||||
body:
 | 
			
		||||
  - type: markdown
 | 
			
		||||
    attributes:
 | 
			
		||||
      value: |
 | 
			
		||||
        # 🛠️ **Task / General Request**
 | 
			
		||||
        Request a task that isn't a bug or feature request.
 | 
			
		||||
 | 
			
		||||
  - type: input
 | 
			
		||||
    id: task_summary
 | 
			
		||||
    attributes:
 | 
			
		||||
      label: "📌 Task summary"
 | 
			
		||||
      placeholder: "e.g., Refactor XYZ"
 | 
			
		||||
    validations:
 | 
			
		||||
      required: true
 | 
			
		||||
 | 
			
		||||
  - type: textarea
 | 
			
		||||
    id: task_details
 | 
			
		||||
    attributes:
 | 
			
		||||
      label: "📋 Task details"
 | 
			
		||||
      placeholder: "Explain what needs to be done"
 | 
			
		||||
    validations:
 | 
			
		||||
      required: true
 | 
			
		||||
							
								
								
									
										28
									
								
								.github/workflows/delete-json-branch.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.github/workflows/delete-json-branch.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
 | 
			
		||||
name: Delete JSON date PR  Branch
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    types: [closed]
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  delete_branch:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout the code
 | 
			
		||||
        uses: actions/checkout@v3
 | 
			
		||||
 | 
			
		||||
      - name: Delete PR Update Branch
 | 
			
		||||
        if: github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'pr-update-json-')
 | 
			
		||||
        run: |
 | 
			
		||||
          PR_BRANCH="${{ github.event.pull_request.head.ref }}"
 | 
			
		||||
          echo "Deleting branch $PR_BRANCH..."
 | 
			
		||||
 | 
			
		||||
          # Avoid deleting the default branch (e.g., main)
 | 
			
		||||
          if [[ "$PR_BRANCH" != "main" ]]; then
 | 
			
		||||
            git push origin --delete "$PR_BRANCH"
 | 
			
		||||
          else
 | 
			
		||||
            echo "Skipping deletion of the main branch"
 | 
			
		||||
          fi
 | 
			
		||||
							
								
								
									
										74
									
								
								.github/workflows/script-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										74
									
								
								.github/workflows/script-test.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,21 +1,25 @@
 | 
			
		||||
name: Run Scripts on PVE Node
 | 
			
		||||
name: Run Scripts on PVE Node for testing
 | 
			
		||||
permissions:
 | 
			
		||||
    pull-requests: write
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
  pull_request_target:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    paths:
 | 
			
		||||
      - 'install/*.sh'
 | 
			
		||||
      - 'ct/*.sh'
 | 
			
		||||
      - 'install/**.sh'
 | 
			
		||||
      - 'ct/**.sh'
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  run-install-script:
 | 
			
		||||
    runs-on: pvenode
 | 
			
		||||
    steps:          
 | 
			
		||||
      - name: Checkout PR branch
 | 
			
		||||
      - name: Checkout PR branch (supports forks)
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          ref: ${{ github.event.pull_request.head.ref }}
 | 
			
		||||
          fetch-depth: 0  
 | 
			
		||||
          repository: ${{ github.event.pull_request.head.repo.full_name }}
 | 
			
		||||
          fetch-depth: 0          
 | 
			
		||||
          
 | 
			
		||||
      - name: Add Git safe directory
 | 
			
		||||
        run: |
 | 
			
		||||
          git config --global --add safe.directory /__w/ProxmoxVE/ProxmoxVE
 | 
			
		||||
@@ -26,13 +30,14 @@ jobs:
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "GH_TOKEN=${GH_TOKEN}" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
      - name: Get changed files in PR
 | 
			
		||||
        id: changed-files
 | 
			
		||||
        run: | 
 | 
			
		||||
          CHANGED_FILES=$(gh pr diff --name-only ${{ github.event.pull_request.number }})  
 | 
			
		||||
          CHANGED_FILES=$(echo "$CHANGED_FILES" | tr '\n' ' ')  
 | 
			
		||||
          echo "Changed files: $CHANGED_FILES"  
 | 
			
		||||
      - name: Get Changed Files
 | 
			
		||||
        run: |
 | 
			
		||||
          CHANGED_FILES=$(gh pr diff ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --name-only)
 | 
			
		||||
          CHANGED_FILES=$(echo "$CHANGED_FILES" | tr '\n' ' ')
 | 
			
		||||
          echo "Changed files: $CHANGED_FILES"
 | 
			
		||||
          echo "SCRIPT=$CHANGED_FILES" >> $GITHUB_ENV
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}        
 | 
			
		||||
 | 
			
		||||
      - name: Get scripts
 | 
			
		||||
        id: check-install-script
 | 
			
		||||
@@ -51,7 +56,7 @@ jobs:
 | 
			
		||||
          ALL_FILES=$(echo "${ALL_FILES[@]}" | xargs)
 | 
			
		||||
          echo "$ALL_FILES"
 | 
			
		||||
          echo "ALL_FILES=$ALL_FILES" >> $GITHUB_ENV
 | 
			
		||||
        
 | 
			
		||||
     
 | 
			
		||||
      - name: Run scripts
 | 
			
		||||
        id: run-install
 | 
			
		||||
        continue-on-error: true
 | 
			
		||||
@@ -59,13 +64,15 @@ jobs:
 | 
			
		||||
          set +e  
 | 
			
		||||
          #run for each files in /ct
 | 
			
		||||
          for FILE in ${{ env.ALL_FILES }}; do            
 | 
			
		||||
            echo "Running: $FILE"
 | 
			
		||||
            STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//')
 | 
			
		||||
            echo "Running Test for: $STRIPPED_NAME"
 | 
			
		||||
            if [[ $FILE =~ ^install/.*-install\.sh$ ]]; then
 | 
			
		||||
              CT_SCRIPT="ct/$STRIPPED_NAME.sh"
 | 
			
		||||
              if [[ ! -f $CT_SCRIPT ]]; then
 | 
			
		||||
                echo "No CT script found for $STRIPPED_NAME"
 | 
			
		||||
                exit 1
 | 
			
		||||
                ERROR_MSG="No CT script found for $FILE"
 | 
			
		||||
                echo "$ERROR_MSG" > result_$STRIPPED_NAME.log
 | 
			
		||||
                continue
 | 
			
		||||
              fi
 | 
			
		||||
                echo "Found CT script for $STRIPPED_NAME"
 | 
			
		||||
                chmod +x "$CT_SCRIPT"
 | 
			
		||||
@@ -74,23 +81,31 @@ jobs:
 | 
			
		||||
              INSTALL_SCRIPT="install/$STRIPPED_NAME-install.sh"
 | 
			
		||||
              if [[ ! -f $INSTALL_SCRIPT ]]; then
 | 
			
		||||
                echo "No install script found for $STRIPPED_NAME"
 | 
			
		||||
                exit 1
 | 
			
		||||
              fi
 | 
			
		||||
                ERROR_MSG="No install script found for $FILE"
 | 
			
		||||
                echo "$ERROR_MSG" > result_$STRIPPED_NAME.log
 | 
			
		||||
                continue
 | 
			
		||||
              fi                
 | 
			
		||||
                echo "Found install script for $STRIPPED_NAME"
 | 
			
		||||
                chmod +x "$INSTALL_SCRIPT"
 | 
			
		||||
                RUNNING_FILE=$FILE
 | 
			
		||||
            fi
 | 
			
		||||
            git checkout origin/main .github/workflows/scripts/app-test/pr-build.func
 | 
			
		||||
            git checkout origin/main .github/workflows/scripts/app-test/pr-install.func
 | 
			
		||||
            git checkout origin/main .github/workflows/scripts/app-test/pr-alpine-install.func
 | 
			
		||||
            git checkout origin/main .github/workflows/scripts/app-test/pr-create-lxc.sh
 | 
			
		||||
            sed -i 's|source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)|source .github/workflows/scripts/app-test/pr-build.func|g' "$RUNNING_FILE"
 | 
			
		||||
            git remote add community-scripts https://github.com/community-scripts/ProxmoxVE.git
 | 
			
		||||
            git fetch community-scripts
 | 
			
		||||
            rm -f .github/workflows/scripts/app-test/pr-build.func || true
 | 
			
		||||
            rm -f .github/workflows/scripts/app-test/pr-install.func || true
 | 
			
		||||
            rm -f .github/workflows/scripts/app-test/pr-alpine-install.func || true
 | 
			
		||||
            rm -f .github/workflows/scripts/app-test/pr-create-lxc.sh || true
 | 
			
		||||
            git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-build.func
 | 
			
		||||
            git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-install.func
 | 
			
		||||
            git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-alpine-install.func
 | 
			
		||||
            git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-create-lxc.sh
 | 
			
		||||
            chmod +x $RUNNING_FILE         
 | 
			
		||||
            chmod +x .github/workflows/scripts/app-test/pr-create-lxc.sh
 | 
			
		||||
            chmod +x .github/workflows/scripts/app-test/pr-install.func
 | 
			
		||||
            chmod +x .github/workflows/scripts/app-test/pr-alpine-install.func
 | 
			
		||||
            chmod +x .github/workflows/scripts/app-test/pr-build.func
 | 
			
		||||
 | 
			
		||||
            sed -i 's|source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)|source .github/workflows/scripts/app-test/pr-build.func|g' "$RUNNING_FILE"
 | 
			
		||||
            echo "Executing $RUNNING_FILE"
 | 
			
		||||
            ERROR_MSG=$(./$RUNNING_FILE 2>&1 > /dev/null)
 | 
			
		||||
            echo "Finished running $FILE"
 | 
			
		||||
            if [ -n "$ERROR_MSG" ]; then
 | 
			
		||||
@@ -110,12 +125,12 @@ jobs:
 | 
			
		||||
                pct stop $container_id
 | 
			
		||||
                pct destroy $container_id
 | 
			
		||||
            fi            
 | 
			
		||||
          done
 | 
			
		||||
      
 | 
			
		||||
          done   
 | 
			
		||||
 | 
			
		||||
      - name: Post error comments
 | 
			
		||||
        run: |
 | 
			
		||||
          ERROR="false"
 | 
			
		||||
          SEARCH_LINE=".github/workflows/scripts/app-test/pr-build.func: line"
 | 
			
		||||
          SEARCH_LINE=".github/workflows/scripts/app-test/pr-build.func: line 253:"
 | 
			
		||||
          for FILE in ${{ env.ALL_FILES }}; do
 | 
			
		||||
            STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//')
 | 
			
		||||
            if [[ ! -f result_$STRIPPED_NAME.log ]]; then
 | 
			
		||||
@@ -128,12 +143,17 @@ jobs:
 | 
			
		||||
              echo "Posting error message for $FILE"
 | 
			
		||||
              echo ${CLEANED_ERROR_MSG}
 | 
			
		||||
              gh pr comment ${{ github.event.pull_request.number }} \
 | 
			
		||||
                --repo ${{ github.repository }} \
 | 
			
		||||
                --body ":warning: The script _**$FILE**_ failed with the following message: <br> <div><strong>${CLEANED_ERROR_MSG}</strong></div>"
 | 
			
		||||
 | 
			
		||||
              
 | 
			
		||||
              ERROR="true"
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
          echo "ERROR=$ERROR" >> $GITHUB_ENV
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Fail if error
 | 
			
		||||
        if: ${{ env.ERROR }} == 'true'
 | 
			
		||||
        if: ${{ env.ERROR == 'true' }}
 | 
			
		||||
        run: exit 1 
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								.github/workflows/scripts/app-test/pr-build.func
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								.github/workflows/scripts/app-test/pr-build.func
									
									
									
									
										vendored
									
									
								
							@@ -1,12 +1,11 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: michelroegl-brunner
 | 
			
		||||
# Author: Michel Roegl-Brunner (michelroegl-brunner)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
variables() {
 | 
			
		||||
  NSAPP=$(echo ${APP,,} | tr -d ' ') 
 | 
			
		||||
  var_install="${NSAPP}-install"     
 | 
			
		||||
 | 
			
		||||
  NSAPP=$(echo ${APP,,} | tr -d ' ') # This function sets the NSAPP variable by converting the value of the APP variable to lowercase and removing any spaces.
 | 
			
		||||
  var_install="${NSAPP}-install"     # sets the var_install variable by appending "-install" to the value of NSAPP.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
NEXTID=$(pvesh get /cluster/nextid)
 | 
			
		||||
@@ -16,7 +15,7 @@ header_info(){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
base_settings() {
 | 
			
		||||
  
 | 
			
		||||
  # Default Settings
 | 
			
		||||
  CT_TYPE="1"
 | 
			
		||||
  DISK_SIZE="4"
 | 
			
		||||
  CORE_COUNT="1"
 | 
			
		||||
@@ -40,7 +39,7 @@ base_settings() {
 | 
			
		||||
  SSH_AUTHORIZED_KEY=""
 | 
			
		||||
  TAGS="community-script;"
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
  # Override default settings with variables from ct script
 | 
			
		||||
  CT_TYPE=${var_unprivileged:-$CT_TYPE}
 | 
			
		||||
  DISK_SIZE=${var_disk:-$DISK_SIZE}
 | 
			
		||||
  CORE_COUNT=${var_cpu:-$CORE_COUNT}
 | 
			
		||||
@@ -48,6 +47,7 @@ base_settings() {
 | 
			
		||||
  VERB=${var_verbose:-$VERBOSE}
 | 
			
		||||
  TAGS="${TAGS}${var_tags:-}"
 | 
			
		||||
 | 
			
		||||
  # Since these 2 are only defined outside of default_settings function, we add a temporary fallback. TODO: To align everything, we should add these as constant variables (e.g. OSTYPE and OSVERSION), but that would currently require updating the default_settings function for all existing scripts
 | 
			
		||||
  if [ -z "$var_os" ]; then
 | 
			
		||||
    var_os="debian"
 | 
			
		||||
  fi
 | 
			
		||||
@@ -112,10 +112,9 @@ error_handler() {
 | 
			
		||||
  SCRIPT_NAME=$(basename "$0")
 | 
			
		||||
  local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command"
 | 
			
		||||
  echo -e "\n$error_message"
 | 
			
		||||
  exit "$error_message"
 | 
			
		||||
  exit 100
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
msg_info() {
 | 
			
		||||
  local msg="$1"
 | 
			
		||||
  echo -ne "${msg}\n"
 | 
			
		||||
@@ -132,11 +131,13 @@ msg_error() {
 | 
			
		||||
  echo -e "${msg}\n"
 | 
			
		||||
}
 | 
			
		||||
start(){
 | 
			
		||||
  base_settings
 | 
			
		||||
  return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
build_container() {
 | 
			
		||||
 
 | 
			
		||||
  #  if [ "$VERB" == "yes" ]; then set -x; fi
 | 
			
		||||
 | 
			
		||||
  if [ "$CT_TYPE" == "1" ]; then
 | 
			
		||||
    FEATURES="keyctl=1,nesting=1"
 | 
			
		||||
  else
 | 
			
		||||
@@ -232,7 +233,6 @@ EOF
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # This starts the container and executes <app>-install.sh
 | 
			
		||||
  msg_info "Starting LXC Container"
 | 
			
		||||
  pct start "$CTID"
 | 
			
		||||
@@ -250,10 +250,11 @@ http://dl-cdn.alpinelinux.org/alpine/latest-stable/community
 | 
			
		||||
EOF'
 | 
			
		||||
    pct exec "$CTID" -- ash -c "apk add bash >/dev/null"
 | 
			
		||||
  fi
 | 
			
		||||
  lxc-attach -n "$CTID" -- bash -c "$(< /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/install/$var_install.sh)"
 | 
			
		||||
  lxc-attach -n "$CTID" -- bash -c "$(cat /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/install/$var_install.sh)" $var_install.sh
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
description(){
 | 
			
		||||
 IP=$(pct exec "$CTID" ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
 | 
			
		||||
 return
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: michelroegl-brunner
 | 
			
		||||
# Author: Michel Roegl-Brunner (michelroegl-brunner)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
color() {
 | 
			
		||||
@@ -11,7 +11,6 @@ catch_errors() {
 | 
			
		||||
  trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
error_handler() {
 | 
			
		||||
    local exit_code="$?"
 | 
			
		||||
  local line_number="$1"
 | 
			
		||||
@@ -68,6 +67,7 @@ function select_storage() {
 | 
			
		||||
  *) false || { msg_error "Invalid storage class."; exit 201; };;
 | 
			
		||||
  esac
 | 
			
		||||
  
 | 
			
		||||
  # This Queries all storage locations
 | 
			
		||||
  local -a MENU
 | 
			
		||||
  while read -r line; do
 | 
			
		||||
    local TAG=$(echo $line | awk '{print $1}')
 | 
			
		||||
@@ -81,6 +81,7 @@ function select_storage() {
 | 
			
		||||
    MENU+=("$TAG" "$ITEM" "OFF")
 | 
			
		||||
  done < <(pvesm status -content $CONTENT | awk 'NR>1')
 | 
			
		||||
  
 | 
			
		||||
  # Select storage location
 | 
			
		||||
  if [ $((${#MENU[@]}/3)) -eq 1 ]; then
 | 
			
		||||
    printf ${MENU[0]}
 | 
			
		||||
  else
 | 
			
		||||
@@ -103,17 +104,12 @@ if pct status $CTID &>/dev/null; then
 | 
			
		||||
  exit 206
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TEMPLATE_STORAGE=$(select_storage template) || exit
 | 
			
		||||
msg_ok "Using  $TEMPLATE_STORAGE   for Template Storage."
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CONTAINER_STORAGE=$(select_storage container) || exit
 | 
			
		||||
msg_ok "Using  $CONTAINER_STORAGE   for Container Storage."
 | 
			
		||||
 | 
			
		||||
msg_info "Updating LXC Template List"
 | 
			
		||||
pveam update >/dev/null
 | 
			
		||||
msg_ok "Updated LXC Template List"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TEMPLATE_SEARCH=${PCT_OSTYPE}-${PCT_OSVERSION:-}
 | 
			
		||||
mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLATE_SEARCH.*\)/\1/p" | sort -t - -k 2 -V)
 | 
			
		||||
@@ -124,35 +120,29 @@ TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE"
 | 
			
		||||
 | 
			
		||||
if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE"; then
 | 
			
		||||
  [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
 | 
			
		||||
  msg_info "Downloading LXC Template"
 | 
			
		||||
  pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||
 | 
			
		||||
    { msg_error "A problem occurred while downloading the LXC template."; exit 208; }
 | 
			
		||||
  msg_ok "Downloaded LXC Template"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >> /etc/subuid
 | 
			
		||||
grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >> /etc/subgid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}})
 | 
			
		||||
[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs "$CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}")
 | 
			
		||||
 | 
			
		||||
echo "${PCT_OPTIONS[@]}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
msg_info "Creating LXC Container"
 | 
			
		||||
  if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
 | 
			
		||||
      [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
 | 
			
		||||
      
 | 
			
		||||
    msg_ok "Template integrity check completed"
 | 
			
		||||
 | 
			
		||||
    pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||    
 | 
			
		||||
      { msg_error "A problem occurred while re-downloading the LXC template."; exit 208; }
 | 
			
		||||
    
 | 
			
		||||
    msg_ok "Re-downloaded LXC Template"
 | 
			
		||||
 | 
			
		||||
    if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
 | 
			
		||||
        msg_error "A problem occurred while trying to create container after re-downloading template."
 | 
			
		||||
      exit 200
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
msg_ok "LXC Container  $CTID   was successfully created."
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,22 +6,26 @@
 | 
			
		||||
color() {
 | 
			
		||||
  return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SCRIPT_NAME="${BASH_SOURCE[0]:-unknown_script}"
 | 
			
		||||
catch_errors() {
 | 
			
		||||
  set -Eeuo pipefail
 | 
			
		||||
  set -Euoe pipefail
 | 
			
		||||
  trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
error_handler() {
 | 
			
		||||
  local line_number="$1"
 | 
			
		||||
  local command="$2"
 | 
			
		||||
  SCRIPT_NAME=$(basename "$0")
 | 
			
		||||
  local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command"
 | 
			
		||||
  local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command '$command'"
 | 
			
		||||
  echo -e "\n$error_message"
 | 
			
		||||
  exit "$error_message"
 | 
			
		||||
  exit 300
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
verb_ip6() {
 | 
			
		||||
    STD=""
 | 
			
		||||
    return
 | 
			
		||||
    STD="silent"
 | 
			
		||||
    silent() { 
 | 
			
		||||
        "$@" >/dev/null 2>&1 || error_handler "${BASH_LINENO[0]}" "$*"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
msg_info() {
 | 
			
		||||
@@ -88,6 +92,4 @@ motd_ssh() {
 | 
			
		||||
 | 
			
		||||
customize() {
 | 
			
		||||
   return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										131
									
								
								.github/workflows/update-json-date.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								.github/workflows/update-json-date.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,131 @@
 | 
			
		||||
name: Update JSON Date
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    paths:
 | 
			
		||||
      - 'json/**.json'
 | 
			
		||||
  workflow_dispatch: 
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  update-app-files:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    permissions:
 | 
			
		||||
      contents: write
 | 
			
		||||
      pull-requests: write
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Generate a token
 | 
			
		||||
        id: generate-token
 | 
			
		||||
        uses: actions/create-github-app-token@v1
 | 
			
		||||
        with:
 | 
			
		||||
          app-id: ${{ vars.APP_ID }}
 | 
			
		||||
          private-key: ${{ secrets.APP_PRIVATE_KEY }}
 | 
			
		||||
 | 
			
		||||
      - name: Generate dynamic branch name
 | 
			
		||||
        id: timestamp
 | 
			
		||||
        run: echo "BRANCH_NAME=pr-update-json-$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
 | 
			
		||||
      
 | 
			
		||||
      - name: Set up GH_TOKEN
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "GH_TOKEN=${GH_TOKEN}" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
      - name: Checkout Repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 2  # Ensure we have the last two commits
 | 
			
		||||
 | 
			
		||||
      - name: Get Previous Commit
 | 
			
		||||
        id: prev_commit
 | 
			
		||||
        run: |
 | 
			
		||||
          PREV_COMMIT=$(git rev-parse HEAD^)
 | 
			
		||||
          echo "Previous commit: $PREV_COMMIT"
 | 
			
		||||
          echo "prev_commit=$PREV_COMMIT" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
      - name: Get Newly Added JSON Files
 | 
			
		||||
        id: new_json_files
 | 
			
		||||
        run: |
 | 
			
		||||
          git diff --name-only --diff-filter=A ${{ env.prev_commit }} HEAD | grep '^json/.*\.json$' > new_files.txt || true
 | 
			
		||||
          echo "New files detected:"
 | 
			
		||||
          cat new_files.txt || echo "No new files."
 | 
			
		||||
 | 
			
		||||
      - name: Disable file mode changes
 | 
			
		||||
        run: git config core.fileMode false
 | 
			
		||||
 | 
			
		||||
      - name: Set up Git
 | 
			
		||||
        run: |
 | 
			
		||||
          git config --global user.name "GitHub Actions"
 | 
			
		||||
          git config --global user.email "github-actions[bot]@users.noreply.github.com"
 | 
			
		||||
 | 
			
		||||
      - name: Change JSON Date
 | 
			
		||||
        id: change-json-date
 | 
			
		||||
        run: |
 | 
			
		||||
          current_date=$(date +"%Y-%m-%d")
 | 
			
		||||
          while IFS= read -r file; do
 | 
			
		||||
            # Skip empty lines
 | 
			
		||||
            [[ -z "$file" ]] && continue
 | 
			
		||||
 | 
			
		||||
            if [[ -f "$file" ]]; then
 | 
			
		||||
              echo "Processing $file..."
 | 
			
		||||
              current_json_date=$(jq -r '.date_created // empty' "$file")
 | 
			
		||||
              if [[ -z "$current_json_date" || "$current_json_date" != "$current_date" ]]; then
 | 
			
		||||
                echo "Updating $file with date $current_date"
 | 
			
		||||
                jq --arg date "$current_date" '.date_created = $date' "$file" > temp.json && mv temp.json "$file"
 | 
			
		||||
              else
 | 
			
		||||
                echo "Date in $file is already up to date."
 | 
			
		||||
              fi
 | 
			
		||||
            else
 | 
			
		||||
              echo "Warning: File $file not found!"
 | 
			
		||||
            fi
 | 
			
		||||
          done < new_files.txt
 | 
			
		||||
          rm new_files.txt
 | 
			
		||||
 | 
			
		||||
      - name: Check if there are any changes
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "Checking for changes..."
 | 
			
		||||
          git add -A  # Untracked Dateien aufnehmen
 | 
			
		||||
          git status
 | 
			
		||||
          if git diff --cached --quiet; then
 | 
			
		||||
            echo "No changes detected."
 | 
			
		||||
            echo "changed=false" >> "$GITHUB_ENV"
 | 
			
		||||
          else
 | 
			
		||||
            echo "Changes detected:"
 | 
			
		||||
            git diff --stat --cached
 | 
			
		||||
            echo "changed=true" >> "$GITHUB_ENV"
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      # Step 7: Commit and create PR if changes exist
 | 
			
		||||
      - name: Commit and create PR if changes exist
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        run: |
 | 
			
		||||
         
 | 
			
		||||
          
 | 
			
		||||
          git commit -m "Update date in json"
 | 
			
		||||
          git checkout -b ${{ env.BRANCH_NAME }}
 | 
			
		||||
          git push origin ${{ env.BRANCH_NAME }}
 | 
			
		||||
 | 
			
		||||
          gh pr create --title "[core] update date in json" \
 | 
			
		||||
                       --body "This PR is auto-generated by a GitHub Action to update the date in json." \
 | 
			
		||||
                       --head ${{ env.BRANCH_NAME }} \
 | 
			
		||||
                       --base main \
 | 
			
		||||
                       --label "automated pr"
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
 | 
			
		||||
 | 
			
		||||
      - name: Approve pull request
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        run: |
 | 
			
		||||
          PR_NUMBER=$(gh pr list --head "${{ env.BRANCH_NAME }}" --json number --jq '.[].number')
 | 
			
		||||
          if [ -n "$PR_NUMBER" ]; then
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: No changes detected
 | 
			
		||||
        if: env.changed == 'false'
 | 
			
		||||
        run: echo "No changes to commit. Workflow completed successfully."
 | 
			
		||||
							
								
								
									
										159
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										159
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -17,6 +17,165 @@ All LXC instances created using this repository come pre-installed with Midnight
 | 
			
		||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 2025-02-19
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix: file replacement in Watcharr Update Script [@Clusters](https://github.com/Clusters) ([#2498](https://github.com/community-scripts/ProxmoxVE/pull/2498))
 | 
			
		||||
- Fix: Kometa - fixed successful setup message and added info to json [@tremor021](https://github.com/tremor021) ([#2495](https://github.com/community-scripts/ProxmoxVE/pull/2495))
 | 
			
		||||
- Fix: Actual Budget, add missing .env when updating [@MickLesk](https://github.com/MickLesk) ([#2494](https://github.com/community-scripts/ProxmoxVE/pull/2494))
 | 
			
		||||
 | 
			
		||||
## 2025-02-18
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New Script: Docmost [@MickLesk](https://github.com/MickLesk) ([#2472](https://github.com/community-scripts/ProxmoxVE/pull/2472))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix: SQL Server 2022 | GPG & Install [@MickLesk](https://github.com/MickLesk) ([#2476](https://github.com/community-scripts/ProxmoxVE/pull/2476))
 | 
			
		||||
- Feature: PBS Bare Metal Installation - Allow Microcode [@MickLesk](https://github.com/MickLesk) ([#2477](https://github.com/community-scripts/ProxmoxVE/pull/2477))
 | 
			
		||||
- Fix: MagicMirror force Node version and fix backups [@tremor021](https://github.com/tremor021) ([#2468](https://github.com/community-scripts/ProxmoxVE/pull/2468))
 | 
			
		||||
- Update BunkerWeb scripts to latest NGINX and specs [@TheophileDiot](https://github.com/TheophileDiot) ([#2466](https://github.com/community-scripts/ProxmoxVE/pull/2466))
 | 
			
		||||
 | 
			
		||||
## 2025-02-17
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
- Zipline: Prepare for Version 4.0.0 [@MickLesk](https://github.com/MickLesk) ([#2455](https://github.com/community-scripts/ProxmoxVE/pull/2455))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix: Zipline increase SECRET to 42 chars [@V1d1o7](https://github.com/V1d1o7) ([#2444](https://github.com/community-scripts/ProxmoxVE/pull/2444))
 | 
			
		||||
 | 
			
		||||
## 2025-02-16
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix: Typo in Ubuntu 24.10 VM Script [@PhoenixEmik](https://github.com/PhoenixEmik) ([#2430](https://github.com/community-scripts/ProxmoxVE/pull/2430))
 | 
			
		||||
- Fix: Grist update no longer removes previous user data [@cfurrow](https://github.com/cfurrow) ([#2428](https://github.com/community-scripts/ProxmoxVE/pull/2428))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Debian icon update [@bannert1337](https://github.com/bannert1337) ([#2433](https://github.com/community-scripts/ProxmoxVE/pull/2433))
 | 
			
		||||
- Update Graylog icon [@bannert1337](https://github.com/bannert1337) ([#2434](https://github.com/community-scripts/ProxmoxVE/pull/2434))
 | 
			
		||||
 | 
			
		||||
## 2025-02-15
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Setup cron in install/freshrss-install.sh [@zimmra](https://github.com/zimmra) ([#2412](https://github.com/community-scripts/ProxmoxVE/pull/2412))
 | 
			
		||||
- Fix: Homarr update service files [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2416](https://github.com/community-scripts/ProxmoxVE/pull/2416))
 | 
			
		||||
- Update MagicMirror install and update scripts [@tremor021](https://github.com/tremor021) ([#2409](https://github.com/community-scripts/ProxmoxVE/pull/2409))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Fix RustDesk slug in json [@tremor021](https://github.com/tremor021) ([#2411](https://github.com/community-scripts/ProxmoxVE/pull/2411))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- [GH] Update script-test Workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2415](https://github.com/community-scripts/ProxmoxVE/pull/2415))
 | 
			
		||||
 | 
			
		||||
## 2025-02-14
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix homarr [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2369](https://github.com/community-scripts/ProxmoxVE/pull/2369))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- RustDesk Server - Added configuration guide to json [@tremor021](https://github.com/tremor021) ([#2389](https://github.com/community-scripts/ProxmoxVE/pull/2389))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- [gh] Update script-test.yml [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2399](https://github.com/community-scripts/ProxmoxVE/pull/2399))
 | 
			
		||||
- [gh] Introducing new Issue Github Template Feature (Bug, Feature, Task) [@MickLesk](https://github.com/MickLesk) ([#2394](https://github.com/community-scripts/ProxmoxVE/pull/2394))
 | 
			
		||||
 | 
			
		||||
### 📡 API
 | 
			
		||||
 | 
			
		||||
- [API]Add more enpoints to API [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2390](https://github.com/community-scripts/ProxmoxVE/pull/2390))
 | 
			
		||||
- [API] Update api.func: Remove unwanted file creation [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2378](https://github.com/community-scripts/ProxmoxVE/pull/2378))
 | 
			
		||||
 | 
			
		||||
## 2025-02-13
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- Re-Add: Pf2eTools [@MickLesk](https://github.com/MickLesk) ([#2336](https://github.com/community-scripts/ProxmoxVE/pull/2336))
 | 
			
		||||
- New Script: Nx Witness [@MickLesk](https://github.com/MickLesk) ([#2350](https://github.com/community-scripts/ProxmoxVE/pull/2350))
 | 
			
		||||
- New Script: RustDesk Server [@tremor021](https://github.com/tremor021) ([#2326](https://github.com/community-scripts/ProxmoxVE/pull/2326))
 | 
			
		||||
- New Script: MinIO [@MickLesk](https://github.com/MickLesk) ([#2333](https://github.com/community-scripts/ProxmoxVE/pull/2333))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Missing ";" in ct/trilium.sh [@Scorpoon](https://github.com/Scorpoon) ([#2380](https://github.com/community-scripts/ProxmoxVE/pull/2380))
 | 
			
		||||
- Fix: Element Synapse - Fixed server listening on both localhost and 0.0.0.0 [@tremor021](https://github.com/tremor021) ([#2376](https://github.com/community-scripts/ProxmoxVE/pull/2376))
 | 
			
		||||
- [core] cleanup (remove # App Default Values) [@MickLesk](https://github.com/MickLesk) ([#2356](https://github.com/community-scripts/ProxmoxVE/pull/2356))
 | 
			
		||||
- Fix: Kometa - Increase RAM and HDD resources [@tremor021](https://github.com/tremor021) ([#2367](https://github.com/community-scripts/ProxmoxVE/pull/2367))
 | 
			
		||||
- [core] cleanup (remove base_settings & unneeded comments) [@MickLesk](https://github.com/MickLesk) ([#2351](https://github.com/community-scripts/ProxmoxVE/pull/2351))
 | 
			
		||||
- Fix: Authentik Embedded Outpost Upgrade [@vidonnus](https://github.com/vidonnus) ([#2327](https://github.com/community-scripts/ProxmoxVE/pull/2327))
 | 
			
		||||
- Fix HomeAsisstant LXC: Use the latest versions of runlike with --use-volume-id [@genehand](https://github.com/genehand) ([#2325](https://github.com/community-scripts/ProxmoxVE/pull/2325))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Fix: Zoraxy - now shows application as updateable on the website [@tremor021](https://github.com/tremor021) ([#2352](https://github.com/community-scripts/ProxmoxVE/pull/2352))
 | 
			
		||||
- Fix script category name text alignment in ScriptAccordion [@BramSuurdje](https://github.com/BramSuurdje) ([#2342](https://github.com/community-scripts/ProxmoxVE/pull/2342))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- [gh] Remove unwanted output from script test workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2337](https://github.com/community-scripts/ProxmoxVE/pull/2337))
 | 
			
		||||
- [gh] Workflow to change date on new json files [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2319](https://github.com/community-scripts/ProxmoxVE/pull/2319))
 | 
			
		||||
 | 
			
		||||
## 2025-02-12
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
- Frigate: Use Fixed Version 14 [@MickLesk](https://github.com/MickLesk) ([#2288](https://github.com/community-scripts/ProxmoxVE/pull/2288))
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New Script: Kometa [@tremor021](https://github.com/tremor021) ([#2281](https://github.com/community-scripts/ProxmoxVE/pull/2281))
 | 
			
		||||
- New Script: Excalidraw [@tremor021](https://github.com/tremor021) ([#2285](https://github.com/community-scripts/ProxmoxVE/pull/2285))
 | 
			
		||||
- New Script: Graylog [@tremor021](https://github.com/tremor021) ([#2270](https://github.com/community-scripts/ProxmoxVE/pull/2270))
 | 
			
		||||
- New Script: TasmoCompiler [@tremor021](https://github.com/tremor021) ([#2235](https://github.com/community-scripts/ProxmoxVE/pull/2235))
 | 
			
		||||
- New script: cross-seed [@jmatraszek](https://github.com/jmatraszek) ([#2186](https://github.com/community-scripts/ProxmoxVE/pull/2186))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- FIX: Frigate - remove bad variable [@tremor021](https://github.com/tremor021) ([#2323](https://github.com/community-scripts/ProxmoxVE/pull/2323))
 | 
			
		||||
- Fix: Kometa - Fix wrong web site address [@tremor021](https://github.com/tremor021) ([#2318](https://github.com/community-scripts/ProxmoxVE/pull/2318))
 | 
			
		||||
- Fix: var_tags instead of TAGS in some CT's [@MickLesk](https://github.com/MickLesk) ([#2310](https://github.com/community-scripts/ProxmoxVE/pull/2310))
 | 
			
		||||
- Update ubuntu2410-vm.sh: Fix typo in API call. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2305](https://github.com/community-scripts/ProxmoxVE/pull/2305))
 | 
			
		||||
- Fix: Myspeed Installation (g++) [@MickLesk](https://github.com/MickLesk) ([#2308](https://github.com/community-scripts/ProxmoxVE/pull/2308))
 | 
			
		||||
- Fix: Pingvin wrong variable used for version tracking [@alberanid](https://github.com/alberanid) ([#2302](https://github.com/community-scripts/ProxmoxVE/pull/2302))
 | 
			
		||||
- Fix: SQL Server 2022 - remove unnecessary sudo [@tremor021](https://github.com/tremor021) ([#2282](https://github.com/community-scripts/ProxmoxVE/pull/2282))
 | 
			
		||||
- fix: frigate pin version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2296](https://github.com/community-scripts/ProxmoxVE/pull/2296))
 | 
			
		||||
- Fix changedetection: Correct Browser install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2277](https://github.com/community-scripts/ProxmoxVE/pull/2277))
 | 
			
		||||
- Paperless-AI: add dependency "make" [@MickLesk](https://github.com/MickLesk) ([#2289](https://github.com/community-scripts/ProxmoxVE/pull/2289))
 | 
			
		||||
- Fix: Typo OPNsense VM [@chpego](https://github.com/chpego) ([#2291](https://github.com/community-scripts/ProxmoxVE/pull/2291))
 | 
			
		||||
- Fix: CraftyControler fix java default [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2286](https://github.com/community-scripts/ProxmoxVE/pull/2286))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Fix: some jsons (debian instead Debian in OS) [@MickLesk](https://github.com/MickLesk) ([#2311](https://github.com/community-scripts/ProxmoxVE/pull/2311))
 | 
			
		||||
- Website: Add After-Install Note for Ubuntu VM 22.04/24.04/24.10 and Debian VM [@MickLesk](https://github.com/MickLesk) ([#2307](https://github.com/community-scripts/ProxmoxVE/pull/2307))
 | 
			
		||||
- Fix: duplicate 'VM' name in opnsense-vm.json [@nayzm](https://github.com/nayzm) ([#2293](https://github.com/community-scripts/ProxmoxVE/pull/2293))
 | 
			
		||||
 | 
			
		||||
## 2025-02-11
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										283
									
								
								api/main.go
									
									
									
									
									
								
							
							
						
						
									
										283
									
								
								api/main.go
									
									
									
									
									
								
							@@ -11,6 +11,7 @@ import (
 | 
			
		||||
	"log"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/gorilla/mux"
 | 
			
		||||
@@ -31,6 +32,7 @@ func loadEnv() {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DataModel represents a single document in MongoDB
 | 
			
		||||
type DataModel struct {
 | 
			
		||||
	ID         primitive.ObjectID `json:"id" bson:"_id,omitempty"`
 | 
			
		||||
	CT_TYPE    uint               `json:"ct_type" bson:"ct_type"`
 | 
			
		||||
@@ -56,6 +58,13 @@ type StatusModel struct {
 | 
			
		||||
	STATUS    string `json:"status" bson:"status"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type CountResponse struct {
 | 
			
		||||
	TotalEntries int64            `json:"total_entries"`
 | 
			
		||||
	StatusCount  map[string]int64 `json:"status_count"`
 | 
			
		||||
	NSAPPCount   map[string]int64 `json:"nsapp_count"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ConnectDatabase initializes the MongoDB connection
 | 
			
		||||
func ConnectDatabase() {
 | 
			
		||||
	loadEnv()
 | 
			
		||||
 | 
			
		||||
@@ -78,6 +87,7 @@ func ConnectDatabase() {
 | 
			
		||||
	fmt.Println("Connected to MongoDB on 10.10.10.18")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UploadJSON handles API requests and stores data as a document in MongoDB
 | 
			
		||||
func UploadJSON(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	var input DataModel
 | 
			
		||||
 | 
			
		||||
@@ -98,6 +108,7 @@ func UploadJSON(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	json.NewEncoder(w).Encode(map[string]string{"message": "Data saved successfully"})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UpdateStatus updates the status of a record based on RANDOM_ID
 | 
			
		||||
func UpdateStatus(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	var input StatusModel
 | 
			
		||||
 | 
			
		||||
@@ -120,6 +131,7 @@ func UpdateStatus(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	json.NewEncoder(w).Encode(map[string]string{"message": "Record updated successfully"})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetDataJSON fetches all data from MongoDB
 | 
			
		||||
func GetDataJSON(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	var records []DataModel
 | 
			
		||||
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 | 
			
		||||
@@ -144,6 +156,270 @@ func GetDataJSON(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json")
 | 
			
		||||
	json.NewEncoder(w).Encode(records)
 | 
			
		||||
}
 | 
			
		||||
func GetPaginatedData(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	page, _ := strconv.Atoi(r.URL.Query().Get("page"))
 | 
			
		||||
	limit, _ := strconv.Atoi(r.URL.Query().Get("limit"))
 | 
			
		||||
	if page < 1 {
 | 
			
		||||
		page = 1
 | 
			
		||||
	}
 | 
			
		||||
	if limit < 1 {
 | 
			
		||||
		limit = 10
 | 
			
		||||
	}
 | 
			
		||||
	skip := (page - 1) * limit
 | 
			
		||||
	var records []DataModel
 | 
			
		||||
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 | 
			
		||||
	defer cancel()
 | 
			
		||||
 | 
			
		||||
	options := options.Find().SetSkip(int64(skip)).SetLimit(int64(limit))
 | 
			
		||||
	cursor, err := collection.Find(ctx, bson.M{}, options)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer cursor.Close(ctx)
 | 
			
		||||
 | 
			
		||||
	for cursor.Next(ctx) {
 | 
			
		||||
		var record DataModel
 | 
			
		||||
		if err := cursor.Decode(&record); err != nil {
 | 
			
		||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		records = append(records, record)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json")
 | 
			
		||||
	json.NewEncoder(w).Encode(records)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetSummary(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 | 
			
		||||
	defer cancel()
 | 
			
		||||
 | 
			
		||||
	totalCount, err := collection.CountDocuments(ctx, bson.M{})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	statusCount := make(map[string]int64)
 | 
			
		||||
	nsappCount := make(map[string]int64)
 | 
			
		||||
 | 
			
		||||
	pipeline := []bson.M{
 | 
			
		||||
		{"$group": bson.M{"_id": "$status", "count": bson.M{"$sum": 1}}},
 | 
			
		||||
	}
 | 
			
		||||
	cursor, err := collection.Aggregate(ctx, pipeline)
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		for cursor.Next(ctx) {
 | 
			
		||||
			var result struct {
 | 
			
		||||
				ID    string `bson:"_id"`
 | 
			
		||||
				Count int64  `bson:"count"`
 | 
			
		||||
			}
 | 
			
		||||
			if err := cursor.Decode(&result); err == nil {
 | 
			
		||||
				statusCount[result.ID] = result.Count
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pipeline = []bson.M{
 | 
			
		||||
		{"$group": bson.M{"_id": "$nsapp", "count": bson.M{"$sum": 1}}},
 | 
			
		||||
	}
 | 
			
		||||
	cursor, err = collection.Aggregate(ctx, pipeline)
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		for cursor.Next(ctx) {
 | 
			
		||||
			var result struct {
 | 
			
		||||
				ID    string `bson:"_id"`
 | 
			
		||||
				Count int64  `bson:"count"`
 | 
			
		||||
			}
 | 
			
		||||
			if err := cursor.Decode(&result); err == nil {
 | 
			
		||||
				nsappCount[result.ID] = result.Count
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	response := CountResponse{
 | 
			
		||||
		TotalEntries: totalCount,
 | 
			
		||||
		StatusCount:  statusCount,
 | 
			
		||||
		NSAPPCount:   nsappCount,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json")
 | 
			
		||||
	json.NewEncoder(w).Encode(response)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetByNsapp(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	nsapp := r.URL.Query().Get("nsapp")
 | 
			
		||||
	var records []DataModel
 | 
			
		||||
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 | 
			
		||||
	defer cancel()
 | 
			
		||||
 | 
			
		||||
	cursor, err := collection.Find(ctx, bson.M{"nsapp": nsapp})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer cursor.Close(ctx)
 | 
			
		||||
 | 
			
		||||
	for cursor.Next(ctx) {
 | 
			
		||||
		var record DataModel
 | 
			
		||||
		if err := cursor.Decode(&record); err != nil {
 | 
			
		||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		records = append(records, record)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json")
 | 
			
		||||
	json.NewEncoder(w).Encode(records)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetByDateRange(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
 | 
			
		||||
	startDate := r.URL.Query().Get("start_date")
 | 
			
		||||
	endDate := r.URL.Query().Get("end_date")
 | 
			
		||||
 | 
			
		||||
	if startDate == "" || endDate == "" {
 | 
			
		||||
		http.Error(w, "Both start_date and end_date are required", http.StatusBadRequest)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	start, err := time.Parse("2006-01-02T15:04:05.999999+00:00", startDate+"T00:00:00+00:00")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		http.Error(w, "Invalid start_date format", http.StatusBadRequest)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	end, err := time.Parse("2006-01-02T15:04:05.999999+00:00", endDate+"T23:59:59+00:00")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		http.Error(w, "Invalid end_date format", http.StatusBadRequest)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var records []DataModel
 | 
			
		||||
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 | 
			
		||||
	defer cancel()
 | 
			
		||||
 | 
			
		||||
	cursor, err := collection.Find(ctx, bson.M{
 | 
			
		||||
		"created_at": bson.M{
 | 
			
		||||
			"$gte": start,
 | 
			
		||||
			"$lte": end,
 | 
			
		||||
		},
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer cursor.Close(ctx)
 | 
			
		||||
 | 
			
		||||
	for cursor.Next(ctx) {
 | 
			
		||||
		var record DataModel
 | 
			
		||||
		if err := cursor.Decode(&record); err != nil {
 | 
			
		||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		records = append(records, record)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json")
 | 
			
		||||
	json.NewEncoder(w).Encode(records)
 | 
			
		||||
}
 | 
			
		||||
func GetByStatus(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	status := r.URL.Query().Get("status")
 | 
			
		||||
	var records []DataModel
 | 
			
		||||
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 | 
			
		||||
	defer cancel()
 | 
			
		||||
 | 
			
		||||
	cursor, err := collection.Find(ctx, bson.M{"status": status})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer cursor.Close(ctx)
 | 
			
		||||
 | 
			
		||||
	for cursor.Next(ctx) {
 | 
			
		||||
		var record DataModel
 | 
			
		||||
		if err := cursor.Decode(&record); err != nil {
 | 
			
		||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		records = append(records, record)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json")
 | 
			
		||||
	json.NewEncoder(w).Encode(records)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetByOS(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	osType := r.URL.Query().Get("os_type")
 | 
			
		||||
	osVersion := r.URL.Query().Get("os_version")
 | 
			
		||||
	var records []DataModel
 | 
			
		||||
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 | 
			
		||||
	defer cancel()
 | 
			
		||||
 | 
			
		||||
	cursor, err := collection.Find(ctx, bson.M{"os_type": osType, "os_version": osVersion})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer cursor.Close(ctx)
 | 
			
		||||
 | 
			
		||||
	for cursor.Next(ctx) {
 | 
			
		||||
		var record DataModel
 | 
			
		||||
		if err := cursor.Decode(&record); err != nil {
 | 
			
		||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		records = append(records, record)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json")
 | 
			
		||||
	json.NewEncoder(w).Encode(records)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetErrors(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	errorCount := make(map[string]int)
 | 
			
		||||
 | 
			
		||||
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 | 
			
		||||
	defer cancel()
 | 
			
		||||
 | 
			
		||||
	cursor, err := collection.Find(ctx, bson.M{"error": bson.M{"$ne": ""}})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer cursor.Close(ctx)
 | 
			
		||||
 | 
			
		||||
	for cursor.Next(ctx) {
 | 
			
		||||
		var record DataModel
 | 
			
		||||
		if err := cursor.Decode(&record); err != nil {
 | 
			
		||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if record.ERROR != "" {
 | 
			
		||||
			errorCount[record.ERROR]++
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	type ErrorCountResponse struct {
 | 
			
		||||
		Error string `json:"error"`
 | 
			
		||||
		Count int    `json:"count"`
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var errorCounts []ErrorCountResponse
 | 
			
		||||
	for err, count := range errorCount {
 | 
			
		||||
		errorCounts = append(errorCounts, ErrorCountResponse{
 | 
			
		||||
			Error: err,
 | 
			
		||||
			Count: count,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json")
 | 
			
		||||
	json.NewEncoder(w).Encode(struct {
 | 
			
		||||
		ErrorCounts []ErrorCountResponse `json:"error_counts"`
 | 
			
		||||
	}{
 | 
			
		||||
		ErrorCounts: errorCounts,
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	ConnectDatabase()
 | 
			
		||||
@@ -152,6 +428,13 @@ func main() {
 | 
			
		||||
	router.HandleFunc("/upload", UploadJSON).Methods("POST")
 | 
			
		||||
	router.HandleFunc("/upload/updatestatus", UpdateStatus).Methods("POST")
 | 
			
		||||
	router.HandleFunc("/data/json", GetDataJSON).Methods("GET")
 | 
			
		||||
	router.HandleFunc("/data/paginated", GetPaginatedData).Methods("GET")
 | 
			
		||||
	router.HandleFunc("/data/summary", GetSummary).Methods("GET")
 | 
			
		||||
	router.HandleFunc("/data/nsapp", GetByNsapp).Methods("GET")
 | 
			
		||||
	router.HandleFunc("/data/date", GetByDateRange).Methods("GET")
 | 
			
		||||
	router.HandleFunc("/data/status", GetByStatus).Methods("GET")
 | 
			
		||||
	router.HandleFunc("/data/os", GetByOS).Methods("GET")
 | 
			
		||||
	router.HandleFunc("/data/errors", GetErrors).Methods("GET")
 | 
			
		||||
 | 
			
		||||
	c := cors.New(cors.Options{
 | 
			
		||||
		AllowedOrigins:   []string{"*"},
 | 
			
		||||
 
 | 
			
		||||
@@ -5,9 +5,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://docs.2fauth.app/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="2FAuth"
 | 
			
		||||
TAGS="2fa;authenticator"
 | 
			
		||||
var_tags="2fa;authenticator"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="512"
 | 
			
		||||
var_disk="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://actualbudget.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Actual Budget"
 | 
			
		||||
var_tags="finance"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +15,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
@@ -31,43 +27,81 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    if [[ ! -d /opt/actualbudget ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/latest | \
 | 
			
		||||
              grep "tag_name" | awk -F '"' '{print substr($4, 2)}')
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping ${APP}"
 | 
			
		||||
        systemctl stop actualbudget
 | 
			
		||||
        msg_ok "${APP} Stopped"
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
        cd /tmp
 | 
			
		||||
        wget -q https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz
 | 
			
		||||
        wget -q "https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz"
 | 
			
		||||
 | 
			
		||||
        mv /opt/actualbudget /opt/actualbudget_bak
 | 
			
		||||
        tar -xzf v${RELEASE}.tar.gz >/dev/null 2>&1
 | 
			
		||||
        tar -xzf "v${RELEASE}.tar.gz" >/dev/null 2>&1
 | 
			
		||||
        mv *ctual-server-* /opt/actualbudget
 | 
			
		||||
        if [[ ! -d /opt/actualbudget-data ]]; then
 | 
			
		||||
            mkdir -p /opt/actualbudget-data/server-files
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        rm -rf /opt/actualbudget/.env
 | 
			
		||||
        mv /opt/actualbudget_bak/.env /opt/actualbudget
 | 
			
		||||
        mv /opt/actualbudget_bak/.migrate /opt/actualbudget
 | 
			
		||||
        mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files
 | 
			
		||||
        if [[ ! -f /opt/actualbudget_bak/.env ]]; then
 | 
			
		||||
            cat <<EOF > /opt/actualbudget_bak/.env
 | 
			
		||||
ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files
 | 
			
		||||
ACTUAL_DATA_DIR=/opt/actualbudget-data
 | 
			
		||||
ACTUAL_SERVER_FILES_DIR=/opt/actualbudget/server-files
 | 
			
		||||
PORT=5006
 | 
			
		||||
EOF
 | 
			
		||||
        fi
 | 
			
		||||
        mv /opt/actualbudget_bak/.env /opt/actualbudget/
 | 
			
		||||
        if [[ -d /opt/actualbudget_bak/server-files ]] && [[ -n $(ls -A /opt/actualbudget_bak/server-files 2>/dev/null) ]]; then
 | 
			
		||||
            mv /opt/actualbudget_bak/server-files/* /opt/actualbudget/server-files/
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ -d /opt/actualbudget_bak/.migrate ]]; then
 | 
			
		||||
            mv /opt/actualbudget_bak/.migrate /opt/actualbudget/
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        cd /opt/actualbudget
 | 
			
		||||
        yarn install &>/dev/null
 | 
			
		||||
        echo "${RELEASE}" >/opt/actualbudget_version.txt
 | 
			
		||||
        echo "${RELEASE}" > /opt/actualbudget_version.txt
 | 
			
		||||
        msg_ok "Updated ${APP}"
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting ${APP}"
 | 
			
		||||
        cat <<EOF >/etc/systemd/system/actualbudget.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Actual Budget Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
User=root
 | 
			
		||||
Group=root
 | 
			
		||||
WorkingDirectory=/opt/actualbudget
 | 
			
		||||
EnvironmentFile=/opt/actualbudget/.env
 | 
			
		||||
ExecStart=/usr/bin/yarn start
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=10
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
        systemctl start actualbudget
 | 
			
		||||
        msg_ok "Started ${APP}"
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf /opt/actualbudget_bak
 | 
			
		||||
        rm -rf /tmp/v${RELEASE}.tar.gz
 | 
			
		||||
        rm -rf "/tmp/v${RELEASE}.tar.gz"
 | 
			
		||||
        msg_ok "Cleaned"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
    exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://adguard.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Adguard"
 | 
			
		||||
var_tags="adblock"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://adventurelog.app/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="AdventureLog"
 | 
			
		||||
var_tags="traveling"
 | 
			
		||||
var_disk="7"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.ispyconnect.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="AgentDVR"
 | 
			
		||||
var_tags="dvr"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="ubuntu"
 | 
			
		||||
var_version="22.04"
 | 
			
		||||
var_unprivileged="0"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.docker.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Alpine-Docker"
 | 
			
		||||
var_tags="docker;alpine"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -14,11 +14,7 @@ var_os="alpine"
 | 
			
		||||
var_version="3.21"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://grafana.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Alpine-Grafana"
 | 
			
		||||
var_tags="alpine;monitoring"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -14,11 +14,7 @@ var_os="alpine"
 | 
			
		||||
var_version="3.21"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -3,9 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: nicedevil007 (NiceDevil)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://it-tools.tech/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Alpine-IT-Tools"
 | 
			
		||||
var_tags="alpine;development"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="alpine"
 | 
			
		||||
var_version="3.21"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://nextcloud.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Alpine-Nextcloud"
 | 
			
		||||
var_tags="alpine;cloud"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -14,11 +14,7 @@ var_os="alpine"
 | 
			
		||||
var_version="3.21"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core 
 | 
			
		||||
header_info "$APP" 
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/dani-garcia/vaultwarden
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Alpine-Vaultwarden"
 | 
			
		||||
var_tags="alpine;vault"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -14,11 +14,7 @@ var_os="alpine"
 | 
			
		||||
var_version="3.21"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.zigbee2mqtt.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Alpine-Zigbee2MQTT"
 | 
			
		||||
var_tags="alpine;zigbee;mqtt;smarthome"
 | 
			
		||||
var_disk="0.3"
 | 
			
		||||
@@ -14,11 +14,7 @@ var_os="alpine"
 | 
			
		||||
var_version="3.21"
 | 
			
		||||
var_unprivileged="0"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://alpinelinux.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Alpine"
 | 
			
		||||
var_tags="os;alpine"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -14,11 +14,7 @@ var_os="alpine"
 | 
			
		||||
var_version="3.21"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://cassandra.apache.org/_/index.html
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Apache-Cassandra"
 | 
			
		||||
var_tags="database;NoSQL"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -16,11 +15,7 @@ var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://couchdb.apache.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Apache-CouchDB"
 | 
			
		||||
var_tags="database"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,12 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/build.func)
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Michel Roegl-Brunner (michelroegl-brunner)
 | 
			
		||||
# License: | MIT https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://guacamole.apache.org/
 | 
			
		||||
 | 
			
		||||
#App Default Values
 | 
			
		||||
APP="Apache-Guacamole"
 | 
			
		||||
TAGS="webserver;remote"
 | 
			
		||||
var_tags="webserver;remote"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/apache/tika/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Apache-Tika"
 | 
			
		||||
var_tags="document"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://wiki.debian.org/AptCacherNg
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Apt-Cacher-NG"
 | 
			
		||||
var_tags="caching"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://archivebox.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="ArchiveBox"
 | 
			
		||||
var_tags="archive;bookmark"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://aria2.github.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Aria2"
 | 
			
		||||
var_tags="download-utility"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.audiobookshelf.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="audiobookshelf"
 | 
			
		||||
var_tags="podcast;audiobook"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,9 @@
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: remz1337
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://goauthentik.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Authentik"
 | 
			
		||||
var_tags="identity-provider"
 | 
			
		||||
var_disk="12"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
@@ -52,6 +47,13 @@ function update_script() {
 | 
			
		||||
    npm run build &>/dev/null
 | 
			
		||||
    msg_ok "Built ${APP} website"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building ${APP} server"
 | 
			
		||||
    cd /opt/authentik
 | 
			
		||||
    go mod download
 | 
			
		||||
    go build -o /go/authentik ./cmd/server
 | 
			
		||||
    go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
 | 
			
		||||
    msg_ok "Built ${APP} server"
 | 
			
		||||
 | 
			
		||||
    msg_info "Installing Python Dependencies"
 | 
			
		||||
    cd /opt/authentik
 | 
			
		||||
    poetry install --only=main --no-ansi --no-interaction --no-root &>/dev/null
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://autobrr.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Autobrr"
 | 
			
		||||
var_tags="arr;"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://sabre.io/baikal/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Baikal"
 | 
			
		||||
var_tags="Dav"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/Forceu/barcodebuddy
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Barcode-Buddy"
 | 
			
		||||
var_tags="grocery;household"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.bazarr.media/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Bazarr"
 | 
			
		||||
var_tags="arr"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core 
 | 
			
		||||
header_info "$APP" 
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://beszel.dev/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Beszel"
 | 
			
		||||
var_tags="monitoring"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://0xerr0r.github.io/blocky/latest/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Blocky"
 | 
			
		||||
var_tags="adblock"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core 
 | 
			
		||||
header_info "$APP" 
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/BookStackApp/BookStack
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Bookstack"
 | 
			
		||||
var_tags="organizer"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,21 +5,16 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.bunkerweb.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="BunkerWeb"
 | 
			
		||||
var_tags="webserver"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
var_ram="4096"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core 
 | 
			
		||||
header_info "$APP" 
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
@@ -39,7 +34,7 @@ Pin: version ${RELEASE}
 | 
			
		||||
Pin-Priority: 1001
 | 
			
		||||
EOF
 | 
			
		||||
  apt-get update
 | 
			
		||||
  apt-get install -y nginx=1.26.2*
 | 
			
		||||
  apt-get install -y nginx=1.26.3*
 | 
			
		||||
  apt-get install -y bunkerweb=${RELEASE}
 | 
			
		||||
  echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
  msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://caddyserver.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Caddy"
 | 
			
		||||
var_tags="webserver"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/janeczku/calibre-web
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Calibre-Web"
 | 
			
		||||
var_tags="eBook"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://casaos.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="CasaOS"
 | 
			
		||||
var_tags="cloud"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://changedetection.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Change Detection"
 | 
			
		||||
var_tags="monitoring;crawler"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://getchannels.com/dvr-server/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Channels"
 | 
			
		||||
var_tags="dvr"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="0"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -15,8 +15,6 @@ var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.cloudflare.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Cloudflared"
 | 
			
		||||
var_tags="network;cloudflare"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://cockpit-project.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Cockpit"
 | 
			
		||||
var_tags="monitoring;network"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.commafeed.com/#/welcome
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="CommaFeed"
 | 
			
		||||
var_tags="rss-reader"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://https://cosmos-cloud.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="cosmos"
 | 
			
		||||
var_tags="os,docker"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -3,9 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts
 | 
			
		||||
# Author: CrazyWolf13
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://gitlab.com/crafty-controller/crafty-4
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Crafty-Controller"
 | 
			
		||||
var_tags="gaming"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://cronicle.net/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Cronicle"
 | 
			
		||||
var_tags="task-scheduler"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										52
									
								
								ct/cross-seed.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								ct/cross-seed.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Jakub Matraszek (jmatraszek)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.cross-seed.org
 | 
			
		||||
 | 
			
		||||
APP="cross-seed"
 | 
			
		||||
var_tags="arr"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
var_disk="2"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
 | 
			
		||||
    if command -v cross-seed &> /dev/null; then
 | 
			
		||||
        current_version=$(cross-seed --version)
 | 
			
		||||
        latest_version=$(npm show cross-seed version)
 | 
			
		||||
        if [ "$current_version" != "$latest_version" ]; then
 | 
			
		||||
            msg_info "Updating ${APP} from version v${current_version} to v${latest_version}"
 | 
			
		||||
            npm install -g cross-seed@latest &> /dev/null
 | 
			
		||||
            systemctl restart cross-seed
 | 
			
		||||
            msg_ok "Updated Successfully"
 | 
			
		||||
        else
 | 
			
		||||
            msg_ok "${APP} is already at v${current_version}"
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    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 cross-seed API using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:2468${CL}"
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://daemonsync.me/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Daemon Sync"
 | 
			
		||||
var_tags="sync"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://dashy.to/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Dashy"
 | 
			
		||||
var_tags="dashboard"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.debian.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Debian"
 | 
			
		||||
var_tags="os"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.phoscon.de/en/conbee2/software#deconz
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="deCONZ"
 | 
			
		||||
var_tags="zigbee"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="0"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.deluge-torrent.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Deluge"
 | 
			
		||||
var_tags="torrent"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.docker.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Docker"
 | 
			
		||||
var_tags="docker"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://dockge.kuma.pet/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Dockge"
 | 
			
		||||
var_tags="docker"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										70
									
								
								ct/docmost.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								ct/docmost.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://docmost.com/
 | 
			
		||||
 | 
			
		||||
APP="Docmost"
 | 
			
		||||
var_tags="documents"
 | 
			
		||||
var_cpu="3"
 | 
			
		||||
var_ram="3072"
 | 
			
		||||
var_disk="7"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/docmost ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop docmost
 | 
			
		||||
    msg_ok "${APP} Stopped"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cp /opt/docmost/.env /opt/
 | 
			
		||||
    rm -rf /opt/docmost
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    wget -q "https://github.com/docmost/docmost/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
 | 
			
		||||
    tar -xzf "$temp_file"
 | 
			
		||||
    mv docmost-${RELEASE} /opt/docmost
 | 
			
		||||
    cd /opt/docmost
 | 
			
		||||
    mv /opt/.env /opt/docmost/.env
 | 
			
		||||
    pnpm install --force &>/dev/null
 | 
			
		||||
    pnpm build &>/dev/null
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start docmost
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -f ${temp_file}
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-9.0&tabs=linux-ubuntu
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Dotnet ASP Web API"
 | 
			
		||||
var_tags="web"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="ubuntu"
 | 
			
		||||
var_version="24.04"
 | 
			
		||||
var_unprivileged="0"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Source: https://github.com/duplicati/duplicati/
 | 
			
		||||
 | 
			
		||||
APP="Duplicati"
 | 
			
		||||
TAGS="backup"
 | 
			
		||||
var_tags="backup"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
var_disk="10"
 | 
			
		||||
@@ -15,8 +15,6 @@ var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/element-hq/synapse
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Element Synapse"
 | 
			
		||||
var_tags="server"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core 
 | 
			
		||||
header_info "$APP" 
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://emby.media/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Emby"
 | 
			
		||||
var_tags="media"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="ubuntu"
 | 
			
		||||
var_version="22.04"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.emqx.com/en
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="EMQX"
 | 
			
		||||
var_tags="mqtt"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://ersatztv.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="ErsatzTV"
 | 
			
		||||
var_tags="iptv"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://esphome.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="ESPHome"
 | 
			
		||||
var_tags="automation"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://evcc.io/en/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="evcc"
 | 
			
		||||
var_tags="solar;ev;automation"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										72
									
								
								ct/excalidraw.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								ct/excalidraw.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,72 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/excalidraw/excalidraw
 | 
			
		||||
 | 
			
		||||
APP="Excalidraw"
 | 
			
		||||
TAGS="diagrams"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="3072"
 | 
			
		||||
var_disk="6"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
 | 
			
		||||
    if [[ ! -d /opt/excalidraw ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/excalidraw_version.txt)" ]] || [[ ! -f /opt/excalidraw_version.txt ]]; then
 | 
			
		||||
        msg_info "Stopping $APP"
 | 
			
		||||
        systemctl stop excalidraw
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
        cd /tmp
 | 
			
		||||
        temp_file=$(mktemp)
 | 
			
		||||
        wget -q "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
 | 
			
		||||
        tar xzf $temp_file
 | 
			
		||||
        rm -rf /opt/excalidraw
 | 
			
		||||
        mv excalidraw-${RELEASE} /opt/excalidraw
 | 
			
		||||
        cd /opt/excalidraw
 | 
			
		||||
        yarn &> /dev/null
 | 
			
		||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start excalidraw
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf $temp_file
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        echo "${RELEASE}" >/opt/excalidraw_version.txt
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/revenz/Fenrus
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Fenrus"
 | 
			
		||||
var_tags="dashboard"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://fhem.de/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="FHEM"
 | 
			
		||||
var_tags="automation"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -2,11 +2,9 @@
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: quantumryuu
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://firefly-iii.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Firefly"
 | 
			
		||||
var_tags="finance"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -16,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/FlareSolverr/FlareSolverr
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="FlareSolverr"
 | 
			
		||||
var_tags="proxy"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://flowiseai.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="FlowiseAI"
 | 
			
		||||
var_tags="low-code"
 | 
			
		||||
var_disk="10"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://forgejo.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Forgejo"
 | 
			
		||||
var_tags="git"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/FreshRSS/FreshRSS
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="FreshRSS"
 | 
			
		||||
var_tags="RSS"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://frigate.video/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Frigate"
 | 
			
		||||
var_tags="nvr"
 | 
			
		||||
var_cpu="4"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="11"
 | 
			
		||||
var_unprivileged="0"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://ghost.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Ghost"
 | 
			
		||||
var_tags="cms;blog"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://about.gitea.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Gitea"
 | 
			
		||||
var_tags="git"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/glanceapp/glance
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Glance"
 | 
			
		||||
var_tags="dashboard"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,10 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Nícolas Pastorello (opastorello)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.glpi-project.org/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="GLPI"
 | 
			
		||||
var_tags="asset-management;foss"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/AlexxIT/go2rtc
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="go2rtc"
 | 
			
		||||
var_tags="recorder;video"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/Forceu/Gokapi
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Gokapi"
 | 
			
		||||
var_tags="file;sharing"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://gotify.net/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Gotify"
 | 
			
		||||
var_tags="notification"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://grafana.com/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Grafana"
 | 
			
		||||
var_tags="monitoring;visualization"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										57
									
								
								ct/graylog.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								ct/graylog.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://graylog.org/
 | 
			
		||||
 | 
			
		||||
APP="Graylog"
 | 
			
		||||
TAGS="logging"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="8192"
 | 
			
		||||
var_disk="30"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
 | 
			
		||||
    if [[ ! -d /etc/graylog ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop graylog-datanode
 | 
			
		||||
    systemctl stop graylog-server
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    apt-get update &> /dev/null
 | 
			
		||||
    apt-get upgrade -y &> /dev/null
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start graylog-datanode
 | 
			
		||||
    systemctl start graylog-server
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
    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}:9000${CL}"
 | 
			
		||||
							
								
								
									
										25
									
								
								ct/grist.sh
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								ct/grist.sh
									
									
									
									
									
								
							@@ -2,7 +2,6 @@
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Source: https://github.com/gristlabs/grist-core
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Grist"
 | 
			
		||||
var_tags="database;spreadsheet"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
@@ -12,11 +11,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
@@ -39,18 +34,36 @@ function update_script() {
 | 
			
		||||
    msg_ok "Stopped ${APP} Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    cd /opt
 | 
			
		||||
    rm -rf grist_bak
 | 
			
		||||
    mv grist grist_bak
 | 
			
		||||
    wget -q https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip
 | 
			
		||||
    unzip -q v$RELEASE.zip
 | 
			
		||||
    mv grist-core-${RELEASE} grist
 | 
			
		||||
    cp -n /opt/grist_bak/.env /opt/grist/.env
 | 
			
		||||
 | 
			
		||||
    mkdir -p grist/docs
 | 
			
		||||
 | 
			
		||||
    cp -n grist_bak/.env grist/.env || true
 | 
			
		||||
    cp -r grist_bak/docs/* grist/docs/ || true
 | 
			
		||||
    cp grist_bak/grist-sessions.db grist/grist-sessions.db || true
 | 
			
		||||
    cp grist_bak/landing.db grist/landing.db || true
 | 
			
		||||
 | 
			
		||||
    cd grist
 | 
			
		||||
    msg_info "Installing Dependencies"
 | 
			
		||||
    yarn install >/dev/null 2>&1
 | 
			
		||||
    msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building"
 | 
			
		||||
    yarn run build:prod >/dev/null 2>&1
 | 
			
		||||
    msg_ok "Done building"
 | 
			
		||||
 | 
			
		||||
    msg_info "Installing Python"
 | 
			
		||||
    yarn run install:python >/dev/null 2>&1
 | 
			
		||||
    msg_ok "Installed Python"
 | 
			
		||||
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP} Service"
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://grocy.info/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="grocy"
 | 
			
		||||
var_tags="grocery;household"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
@@ -15,11 +14,7 @@ var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/cross-seed
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/cross-seed
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
                                                      __
 | 
			
		||||
  ______________  __________      ________  ___  ____/ /
 | 
			
		||||
 / ___/ ___/ __ \/ ___/ ___/_____/ ___/ _ \/ _ \/ __  / 
 | 
			
		||||
/ /__/ /  / /_/ (__  |__  )_____(__  )  __/  __/ /_/ /  
 | 
			
		||||
\___/_/   \____/____/____/     /____/\___/\___/\__,_/   
 | 
			
		||||
                                                        
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/docmost
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/docmost
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____                                  __ 
 | 
			
		||||
   / __ \____  _________ ___  ____  _____/ /_
 | 
			
		||||
  / / / / __ \/ ___/ __ `__ \/ __ \/ ___/ __/
 | 
			
		||||
 / /_/ / /_/ / /__/ / / / / / /_/ (__  ) /_  
 | 
			
		||||
/_____/\____/\___/_/ /_/ /_/\____/____/\__/  
 | 
			
		||||
                                             
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/excalidraw
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/excalidraw
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ______                ___     __                   
 | 
			
		||||
   / ____/  ___________ _/ (_)___/ /________ __      __
 | 
			
		||||
  / __/ | |/_/ ___/ __ `/ / / __  / ___/ __ `/ | /| / /
 | 
			
		||||
 / /____>  </ /__/ /_/ / / / /_/ / /  / /_/ /| |/ |/ / 
 | 
			
		||||
/_____/_/|_|\___/\__,_/_/_/\__,_/_/   \__,_/ |__/|__/  
 | 
			
		||||
                                                       
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/graylog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/graylog
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   ______                 __           
 | 
			
		||||
  / ____/________ ___  __/ /___  ____ _
 | 
			
		||||
 / / __/ ___/ __ `/ / / / / __ \/ __ `/
 | 
			
		||||
/ /_/ / /  / /_/ / /_/ / / /_/ / /_/ / 
 | 
			
		||||
\____/_/   \__,_/\__, /_/\____/\__, /  
 | 
			
		||||
                /____/        /____/   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/kometa
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/kometa
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __ __                     __       
 | 
			
		||||
   / //_/___  ____ ___  ___  / /_____ _
 | 
			
		||||
  / ,< / __ \/ __ `__ \/ _ \/ __/ __ `/
 | 
			
		||||
 / /| / /_/ / / / / / /  __/ /_/ /_/ / 
 | 
			
		||||
/_/ |_\____/_/ /_/ /_/\___/\__/\__,_/  
 | 
			
		||||
                                       
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/minio
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/minio
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __  ____       ________ 
 | 
			
		||||
   /  |/  (_)___  /  _/ __ \
 | 
			
		||||
  / /|_/ / / __ \ / // / / /
 | 
			
		||||
 / /  / / / / / // // /_/ / 
 | 
			
		||||
/_/  /_/_/_/ /_/___/\____/  
 | 
			
		||||
                            
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/nxwitness
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/nxwitness
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    _   __    _       ___ __                      
 | 
			
		||||
   / | / /  _| |     / (_) /_____  ___  __________
 | 
			
		||||
  /  |/ / |/_/ | /| / / / __/ __ \/ _ \/ ___/ ___/
 | 
			
		||||
 / /|  />  < | |/ |/ / / /_/ / / /  __(__  |__  ) 
 | 
			
		||||
/_/ |_/_/|_| |__/|__/_/\__/_/ /_/\___/____/____/  
 | 
			
		||||
                                                  
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/pf2etools
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/pf2etools
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____  _______      ______            __    
 | 
			
		||||
   / __ \/ __/__ \ ___/_  __/___  ____  / /____
 | 
			
		||||
  / /_/ / /_ __/ // _ \/ / / __ \/ __ \/ / ___/
 | 
			
		||||
 / ____/ __// __//  __/ / / /_/ / /_/ / (__  ) 
 | 
			
		||||
/_/   /_/  /____/\___/_/  \____/\____/_/____/  
 | 
			
		||||
                                               
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user