mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			184 Commits
		
	
	
		
			2024-12-23
			...
			2025-01-08
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					f428146c47 | ||
| 
						 | 
					0059adecf1 | ||
| 
						 | 
					e1daaa6409 | ||
| 
						 | 
					ff712bc36e | ||
| 
						 | 
					9330e9a640 | ||
| 
						 | 
					5fc783da67 | ||
| 
						 | 
					670d64ec43 | ||
| 
						 | 
					4da57bd76c | ||
| 
						 | 
					29b98b450b | ||
| 
						 | 
					c88d3a3883 | ||
| 
						 | 
					f5a54bc3ad | ||
| 
						 | 
					2078deca57 | ||
| 
						 | 
					bc702e2a6d | ||
| 
						 | 
					ab10013fbe | ||
| 
						 | 
					9abd8bf9aa | ||
| 
						 | 
					6a78564cc3 | ||
| 
						 | 
					0ec532a4e7 | ||
| 
						 | 
					d712be955c | ||
| 
						 | 
					701f7e9cba | ||
| 
						 | 
					5196539d1b | ||
| 
						 | 
					774cdcaf8d | ||
| 
						 | 
					784e109012 | ||
| 
						 | 
					5184f47eb6 | ||
| 
						 | 
					f7d37a8f3c | ||
| 
						 | 
					4888c33e4b | ||
| 
						 | 
					f98d81f5bf | ||
| 
						 | 
					d7518d8644 | ||
| 
						 | 
					599c462035 | ||
| 
						 | 
					0909132d5c | ||
| 
						 | 
					5123532729 | ||
| 
						 | 
					d814907f99 | ||
| 
						 | 
					32a99a44d4 | ||
| 
						 | 
					e94280f1a1 | ||
| 
						 | 
					b9ca4b7634 | ||
| 
						 | 
					8431931cc4 | ||
| 
						 | 
					8bf7f7a460 | ||
| 
						 | 
					6adf8e38b0 | ||
| 
						 | 
					817455360e | ||
| 
						 | 
					84d36eba84 | ||
| 
						 | 
					a0baf1cecc | ||
| 
						 | 
					144182d22c | ||
| 
						 | 
					81ffa34497 | ||
| 
						 | 
					abfd5e086d | ||
| 
						 | 
					0e84eba9d2 | ||
| 
						 | 
					d827d42968 | ||
| 
						 | 
					d3d6ec8b20 | ||
| 
						 | 
					314f932764 | ||
| 
						 | 
					e191b94151 | ||
| 
						 | 
					9cc4bda762 | ||
| 
						 | 
					32572c6072 | ||
| 
						 | 
					a1fe451fe2 | ||
| 
						 | 
					ba97af3b9f | ||
| 
						 | 
					859f3dffc3 | ||
| 
						 | 
					84b15641fb | ||
| 
						 | 
					a99bdb9e97 | ||
| 
						 | 
					6035469047 | ||
| 
						 | 
					982a19cf28 | ||
| 
						 | 
					e3299a67ec | ||
| 
						 | 
					6f557aa394 | ||
| 
						 | 
					38f4a98e4f | ||
| 
						 | 
					5967a7f496 | ||
| 
						 | 
					67cdc35d02 | ||
| 
						 | 
					71c04d9e12 | ||
| 
						 | 
					eee58b43db | ||
| 
						 | 
					8a35df4f59 | ||
| 
						 | 
					9fd4a13a8a | ||
| 
						 | 
					9f2ae06726 | ||
| 
						 | 
					a5adf44f39 | ||
| 
						 | 
					536de5d083 | ||
| 
						 | 
					dfa14693ee | ||
| 
						 | 
					b03e223e91 | ||
| 
						 | 
					036728df0d | ||
| 
						 | 
					682087c6ec | ||
| 
						 | 
					5338a6762a | ||
| 
						 | 
					3a52f8dbfb | ||
| 
						 | 
					8fd34ea277 | ||
| 
						 | 
					593669b960 | ||
| 
						 | 
					e165153dcb | ||
| 
						 | 
					ff8b060cad | ||
| 
						 | 
					6f51b0f5a2 | ||
| 
						 | 
					487f36fec6 | ||
| 
						 | 
					385b36d29e | ||
| 
						 | 
					3b8ff01385 | ||
| 
						 | 
					11de586c93 | ||
| 
						 | 
					eacaca938d | ||
| 
						 | 
					dc0cf2cb3b | ||
| 
						 | 
					585f9a2404 | ||
| 
						 | 
					c72eb13e74 | ||
| 
						 | 
					e356259785 | ||
| 
						 | 
					618445ec08 | ||
| 
						 | 
					3e5274a951 | ||
| 
						 | 
					2245479733 | ||
| 
						 | 
					99e06341b3 | ||
| 
						 | 
					ce27930f9d | ||
| 
						 | 
					b8671b97af | ||
| 
						 | 
					7c0f85d0b3 | ||
| 
						 | 
					ff660eaabb | ||
| 
						 | 
					15f04d525d | ||
| 
						 | 
					ccdb7007e7 | ||
| 
						 | 
					a119a27b4f | ||
| 
						 | 
					ac37d90403 | ||
| 
						 | 
					3c765790a3 | ||
| 
						 | 
					2f05dcbf87 | ||
| 
						 | 
					409af1b14a | ||
| 
						 | 
					50f7ae1237 | ||
| 
						 | 
					2af4978680 | ||
| 
						 | 
					a9df33c7cf | ||
| 
						 | 
					47377fdd26 | ||
| 
						 | 
					bf53f57e10 | ||
| 
						 | 
					70f2a50955 | ||
| 
						 | 
					10634a77c7 | ||
| 
						 | 
					0aeec14025 | ||
| 
						 | 
					19c3b1dee0 | ||
| 
						 | 
					af4b833aa4 | ||
| 
						 | 
					72f844ddc6 | ||
| 
						 | 
					68aad8e152 | ||
| 
						 | 
					4f517de2d1 | ||
| 
						 | 
					f2d11ea48c | ||
| 
						 | 
					a77ce0bad0 | ||
| 
						 | 
					2479ceeb99 | ||
| 
						 | 
					dc314990f8 | ||
| 
						 | 
					3543d10d35 | ||
| 
						 | 
					c9f4391df0 | ||
| 
						 | 
					69ae09346f | ||
| 
						 | 
					13175efbd8 | ||
| 
						 | 
					4a8239b2ce | ||
| 
						 | 
					e319355859 | ||
| 
						 | 
					21d857e7ad | ||
| 
						 | 
					df3919b904 | ||
| 
						 | 
					96f30bf51f | ||
| 
						 | 
					2832a1e2c4 | ||
| 
						 | 
					415f99e3eb | ||
| 
						 | 
					aa7e8e0810 | ||
| 
						 | 
					8717a0fcf1 | ||
| 
						 | 
					30bc16072e | ||
| 
						 | 
					464fa283ad | ||
| 
						 | 
					024480d0a4 | ||
| 
						 | 
					c754f4e243 | ||
| 
						 | 
					152eb6b2bb | ||
| 
						 | 
					3424e9a86e | ||
| 
						 | 
					13a52878ab | ||
| 
						 | 
					5f39bb66a5 | ||
| 
						 | 
					773b2fcc79 | ||
| 
						 | 
					938f0f76fa | ||
| 
						 | 
					611a14b55f | ||
| 
						 | 
					304db812a8 | ||
| 
						 | 
					678206768c | ||
| 
						 | 
					92d2e421ee | ||
| 
						 | 
					fe3ff916b6 | ||
| 
						 | 
					d4c95779bf | ||
| 
						 | 
					8c0794c2bb | ||
| 
						 | 
					cdb121a55f | ||
| 
						 | 
					b22d66da1b | ||
| 
						 | 
					87ff677ed7 | ||
| 
						 | 
					d3eaf6eaf5 | ||
| 
						 | 
					26e4017d76 | ||
| 
						 | 
					406bb57d74 | ||
| 
						 | 
					f97e932205 | ||
| 
						 | 
					395d1086ea | ||
| 
						 | 
					517b19a62b | ||
| 
						 | 
					ab292927e6 | ||
| 
						 | 
					6bae0d71ea | ||
| 
						 | 
					1378e9a2e9 | ||
| 
						 | 
					71d21f3bfe | ||
| 
						 | 
					12f087932f | ||
| 
						 | 
					8d96c5135d | ||
| 
						 | 
					0c31f43789 | ||
| 
						 | 
					943e6967f4 | ||
| 
						 | 
					e253fe6cee | ||
| 
						 | 
					4b0fff5a88 | ||
| 
						 | 
					ff3d2026a5 | ||
| 
						 | 
					1b57be94fd | ||
| 
						 | 
					b1dc0bc20f | ||
| 
						 | 
					8f243c74ff | ||
| 
						 | 
					b30e8c534f | ||
| 
						 | 
					9b07fe4178 | ||
| 
						 | 
					be66aefd9a | ||
| 
						 | 
					7aca36a3f0 | ||
| 
						 | 
					cf8dd2bfac | ||
| 
						 | 
					ee62a56cb9 | ||
| 
						 | 
					b8885e8d6c | ||
| 
						 | 
					55e02d8bdd | ||
| 
						 | 
					72df7e432d | ||
| 
						 | 
					0f2e49fbeb | 
							
								
								
									
										16
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
; editorconfig.org
 | 
			
		||||
root = true
 | 
			
		||||
 | 
			
		||||
[*]
 | 
			
		||||
charset                     = utf-8
 | 
			
		||||
continuation_indent_size    = 2
 | 
			
		||||
end_of_line                 = lf
 | 
			
		||||
indent_size                 = 2
 | 
			
		||||
indent_style                = space
 | 
			
		||||
insert_final_newline        = true
 | 
			
		||||
max_line_length             = 120
 | 
			
		||||
tab_width                   = 2
 | 
			
		||||
; trim_trailing_whitespace    = true ; disabled until files are cleaned up
 | 
			
		||||
 | 
			
		||||
[*.md]
 | 
			
		||||
trim_trailing_whitespace    = false
 | 
			
		||||
							
								
								
									
										54
									
								
								.github/check-script.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								.github/check-script.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,54 +0,0 @@
 | 
			
		||||
name: Check Shell Scripts
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    paths:
 | 
			
		||||
      - '**/*.sh'  # Führt den Check nur für Shell-Skripte aus
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  check-scripts:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout Code
 | 
			
		||||
      uses: actions/checkout@v3
 | 
			
		||||
 | 
			
		||||
    - name: Check `source` Line in Scripts
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        set -e
 | 
			
		||||
        ERROR_COUNT=0
 | 
			
		||||
        FILES=$(find . -name "*.sh")
 | 
			
		||||
 | 
			
		||||
        for FILE in $FILES; do
 | 
			
		||||
          # Check for exact match of the source line in line 2
 | 
			
		||||
          if [[ $(sed -n '2p' "$FILE") =~ ^source[[:space:]]+<(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) ]]; then
 | 
			
		||||
            echo "Check passed for: $FILE"
 | 
			
		||||
          else
 | 
			
		||||
            echo "Error in $FILE: Line 2 must be exactly 'source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)' if a source line is used."
 | 
			
		||||
            ERROR_COUNT=$((ERROR_COUNT + 1))
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
          # Check for shebang line at the top
 | 
			
		||||
          if [[ $(head -n 1 "$FILE") != "#!/usr/bin/env bash" ]]; then
 | 
			
		||||
            echo "Error in $FILE: The first line must be '#!/usr/bin/env bash'."
 | 
			
		||||
            ERROR_COUNT=$((ERROR_COUNT + 1))
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
          # Check for executable permissions
 | 
			
		||||
          if [[ ! -x "$FILE" ]]; then
 | 
			
		||||
            echo "Warning in $FILE: This script is not executable. Consider running 'chmod +x $FILE'."
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
          # Check for empty lines at the beginning of the script
 | 
			
		||||
          if [[ $(head -n 10 "$FILE" | grep -c '^$') -gt 0 ]]; then
 | 
			
		||||
            echo "Warning in $FILE: There are empty lines at the beginning of the script. Consider removing them."
 | 
			
		||||
          fi
 | 
			
		||||
        done
 | 
			
		||||
 | 
			
		||||
        if [[ "$ERROR_COUNT" -gt 0 ]]; then
 | 
			
		||||
          echo "$ERROR_COUNT script(s) failed validation."
 | 
			
		||||
          exit 1
 | 
			
		||||
        else
 | 
			
		||||
          echo "All scripts passed."
 | 
			
		||||
        fi
 | 
			
		||||
							
								
								
									
										10
									
								
								.github/workflows/changelog-pr.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/changelog-pr.yml
									
									
									
									
										vendored
									
									
								
							@@ -157,3 +157,13 @@ jobs:
 | 
			
		||||
          if [ -n "$PR_NUMBER" ]; then
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
          fi
 | 
			
		||||
          
 | 
			
		||||
      - name: Re-approve pull request after update
 | 
			
		||||
        if: steps.verify-diff.outputs.changed == 'true'
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        run: |
 | 
			
		||||
          PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
 | 
			
		||||
          if [ -n "$PR_NUMBER" ]; then
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
          fi
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								.github/workflows/shellcheck.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.github/workflows/shellcheck.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
name: Shellcheck
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
  pull_request:
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
  schedule:
 | 
			
		||||
    - cron: "5 1 * * *"
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  shellcheck:
 | 
			
		||||
    name: Shellcheck
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
    - uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
    - name: Get changed files
 | 
			
		||||
      id: changes
 | 
			
		||||
      run: |
 | 
			
		||||
        if ${{ github.event_name == 'pull_request' }}; then
 | 
			
		||||
          echo "files=$(git diff --name-only -r HEAD^1 HEAD | xargs)" >> $GITHUB_OUTPUT
 | 
			
		||||
        else
 | 
			
		||||
          echo "files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | xargs)" >> $GITHUB_OUTPUT
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
    - name: Run ShellCheck
 | 
			
		||||
      if: steps.changes.outputs.files != ''
 | 
			
		||||
      run: |
 | 
			
		||||
        echo "${{ steps.changes.outputs.files }}" | xargs shellcheck
 | 
			
		||||
							
								
								
									
										157
									
								
								.github/workflows/validate-filenames.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								.github/workflows/validate-filenames.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,157 @@
 | 
			
		||||
name: Validate filenames
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request_target:
 | 
			
		||||
    paths:
 | 
			
		||||
      - "ct/*.sh"
 | 
			
		||||
      - "install/*.sh"
 | 
			
		||||
      - "json/*.json"
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  check-files:
 | 
			
		||||
    name: Check changed files
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    permissions:
 | 
			
		||||
      pull-requests: write
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Get pull request information
 | 
			
		||||
        if: github.event_name == 'pull_request_target'
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        id: pr
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const { data: pullRequest } = await github.rest.pulls.get({
 | 
			
		||||
              ...context.repo,
 | 
			
		||||
              pull_number: context.payload.pull_request.number,
 | 
			
		||||
            });
 | 
			
		||||
            return pullRequest;
 | 
			
		||||
 | 
			
		||||
      - name: Checkout code
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 0 # Ensure the full history is fetched for accurate diffing
 | 
			
		||||
          ref: ${{ github.event_name == 'pull_request_target' && fromJSON(steps.pr.outputs.result).merge_commit_sha || '' }}
 | 
			
		||||
 | 
			
		||||
      - name: Get changed files
 | 
			
		||||
        id: changed-files
 | 
			
		||||
        run: |
 | 
			
		||||
          if ${{ github.event_name == 'pull_request_target' }}; then
 | 
			
		||||
              echo "files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ steps.pr.outputs.result && fromJSON(steps.pr.outputs.result).merge_commit_sha }} | xargs)" >> $GITHUB_OUTPUT
 | 
			
		||||
          else
 | 
			
		||||
              echo "files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | xargs)" >> $GITHUB_OUTPUT
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: "Validate filenames in ct and install directory"
 | 
			
		||||
        if: always() && steps.changed-files.outputs.files != ''
 | 
			
		||||
        id: check-scripts
 | 
			
		||||
        run: |
 | 
			
		||||
          CHANGED_FILES=$(printf "%s\n" ${{ steps.changed-files.outputs.files }} | { grep -E '^(ct|install)/.*\.sh$' || true; })
 | 
			
		||||
 | 
			
		||||
          NON_COMPLIANT_FILES=""
 | 
			
		||||
          for FILE in $CHANGED_FILES; do
 | 
			
		||||
            BASENAME=$(echo "$(basename "${FILE%.*}")")
 | 
			
		||||
            if [[ ! "$BASENAME" =~ ^[a-z0-9-]+$ ]]; then
 | 
			
		||||
                    NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE"
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          if [ -n "$NON_COMPLIANT_FILES" ]; then
 | 
			
		||||
            echo "files=$NON_COMPLIANT_FILES" >> $GITHUB_OUTPUT
 | 
			
		||||
            echo "Non-compliant filenames found, change to lowercase:"
 | 
			
		||||
            for FILE in $NON_COMPLIANT_FILES; do
 | 
			
		||||
              echo "$FILE"
 | 
			
		||||
            done
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: "Validate filenames in json directory."
 | 
			
		||||
        if: always() && steps.changed-files.outputs.files != ''
 | 
			
		||||
        id: check-json
 | 
			
		||||
        run: |
 | 
			
		||||
          CHANGED_FILES=$(printf "%s\n" ${{ steps.changed-files.outputs.files }} | { grep -E '^json/.*\.json$' || true; })
 | 
			
		||||
 | 
			
		||||
          NON_COMPLIANT_FILES=""
 | 
			
		||||
          for FILE in $CHANGED_FILES; do
 | 
			
		||||
            BASENAME=$(echo "$(basename "${FILE%.*}")")
 | 
			
		||||
            if [[ ! "$BASENAME" =~ ^[a-z0-9-]+$ ]]; then
 | 
			
		||||
                    NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE"
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          if [ -n "$NON_COMPLIANT_FILES" ]; then
 | 
			
		||||
            echo "files=$NON_COMPLIANT_FILES" >> $GITHUB_OUTPUT
 | 
			
		||||
            echo "Non-compliant filenames found, change to lowercase:"
 | 
			
		||||
            for FILE in $NON_COMPLIANT_FILES; do
 | 
			
		||||
              echo "$FILE"
 | 
			
		||||
            done
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Post results and comment
 | 
			
		||||
        if: always() && steps.check-scripts.outputs.files != '' && steps.check-json.outputs.files != '' && github.event_name == 'pull_request_target'
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const result = "${{ job.status }}" === "success" ? "success" : "failure";
 | 
			
		||||
            const nonCompliantFiles = {
 | 
			
		||||
              script: "${{ steps.check-scripts.outputs.files }}",
 | 
			
		||||
              JSON: "${{ steps.check-json.outputs.files }}",
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            const issueNumber = context.payload.pull_request
 | 
			
		||||
              ? context.payload.pull_request.number
 | 
			
		||||
              : null;
 | 
			
		||||
            const commentIdentifier = "validate-filenames";
 | 
			
		||||
            let newCommentBody = `<!-- ${commentIdentifier}-start -->\n### Filename validation\n\n`;
 | 
			
		||||
 | 
			
		||||
            if (result === "failure") {
 | 
			
		||||
              newCommentBody += ":x: We found issues in the following changed files:\n\n";
 | 
			
		||||
              for (const [check, files] of Object.entries(nonCompliantFiles)) {
 | 
			
		||||
                if (files) {
 | 
			
		||||
                  newCommentBody += `**${check.charAt(0).toUpperCase() + check.slice(1)} filename invalid:**\n${files
 | 
			
		||||
                    .trim()
 | 
			
		||||
                    .split(" ")
 | 
			
		||||
                    .map((file) => `- ${file}`)
 | 
			
		||||
                    .join("\n")}\n\n`;
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
              newCommentBody +=
 | 
			
		||||
                "Please change the filenames to lowercase and use only alphanumeric characters and dashes.\n";
 | 
			
		||||
            } else {
 | 
			
		||||
              newCommentBody += `:rocket: All files passed filename validation!\n`;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            newCommentBody += `\n\n<!-- ${commentIdentifier}-end -->`;
 | 
			
		||||
 | 
			
		||||
            if (issueNumber) {
 | 
			
		||||
              const { data: comments } = await github.rest.issues.listComments({
 | 
			
		||||
                ...context.repo,
 | 
			
		||||
                issue_number: issueNumber,
 | 
			
		||||
              });
 | 
			
		||||
 | 
			
		||||
              const existingComment = comments.find(
 | 
			
		||||
                (comment) => comment.user.login === "github-actions[bot]",
 | 
			
		||||
              );
 | 
			
		||||
 | 
			
		||||
              if (existingComment) {
 | 
			
		||||
                if (existingComment.body.includes(commentIdentifier)) {
 | 
			
		||||
                  const re = new RegExp(String.raw`<!-- ${commentIdentifier}-start -->[\s\S]*?<!-- ${commentIdentifier}-end -->`, "");
 | 
			
		||||
                  newCommentBody = existingComment.body.replace(re, newCommentBody);
 | 
			
		||||
                } else {
 | 
			
		||||
                  newCommentBody = existingComment.body + '\n\n---\n\n' + newCommentBody;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                await github.rest.issues.updateComment({
 | 
			
		||||
                  ...context.repo,
 | 
			
		||||
                  comment_id: existingComment.id,
 | 
			
		||||
                  body: newCommentBody,
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                await github.rest.issues.createComment({
 | 
			
		||||
                  ...context.repo,
 | 
			
		||||
                  issue_number: issueNumber,
 | 
			
		||||
                  body: newCommentBody,
 | 
			
		||||
                });
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
							
								
								
									
										130
									
								
								.github/workflows/validate-formatting.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								.github/workflows/validate-formatting.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,130 @@
 | 
			
		||||
name: Validate script formatting
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
  pull_request_target:
 | 
			
		||||
    paths:
 | 
			
		||||
      - "**/*.sh"
 | 
			
		||||
      - "**/*.func"
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  shfmt:
 | 
			
		||||
    name: Check changed files
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    permissions:
 | 
			
		||||
      pull-requests: write
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Get pull request information
 | 
			
		||||
        if: github.event_name == 'pull_request_target'
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        id: pr
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const { data: pullRequest } = await github.rest.pulls.get({
 | 
			
		||||
              ...context.repo,
 | 
			
		||||
              pull_number: context.payload.pull_request.number,
 | 
			
		||||
            });
 | 
			
		||||
            return pullRequest;
 | 
			
		||||
 | 
			
		||||
      - name: Checkout code
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 0 # Ensure the full history is fetched for accurate diffing
 | 
			
		||||
          ref: ${{ github.event_name == 'pull_request_target' && fromJSON(steps.pr.outputs.result).merge_commit_sha || '' }}
 | 
			
		||||
 | 
			
		||||
      - name: Get changed files
 | 
			
		||||
        id: changed-files
 | 
			
		||||
        run: |
 | 
			
		||||
          if ${{ github.event_name == 'pull_request_target' }}; then
 | 
			
		||||
              echo "files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ steps.pr.outputs.result && fromJSON(steps.pr.outputs.result).merge_commit_sha }} | grep -E '\.(sh|func)$' | xargs)" >> $GITHUB_OUTPUT
 | 
			
		||||
          else
 | 
			
		||||
              echo "files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | grep -E '\.(sh|func)$' | xargs)" >> $GITHUB_OUTPUT
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Set up Go
 | 
			
		||||
        if: steps.changed-files.outputs.files != ''
 | 
			
		||||
        uses: actions/setup-go@v5
 | 
			
		||||
 | 
			
		||||
      - name: Install shfmt
 | 
			
		||||
        if: steps.changed-files.outputs.files != ''
 | 
			
		||||
        run: |
 | 
			
		||||
          go install mvdan.cc/sh/v3/cmd/shfmt@latest
 | 
			
		||||
          echo "$GOPATH/bin" >> $GITHUB_PATH
 | 
			
		||||
 | 
			
		||||
      - name: Run shfmt
 | 
			
		||||
        if: steps.changed-files.outputs.files != ''
 | 
			
		||||
        id: shfmt
 | 
			
		||||
        run: |
 | 
			
		||||
          set +e
 | 
			
		||||
 | 
			
		||||
          shfmt_output=$(shfmt -d ${{ steps.changed-files.outputs.files }})
 | 
			
		||||
          if [[ $? -eq 0 ]]; then
 | 
			
		||||
            exit 0
 | 
			
		||||
          else
 | 
			
		||||
            echo "diff=\"$(echo -n "$shfmt_output" | base64 -w 0)\"" >> $GITHUB_OUTPUT
 | 
			
		||||
            printf "%s" "$shfmt_output"
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Post comment with results
 | 
			
		||||
        if: always() && steps.changed-files.outputs.files != '' && github.event_name == 'pull_request_target'
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const result = "${{ job.status }}" === "success" ? "success" : "failure";
 | 
			
		||||
            const diff = Buffer.from(
 | 
			
		||||
              ${{ steps.shfmt.outputs.diff }},
 | 
			
		||||
              "base64",
 | 
			
		||||
            ).toString();
 | 
			
		||||
            const issueNumber = context.payload.pull_request
 | 
			
		||||
              ? context.payload.pull_request.number
 | 
			
		||||
              : null;
 | 
			
		||||
            const commentIdentifier = "validate-formatting";
 | 
			
		||||
            let newCommentBody = `<!-- ${commentIdentifier}-start -->\n### Script formatting\n\n`;
 | 
			
		||||
 | 
			
		||||
            if (result === "failure") {
 | 
			
		||||
              newCommentBody +=
 | 
			
		||||
                `:x: We found issues in the formatting of the following changed files:\n\n\`\`\`diff\n${diff}\n\`\`\`\n`;
 | 
			
		||||
            } else {
 | 
			
		||||
              newCommentBody += `:rocket: All changed shell scripts are formatted correctly!\n`;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            newCommentBody += `\n\n<!-- ${commentIdentifier}-end -->`;
 | 
			
		||||
 | 
			
		||||
            if (issueNumber) {
 | 
			
		||||
              const { data: comments } = await github.rest.issues.listComments({
 | 
			
		||||
                ...context.repo,
 | 
			
		||||
                issue_number: issueNumber,
 | 
			
		||||
              });
 | 
			
		||||
 | 
			
		||||
              const existingComment = comments.find(
 | 
			
		||||
                (comment) => comment.user.login === "github-actions[bot]",
 | 
			
		||||
              );
 | 
			
		||||
 | 
			
		||||
              if (existingComment) {
 | 
			
		||||
                if (existingComment.body.includes(commentIdentifier)) {
 | 
			
		||||
                  const re = new RegExp(
 | 
			
		||||
                    String.raw`<!-- ${commentIdentifier}-start -->[\s\S]*?<!-- ${commentIdentifier}-end -->`,
 | 
			
		||||
                    "",
 | 
			
		||||
                  );
 | 
			
		||||
                  newCommentBody = existingComment.body.replace(re, newCommentBody);
 | 
			
		||||
                } else {
 | 
			
		||||
                  newCommentBody = existingComment.body + "\n\n---\n\n" + newCommentBody;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                await github.rest.issues.updateComment({
 | 
			
		||||
                  ...context.repo,
 | 
			
		||||
                  comment_id: existingComment.id,
 | 
			
		||||
                  body: newCommentBody,
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                await github.rest.issues.createComment({
 | 
			
		||||
                  ...context.repo,
 | 
			
		||||
                  issue_number: issueNumber,
 | 
			
		||||
                  body: newCommentBody,
 | 
			
		||||
                });
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
							
								
								
									
										226
									
								
								.github/workflows/validate-scripts.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										226
									
								
								.github/workflows/validate-scripts.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,226 @@
 | 
			
		||||
name: Validate scripts
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
  pull_request_target:
 | 
			
		||||
    paths:
 | 
			
		||||
      - "ct/*.sh"
 | 
			
		||||
      - "install/*.sh"
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  check-scripts:
 | 
			
		||||
    name: Check changed files
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    permissions:
 | 
			
		||||
      pull-requests: write
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Get pull request information
 | 
			
		||||
        if: github.event_name == 'pull_request_target'
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        id: pr
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const { data: pullRequest } = await github.rest.pulls.get({
 | 
			
		||||
              ...context.repo,
 | 
			
		||||
              pull_number: context.payload.pull_request.number,
 | 
			
		||||
            });
 | 
			
		||||
            return pullRequest;
 | 
			
		||||
 | 
			
		||||
      - name: Checkout code
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 0 # Ensure the full history is fetched for accurate diffing
 | 
			
		||||
          ref: ${{ github.event_name == 'pull_request_target' && fromJSON(steps.pr.outputs.result).merge_commit_sha || '' }}
 | 
			
		||||
 | 
			
		||||
      - name: Get changed files
 | 
			
		||||
        id: changed-files
 | 
			
		||||
        run: |
 | 
			
		||||
          if ${{ github.event_name == 'pull_request_target' }}; then
 | 
			
		||||
              echo "files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ steps.pr.outputs.result && fromJSON(steps.pr.outputs.result).merge_commit_sha }} | xargs)" >> $GITHUB_OUTPUT
 | 
			
		||||
          else
 | 
			
		||||
              echo "files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | grep -E '\.(sh|func)$' | xargs)" >> $GITHUB_OUTPUT
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Check build.func line
 | 
			
		||||
        if: always() && steps.changed-files.outputs.files != ''
 | 
			
		||||
        id: build-func
 | 
			
		||||
        run: |
 | 
			
		||||
          NON_COMPLIANT_FILES=""
 | 
			
		||||
          for FILE in ${{ steps.changed-files.outputs.files }}; do
 | 
			
		||||
            if [[ "$FILE" == ct/* ]] && [[ $(sed -n '2p' "$FILE") != "source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)" ]]; then
 | 
			
		||||
              NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE"
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          if [ -n "$NON_COMPLIANT_FILES" ]; then
 | 
			
		||||
            echo "files=$NON_COMPLIANT_FILES" >> $GITHUB_OUTPUT
 | 
			
		||||
            echo "Build.func line missing or incorrect in files:"
 | 
			
		||||
            for FILE in $NON_COMPLIANT_FILES; do
 | 
			
		||||
              echo "$FILE"
 | 
			
		||||
            done
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Check executable permissions
 | 
			
		||||
        if: always() && steps.changed-files.outputs.files != ''
 | 
			
		||||
        id: check-executable
 | 
			
		||||
        run: |
 | 
			
		||||
          NON_COMPLIANT_FILES=""
 | 
			
		||||
          for FILE in ${{ steps.changed-files.outputs.files }}; do
 | 
			
		||||
            if [[ ! -x "$FILE" ]]; then
 | 
			
		||||
              NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE"
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          if [ -n "$NON_COMPLIANT_FILES" ]; then
 | 
			
		||||
            echo "files=$NON_COMPLIANT_FILES" >> $GITHUB_OUTPUT
 | 
			
		||||
            echo "Files not executable:"
 | 
			
		||||
            for FILE in $NON_COMPLIANT_FILES; do
 | 
			
		||||
              echo "$FILE"
 | 
			
		||||
            done
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Check copyright
 | 
			
		||||
        if: always() && steps.changed-files.outputs.files != ''
 | 
			
		||||
        id: check-copyright
 | 
			
		||||
        run: |
 | 
			
		||||
          NON_COMPLIANT_FILES=""
 | 
			
		||||
          for FILE in ${{ steps.changed-files.outputs.files }}; do
 | 
			
		||||
            if ! sed -n '3p' "$FILE" | grep -qE "^# Copyright \(c\) [0-9]{4}(-[0-9]{4})? (tteck \| community-scripts ORG|community-scripts ORG|tteck)$"; then
 | 
			
		||||
              NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE"
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          if [ -n "$NON_COMPLIANT_FILES" ]; then
 | 
			
		||||
            echo "files=$NON_COMPLIANT_FILES" >> $GITHUB_OUTPUT
 | 
			
		||||
            echo "Copyright header missing or not on line 3 in files:"
 | 
			
		||||
            for FILE in $NON_COMPLIANT_FILES; do
 | 
			
		||||
              echo "$FILE"
 | 
			
		||||
            done
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Check author
 | 
			
		||||
        if: always() && steps.changed-files.outputs.files != ''
 | 
			
		||||
        id: check-author
 | 
			
		||||
        run: |
 | 
			
		||||
          NON_COMPLIANT_FILES=""
 | 
			
		||||
          for FILE in ${{ steps.changed-files.outputs.files }}; do
 | 
			
		||||
            if ! sed -n '4p' "$FILE" | grep -qE "^# Author: .+"; then
 | 
			
		||||
              NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE"
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          if [ -n "$NON_COMPLIANT_FILES" ]; then
 | 
			
		||||
            echo "files=$NON_COMPLIANT_FILES" >> $GITHUB_OUTPUT
 | 
			
		||||
            echo "Author header missing or invalid on line 4 in files:"
 | 
			
		||||
            for FILE in $NON_COMPLIANT_FILES; do
 | 
			
		||||
              echo "$FILE"
 | 
			
		||||
            done
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Check license
 | 
			
		||||
        if: always() && steps.changed-files.outputs.files != ''
 | 
			
		||||
        id: check-license
 | 
			
		||||
        run: |
 | 
			
		||||
          NON_COMPLIANT_FILES=""
 | 
			
		||||
          for FILE in ${{ steps.changed-files.outputs.files }}; do
 | 
			
		||||
            if [[ "$(sed -n '5p' "$FILE")" != "# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE" ]]; then
 | 
			
		||||
              NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE"
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          if [ -n "$NON_COMPLIANT_FILES" ]; then
 | 
			
		||||
            echo "files=$NON_COMPLIANT_FILES" >> $GITHUB_OUTPUT
 | 
			
		||||
            echo "License header missing or not on line 5 in files:"
 | 
			
		||||
            for FILE in $NON_COMPLIANT_FILES; do
 | 
			
		||||
              echo "$FILE"
 | 
			
		||||
            done
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Check source
 | 
			
		||||
        if: always() && steps.changed-files.outputs.files != ''
 | 
			
		||||
        id: check-source
 | 
			
		||||
        run: |
 | 
			
		||||
          NON_COMPLIANT_FILES=""
 | 
			
		||||
          for FILE in ${{ steps.changed-files.outputs.files }}; do
 | 
			
		||||
            if ! sed -n '6p' "$FILE" | grep -qE "^# Source: .+"; then
 | 
			
		||||
              NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE"
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          if [ -n "$NON_COMPLIANT_FILES" ]; then
 | 
			
		||||
            echo "files=$NON_COMPLIANT_FILES" >> $GITHUB_OUTPUT
 | 
			
		||||
            echo "Source header missing or not on line 6 in files:"
 | 
			
		||||
            for FILE in $NON_COMPLIANT_FILES; do
 | 
			
		||||
              echo "$FILE"
 | 
			
		||||
            done
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Post results and comment
 | 
			
		||||
        if: always() && steps.changed-files.outputs.files != '' && github.event_name == 'pull_request_target'
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const result = '${{ job.status }}' === 'success' ? 'success' : 'failure';
 | 
			
		||||
            const nonCompliantFiles = {
 | 
			
		||||
              'Invalid build.func source': "${{ steps.build-func.outputs.files }}",
 | 
			
		||||
              'Not executable': "${{ steps.check-executable.outputs.files }}",
 | 
			
		||||
              'Copyright header line missing or invalid': "${{ steps.check-copyright.outputs.files }}",
 | 
			
		||||
              'Author header line missing or invalid': "${{ steps.check-author.outputs.files }}",
 | 
			
		||||
              'License header line missing or invalid': "${{ steps.check-license.outputs.files }}",
 | 
			
		||||
              'Source header line missing or invalid': "${{ steps.check-source.outputs.files }}"
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            const issueNumber = context.payload.pull_request ? context.payload.pull_request.number : null;
 | 
			
		||||
            const commentIdentifier = 'validate-scripts';
 | 
			
		||||
            let newCommentBody = `<!-- ${commentIdentifier}-start -->\n### Script validation\n\n`;
 | 
			
		||||
 | 
			
		||||
            if (result === 'failure') {
 | 
			
		||||
              newCommentBody += ':x: We found issues in the following changed files:\n\n';
 | 
			
		||||
              for (const [check, files] of Object.entries(nonCompliantFiles)) {
 | 
			
		||||
                if (files) {
 | 
			
		||||
                  newCommentBody += `**${check}:**\n${files.trim().split(' ').map(file => `- ${file}`).join('\n')}\n\n`;
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            } else {
 | 
			
		||||
              newCommentBody += `:rocket: All changed shell scripts passed validation!\n`;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            newCommentBody += `\n\n<!-- ${commentIdentifier}-end -->`;
 | 
			
		||||
 | 
			
		||||
            if (issueNumber) {
 | 
			
		||||
              const { data: comments } = await github.rest.issues.listComments({
 | 
			
		||||
                ...context.repo,
 | 
			
		||||
                issue_number: issueNumber
 | 
			
		||||
              });
 | 
			
		||||
 | 
			
		||||
              const existingComment = comments.find(comment => comment.user.login === 'github-actions[bot]');
 | 
			
		||||
 | 
			
		||||
              if (existingComment) {
 | 
			
		||||
                if (existingComment.body.includes(commentIdentifier)) {
 | 
			
		||||
                  const re = new RegExp(String.raw`<!-- ${commentIdentifier}-start -->[\s\S]*?<!-- ${commentIdentifier}-end -->`, "");
 | 
			
		||||
                  newCommentBody = existingComment.body.replace(re, newCommentBody);
 | 
			
		||||
                } else {
 | 
			
		||||
                  newCommentBody = existingComment.body + '\n\n---\n\n' + newCommentBody;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                await github.rest.issues.updateComment({
 | 
			
		||||
                  ...context.repo,
 | 
			
		||||
                  comment_id: existingComment.id,
 | 
			
		||||
                  body: newCommentBody
 | 
			
		||||
                });
 | 
			
		||||
              } else {
 | 
			
		||||
                await github.rest.issues.createComment({
 | 
			
		||||
                  ...context.repo,
 | 
			
		||||
                  issue_number: issueNumber,
 | 
			
		||||
                  body: newCommentBody
 | 
			
		||||
                });
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
							
								
								
									
										261
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										261
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -16,6 +16,267 @@ All LXC instances created using this repository come pre-installed with Midnight
 | 
			
		||||
> [!IMPORTANT]
 | 
			
		||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 | 
			
		||||
 | 
			
		||||
## 2025-01-08
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- update postgresql json to add post install password setup [@rdiazlugo](https://github.com/rdiazlugo) ([#1318](https://github.com/community-scripts/ProxmoxVE/pull/1318))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- fix(ci): formatting event & chmod +x [@se-bastiaan](https://github.com/se-bastiaan) ([#1335](https://github.com/community-scripts/ProxmoxVE/pull/1335))
 | 
			
		||||
- fix: correctly handle pull_request_target event [@se-bastiaan](https://github.com/se-bastiaan) ([#1327](https://github.com/community-scripts/ProxmoxVE/pull/1327))
 | 
			
		||||
 | 
			
		||||
## 2025-01-07
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix: Folder-Check for Updatescript Zammad [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1309](https://github.com/community-scripts/ProxmoxVE/pull/1309))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- fix: permissions of validate pipelines [@se-bastiaan](https://github.com/se-bastiaan) ([#1316](https://github.com/community-scripts/ProxmoxVE/pull/1316))
 | 
			
		||||
- Set Execution Rights for GH-Action: Validate Scripts [@MickLesk](https://github.com/MickLesk) ([#1312](https://github.com/community-scripts/ProxmoxVE/pull/1312))
 | 
			
		||||
 | 
			
		||||
## 2025-01-06
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New Script: Typesense [@tlissak](https://github.com/tlissak) ([#1291](https://github.com/community-scripts/ProxmoxVE/pull/1291))
 | 
			
		||||
- New script: GLPI [@opastorello](https://github.com/opastorello) ([#1201](https://github.com/community-scripts/ProxmoxVE/pull/1201))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix Tag in HyperHDR Script [@MickLesk](https://github.com/MickLesk) ([#1299](https://github.com/community-scripts/ProxmoxVE/pull/1299))
 | 
			
		||||
- [Fix]: Fixed rm Bug in pf2etools [@MickLesk](https://github.com/MickLesk) ([#1292](https://github.com/community-scripts/ProxmoxVE/pull/1292))
 | 
			
		||||
- Fix: Homebox Update Script  [@MickLesk](https://github.com/MickLesk) ([#1284](https://github.com/community-scripts/ProxmoxVE/pull/1284))
 | 
			
		||||
- Add ca-certificates for Install (Frigate) [@MickLesk](https://github.com/MickLesk) ([#1282](https://github.com/community-scripts/ProxmoxVE/pull/1282))
 | 
			
		||||
- fix: buffer from base64 in formatting pipeline [@se-bastiaan](https://github.com/se-bastiaan) ([#1285](https://github.com/community-scripts/ProxmoxVE/pull/1285))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- Add reapproval of Changelog-PR [@MickLesk](https://github.com/MickLesk) ([#1279](https://github.com/community-scripts/ProxmoxVE/pull/1279))
 | 
			
		||||
- ci: combine header checks into workflow with PR comment [@se-bastiaan](https://github.com/se-bastiaan) ([#1257](https://github.com/community-scripts/ProxmoxVE/pull/1257))
 | 
			
		||||
- ci: change filename checks into steps with PR comment [@se-bastiaan](https://github.com/se-bastiaan) ([#1255](https://github.com/community-scripts/ProxmoxVE/pull/1255))
 | 
			
		||||
- ci: add pipeline for code formatting checks [@se-bastiaan](https://github.com/se-bastiaan) ([#1239](https://github.com/community-scripts/ProxmoxVE/pull/1239))
 | 
			
		||||
 | 
			
		||||
## 2025-01-05
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
- [Breaking] Update Zigbee2mqtt to v.2.0.0 (Read PR Description) [@MickLesk](https://github.com/MickLesk) ([#1221](https://github.com/community-scripts/ProxmoxVE/pull/1221))
 | 
			
		||||
 | 
			
		||||
### ❔ Unlabelled
 | 
			
		||||
 | 
			
		||||
- Add RAM and Disk units [@oOStroudyOo](https://github.com/oOStroudyOo) ([#1261](https://github.com/community-scripts/ProxmoxVE/pull/1261))
 | 
			
		||||
 | 
			
		||||
## 2025-01-04
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix gpg key pf2tools & 5etools [@MickLesk](https://github.com/MickLesk) ([#1242](https://github.com/community-scripts/ProxmoxVE/pull/1242))
 | 
			
		||||
- Homarr: Fix missing curl dependency [@MickLesk](https://github.com/MickLesk) ([#1238](https://github.com/community-scripts/ProxmoxVE/pull/1238))
 | 
			
		||||
- Homeassistan Core: Fix Python3 and add missing dependencies [@MickLesk](https://github.com/MickLesk) ([#1236](https://github.com/community-scripts/ProxmoxVE/pull/1236))
 | 
			
		||||
- Fix: Update Python for HomeAssistant [@MickLesk](https://github.com/MickLesk) ([#1227](https://github.com/community-scripts/ProxmoxVE/pull/1227))
 | 
			
		||||
- OneDev: Add git-lfs [@MickLesk](https://github.com/MickLesk) ([#1225](https://github.com/community-scripts/ProxmoxVE/pull/1225))
 | 
			
		||||
- Pf2eTools & 5eTools: Fixing npm build [@TheRealVira](https://github.com/TheRealVira) ([#1213](https://github.com/community-scripts/ProxmoxVE/pull/1213))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Bump next from 15.0.2 to 15.1.3 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#1212](https://github.com/community-scripts/ProxmoxVE/pull/1212))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- [GitHub Action] Add filename case check [@quantumryuu](https://github.com/quantumryuu) ([#1228](https://github.com/community-scripts/ProxmoxVE/pull/1228))
 | 
			
		||||
 | 
			
		||||
## 2025-01-03
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Improve Homarr Installation [@MickLesk](https://github.com/MickLesk) ([#1208](https://github.com/community-scripts/ProxmoxVE/pull/1208))
 | 
			
		||||
- Fix: Zabbix-Update Script [@MickLesk](https://github.com/MickLesk) ([#1205](https://github.com/community-scripts/ProxmoxVE/pull/1205))
 | 
			
		||||
- Update Script: Lazylibrarian [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1190](https://github.com/community-scripts/ProxmoxVE/pull/1190))
 | 
			
		||||
- Fix: Memos update function [@MickLesk](https://github.com/MickLesk) ([#1207](https://github.com/community-scripts/ProxmoxVE/pull/1207))
 | 
			
		||||
- Keep Lubelogger data after update to a new version [@JcMinarro](https://github.com/JcMinarro) ([#1200](https://github.com/community-scripts/ProxmoxVE/pull/1200))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Update Nextcloud-LXC JSON [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1191](https://github.com/community-scripts/ProxmoxVE/pull/1191))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- Github action to check metadata lines in scripts. [@quantumryuu](https://github.com/quantumryuu) ([#1110](https://github.com/community-scripts/ProxmoxVE/pull/1110))
 | 
			
		||||
 | 
			
		||||
## 2025-01-02
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New Script: Pf2eTools [@TheRealVira](https://github.com/TheRealVira) ([#1162](https://github.com/community-scripts/ProxmoxVE/pull/1162))
 | 
			
		||||
- New Script: 5etools [@TheRealVira](https://github.com/TheRealVira) ([#1157](https://github.com/community-scripts/ProxmoxVE/pull/1157))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Update config template in blocky-install.sh [@xFichtl1](https://github.com/xFichtl1) ([#1059](https://github.com/community-scripts/ProxmoxVE/pull/1059))
 | 
			
		||||
 | 
			
		||||
## 2025-01-01
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New Script: Komodo [@MickLesk](https://github.com/MickLesk) ([#1167](https://github.com/community-scripts/ProxmoxVE/pull/1167))
 | 
			
		||||
- New Script: Firefly [@quantumryuu](https://github.com/quantumryuu) ([#616](https://github.com/community-scripts/ProxmoxVE/pull/616))
 | 
			
		||||
- New Script: Semaphore [@quantumryuu](https://github.com/quantumryuu) ([#596](https://github.com/community-scripts/ProxmoxVE/pull/596))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix Script Homepage: add version during build step [@se-bastiaan](https://github.com/se-bastiaan) ([#1155](https://github.com/community-scripts/ProxmoxVE/pull/1155))
 | 
			
		||||
- Happy new Year! Update Copyright to 2025 [@MickLesk](https://github.com/MickLesk) ([#1150](https://github.com/community-scripts/ProxmoxVE/pull/1150))
 | 
			
		||||
- Update Kernel-Clean to new Version & Bugfixing [@MickLesk](https://github.com/MickLesk) ([#1147](https://github.com/community-scripts/ProxmoxVE/pull/1147))
 | 
			
		||||
- Fix chromium installation for ArchiveBox  [@tkunzfeld](https://github.com/tkunzfeld) ([#1140](https://github.com/community-scripts/ProxmoxVE/pull/1140))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Fix Category of Semaphore [@MickLesk](https://github.com/MickLesk) ([#1148](https://github.com/community-scripts/ProxmoxVE/pull/1148))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- Correctly check for changed files in Shellcheck workflow [@se-bastiaan](https://github.com/se-bastiaan) ([#1156](https://github.com/community-scripts/ProxmoxVE/pull/1156))
 | 
			
		||||
 | 
			
		||||
## 2024-12-31 - Happy new Year! 🎉✨
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
- Add ExecReload to prometheus.service [@BasixKOR](https://github.com/BasixKOR) ([#1131](https://github.com/community-scripts/ProxmoxVE/pull/1131))
 | 
			
		||||
- Fix: Figlet Version & Font Check [@MickLesk](https://github.com/MickLesk) ([#1133](https://github.com/community-scripts/ProxmoxVE/pull/1133))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix: Copy issue after update in Bookstack LXC [@MickLesk](https://github.com/MickLesk) ([#1137](https://github.com/community-scripts/ProxmoxVE/pull/1137))
 | 
			
		||||
- Omada: Switch Base-URL to prevent issues [@MickLesk](https://github.com/MickLesk) ([#1135](https://github.com/community-scripts/ProxmoxVE/pull/1135))
 | 
			
		||||
- fix: guacd service not start during Apache-Guacamole script installation process [@PhoenixEmik](https://github.com/PhoenixEmik) ([#1122](https://github.com/community-scripts/ProxmoxVE/pull/1122))
 | 
			
		||||
- Fix Homepage-Script: Installation/Update [@MickLesk](https://github.com/MickLesk) ([#1129](https://github.com/community-scripts/ProxmoxVE/pull/1129))
 | 
			
		||||
- Netbox: Updating URL to https [@surajsbmn](https://github.com/surajsbmn) ([#1124](https://github.com/community-scripts/ProxmoxVE/pull/1124))
 | 
			
		||||
 | 
			
		||||
## 2024-12-30
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- [Archivebox] Fix wrong port being printed post install. [@Strana-Mechty](https://github.com/Strana-Mechty) ([#1105](https://github.com/community-scripts/ProxmoxVE/pull/1105))
 | 
			
		||||
- fix: add homepage version during build step [@se-bastiaan](https://github.com/se-bastiaan) ([#1107](https://github.com/community-scripts/ProxmoxVE/pull/1107))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Fix Trilium Website to TriliumNext [@tmkis2](https://github.com/tmkis2) ([#1103](https://github.com/community-scripts/ProxmoxVE/pull/1103))
 | 
			
		||||
 | 
			
		||||
## 2024-12-29
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New Script: Grist [@cfurrow](https://github.com/cfurrow) ([#1076](https://github.com/community-scripts/ProxmoxVE/pull/1076))
 | 
			
		||||
- New Script: TeddyCloud Server [@dsiebel](https://github.com/dsiebel) ([#1064](https://github.com/community-scripts/ProxmoxVE/pull/1064))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix Install / Update on Grist Script [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1091](https://github.com/community-scripts/ProxmoxVE/pull/1091))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- fix: Update add-lxc-iptag.json warn to warning [@BramSuurdje](https://github.com/BramSuurdje) ([#1094](https://github.com/community-scripts/ProxmoxVE/pull/1094))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- Introduce editorconfig for more consistent formatting [@dsiebel](https://github.com/dsiebel) ([#1073](https://github.com/community-scripts/ProxmoxVE/pull/1073))
 | 
			
		||||
 | 
			
		||||
## 2024-12-28
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
- Add Figlet into Repo | Creation of local ASCII Header [@MickLesk](https://github.com/MickLesk) ([#1072](https://github.com/community-scripts/ProxmoxVE/pull/1072))
 | 
			
		||||
- Add an IP-Update for MOTD if IP Changed [@MickLesk](https://github.com/MickLesk) ([#1067](https://github.com/community-scripts/ProxmoxVE/pull/1067))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Zabbix: Fix SQL Path for 7.2 [@MickLesk](https://github.com/MickLesk) ([#1069](https://github.com/community-scripts/ProxmoxVE/pull/1069))
 | 
			
		||||
- Authentik: added missing port to access url [@TheRealVira](https://github.com/TheRealVira) ([#1065](https://github.com/community-scripts/ProxmoxVE/pull/1065))
 | 
			
		||||
 | 
			
		||||
## 2024-12-27
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- new scripts for Authentik [@remz1337](https://github.com/remz1337) ([#291](https://github.com/community-scripts/ProxmoxVE/pull/291))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Add 8.0 for MongoDB Installation [@MickLesk](https://github.com/MickLesk) ([#1046](https://github.com/community-scripts/ProxmoxVE/pull/1046))
 | 
			
		||||
- Update Zabbix to 7.2. Release [@MickLesk](https://github.com/MickLesk) ([#1048](https://github.com/community-scripts/ProxmoxVE/pull/1048))
 | 
			
		||||
- Apache-Guacamole script bug fix [@sannier3](https://github.com/sannier3) ([#1039](https://github.com/community-scripts/ProxmoxVE/pull/1039))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Updated SAB documentation based on RAM increase [@TheRealVira](https://github.com/TheRealVira) ([#1035](https://github.com/community-scripts/ProxmoxVE/pull/1035))
 | 
			
		||||
 | 
			
		||||
### ❔ Unlabelled
 | 
			
		||||
 | 
			
		||||
- Patch Figlet Repo if missing [@MickLesk](https://github.com/MickLesk) ([#1044](https://github.com/community-scripts/ProxmoxVE/pull/1044))
 | 
			
		||||
- fix Tags for Advanced Settings [@MickLesk](https://github.com/MickLesk) ([#1042](https://github.com/community-scripts/ProxmoxVE/pull/1042))
 | 
			
		||||
 | 
			
		||||
## 2024-12-26
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
-  New Script: Jenkins [@quantumryuu](https://github.com/quantumryuu) ([#1019](https://github.com/community-scripts/ProxmoxVE/pull/1019))
 | 
			
		||||
- New Script: 2FAuth [@jkrgr0](https://github.com/jkrgr0) ([#943](https://github.com/community-scripts/ProxmoxVE/pull/943))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- ChangeDetection Update: Update also Browsers [@Niklas04](https://github.com/Niklas04) ([#1027](https://github.com/community-scripts/ProxmoxVE/pull/1027))
 | 
			
		||||
- ensure all RFC1918 local Ipv4 addresses are in iptag script [@AskAlice](https://github.com/AskAlice) ([#992](https://github.com/community-scripts/ProxmoxVE/pull/992))
 | 
			
		||||
- Fix Proxmox DataCenter: incorrect build.func url [@rbradley0](https://github.com/rbradley0) ([#1013](https://github.com/community-scripts/ProxmoxVE/pull/1013))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- [GitHub Actions] Introduce Shellcheck to check bash code [@andygrunwald](https://github.com/andygrunwald) ([#1018](https://github.com/community-scripts/ProxmoxVE/pull/1018))
 | 
			
		||||
 | 
			
		||||
## 2024-12-25
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- add: pve-datacenter-manager [@CrazyWolf13](https://github.com/CrazyWolf13) ([#947](https://github.com/community-scripts/ProxmoxVE/pull/947))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix Script: Alpine Nextcloud Upload File Size Limit [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#933](https://github.com/community-scripts/ProxmoxVE/pull/933))
 | 
			
		||||
- Doubled RAM for SAB [@TheRealVira](https://github.com/TheRealVira) ([#1007](https://github.com/community-scripts/ProxmoxVE/pull/1007))
 | 
			
		||||
 | 
			
		||||
## 2024-12-23
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
MIT License
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2021-2024 tteck | community-scripts ORG 
 | 
			
		||||
Copyright (c) 2021-2025 tteck | community-scripts ORG 
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										90
									
								
								ct/2fauth.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								ct/2fauth.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
			
		||||
#!/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: jkrgr0
 | 
			
		||||
# 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_cpu="1"
 | 
			
		||||
var_ram="512"
 | 
			
		||||
var_disk="2"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
 | 
			
		||||
    # Check if installation is present | -f for file, -d for folder
 | 
			
		||||
    if [[ ! -d "/opt/2fauth" ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Crawling the new version and checking whether an update is required
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/2fauth_version.txt)" ]] || [[ ! -f /opt/2fauth_version.txt ]]; then
 | 
			
		||||
        msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        apt-get update &>/dev/null
 | 
			
		||||
        apt-get -y upgrade &>/dev/null
 | 
			
		||||
 | 
			
		||||
        # Creating Backup
 | 
			
		||||
        msg_info "Creating Backup"
 | 
			
		||||
        mv "/opt/2fauth" "/opt/2fauth-backup"
 | 
			
		||||
        msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
        # Execute Update
 | 
			
		||||
        wget -q "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip"
 | 
			
		||||
        unzip -q "${RELEASE}.zip"
 | 
			
		||||
        mv "2FAuth-${RELEASE//v}/" "/opt/2fauth"
 | 
			
		||||
        mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
 | 
			
		||||
        mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
 | 
			
		||||
        cd "/opt/2fauth" || return
 | 
			
		||||
 | 
			
		||||
        chown -R www-data: "/opt/2fauth"
 | 
			
		||||
        chmod -R 755 "/opt/2fauth"
 | 
			
		||||
 | 
			
		||||
        export COMPOSER_ALLOW_SUPERUSER=1
 | 
			
		||||
        composer install --no-dev --prefer-source &>/dev/null
 | 
			
		||||
 | 
			
		||||
        php artisan 2fauth:install
 | 
			
		||||
 | 
			
		||||
        # Cleaning up
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf "v${RELEASE}.zip"
 | 
			
		||||
        $STD apt-get -y autoremove
 | 
			
		||||
        $STD apt-get -y autoclean
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        # Last Action
 | 
			
		||||
        echo "${RELEASE}" >/opt/2fauth_version.txt
 | 
			
		||||
        msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
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}:80${CL}"
 | 
			
		||||
							
								
								
									
										113
									
								
								ct/5etools.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								ct/5etools.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,113 @@
 | 
			
		||||
#!/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: TheRealVira
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://5e.tools/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="5etools"
 | 
			
		||||
var_tags="wiki"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="512"
 | 
			
		||||
var_disk="13"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
 | 
			
		||||
    # Check if installation is present | -f for file, -d for folder
 | 
			
		||||
    if [[ ! -d "/opt/${APP}" ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-3/5etools-src/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f "/opt/${APP}_version.txt" ]]; then
 | 
			
		||||
        # Crawling the new version and checking whether an update is required
 | 
			
		||||
        msg_info "Updating System"
 | 
			
		||||
        apt-get update &>/dev/null
 | 
			
		||||
        apt-get -y upgrade &>/dev/null
 | 
			
		||||
        msg_ok "Updated System"
 | 
			
		||||
 | 
			
		||||
        # Execute Update
 | 
			
		||||
        msg_info "Updating base 5etools"
 | 
			
		||||
        cd /opt
 | 
			
		||||
        wget -q "https://github.com/5etools-mirror-3/5etools-src/archive/refs/tags/${RELEASE}.zip"
 | 
			
		||||
        unzip -q "${RELEASE}.zip"
 | 
			
		||||
        mv "/opt/${APP}/img" "/opt/img-backup"
 | 
			
		||||
        rm -rf "/opt/${APP}"
 | 
			
		||||
        mv "${APP}-src-${RELEASE:1}" "/opt/${APP}"
 | 
			
		||||
        mv "/opt/img-backup" "/opt/${APP}/img"
 | 
			
		||||
        cd /opt/5etools
 | 
			
		||||
        $STD npm install
 | 
			
		||||
        $STD npm run build
 | 
			
		||||
        cd ~
 | 
			
		||||
        echo "${RELEASE}" >"/opt/${APP}_version.txt"
 | 
			
		||||
        chown -R www-data: "/opt/${APP}"
 | 
			
		||||
        chmod -R 755 "/opt/${APP}"
 | 
			
		||||
        msg_ok "Updated base 5etools"
 | 
			
		||||
        # Cleaning up
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf /opt/${RELEASE}.zip
 | 
			
		||||
        $STD apt-get -y autoremove
 | 
			
		||||
        $STD apt-get -y autoclean
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. Base ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    IMG_RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-img/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    if [[ "${IMG_RELEASE}" != "$(cat /opt/${APP}_IMG_version.txt)" ]] || [[ ! -f "/opt/${APP}_IMG_version.txt" ]]; then
 | 
			
		||||
        # Crawling the new version and checking whether an update is required
 | 
			
		||||
        msg_info "Updating System"
 | 
			
		||||
        apt-get update &>/dev/null
 | 
			
		||||
        apt-get -y upgrade &>/dev/null
 | 
			
		||||
        msg_ok "Updated System"
 | 
			
		||||
 | 
			
		||||
        # Execute Update
 | 
			
		||||
        msg_info "Updating 5etools images"
 | 
			
		||||
        curl -sSL "https://github.com/5etools-mirror-2/5etools-img/archive/refs/tags/${IMG_RELEASE}.zip" > "${IMG_RELEASE}.zip"
 | 
			
		||||
        unzip -q "${IMG_RELEASE}.zip"
 | 
			
		||||
        rm -rf "/opt/${APP}/img"
 | 
			
		||||
        mv "${APP}-img-${IMG_RELEASE:1}" "/opt/${APP}/img"
 | 
			
		||||
        echo "${IMG_RELEASE}" >"/opt/${APP}_IMG_version.txt"
 | 
			
		||||
        chown -R www-data: "/opt/${APP}"
 | 
			
		||||
        chmod -R 755 "/opt/${APP}"
 | 
			
		||||
 | 
			
		||||
        msg_ok "Updating 5etools images"
 | 
			
		||||
 | 
			
		||||
        # Cleaning up
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf /opt/${RELEASE}.zip
 | 
			
		||||
        rm -rf ${IMG_RELEASE}.zip
 | 
			
		||||
        $STD apt-get -y autoremove
 | 
			
		||||
        $STD apt-get -y autoclean
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} images are already at ${IMG_RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://actualbudget.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://adguard.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: MickLesk (Canbiz)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://adventurelog.app/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.ispyconnect.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://cassandra.apache.org/_/index.html
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://couchdb.apache.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 community-scripts ORG
 | 
			
		||||
# 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/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://wiki.debian.org/AptCacherNg
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://archivebox.io/
 | 
			
		||||
@@ -57,4 +57,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/admin/login${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000/admin/login${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://aria2.github.io/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.audiobookshelf.org/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										85
									
								
								ct/authentik.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								ct/authentik.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
#!/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: remz1337
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Authentik"
 | 
			
		||||
var_tags="identity-provider"
 | 
			
		||||
var_disk="15"
 | 
			
		||||
var_cpu="6"
 | 
			
		||||
var_ram="8192"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /etc/systemd/system/authentik-server.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop authentik-server
 | 
			
		||||
    systemctl stop authentik-worker
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building ${APP} website"
 | 
			
		||||
    mkdir -p /opt/authentik
 | 
			
		||||
    wget -qO authentik.tar.gz "${RELEASE}"
 | 
			
		||||
    tar -xzf authentik.tar.gz -C /opt/authentik --strip-components 1 --overwrite
 | 
			
		||||
    rm -rf authentik.tar.gz
 | 
			
		||||
    cd /opt/authentik/website
 | 
			
		||||
    npm install &>/dev/null
 | 
			
		||||
    npm run build-bundled &>/dev/null
 | 
			
		||||
    cd /opt/authentik/web
 | 
			
		||||
    npm install &>/dev/null
 | 
			
		||||
    npm run build &>/dev/null
 | 
			
		||||
    msg_ok "Built ${APP} website"
 | 
			
		||||
 | 
			
		||||
    msg_info "Installing Python Dependencies"
 | 
			
		||||
    cd /opt/authentik
 | 
			
		||||
    poetry install --only=main --no-ansi --no-interaction --no-root &>/dev/null
 | 
			
		||||
    poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt &>/dev/null
 | 
			
		||||
    pip install --no-cache-dir -r requirements.txt &>/dev/null
 | 
			
		||||
    pip install . &>/dev/null
 | 
			
		||||
    msg_ok "Installed Python Dependencies"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE} (Patience)"
 | 
			
		||||
    cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints
 | 
			
		||||
    bash /opt/authentik/lifecycle/ak migrate &>/dev/null
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start authentik-server
 | 
			
		||||
    systemctl start authentik-worker
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000/if/flow/initial-setup/${CL}"
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://autobrr.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.bazarr.media/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://0xerr0r.github.io/blocky/latest/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 community-scripts ORG
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (Canbiz)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/BookStackApp/BookStack
 | 
			
		||||
@@ -44,9 +44,9 @@ function update_script() {
 | 
			
		||||
    unzip -q /opt/v${RELEASE}.zip -d /opt
 | 
			
		||||
    mv /opt/BookStack-${RELEASE} /opt/bookstack
 | 
			
		||||
    cp /opt/bookstack-backup/.env /opt/bookstack/.env
 | 
			
		||||
    cp -r /opt/bookstack-backup/public/uploads/ /opt/bookstack/public/uploads
 | 
			
		||||
    cp -r /opt/bookstack-backup/storage/uploads/ /opt/bookstack/storage/uploads
 | 
			
		||||
    cp -r /opt/bookstack-backup/themes/ /opt/bookstack/themes
 | 
			
		||||
    cp -r /opt/bookstack-backup/public/uploads/* /opt/bookstack/public/uploads/
 | 
			
		||||
    cp -r /opt/bookstack-backup/storage/uploads/* /opt/bookstack/storage/uploads/
 | 
			
		||||
    cp -r /opt/bookstack-backup/themes/* /opt/bookstack/themes/
 | 
			
		||||
    cd /opt/bookstack
 | 
			
		||||
    COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev &>/dev/null
 | 
			
		||||
    php artisan migrate --force &>/dev/null
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.bunkerweb.io/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://caddyserver.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster) | Co-Author: remz1337
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/janeczku/calibre-web
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://casaos.io/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://changedetection.io/
 | 
			
		||||
@@ -28,28 +28,45 @@ function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -f /etc/systemd/system/changedetection.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating ${APP} LXC"
 | 
			
		||||
 | 
			
		||||
  if ! dpkg -s libjpeg-dev >/dev/null 2>&1; then
 | 
			
		||||
    msg_info "Installing Dependencies"
 | 
			
		||||
    apt-get update
 | 
			
		||||
    apt-get install -y libjpeg-dev
 | 
			
		||||
    msg_ok "Updated Dependencies"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ${APP}"
 | 
			
		||||
  pip3 install changedetection.io --upgrade &>/dev/null
 | 
			
		||||
  msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating Playwright"
 | 
			
		||||
  pip3 install playwright --upgrade &>/dev/null
 | 
			
		||||
  msg_ok "Updated Playwright"
 | 
			
		||||
 | 
			
		||||
  if [[ -f /etc/systemd/system/browserless.service ]]; then
 | 
			
		||||
    msg_info "Updating Browserless (Patience)"
 | 
			
		||||
    git -C /opt/browserless/ fetch --all &>/dev/null
 | 
			
		||||
    git -C /opt/browserless/ reset --hard origin/main &>/dev/null
 | 
			
		||||
    npm update --prefix /opt/browserless &>/dev/null
 | 
			
		||||
    /opt/browserless/node_modules/playwright-core/cli.js install --with-deps &>/dev/null
 | 
			
		||||
    # Update Chrome separately, as it has to be done with the force option. Otherwise the installation of other browsers will not be done if Chrome is already installed.
 | 
			
		||||
    /opt/browserless/node_modules/playwright-core/cli.js install --force chrome &>/dev/null
 | 
			
		||||
    /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit &>/dev/null
 | 
			
		||||
    npm run build --prefix /opt/browserless &>/dev/null
 | 
			
		||||
    npm run build:function --prefix /opt/browserless &>/dev/null
 | 
			
		||||
    npm prune production --prefix /opt/browserless &>/dev/null
 | 
			
		||||
    systemctl restart browserless
 | 
			
		||||
    msg_ok "Updated Browserless"
 | 
			
		||||
  else
 | 
			
		||||
    msg_error "No Browserless Installation Found!"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  systemctl restart changedetection
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
@@ -62,4 +79,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://getchannels.com/dvr-server/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 community-scripts ORG
 | 
			
		||||
# 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://checkmk.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.cloudflare.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck | Co-Author: havardthom
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://cockpit-project.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.commafeed.com/#/welcome
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Co-Author: MickLesk
 | 
			
		||||
# License: MIT
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://cronicle.net/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://daemonsync.me/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://dashy.to/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.debian.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.phoscon.de/en/conbee2/software#deconz
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.deluge-torrent.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.docker.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://dockge.kuma.pet/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://emby.media/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.emqx.com/en
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: MickLesk (Canbiz)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://ersatztv.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://esphome.io/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: MickLesk (Canbiz)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://evcc.io/en/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster) | Co-Author: Scorpoon
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/revenz/Fenrus
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://fhem.de/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										85
									
								
								ct/firefly.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								ct/firefly.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
#!/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: quantumryuu
 | 
			
		||||
# 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"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
var_disk="2"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
header_info
 | 
			
		||||
check_container_storage
 | 
			
		||||
check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/firefly ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/firefly-iii/firefly-iii/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 Apache2"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
    msg_ok "Stopped Apache2"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cp /opt/firefly/.env /opt/.env
 | 
			
		||||
    cp -r /opt/firefly/storage /opt/storage
 | 
			
		||||
    rm -rf /opt/firefly/*
 | 
			
		||||
    cd /opt
 | 
			
		||||
    wget -q "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz"
 | 
			
		||||
    tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly --exclude='storage'
 | 
			
		||||
    cd /opt/firefly 
 | 
			
		||||
    composer install --no-dev --no-interaction &>/dev/null
 | 
			
		||||
    php artisan migrate --seed --force &>/dev/null
 | 
			
		||||
    php artisan firefly:decrypt-all &>/dev/null
 | 
			
		||||
    php artisan cache:clear &>/dev/null
 | 
			
		||||
    php artisan view:clear &>/dev/null
 | 
			
		||||
    php artisan firefly:upgrade-database &>/dev/null
 | 
			
		||||
    php artisan firefly:laravel-passport-keys &>/dev/null
 | 
			
		||||
    chown -R www-data:www-data /opt/firefly
 | 
			
		||||
    chmod -R 775 /opt/firefly/storage
 | 
			
		||||
 | 
			
		||||
    echo "${RELEASE}" >"/opt/${APP}_version.txt"
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Apache2"
 | 
			
		||||
    systemctl start apache2
 | 
			
		||||
    msg_ok "Started Apache2"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf /opt/FireflyIII-v${RELEASE}.tar.gz
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  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}${CL}"
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster) | Co-Author: remz1337
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/FlareSolverr/FlareSolverr
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://flowiseai.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://forgejo.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Authors: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://frigate.video/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster) | Co-Author: Rogue-King
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://about.gitea.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 community-scripts ORG
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: kristocopani
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/glanceapp/glance
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										52
									
								
								ct/glpi.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								ct/glpi.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: Nícolas Pastorello (opastorello)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="GLPI"
 | 
			
		||||
var_tags="asset-management;foss"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="10"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/glpi ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/glpi-project/glpi/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_error "Ther is currently no automatic update function for ${APP}."
 | 
			
		||||
  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}:80${CL}"
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/AlexxIT/go2rtc
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/Forceu/Gokapi
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://gotify.net/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://grafana.com/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										78
									
								
								ct/grist.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								ct/grist.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
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="1"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/grist ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/gristlabs/grist-core/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} Service"
 | 
			
		||||
    systemctl stop grist
 | 
			
		||||
    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
 | 
			
		||||
    cd grist
 | 
			
		||||
    yarn install >/dev/null 2>&1
 | 
			
		||||
    yarn run build:prod >/dev/null 2>&1
 | 
			
		||||
    yarn run install:python >/dev/null 2>&1
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP} Service"
 | 
			
		||||
    systemctl start grist
 | 
			
		||||
    msg_ok "Started ${APP} Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf /opt/v$RELEASE.zip
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully!\n"
 | 
			
		||||
  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}Grist: http://${IP}:8484${CL}"
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://grocy.info/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/juanfont/headscale
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://heimdall.site/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.hivemq.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: MickLesk (Canbiz) & vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://hoarder.app/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://homarr.dev/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.home-assistant.io/
 | 
			
		||||
@@ -51,7 +51,9 @@ function update_script() {
 | 
			
		||||
      echo -e "${GN}Updating to Stable Version${CL}"
 | 
			
		||||
      BR=""
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ "$PY" == "python3.11" ]]; then echo -e "⚠️  Home Assistant will soon require Python 3.12."; fi
 | 
			
		||||
    if [[ "$PY" =~ ^python3\.(11|12)\.[0-9]+$ ]]; then
 | 
			
		||||
    echo -e "⚠️  Home Assistant will soon require Python 3.13.x";
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    msg_info "Stopping Home Assistant"
 | 
			
		||||
    systemctl stop homeassistant
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.home-assistant.io/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck | Co-Author: MickLesk (Canbiz)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://homebox.software/en/
 | 
			
		||||
@@ -40,8 +40,10 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    rm -rf homebox_bak
 | 
			
		||||
    rm -rf /tmp/homebox.tar.gz
 | 
			
		||||
    mv homebox homebox_bak
 | 
			
		||||
    wget -qO- https://github.com/sysadminsmedia/homebox/releases/download/${RELEASE}/homebox_Linux_x86_64.tar.gz | tar -xzf - -C /opt
 | 
			
		||||
    wget -qO /tmp/homebox.tar.gz https://github.com/sysadminsmedia/homebox/releases/download/${RELEASE}/homebox_Linux_x86_64.tar.gz
 | 
			
		||||
    tar -xzf /tmp/homebox.tar.gz -C /opt
 | 
			
		||||
    chmod +x /opt/homebox
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Homebox"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://homebridge.io/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://gethomepage.dev/
 | 
			
		||||
@@ -50,14 +50,16 @@ function update_script() {
 | 
			
		||||
    cp -r homepage-${RELEASE}/* /opt/homepage/
 | 
			
		||||
    rm -rf homepage-${RELEASE}
 | 
			
		||||
    cd /opt/homepage
 | 
			
		||||
    npx update-browserslist-db@latest
 | 
			
		||||
    pnpm install
 | 
			
		||||
    pnpm build
 | 
			
		||||
    npx --yes update-browserslist-db@latest >/dev/null 2>&1
 | 
			
		||||
    pnpm install >/dev/null 2>&1
 | 
			
		||||
    export NEXT_PUBLIC_VERSION="v$RELEASE"
 | 
			
		||||
    export NEXT_PUBLIC_REVISION="source"
 | 
			
		||||
    pnpm build >/dev/null 2>&1
 | 
			
		||||
    systemctl start homepage
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Homepage to v${RELEASE}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
@@ -69,4 +71,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/bastienwirtz/homer
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,13 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.hyperhdr.eu/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="HyperHDR"
 | 
			
		||||
var_tags="ambient lightning"
 | 
			
		||||
var_tags="ambient-lightning"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://hyperion-project.org/forum/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.influxdata.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 community-scripts ORG
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: kristocopani
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.inspircd.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.iobroker.net/#en/intro
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.iventoy.com/en/index.html
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/Jackett/Jackett
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://jellyfin.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://docs.jellyseerr.dev/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										50
									
								
								ct/jenkins.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								ct/jenkins.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
			
		||||
#!/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: kristocopani
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.jenkins.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Jenkins"
 | 
			
		||||
var_tags="automation"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /var/lib/jenkins ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating $APP LXC"
 | 
			
		||||
    apt-get update &>/dev/null
 | 
			
		||||
    apt-get -y upgrade &>/dev/null
 | 
			
		||||
    msg_ok "Updated $APP LXC"
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.kavitareader.com/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.keycloak.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 community-scripts ORG
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (Canbiz)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.kimai.org/
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 community-scripts ORG
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: madelyn (DysfunctionalProgramming)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://komga.org/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										73
									
								
								ct/komodo.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								ct/komodo.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://komo.do
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Komodo"
 | 
			
		||||
var_tags="docker"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="10"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/komodo ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    COMPOSE_FILE=""
 | 
			
		||||
    for file in *.compose.yaml; do
 | 
			
		||||
        if [[ "$file" != "compose.env" ]]; then
 | 
			
		||||
            COMPOSE_FILE="$file"
 | 
			
		||||
            break
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    if [[ -z "$COMPOSE_FILE" ]]; then
 | 
			
		||||
        msg_error "No valid compose file found in /opt/komodo!"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    BACKUP_FILE="${COMPOSE_FILE}.bak_$(date +%Y%m%d_%H%M%S)"
 | 
			
		||||
    mv "$COMPOSE_FILE" "$BACKUP_FILE" || {
 | 
			
		||||
        msg_error "Failed to create backup of $COMPOSE_FILE!"
 | 
			
		||||
        exit 1
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    GITHUB_URL="https://raw.githubusercontent.com/mbecker20/komodo/main/compose/$COMPOSE_FILE"
 | 
			
		||||
    wget -q -O "$COMPOSE_FILE" "$GITHUB_URL" || {
 | 
			
		||||
        msg_error "Failed to download $COMPOSE_FILE from GitHub!"
 | 
			
		||||
        mv "$BACKUP_FILE" "$COMPOSE_FILE" 
 | 
			
		||||
        exit 1
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    docker compose -p komodo -f "/opt/komodo/$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d &>/dev/null 
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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}:9120${CL}"
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2024 tteck
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster) | Co-Author: ulmentflam
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/ipfs/kubo
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user