mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			184 Commits
		
	
	
		
			2025-05-01
			...
			2025-05-14
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					369265a6d5 | ||
| 
						 | 
					56f8306960 | ||
| 
						 | 
					3daf3c3325 | ||
| 
						 | 
					c36000a6aa | ||
| 
						 | 
					12265b92e7 | ||
| 
						 | 
					4e31445038 | ||
| 
						 | 
					c30f96912d | ||
| 
						 | 
					e3860c065e | ||
| 
						 | 
					110b64df85 | ||
| 
						 | 
					e17f7aa6f1 | ||
| 
						 | 
					b4d98b1dd2 | ||
| 
						 | 
					e24636133d | ||
| 
						 | 
					7d0a964918 | ||
| 
						 | 
					38c7e747bc | ||
| 
						 | 
					180e003978 | ||
| 
						 | 
					4762ea8fae | ||
| 
						 | 
					4ec3af8e45 | ||
| 
						 | 
					b816ca6788 | ||
| 
						 | 
					d703a8abb2 | ||
| 
						 | 
					4a1f87727b | ||
| 
						 | 
					16c0d09d6b | ||
| 
						 | 
					7740ab68f7 | ||
| 
						 | 
					cd61025295 | ||
| 
						 | 
					2695e2de1a | ||
| 
						 | 
					7aea03034a | ||
| 
						 | 
					e9960347bf | ||
| 
						 | 
					3808d4d0b8 | ||
| 
						 | 
					14c5bf5f75 | ||
| 
						 | 
					fcc16ae8e1 | ||
| 
						 | 
					aaf8bdb893 | ||
| 
						 | 
					db81851db4 | ||
| 
						 | 
					a2d92155a5 | ||
| 
						 | 
					0bd18cc91b | ||
| 
						 | 
					1e7981dbb7 | ||
| 
						 | 
					704073cd69 | ||
| 
						 | 
					22e1518951 | ||
| 
						 | 
					57bd730233 | ||
| 
						 | 
					cf1b13e5fb | ||
| 
						 | 
					9a3b2c076d | ||
| 
						 | 
					3981cc90c4 | ||
| 
						 | 
					592d9d03aa | ||
| 
						 | 
					59b00890f9 | ||
| 
						 | 
					7ee57e7416 | ||
| 
						 | 
					82a30df0c9 | ||
| 
						 | 
					10e1d7e741 | ||
| 
						 | 
					f85cddadcf | ||
| 
						 | 
					1700291af7 | ||
| 
						 | 
					e126e48439 | ||
| 
						 | 
					b3bda56498 | ||
| 
						 | 
					e59f868966 | ||
| 
						 | 
					a9b53afcc5 | ||
| 
						 | 
					38cf296a4c | ||
| 
						 | 
					35c0d269ac | ||
| 
						 | 
					d7211e856e | ||
| 
						 | 
					dfbb1a8035 | ||
| 
						 | 
					61b09e926a | ||
| 
						 | 
					9140fd52ac | ||
| 
						 | 
					4a3ee4db67 | ||
| 
						 | 
					b333d8c3f9 | ||
| 
						 | 
					245b35d01e | ||
| 
						 | 
					37d20ba0dd | ||
| 
						 | 
					b5062c51af | ||
| 
						 | 
					1ea830c955 | ||
| 
						 | 
					be31ecf432 | ||
| 
						 | 
					c586dfe87f | ||
| 
						 | 
					7f65be34ff | ||
| 
						 | 
					c158dbb3ea | ||
| 
						 | 
					95acf8c018 | ||
| 
						 | 
					6c5aa6677a | ||
| 
						 | 
					43ff379ed4 | ||
| 
						 | 
					2c2849179a | ||
| 
						 | 
					d116505ff2 | ||
| 
						 | 
					42535e14ab | ||
| 
						 | 
					990ce16a7d | ||
| 
						 | 
					af1cf0bc71 | ||
| 
						 | 
					e166115745 | ||
| 
						 | 
					bdef92cc71 | ||
| 
						 | 
					1e59c934ec | ||
| 
						 | 
					456b00882d | ||
| 
						 | 
					9b8a30c84f | ||
| 
						 | 
					3b90e3fe15 | ||
| 
						 | 
					5e3a5bb24c | ||
| 
						 | 
					7413a03009 | ||
| 
						 | 
					bb1c9d73c4 | ||
| 
						 | 
					3b5a901832 | ||
| 
						 | 
					a62a4876ec | ||
| 
						 | 
					9d21ceacc3 | ||
| 
						 | 
					c604aeb064 | ||
| 
						 | 
					9b9ed2f6e1 | ||
| 
						 | 
					1ddc74d2b5 | ||
| 
						 | 
					ee9f6dd818 | ||
| 
						 | 
					a1754dff4e | ||
| 
						 | 
					4827a17ba3 | ||
| 
						 | 
					b5ed7b9f4e | ||
| 
						 | 
					ab9760194d | ||
| 
						 | 
					abb5b6d5ac | ||
| 
						 | 
					4656fe21f9 | ||
| 
						 | 
					93e503eb87 | ||
| 
						 | 
					6ab80dc5e3 | ||
| 
						 | 
					ceaff9006a | ||
| 
						 | 
					c749fe6fb0 | ||
| 
						 | 
					402586756f | ||
| 
						 | 
					19800da808 | ||
| 
						 | 
					d62da0c982 | ||
| 
						 | 
					41df1d5a76 | ||
| 
						 | 
					bcdf8f15e7 | ||
| 
						 | 
					326cbc3bec | ||
| 
						 | 
					607d966322 | ||
| 
						 | 
					69298090ce | ||
| 
						 | 
					9c7d50fdff | ||
| 
						 | 
					fabbe8fe59 | ||
| 
						 | 
					6abb55ba86 | ||
| 
						 | 
					9cddbbd986 | ||
| 
						 | 
					31c7c9301c | ||
| 
						 | 
					c9aad3a54d | ||
| 
						 | 
					ebc17e120e | ||
| 
						 | 
					1ebb1782fa | ||
| 
						 | 
					cce3ca1996 | ||
| 
						 | 
					eb6018ac01 | ||
| 
						 | 
					3b54371d5c | ||
| 
						 | 
					67cd29e9f2 | ||
| 
						 | 
					0f4c14ff41 | ||
| 
						 | 
					5d9795139e | ||
| 
						 | 
					0bbbd5de10 | ||
| 
						 | 
					8963d8dec9 | ||
| 
						 | 
					eeb7766f36 | ||
| 
						 | 
					e7d4630fa5 | ||
| 
						 | 
					0f19440864 | ||
| 
						 | 
					d0a3510b96 | ||
| 
						 | 
					0946b5220f | ||
| 
						 | 
					d5a64ee41c | ||
| 
						 | 
					067d60978c | ||
| 
						 | 
					4b89174542 | ||
| 
						 | 
					0a2a1b4692 | ||
| 
						 | 
					4d99838209 | ||
| 
						 | 
					27ac2633c7 | ||
| 
						 | 
					1bff7fe861 | ||
| 
						 | 
					a9c36a9417 | ||
| 
						 | 
					8e26cd4d9d | ||
| 
						 | 
					237c920893 | ||
| 
						 | 
					354d95eb2d | ||
| 
						 | 
					e7f0f09dee | ||
| 
						 | 
					093a1aacf6 | ||
| 
						 | 
					afbac8e2f0 | ||
| 
						 | 
					17c3163a2a | ||
| 
						 | 
					f0a96b9a7b | ||
| 
						 | 
					e5766da56d | ||
| 
						 | 
					0239abb126 | ||
| 
						 | 
					06960d3023 | ||
| 
						 | 
					fd813b8936 | ||
| 
						 | 
					fa9c39f212 | ||
| 
						 | 
					536c3d113d | ||
| 
						 | 
					23281bdc0c | ||
| 
						 | 
					cc5d8e162b | ||
| 
						 | 
					5c43513295 | ||
| 
						 | 
					6c648f4b89 | ||
| 
						 | 
					9f88b1b1fb | ||
| 
						 | 
					0ea0f56e1b | ||
| 
						 | 
					bff0ab3d3d | ||
| 
						 | 
					1f56a8cc6d | ||
| 
						 | 
					eaebc184b1 | ||
| 
						 | 
					b9594538ca | ||
| 
						 | 
					8e56da691a | ||
| 
						 | 
					c9f739ae3b | ||
| 
						 | 
					2ba1aaa383 | ||
| 
						 | 
					4510e7b4d8 | ||
| 
						 | 
					9f1bf85b42 | ||
| 
						 | 
					a2a528c294 | ||
| 
						 | 
					15ec09d71c | ||
| 
						 | 
					57a18aec76 | ||
| 
						 | 
					8fa1743dd6 | ||
| 
						 | 
					78bb1ee195 | ||
| 
						 | 
					130031e4f9 | ||
| 
						 | 
					ea9f91036e | ||
| 
						 | 
					783e7518f8 | ||
| 
						 | 
					64595b08ce | ||
| 
						 | 
					43d67cff58 | ||
| 
						 | 
					4ae2eb2bfa | ||
| 
						 | 
					6220e272af | ||
| 
						 | 
					dc36ba409c | ||
| 
						 | 
					15deb9c658 | ||
| 
						 | 
					07d87334d5 | ||
| 
						 | 
					39300b2b6e | ||
| 
						 | 
					3b2aa30d48 | 
							
								
								
									
										19
									
								
								.github/workflows/auto-update-app-headers.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/auto-update-app-headers.yml
									
									
									
									
										vendored
									
									
								
							@@ -5,11 +5,12 @@ on:
 | 
				
			|||||||
    branches:
 | 
					    branches:
 | 
				
			||||||
      - main
 | 
					      - main
 | 
				
			||||||
    paths:
 | 
					    paths:
 | 
				
			||||||
      - 'ct/**.sh'
 | 
					      - "ct/**.sh"
 | 
				
			||||||
  workflow_dispatch:
 | 
					  workflow_dispatch:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  update-app-files:
 | 
					  update-app-files:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: runner-cluster-htl-set
 | 
					    runs-on: runner-cluster-htl-set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    permissions:
 | 
					    permissions:
 | 
				
			||||||
@@ -24,6 +25,13 @@ jobs:
 | 
				
			|||||||
          app-id: ${{ vars.APP_ID }}
 | 
					          app-id: ${{ vars.APP_ID }}
 | 
				
			||||||
          private-key: ${{ secrets.APP_PRIVATE_KEY }}
 | 
					          private-key: ${{ secrets.APP_PRIVATE_KEY }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Generate a token for PR approval and merge
 | 
				
			||||||
 | 
					        id: generate-token-merge
 | 
				
			||||||
 | 
					        uses: actions/create-github-app-token@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
 | 
				
			||||||
 | 
					          private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # Step 1: Checkout repository
 | 
					      # Step 1: Checkout repository
 | 
				
			||||||
      - name: Checkout repository
 | 
					      - name: Checkout repository
 | 
				
			||||||
        uses: actions/checkout@v2
 | 
					        uses: actions/checkout@v2
 | 
				
			||||||
@@ -90,14 +98,17 @@ jobs:
 | 
				
			|||||||
            gh pr review $PR_NUMBER --approve
 | 
					            gh pr review $PR_NUMBER --approve
 | 
				
			||||||
          fi
 | 
					          fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Re-approve pull request after update
 | 
					      - name: Approve pull request and merge
 | 
				
			||||||
        if: env.changed == 'true'
 | 
					        if: env.changed == 'true'
 | 
				
			||||||
        env:
 | 
					        env:
 | 
				
			||||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
					          GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
          PR_NUMBER=$(gh pr list --head "pr-update-app-files" --json number --jq '.[].number')
 | 
					          git config --global user.name "github-actions-automege[bot]"
 | 
				
			||||||
 | 
					          git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
 | 
				
			||||||
 | 
					          PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
 | 
				
			||||||
          if [ -n "$PR_NUMBER" ]; then
 | 
					          if [ -n "$PR_NUMBER" ]; then
 | 
				
			||||||
            gh pr review $PR_NUMBER --approve
 | 
					            gh pr review $PR_NUMBER --approve
 | 
				
			||||||
 | 
					            gh pr merge $PR_NUMBER --squash --admin
 | 
				
			||||||
          fi
 | 
					          fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # Step 8: Output success message when no changes
 | 
					      # Step 8: Output success message when no changes
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							@@ -7,6 +7,7 @@ on:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  autolabeler:
 | 
					  autolabeler:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: runner-cluster-htl-set
 | 
					    runs-on: runner-cluster-htl-set
 | 
				
			||||||
    permissions:
 | 
					    permissions:
 | 
				
			||||||
      pull-requests: write
 | 
					      pull-requests: write
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										15
									
								
								.github/workflows/changelog-pr.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflows/changelog-pr.yml
									
									
									
									
										vendored
									
									
								
							@@ -7,6 +7,7 @@ on:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  update-changelog-pull-request:
 | 
					  update-changelog-pull-request:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: runner-cluster-htl-set
 | 
					    runs-on: runner-cluster-htl-set
 | 
				
			||||||
    env:
 | 
					    env:
 | 
				
			||||||
      CONFIG_PATH: .github/changelog-pr-config.json
 | 
					      CONFIG_PATH: .github/changelog-pr-config.json
 | 
				
			||||||
@@ -23,6 +24,13 @@ jobs:
 | 
				
			|||||||
          app-id: ${{ vars.APP_ID }}
 | 
					          app-id: ${{ vars.APP_ID }}
 | 
				
			||||||
          private-key: ${{ secrets.APP_PRIVATE_KEY }}
 | 
					          private-key: ${{ secrets.APP_PRIVATE_KEY }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Generate a token for PR approval and merge
 | 
				
			||||||
 | 
					        id: generate-token-merge
 | 
				
			||||||
 | 
					        uses: actions/create-github-app-token@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
 | 
				
			||||||
 | 
					          private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Checkout code
 | 
					      - name: Checkout code
 | 
				
			||||||
        uses: actions/checkout@v4
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
@@ -263,12 +271,15 @@ jobs:
 | 
				
			|||||||
            gh pr review $PR_NUMBER --approve
 | 
					            gh pr review $PR_NUMBER --approve
 | 
				
			||||||
          fi
 | 
					          fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Re-approve pull request after update
 | 
					      - name: Approve pull request and merge
 | 
				
			||||||
        if: env.changed == 'true'
 | 
					        if: env.changed == 'true'
 | 
				
			||||||
        env:
 | 
					        env:
 | 
				
			||||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
					          GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
 | 
					          git config --global user.name "github-actions-automege[bot]"
 | 
				
			||||||
 | 
					          git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
 | 
				
			||||||
          PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
 | 
					          PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
 | 
				
			||||||
          if [ -n "$PR_NUMBER" ]; then
 | 
					          if [ -n "$PR_NUMBER" ]; then
 | 
				
			||||||
            gh pr review $PR_NUMBER --approve
 | 
					            gh pr review $PR_NUMBER --approve
 | 
				
			||||||
 | 
					            gh pr merge $PR_NUMBER --squash --admin
 | 
				
			||||||
          fi
 | 
					          fi
 | 
				
			||||||
							
								
								
									
										1
									
								
								.github/workflows/close-discussion.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/close-discussion.yml
									
									
									
									
										vendored
									
									
								
							@@ -11,6 +11,7 @@ permissions:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  close-discussion:
 | 
					  close-discussion:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: runner-cluster-htl-set
 | 
					    runs-on: runner-cluster-htl-set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								.github/workflows/close-ttek-issues.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/close-ttek-issues.yaml
									
									
									
									
										vendored
									
									
								
							@@ -5,6 +5,7 @@ on:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  close_tteck_issues:
 | 
					  close_tteck_issues:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Auto-close if tteck script detected
 | 
					      - name: Auto-close if tteck script detected
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								.github/workflows/close_issue_in_dev.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/close_issue_in_dev.yaml
									
									
									
									
										vendored
									
									
								
							@@ -5,7 +5,7 @@ on:
 | 
				
			|||||||
      - closed
 | 
					      - closed
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  close_issue:
 | 
					  close_issue:
 | 
				
			||||||
    if: github.event.pull_request.merged == true
 | 
					    if: github.event.pull_request.merged == true && github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								.github/workflows/crawl-versions.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/crawl-versions.yaml
									
									
									
									
										vendored
									
									
								
							@@ -12,6 +12,7 @@ permissions:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  crawl-versions:
 | 
					  crawl-versions:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: runner-cluster-htl-set
 | 
					    runs-on: runner-cluster-htl-set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
@@ -103,6 +104,17 @@ jobs:
 | 
				
			|||||||
            gh pr review $PR_NUMBER --approve
 | 
					            gh pr review $PR_NUMBER --approve
 | 
				
			||||||
          fi
 | 
					          fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Approve pull request and merge
 | 
				
			||||||
 | 
					        if: env.changed == 'true'
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          GH_TOKEN: ${{ secrets.PAT_AUTOMERGE }}
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          PR_NUMBER=$(gh pr list --head "update_versions" --json number --jq '.[].number')
 | 
				
			||||||
 | 
					          if [ -n "$PR_NUMBER" ]; then
 | 
				
			||||||
 | 
					            gh pr review $PR_NUMBER --approve
 | 
				
			||||||
 | 
					            gh pr merge $PR_NUMBER --squash --admin
 | 
				
			||||||
 | 
					          fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Re-approve pull request after update
 | 
					      - name: Re-approve pull request after update
 | 
				
			||||||
        if: env.changed == 'true'
 | 
					        if: env.changed == 'true'
 | 
				
			||||||
        env:
 | 
					        env:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,6 +11,7 @@ on:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  build:
 | 
					  build:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: ubuntu-latest #To ensure it always builds we use the github runner with all the right tooling
 | 
					    runs-on: ubuntu-latest #To ensure it always builds we use the github runner with all the right tooling
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								.github/workflows/delete-json-branch.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/delete-json-branch.yml
									
									
									
									
										vendored
									
									
								
							@@ -9,6 +9,7 @@ on:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  delete_branch:
 | 
					  delete_branch:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: runner-cluster-htl-set
 | 
					    runs-on: runner-cluster-htl-set
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout the code
 | 
					      - name: Checkout the code
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								.github/workflows/frontend-cicd.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/frontend-cicd.yml
									
									
									
									
										vendored
									
									
								
							@@ -25,6 +25,7 @@ concurrency:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  build:
 | 
					  build:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: runner-cluster-htl-set
 | 
					    runs-on: runner-cluster-htl-set
 | 
				
			||||||
    defaults:
 | 
					    defaults:
 | 
				
			||||||
      run:
 | 
					      run:
 | 
				
			||||||
@@ -63,7 +64,7 @@ jobs:
 | 
				
			|||||||
  deploy:
 | 
					  deploy:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    needs: build
 | 
					    needs: build
 | 
				
			||||||
    if: github.ref == 'refs/heads/main'
 | 
					    if: github.ref == 'refs/heads/main' && github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    permissions:
 | 
					    permissions:
 | 
				
			||||||
      pages: write
 | 
					      pages: write
 | 
				
			||||||
      id-token: write
 | 
					      id-token: write
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								.github/workflows/github-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/github-release.yml
									
									
									
									
										vendored
									
									
								
							@@ -7,6 +7,7 @@ on:
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  create-daily-release:
 | 
					  create-daily-release:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: runner-cluster-htl-set
 | 
					    runs-on: runner-cluster-htl-set
 | 
				
			||||||
    permissions:
 | 
					    permissions:
 | 
				
			||||||
      contents: write
 | 
					      contents: write
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								.github/workflows/script-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/script-test.yml
									
									
									
									
										vendored
									
									
								
							@@ -11,6 +11,7 @@ on:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  run-install-script:
 | 
					  run-install-script:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: pvenode
 | 
					    runs-on: pvenode
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout PR branch
 | 
					      - name: Checkout PR branch
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								.github/workflows/script_format.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/script_format.yml
									
									
									
									
										vendored
									
									
								
							@@ -11,6 +11,7 @@ on:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  run-install-script:
 | 
					  run-install-script:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: pvenode
 | 
					    runs-on: pvenode
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout PR branch (supports forks)
 | 
					      - name: Checkout PR branch (supports forks)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,8 +72,7 @@ network_check() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
update_os() {
 | 
					update_os() {
 | 
				
			||||||
  msg_info "Updating Container OS"
 | 
					  msg_info "Updating Container OS"
 | 
				
			||||||
  apk update
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
  apk upgrade
 | 
					 | 
				
			||||||
  msg_ok "Updated Container OS"
 | 
					  msg_ok "Updated Container OS"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										23
									
								
								.github/workflows/update-json-date.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								.github/workflows/update-json-date.yml
									
									
									
									
										vendored
									
									
								
							@@ -5,11 +5,12 @@ on:
 | 
				
			|||||||
    branches:
 | 
					    branches:
 | 
				
			||||||
      - main
 | 
					      - main
 | 
				
			||||||
    paths:
 | 
					    paths:
 | 
				
			||||||
      - 'frontend/public/json/**.json'
 | 
					      - "frontend/public/json/**.json"
 | 
				
			||||||
  workflow_dispatch:
 | 
					  workflow_dispatch:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  update-app-files:
 | 
					  update-app-files:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    runs-on: runner-cluster-htl-set
 | 
					    runs-on: runner-cluster-htl-set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    permissions:
 | 
					    permissions:
 | 
				
			||||||
@@ -24,6 +25,13 @@ jobs:
 | 
				
			|||||||
          app-id: ${{ vars.APP_ID }}
 | 
					          app-id: ${{ vars.APP_ID }}
 | 
				
			||||||
          private-key: ${{ secrets.APP_PRIVATE_KEY }}
 | 
					          private-key: ${{ secrets.APP_PRIVATE_KEY }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Generate a token for PR approval and merge
 | 
				
			||||||
 | 
					        id: generate-token-merge
 | 
				
			||||||
 | 
					        uses: actions/create-github-app-token@v1
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
 | 
				
			||||||
 | 
					          private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Generate dynamic branch name
 | 
					      - name: Generate dynamic branch name
 | 
				
			||||||
        id: timestamp
 | 
					        id: timestamp
 | 
				
			||||||
        run: echo "BRANCH_NAME=pr-update-json-$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
 | 
					        run: echo "BRANCH_NAME=pr-update-json-$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
 | 
				
			||||||
@@ -126,6 +134,19 @@ jobs:
 | 
				
			|||||||
            gh pr review $PR_NUMBER --approve
 | 
					            gh pr review $PR_NUMBER --approve
 | 
				
			||||||
          fi
 | 
					          fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Approve pull request and merge
 | 
				
			||||||
 | 
					        if: env.changed == 'true'
 | 
				
			||||||
 | 
					        env:
 | 
				
			||||||
 | 
					          GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          git config --global user.name "github-actions-automege[bot]"
 | 
				
			||||||
 | 
					          git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
 | 
				
			||||||
 | 
					          PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
 | 
				
			||||||
 | 
					          if [ -n "$PR_NUMBER" ]; then
 | 
				
			||||||
 | 
					            gh pr review $PR_NUMBER --approve
 | 
				
			||||||
 | 
					            gh pr merge $PR_NUMBER --squash --admin
 | 
				
			||||||
 | 
					          fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: No changes detected
 | 
					      - name: No changes detected
 | 
				
			||||||
        if: env.changed == 'false'
 | 
					        if: env.changed == 'false'
 | 
				
			||||||
        run: echo "No changes to commit. Workflow completed successfully."
 | 
					        run: echo "No changes to commit. Workflow completed successfully."
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								.github/workflows/validate-filenames.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/validate-filenames.yml
									
									
									
									
										vendored
									
									
								
							@@ -9,6 +9,7 @@ on:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  check-files:
 | 
					  check-files:
 | 
				
			||||||
 | 
					    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
				
			||||||
    name: Check changed files
 | 
					    name: Check changed files
 | 
				
			||||||
    runs-on: runner-cluster-htl-set
 | 
					    runs-on: runner-cluster-htl-set
 | 
				
			||||||
    permissions:
 | 
					    permissions:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										258
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										258
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -14,6 +14,264 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
 | 
				
			|||||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
 | 
					All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - odoo ([#4477](https://github.com/community-scripts/ProxmoxVE/pull/4477))
 | 
				
			||||||
 | 
					- asterisk ([#4468](https://github.com/community-scripts/ProxmoxVE/pull/4468))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - fix: fetch_release_and_deploy function [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4478](https://github.com/community-scripts/ProxmoxVE/pull/4478))
 | 
				
			||||||
 | 
					- Website: re-add documenso & some little bugfixes [@MickLesk](https://github.com/MickLesk) ([#4456](https://github.com/community-scripts/ProxmoxVE/pull/4456))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Add make installation dependency to Actual Budget script [@maciejmatczak](https://github.com/maciejmatczak) ([#4485](https://github.com/community-scripts/ProxmoxVE/pull/4485))
 | 
				
			||||||
 | 
					    - Bookstack: fix copy of themes/uploads/storage [@MickLesk](https://github.com/MickLesk) ([#4457](https://github.com/community-scripts/ProxmoxVE/pull/4457))
 | 
				
			||||||
 | 
					    - Alpine-Rclone: Fix location of passwords file [@tremor021](https://github.com/tremor021) ([#4465](https://github.com/community-scripts/ProxmoxVE/pull/4465))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - monitor-all: improvements - tag based filtering [@grizmin](https://github.com/grizmin) ([#4437](https://github.com/community-scripts/ProxmoxVE/pull/4437))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🧰 Maintenance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 📂 Github
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Add Github app for auto PR merge [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4461](https://github.com/community-scripts/ProxmoxVE/pull/4461))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - gatus ([#4443](https://github.com/community-scripts/ProxmoxVE/pull/4443))
 | 
				
			||||||
 | 
					- alpine-gatus ([#4442](https://github.com/community-scripts/ProxmoxVE/pull/4442))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - update some improvements from dev (tools.func) [@MickLesk](https://github.com/MickLesk) ([#4430](https://github.com/community-scripts/ProxmoxVE/pull/4430))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - openhab: use zulu17-jdk [@moodyblue](https://github.com/moodyblue) ([#4438](https://github.com/community-scripts/ProxmoxVE/pull/4438))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - openhab. correct some typos [@moodyblue](https://github.com/moodyblue) ([#4448](https://github.com/community-scripts/ProxmoxVE/pull/4448))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🧰 Maintenance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 💾 Core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - fix: improve bridge detection in all network interface configuration files [@filippolauria](https://github.com/filippolauria) ([#4413](https://github.com/community-scripts/ProxmoxVE/pull/4413))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🌐 Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 📝 Script Information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Jellyfin Media Server: Update configuration path [@tremor021](https://github.com/tremor021) ([#4434](https://github.com/community-scripts/ProxmoxVE/pull/4434))
 | 
				
			||||||
 | 
					    - Pingvin Share: Added explanation on how to add/edit environment variables [@tremor021](https://github.com/tremor021) ([#4432](https://github.com/community-scripts/ProxmoxVE/pull/4432))
 | 
				
			||||||
 | 
					    - pingvin.json: fix typo [@warmbo](https://github.com/warmbo) ([#4426](https://github.com/community-scripts/ProxmoxVE/pull/4426))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Alpine-Traefik [@MickLesk](https://github.com/MickLesk) ([#4412](https://github.com/community-scripts/ProxmoxVE/pull/4412))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Alpine: Use onliner for updates [@tremor021](https://github.com/tremor021) ([#4414](https://github.com/community-scripts/ProxmoxVE/pull/4414))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - homarr: fetch versions dynamically from source repo [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4409](https://github.com/community-scripts/ProxmoxVE/pull/4409))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Feature: LXC-Delete (pve helper): add "all items" [@MickLesk](https://github.com/MickLesk) ([#4296](https://github.com/community-scripts/ProxmoxVE/pull/4296))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🧰 Maintenance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 💾 Core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Config file Function in build.func [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4411](https://github.com/community-scripts/ProxmoxVE/pull/4411))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🌐 Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 📝 Script Information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Navidrome - Fix config path (use /etc/ instead of /var/lib) [@quake1508](https://github.com/quake1508) ([#4406](https://github.com/community-scripts/ProxmoxVE/pull/4406))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Zammad: Enable ElasticSearch service [@tremor021](https://github.com/tremor021) ([#4391](https://github.com/community-scripts/ProxmoxVE/pull/4391))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - (fix) Documenso: fix build failures [@vhsdream](https://github.com/vhsdream) ([#4382](https://github.com/community-scripts/ProxmoxVE/pull/4382))
 | 
				
			||||||
 | 
					    - Jellyseerr: better handling of node and pnpm [@MickLesk](https://github.com/MickLesk) ([#4365](https://github.com/community-scripts/ProxmoxVE/pull/4365))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-09
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Authentik: change install to UV & increase resources to 10GB RAM [@MickLesk](https://github.com/MickLesk) ([#4364](https://github.com/community-scripts/ProxmoxVE/pull/4364))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - HomeAssistant-Core: update script for 2025.5+ [@MickLesk](https://github.com/MickLesk) ([#4363](https://github.com/community-scripts/ProxmoxVE/pull/4363))
 | 
				
			||||||
 | 
					    - Feature: autologin for Alpine [@MickLesk](https://github.com/MickLesk) ([#4344](https://github.com/community-scripts/ProxmoxVE/pull/4344))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🧰 Maintenance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 💾 Core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - fix: detect all bridge types, not just vmbr prefix [@filippolauria](https://github.com/filippolauria) ([#4351](https://github.com/community-scripts/ProxmoxVE/pull/4351))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 📂 Github
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Add a Repo check to all Workflows [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4339](https://github.com/community-scripts/ProxmoxVE/pull/4339))
 | 
				
			||||||
 | 
					    - Auto-Merge Automatic PR [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4343](https://github.com/community-scripts/ProxmoxVE/pull/4343))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-08
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - SearXNG: fix to resolve yaml dependency error [@Biendeo](https://github.com/Biendeo) ([#4322](https://github.com/community-scripts/ProxmoxVE/pull/4322))
 | 
				
			||||||
 | 
					    - Bugfix: Mikrotik & Pimox HAOS VM (NEXTID) [@MickLesk](https://github.com/MickLesk) ([#4313](https://github.com/community-scripts/ProxmoxVE/pull/4313))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🧰 Maintenance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 💾 Core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - build.func Change the menu for Bridge Selection [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4326](https://github.com/community-scripts/ProxmoxVE/pull/4326))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🌐 Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - FAQ: Explanation "updatable" [@tremor021](https://github.com/tremor021) ([#4300](https://github.com/community-scripts/ProxmoxVE/pull/4300))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-07
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Alpine scripts: Set minimum disk space to 0.5GB [@tremor021](https://github.com/tremor021) ([#4288](https://github.com/community-scripts/ProxmoxVE/pull/4288))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - SuwayomiServer: Bump Java to v21, code formating [@tremor021](https://github.com/tremor021) ([#3987](https://github.com/community-scripts/ProxmoxVE/pull/3987))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Feature: get correct next VMID [@MickLesk](https://github.com/MickLesk) ([#4292](https://github.com/community-scripts/ProxmoxVE/pull/4292))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🌐 Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 📝 Script Information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - OpenWebUI: Update docs link [@tremor021](https://github.com/tremor021) ([#4298](https://github.com/community-scripts/ProxmoxVE/pull/4298))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-06
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - alpine-transmission ([#4277](https://github.com/community-scripts/ProxmoxVE/pull/4277))
 | 
				
			||||||
 | 
					- streamlink-webui ([#4262](https://github.com/community-scripts/ProxmoxVE/pull/4262))
 | 
				
			||||||
 | 
					- Fumadocs ([#4263](https://github.com/community-scripts/ProxmoxVE/pull/4263))
 | 
				
			||||||
 | 
					- alpine-rclone ([#4265](https://github.com/community-scripts/ProxmoxVE/pull/4265))
 | 
				
			||||||
 | 
					- alpine-tinyauth ([#4264](https://github.com/community-scripts/ProxmoxVE/pull/4264))
 | 
				
			||||||
 | 
					- Re-Add: ActualBudget [@MickLesk](https://github.com/MickLesk) ([#4228](https://github.com/community-scripts/ProxmoxVE/pull/4228))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🧰 Maintenance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - whiptail menu - cancel button now exists the advanced menu [@MickLesk](https://github.com/MickLesk) ([#4259](https://github.com/community-scripts/ProxmoxVE/pull/4259))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-05
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Alpine-Komodo [@MickLesk](https://github.com/MickLesk) ([#4234](https://github.com/community-scripts/ProxmoxVE/pull/4234))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Docker VM: Fix variable doublequoting [@tremor021](https://github.com/tremor021) ([#4245](https://github.com/community-scripts/ProxmoxVE/pull/4245))
 | 
				
			||||||
 | 
					    - Alpine-Vaultwarden: Fix sed and better cert generation [@tremor021](https://github.com/tremor021) ([#4232](https://github.com/community-scripts/ProxmoxVE/pull/4232))
 | 
				
			||||||
 | 
					    - Apache Guacamole: Fix Version Grepping [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4229](https://github.com/community-scripts/ProxmoxVE/pull/4229))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Docker-VM: Add Disk Size choice [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4241](https://github.com/community-scripts/ProxmoxVE/pull/4241))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Refactor: Komodo update logic [@MickLesk](https://github.com/MickLesk) ([#4231](https://github.com/community-scripts/ProxmoxVE/pull/4231))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🧰 Maintenance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 💾 Core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - tools.func: better function handling + gs as new helper [@MickLesk](https://github.com/MickLesk) ([#4238](https://github.com/community-scripts/ProxmoxVE/pull/4238))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-04
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🌐 Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Code Server: Update misleading name, description and icon. [@ArmainAP](https://github.com/ArmainAP) ([#4211](https://github.com/community-scripts/ProxmoxVE/pull/4211))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-03
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Vaultwarden: Enable HTTPS by default [@tremor021](https://github.com/tremor021) ([#4197](https://github.com/community-scripts/ProxmoxVE/pull/4197))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Vaultwarden: Fix access URL [@tremor021](https://github.com/tremor021) ([#4199](https://github.com/community-scripts/ProxmoxVE/pull/4199))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🌐 Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 📝 Script Information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - SFTPGo: Switch updatable to true on website [@tremor021](https://github.com/tremor021) ([#4186](https://github.com/community-scripts/ProxmoxVE/pull/4186))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-05-02
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - NetBox: Fix typo in sed command, preventing install [@tremor021](https://github.com/tremor021) ([#4179](https://github.com/community-scripts/ProxmoxVE/pull/4179))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🌐 Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Changed the random script button to be the same as all the other buttons [@BramSuurdje](https://github.com/BramSuurdje) ([#4183](https://github.com/community-scripts/ProxmoxVE/pull/4183))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 📝 Script Information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Habitica: correct config path [@DrDonoso](https://github.com/DrDonoso) ([#4181](https://github.com/community-scripts/ProxmoxVE/pull/4181))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 2025-05-01
 | 
					## 2025-05-01
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 🚀 Updated Scripts
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										67
									
								
								ct/actualbudget.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								ct/actualbudget.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://actualbudget.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Actual Budget"
 | 
				
			||||||
 | 
					var_tags="finance"
 | 
				
			||||||
 | 
					var_cpu="2"
 | 
				
			||||||
 | 
					var_ram="2048"
 | 
				
			||||||
 | 
					var_disk="4"
 | 
				
			||||||
 | 
					var_os="debian"
 | 
				
			||||||
 | 
					var_version="12"
 | 
				
			||||||
 | 
					var_unprivileged="1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  check_container_storage
 | 
				
			||||||
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -d /opt/actualbudget ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  NODE_VERSION="22"
 | 
				
			||||||
 | 
					  install_node_and_modules
 | 
				
			||||||
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					  if [[ -f /opt/actualbudget-data/config.json ]]; then
 | 
				
			||||||
 | 
					    if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
 | 
				
			||||||
 | 
					      msg_info "Stopping ${APP}"
 | 
				
			||||||
 | 
					      systemctl stop actualbudget
 | 
				
			||||||
 | 
					      msg_ok "${APP} Stopped"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      msg_info "Updating ${APP} to ${RELEASE}"
 | 
				
			||||||
 | 
					      $STD npm update -g @actual-app/sync-server
 | 
				
			||||||
 | 
					      echo "${RELEASE}" >/opt/actualbudget_version.txt
 | 
				
			||||||
 | 
					      msg_ok "Updated ${APP} to ${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      msg_info "Starting ${APP}"
 | 
				
			||||||
 | 
					      systemctl start actualbudget
 | 
				
			||||||
 | 
					      msg_ok "Restarted ${APP}"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      msg_info "${APP} is already up to date"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_info "Old Installation Found, you need to migrate your data and recreate to a new container"
 | 
				
			||||||
 | 
					    msg_info "Please follow the instructions on the ${APP} website to migrate your data"
 | 
				
			||||||
 | 
					    msg_info "https://actualbudget.org/docs/backup-restore/backup"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  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}https://${IP}:5006${CL}"
 | 
				
			||||||
@@ -22,8 +22,7 @@ catch_errors
 | 
				
			|||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
  header_info
 | 
					  header_info
 | 
				
			||||||
  msg_info "Updating Alpine Packages"
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
    $STD apk update
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
    $STD apk upgrade
 | 
					 | 
				
			||||||
  msg_ok "Updated Alpine Packages"
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Updating AdGuard Home"
 | 
					  msg_info "Updating AdGuard Home"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
				
			|||||||
    header_info
 | 
					    header_info
 | 
				
			||||||
    case $CHOICE in
 | 
					    case $CHOICE in
 | 
				
			||||||
    1)
 | 
					    1)
 | 
				
			||||||
      apk update && apk upgrade
 | 
					      $STD apk -U upgrade
 | 
				
			||||||
      exit
 | 
					      exit
 | 
				
			||||||
      ;;
 | 
					      ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										62
									
								
								ct/alpine-gatus.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								ct/alpine-gatus.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/TwiN/gatus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Alpine-gatus"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-alpine;monitoring}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-256}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-3}"
 | 
				
			||||||
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -d /opt/gatus ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					  if [ "${RELEASE}" != "$(cat /opt/gatus_version.txt)" ] || [ ! -f /opt/gatus_version.txt ]; then
 | 
				
			||||||
 | 
					    msg_info "Updating ${APP} LXC"
 | 
				
			||||||
 | 
					    $STD apk -U upgrade
 | 
				
			||||||
 | 
					    $STD service gatus stop
 | 
				
			||||||
 | 
					    mv /opt/gatus/config/config.yaml /opt
 | 
				
			||||||
 | 
					    rm -rf /opt/gatus/*
 | 
				
			||||||
 | 
					    temp_file=$(mktemp)
 | 
				
			||||||
 | 
					    curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
				
			||||||
 | 
					    tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
 | 
				
			||||||
 | 
					    cd /opt/gatus
 | 
				
			||||||
 | 
					    $STD go mod tidy
 | 
				
			||||||
 | 
					    CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
 | 
				
			||||||
 | 
					    setcap CAP_NET_RAW+ep gatus
 | 
				
			||||||
 | 
					    mv /opt/config.yaml config
 | 
				
			||||||
 | 
					    rm -f "$temp_file"
 | 
				
			||||||
 | 
					    echo "${RELEASE}" >/opt/gatus_version.txt
 | 
				
			||||||
 | 
					    $STD service gatus start
 | 
				
			||||||
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  exit 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 IP:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
				
			||||||
@@ -22,8 +22,7 @@ catch_errors
 | 
				
			|||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
  header_info
 | 
					  header_info
 | 
				
			||||||
  msg_info "Updating Alpine Packages"
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
    apk update
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
    apk upgrade
 | 
					 | 
				
			||||||
  msg_ok "Updated Alpine Packages"
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Updating Gitea"
 | 
					  msg_info "Updating Gitea"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
				
			|||||||
    header_info
 | 
					    header_info
 | 
				
			||||||
    case $CHOICE in
 | 
					    case $CHOICE in
 | 
				
			||||||
    1)
 | 
					    1)
 | 
				
			||||||
      apk update && apk upgrade
 | 
					      $STD apk -U upgrade
 | 
				
			||||||
      exit
 | 
					      exit
 | 
				
			||||||
      ;;
 | 
					      ;;
 | 
				
			||||||
    2)
 | 
					    2)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ APP="Alpine-IT-Tools"
 | 
				
			|||||||
var_tags="${var_tags:-alpine;development}"
 | 
					var_tags="${var_tags:-alpine;development}"
 | 
				
			||||||
var_cpu="${var_cpu:-1}"
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
var_ram="${var_ram:-256}"
 | 
					var_ram="${var_ram:-256}"
 | 
				
			||||||
var_disk="${var_disk:-0.2}"
 | 
					var_disk="${var_disk:-0.5}"
 | 
				
			||||||
var_os="${var_os:-alpine}"
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
var_version="${var_version:-3.21}"
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										58
									
								
								ct/alpine-komodo.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								ct/alpine-komodo.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://komo.do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Alpine-Komodo"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-docker,alpine}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-1024}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-10}"
 | 
				
			||||||
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  [[ -d /opt/komodo ]] || {
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating ${APP}"
 | 
				
			||||||
 | 
					  COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
 | 
				
			||||||
 | 
					  if [[ -z "$COMPOSE_FILE" ]]; then
 | 
				
			||||||
 | 
					    msg_error "No valid compose file found in /opt/komodo!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
 | 
				
			||||||
 | 
					  BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
 | 
				
			||||||
 | 
					  cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
 | 
				
			||||||
 | 
					    msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
 | 
				
			||||||
 | 
					  if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
 | 
				
			||||||
 | 
					    msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
 | 
				
			||||||
 | 
					    mv "$BACKUP_FILE" "$COMPOSE_FILE"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  $STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
 | 
				
			||||||
 | 
					  msg_ok "Updated ${APP}"
 | 
				
			||||||
 | 
					  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}:9120${CL}"
 | 
				
			||||||
@@ -21,8 +21,7 @@ catch_errors
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
  msg_info "Updating Alpine Packages"
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
    $STD apk update
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
    $STD apk upgrade
 | 
					 | 
				
			||||||
  msg_ok "Updated Alpine Packages"
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Updating MariaDB"
 | 
					  msg_info "Updating MariaDB"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,8 +21,7 @@ catch_errors
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
  msg_info "Updating Alpine Packages"
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
    $STD apk update
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
    $STD apk upgrade
 | 
					 | 
				
			||||||
  msg_ok "Updated Alpine Packages"
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Updating Node.js and npm"
 | 
					  msg_info "Updating Node.js and npm"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,8 +21,7 @@ catch_errors
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
  msg_info "Updating Alpine Packages"
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
  $STD apk update
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
  $STD apk upgrade
 | 
					 | 
				
			||||||
  msg_ok "Updated Alpine Packages"
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Updating PostgreSQL"
 | 
					  msg_info "Updating PostgreSQL"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,8 +21,7 @@ catch_errors
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
  msg_info "Updating Alpine Packages"
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
    $STD apk update
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
    $STD apk upgrade
 | 
					 | 
				
			||||||
  msg_ok "Updated Alpine Packages"
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Updating Prometheus"
 | 
					  msg_info "Updating Prometheus"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										54
									
								
								ct/alpine-rclone.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ct/alpine-rclone.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/rclone/rclone
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Alpine-rclone"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-alpine;backup}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-256}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-1}"
 | 
				
			||||||
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  check_container_storage
 | 
				
			||||||
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [ ! -d /opt/rclone ]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					  if [ "${RELEASE}" != "$(cat /opt/rclone_version.txt)" ] || [ ! -f /opt/rclone_version.txt ]; then
 | 
				
			||||||
 | 
					    msg_info "Updating ${APP} LXC"
 | 
				
			||||||
 | 
					    temp_file=$(mktemp)
 | 
				
			||||||
 | 
					    curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file"
 | 
				
			||||||
 | 
					    $STD unzip -o "$temp_file" '*/**' -d /opt/rclone
 | 
				
			||||||
 | 
					    rm -f "$temp_file"
 | 
				
			||||||
 | 
					    echo "${RELEASE}" >/opt/rclone_version.txt
 | 
				
			||||||
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  exit 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 IP:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
				
			||||||
							
								
								
									
										69
									
								
								ct/alpine-tinyauth.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								ct/alpine-tinyauth.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/steveiliop56/tinyauth
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Alpine-tinyauth"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-alpine;auth}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-512}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-3}"
 | 
				
			||||||
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  if [[ ! -d /opt/tinyauth ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating tinyauth"
 | 
				
			||||||
 | 
					  RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					  if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
 | 
				
			||||||
 | 
					    $STD service tinyauth stop
 | 
				
			||||||
 | 
					    temp_file=$(mktemp)
 | 
				
			||||||
 | 
					    cp /opt/tinyauth/.env /opt
 | 
				
			||||||
 | 
					    rm -rf /opt/tinyauth
 | 
				
			||||||
 | 
					    mkdir -p /opt/tinyauth
 | 
				
			||||||
 | 
					    curl -fsSL "https://github.com/steveiliop56/tinyauth/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
				
			||||||
 | 
					    tar -xzf "$temp_file" -C /opt/tinyauth --strip-components=1
 | 
				
			||||||
 | 
					    cd /opt/tinyauth/frontend
 | 
				
			||||||
 | 
					    $STD bun install
 | 
				
			||||||
 | 
					    $STD bun run build
 | 
				
			||||||
 | 
					    mv dist /opt/tinyauth/internal/assets/
 | 
				
			||||||
 | 
					    cd /opt/tinyauth
 | 
				
			||||||
 | 
					    $STD go mod download
 | 
				
			||||||
 | 
					    CGO_ENABLED=0 go build -ldflags "-s -w"
 | 
				
			||||||
 | 
					    cp /opt/.env /opt/tinyauth
 | 
				
			||||||
 | 
					    echo "${RELEASE}" >/opt/tinyauth_version.txt
 | 
				
			||||||
 | 
					    rm -f "$temp_file"
 | 
				
			||||||
 | 
					    msg_info "Restarting tinyauth"
 | 
				
			||||||
 | 
					    $STD service tinyauth start
 | 
				
			||||||
 | 
					    msg_ok "Restarted tinyauth"
 | 
				
			||||||
 | 
					    msg_ok "Updated tinyauth"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  exit 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start
 | 
				
			||||||
 | 
					build_container
 | 
				
			||||||
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
				
			||||||
							
								
								
									
										41
									
								
								ct/alpine-traefik.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								ct/alpine-traefik.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://alpinelinux.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Alpine-Traefik"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-os;alpine}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-512}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-1}"
 | 
				
			||||||
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Upgrading traefik from edge"
 | 
				
			||||||
 | 
					  $STD apk add traefik --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community
 | 
				
			||||||
 | 
					  msg_ok "Upgraded traefik"
 | 
				
			||||||
 | 
					  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} WebUI Access (if configured) - using the following URL:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/dashboard${CL}"
 | 
				
			||||||
							
								
								
									
										45
									
								
								ct/alpine-transmission.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ct/alpine-transmission.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://transmissionbt.com/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Alpine-Transmission"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-alpine;torrent}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-256}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-1}"
 | 
				
			||||||
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating Transmission"
 | 
				
			||||||
 | 
					  $STD apk upgrade transmission-daemon
 | 
				
			||||||
 | 
					  msg_ok "Updated Transmission"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Restarting Transmission"
 | 
				
			||||||
 | 
					  $STD rc-service transmission-daemon restart
 | 
				
			||||||
 | 
					  msg_ok "Restarted Transmission"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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}:9091${CL}"
 | 
				
			||||||
@@ -37,14 +37,15 @@ function update_script() {
 | 
				
			|||||||
    header_info
 | 
					    header_info
 | 
				
			||||||
    case $CHOICE in
 | 
					    case $CHOICE in
 | 
				
			||||||
    1)
 | 
					    1)
 | 
				
			||||||
      apk update && apk upgrade && rc-service vaultwarden restart -q
 | 
					      $STD apk -U upgrade
 | 
				
			||||||
 | 
					      rc-service vaultwarden restart -q
 | 
				
			||||||
      exit
 | 
					      exit
 | 
				
			||||||
      ;;
 | 
					      ;;
 | 
				
			||||||
    2)
 | 
					    2)
 | 
				
			||||||
      if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Setup your ADMIN_TOKEN (make it strong)" 10 58 3>&1 1>&2 2>&3); then
 | 
					      if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Setup your ADMIN_TOKEN (make it strong)" 10 58 3>&1 1>&2 2>&3); then
 | 
				
			||||||
        if [[ -z "$NEWTOKEN" ]]; then exit-script; fi
 | 
					        if [[ -z "$NEWTOKEN" ]]; then exit-script; fi
 | 
				
			||||||
        if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
 | 
					        if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
 | 
				
			||||||
        TOKEN=$(echo -n ${NEWTOKEN} | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
 | 
					        TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
 | 
				
			||||||
        if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
 | 
					        if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
 | 
				
			||||||
          sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
 | 
					          sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,8 +21,7 @@ catch_errors
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
  msg_info "Updating Alpine Packages"
 | 
					  msg_info "Updating Alpine Packages"
 | 
				
			||||||
  $STD apk update
 | 
					  $STD apk -U upgrade
 | 
				
			||||||
  $STD apk upgrade
 | 
					 | 
				
			||||||
  msg_ok "Updated Alpine Packages"
 | 
					  msg_ok "Updated Alpine Packages"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "update wireguard-tools"
 | 
					  msg_info "update wireguard-tools"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
				
			|||||||
    header_info
 | 
					    header_info
 | 
				
			||||||
    case $CHOICE in
 | 
					    case $CHOICE in
 | 
				
			||||||
    1)
 | 
					    1)
 | 
				
			||||||
      apk update && apk upgrade
 | 
					      $STD apk -U upgrade
 | 
				
			||||||
      exit
 | 
					      exit
 | 
				
			||||||
      ;;
 | 
					      ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								ct/alpine.sh
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								ct/alpine.sh
									
									
									
									
									
								
							@@ -9,7 +9,7 @@ APP="Alpine"
 | 
				
			|||||||
var_tags="${var_tags:-os;alpine}"
 | 
					var_tags="${var_tags:-os;alpine}"
 | 
				
			||||||
var_cpu="${var_cpu:-1}"
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
var_ram="${var_ram:-512}"
 | 
					var_ram="${var_ram:-512}"
 | 
				
			||||||
var_disk="${var_disk:-0.1}"
 | 
					var_disk="${var_disk:-0.5}"
 | 
				
			||||||
var_os="${var_os:-alpine}"
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
var_version="${var_version:-3.21}"
 | 
					var_version="${var_version:-3.21}"
 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
@@ -20,13 +20,15 @@ color
 | 
				
			|||||||
catch_errors
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
  UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
 | 
					  UPD=$(
 | 
				
			||||||
 | 
					    whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
 | 
				
			||||||
      "1" "Check for Alpine Updates" ON \
 | 
					      "1" "Check for Alpine Updates" ON \
 | 
				
			||||||
    3>&1 1>&2 2>&3)
 | 
					      3>&1 1>&2 2>&3
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  header_info
 | 
					  header_info
 | 
				
			||||||
  if [ "$UPD" == "1" ]; then
 | 
					  if [ "$UPD" == "1" ]; then
 | 
				
			||||||
    apk update && apk upgrade
 | 
					    $STD apk -U upgrade
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								ct/asterisk.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								ct/asterisk.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: michelroegl-brunner
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://asterisk.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Asterisk"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-telephone;pbx}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-2048}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-4}"
 | 
				
			||||||
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					    header_info
 | 
				
			||||||
 | 
					    check_container_storage
 | 
				
			||||||
 | 
					    check_container_resources
 | 
				
			||||||
 | 
					    msg_error "No Update function provided for ${APP} LXC"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start
 | 
				
			||||||
 | 
					build_container
 | 
				
			||||||
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
@@ -9,7 +9,7 @@ APP="Authentik"
 | 
				
			|||||||
var_tags="${var_tags:-identity-provider}"
 | 
					var_tags="${var_tags:-identity-provider}"
 | 
				
			||||||
var_disk="${var_disk:-12}"
 | 
					var_disk="${var_disk:-12}"
 | 
				
			||||||
var_cpu="${var_cpu:-6}"
 | 
					var_cpu="${var_cpu:-6}"
 | 
				
			||||||
var_ram="${var_ram:-8192}"
 | 
					var_ram="${var_ram:-10240}"
 | 
				
			||||||
var_os="${var_os:-debian}"
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
var_version="${var_version:-12}"
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
@@ -29,6 +29,13 @@ function update_script() {
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}')
 | 
				
			||||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
					  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
				
			||||||
 | 
					    NODE_VERSION="22"
 | 
				
			||||||
 | 
					    PG_VERSION="16"
 | 
				
			||||||
 | 
					    setup_uv
 | 
				
			||||||
 | 
					    install_postgresql
 | 
				
			||||||
 | 
					    install_node_and_modules
 | 
				
			||||||
 | 
					    install_go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Stopping ${APP}"
 | 
					    msg_info "Stopping ${APP}"
 | 
				
			||||||
    systemctl stop authentik-server
 | 
					    systemctl stop authentik-server
 | 
				
			||||||
    systemctl stop authentik-worker
 | 
					    systemctl stop authentik-worker
 | 
				
			||||||
@@ -54,17 +61,14 @@ function update_script() {
 | 
				
			|||||||
    go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
 | 
					    go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
 | 
				
			||||||
    msg_ok "Built ${APP} server"
 | 
					    msg_ok "Built ${APP} server"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Installing Python Dependencies"
 | 
					    msg_info "Building Authentik"
 | 
				
			||||||
    cd /opt/authentik
 | 
					    cd /opt/authentik
 | 
				
			||||||
    $STD poetry install --only=main --no-ansi --no-interaction --no-root
 | 
					    $STD uv sync --frozen --no-install-project --no-dev
 | 
				
			||||||
    $STD poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt
 | 
					    uv run python -m lifecycle.migrate
 | 
				
			||||||
    $STD pip install --no-cache-dir -r requirements.txt
 | 
					    ln -s /opt/authentik/.venv/bin/gunicorn /usr/local/bin/gunicorn
 | 
				
			||||||
    $STD pip install .
 | 
					    ln -s /opt/authentik/.venv/bin/celery /usr/local/bin/celery
 | 
				
			||||||
    msg_ok "Installed Python Dependencies"
 | 
					    msg_ok "Authentik built"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating ${APP} to v${RELEASE} (Patience)"
 | 
					 | 
				
			||||||
    cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints
 | 
					 | 
				
			||||||
    $STD bash /opt/authentik/lifecycle/ak migrate
 | 
					 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
				
			||||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
					    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,9 +39,9 @@ function update_script() {
 | 
				
			|||||||
    unzip -q "/opt/BookStack-${RELEASE}.zip" -d /opt
 | 
					    unzip -q "/opt/BookStack-${RELEASE}.zip" -d /opt
 | 
				
			||||||
    mv "/opt/BookStack-${RELEASE}" /opt/bookstack
 | 
					    mv "/opt/BookStack-${RELEASE}" /opt/bookstack
 | 
				
			||||||
    cp /opt/bookstack-backup/.env /opt/bookstack/.env
 | 
					    cp /opt/bookstack-backup/.env /opt/bookstack/.env
 | 
				
			||||||
    cp -r /opt/bookstack-backup/public/uploads/* /opt/bookstack/public/uploads/ || true
 | 
					    [[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/
 | 
				
			||||||
    cp -r /opt/bookstack-backup/storage/uploads/* /opt/bookstack/storage/uploads/ || true
 | 
					    [[ -d /opt/bookstack-backup/storage/uploads ]] && cp -a /opt/bookstack-backup/storage/uploads/. /opt/bookstack/storage/uploads/
 | 
				
			||||||
    cp -r /opt/bookstack-backup/themes/* /opt/bookstack/themes/ || true
 | 
					    [[ -d /opt/bookstack-backup/themes ]] && cp -a /opt/bookstack-backup/themes/. /opt/bookstack/themes/
 | 
				
			||||||
    cd /opt/bookstack
 | 
					    cd /opt/bookstack
 | 
				
			||||||
    export COMPOSER_ALLOW_SUPERUSER=1
 | 
					    export COMPOSER_ALLOW_SUPERUSER=1
 | 
				
			||||||
    $STD composer install --no-dev
 | 
					    $STD composer install --no-dev
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,9 +42,14 @@ function update_script() {
 | 
				
			|||||||
    mv documenso-${RELEASE} /opt/documenso
 | 
					    mv documenso-${RELEASE} /opt/documenso
 | 
				
			||||||
    cd /opt/documenso
 | 
					    cd /opt/documenso
 | 
				
			||||||
    mv /opt/.env /opt/documenso/.env
 | 
					    mv /opt/.env /opt/documenso/.env
 | 
				
			||||||
        $STD npm install
 | 
					    export TURBO_CACHE=1
 | 
				
			||||||
        $STD npm run build:web
 | 
					    export NEXT_TELEMETRY_DISABLED=1
 | 
				
			||||||
 | 
					    export CYPRESS_INSTALL_BINARY=0
 | 
				
			||||||
 | 
					    export NODE_OPTIONS="--max-old-space-size=4096"
 | 
				
			||||||
 | 
					    $STD npm ci
 | 
				
			||||||
 | 
					    $STD turbo run build --filter=@documenso/remix
 | 
				
			||||||
    $STD npm run prisma:migrate-deploy
 | 
					    $STD npm run prisma:migrate-deploy
 | 
				
			||||||
 | 
					    $STD turbo daemon stop
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
				
			||||||
    msg_ok "Updated ${APP}"
 | 
					    msg_ok "Updated ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										72
									
								
								ct/fumadocs.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								ct/fumadocs.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,72 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/fuma-nama/fumadoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Fumadocs"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-documentation}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-2048}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-5}"
 | 
				
			||||||
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  check_container_storage
 | 
				
			||||||
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -d /opt/fumadocs ]]; then
 | 
				
			||||||
 | 
					    msg_error "No installation found in /opt/fumadocs!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -f /opt/fumadocs/.projectname ]]; then
 | 
				
			||||||
 | 
					    msg_error "Project name file not found: /opt/fumadocs/.projectname!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  NODE_VERSION="22" NODE_MODULE="pnpm@latest" install_node_and_modules
 | 
				
			||||||
 | 
					  PROJECT_NAME=$(</opt/fumadocs/.projectname)
 | 
				
			||||||
 | 
					  PROJECT_DIR="/opt/fumadocs/${PROJECT_NAME}"
 | 
				
			||||||
 | 
					  SERVICE_NAME="fumadocs_${PROJECT_NAME}.service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -d "$PROJECT_DIR" ]]; then
 | 
				
			||||||
 | 
					    msg_error "Project directory does not exist: $PROJECT_DIR"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Stopping service $SERVICE_NAME"
 | 
				
			||||||
 | 
					  systemctl stop "$SERVICE_NAME"
 | 
				
			||||||
 | 
					  msg_ok "Stopped service $SERVICE_NAME"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating dependencies using pnpm"
 | 
				
			||||||
 | 
					  cd "$PROJECT_DIR"
 | 
				
			||||||
 | 
					  $STD pnpm up --latest
 | 
				
			||||||
 | 
					  $STD pnpm build
 | 
				
			||||||
 | 
					  msg_ok "Updated dependencies using pnpm"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Starting service $SERVICE_NAME"
 | 
				
			||||||
 | 
					  systemctl start "$SERVICE_NAME"
 | 
				
			||||||
 | 
					  msg_ok "Started service $SERVICE_NAME"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_ok "Fumadocs successfully updated"
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start
 | 
				
			||||||
 | 
					build_container
 | 
				
			||||||
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
				
			||||||
							
								
								
									
										75
									
								
								ct/gatus.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								ct/gatus.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/TwiN/gatus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="gatus"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-monitoring}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-1024}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-4}"
 | 
				
			||||||
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  check_container_storage
 | 
				
			||||||
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -d /opt/gatus ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
				
			||||||
 | 
					    msg_info "Updating $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Stopping $APP"
 | 
				
			||||||
 | 
					    systemctl stop gatus
 | 
				
			||||||
 | 
					    msg_ok "Stopped $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating $APP to v${RELEASE}"
 | 
				
			||||||
 | 
					    mv /opt/gatus/config/config.yaml /opt
 | 
				
			||||||
 | 
					    rm -rf /opt/gatus/*
 | 
				
			||||||
 | 
					    temp_file=$(mktemp)
 | 
				
			||||||
 | 
					    curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
				
			||||||
 | 
					    tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
 | 
				
			||||||
 | 
					    cd /opt/gatus
 | 
				
			||||||
 | 
					    $STD go mod tidy
 | 
				
			||||||
 | 
					    CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
 | 
				
			||||||
 | 
					    setcap CAP_NET_RAW+ep gatus
 | 
				
			||||||
 | 
					    mv /opt/config.yaml config
 | 
				
			||||||
 | 
					    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
				
			||||||
 | 
					    msg_ok "Updated $APP to v${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting $APP"
 | 
				
			||||||
 | 
					    systemctl start gatus
 | 
				
			||||||
 | 
					    msg_ok "Started $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Cleaning Up"
 | 
				
			||||||
 | 
					    rm -f "$temp_file"
 | 
				
			||||||
 | 
					    msg_ok "Cleanup Completed"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Update Successful"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start
 | 
				
			||||||
 | 
					build_container
 | 
				
			||||||
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/actualbudget
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/actualbudget
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___        __              __   ____            __           __ 
 | 
				
			||||||
 | 
					   /   | _____/ /___  ______ _/ /  / __ )__  ______/ /___ ____  / /_
 | 
				
			||||||
 | 
					  / /| |/ ___/ __/ / / / __ `/ /  / __  / / / / __  / __ `/ _ \/ __/
 | 
				
			||||||
 | 
					 / ___ / /__/ /_/ /_/ / /_/ / /  / /_/ / /_/ / /_/ / /_/ /  __/ /_  
 | 
				
			||||||
 | 
					/_/  |_\___/\__/\__,_/\__,_/_/  /_____/\__,_/\__,_/\__, /\___/\__/  
 | 
				
			||||||
 | 
					                                                  /____/            
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/alpine-gatus
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-gatus
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___    __      _                              __            
 | 
				
			||||||
 | 
					   /   |  / /___  (_)___  ___        ____ _____ _/ /___  _______
 | 
				
			||||||
 | 
					  / /| | / / __ \/ / __ \/ _ \______/ __ `/ __ `/ __/ / / / ___/
 | 
				
			||||||
 | 
					 / ___ |/ / /_/ / / / / /  __/_____/ /_/ / /_/ / /_/ /_/ (__  ) 
 | 
				
			||||||
 | 
					/_/  |_/_/ .___/_/_/ /_/\___/      \__, /\__,_/\__/\__,_/____/  
 | 
				
			||||||
 | 
					        /_/                       /____/                        
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/alpine-komodo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-komodo
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___    __      _                  __ __                          __    
 | 
				
			||||||
 | 
					   /   |  / /___  (_)___  ___        / //_/___  ____ ___  ____  ____/ /___ 
 | 
				
			||||||
 | 
					  / /| | / / __ \/ / __ \/ _ \______/ ,< / __ \/ __ `__ \/ __ \/ __  / __ \
 | 
				
			||||||
 | 
					 / ___ |/ / /_/ / / / / /  __/_____/ /| / /_/ / / / / / / /_/ / /_/ / /_/ /
 | 
				
			||||||
 | 
					/_/  |_/_/ .___/_/_/ /_/\___/     /_/ |_\____/_/ /_/ /_/\____/\__,_/\____/ 
 | 
				
			||||||
 | 
					        /_/                                                                
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/alpine-rclone
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-rclone
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___    __      _                            __               
 | 
				
			||||||
 | 
					   /   |  / /___  (_)___  ___        __________/ /___  ____  ___ 
 | 
				
			||||||
 | 
					  / /| | / / __ \/ / __ \/ _ \______/ ___/ ___/ / __ \/ __ \/ _ \
 | 
				
			||||||
 | 
					 / ___ |/ / /_/ / / / / /  __/_____/ /  / /__/ / /_/ / / / /  __/
 | 
				
			||||||
 | 
					/_/  |_/_/ .___/_/_/ /_/\___/     /_/   \___/_/\____/_/ /_/\___/ 
 | 
				
			||||||
 | 
					        /_/                                                      
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/alpine-tinyauth
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-tinyauth
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___    __      _                  __  _                         __  __  
 | 
				
			||||||
 | 
					   /   |  / /___  (_)___  ___        / /_(_)___  __  ______ ___  __/ /_/ /_ 
 | 
				
			||||||
 | 
					  / /| | / / __ \/ / __ \/ _ \______/ __/ / __ \/ / / / __ `/ / / / __/ __ \
 | 
				
			||||||
 | 
					 / ___ |/ / /_/ / / / / /  __/_____/ /_/ / / / / /_/ / /_/ / /_/ / /_/ / / /
 | 
				
			||||||
 | 
					/_/  |_/_/ .___/_/_/ /_/\___/      \__/_/_/ /_/\__, /\__,_/\__,_/\__/_/ /_/ 
 | 
				
			||||||
 | 
					        /_/                                   /____/                        
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/alpine-traefik
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-traefik
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___    __      _                ______                _____ __  
 | 
				
			||||||
 | 
					   /   |  / /___  (_)___  ___      /_  __/________ ____  / __(_) /__
 | 
				
			||||||
 | 
					  / /| | / / __ \/ / __ \/ _ \______/ / / ___/ __ `/ _ \/ /_/ / //_/
 | 
				
			||||||
 | 
					 / ___ |/ / /_/ / / / / /  __/_____/ / / /  / /_/ /  __/ __/ / ,<   
 | 
				
			||||||
 | 
					/_/  |_/_/ .___/_/_/ /_/\___/     /_/ /_/   \__,_/\___/_/ /_/_/|_|  
 | 
				
			||||||
 | 
					        /_/                                                         
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/alpine-transmission
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-transmission
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___    __      _                ______                                _           _           
 | 
				
			||||||
 | 
					   /   |  / /___  (_)___  ___      /_  __/________ _____  _________ ___  (_)_________(_)___  ____ 
 | 
				
			||||||
 | 
					  / /| | / / __ \/ / __ \/ _ \______/ / / ___/ __ `/ __ \/ ___/ __ `__ \/ / ___/ ___/ / __ \/ __ \
 | 
				
			||||||
 | 
					 / ___ |/ / /_/ / / / / /  __/_____/ / / /  / /_/ / / / (__  ) / / / / / (__  |__  ) / /_/ / / / /
 | 
				
			||||||
 | 
					/_/  |_/_/ .___/_/_/ /_/\___/     /_/ /_/   \__,_/_/ /_/____/_/ /_/ /_/_/____/____/_/\____/_/ /_/ 
 | 
				
			||||||
 | 
					        /_/                                                                                       
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/asterisk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/asterisk
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ___         __            _      __  
 | 
				
			||||||
 | 
					   /   |  _____/ /____  _____(_)____/ /__
 | 
				
			||||||
 | 
					  / /| | / ___/ __/ _ \/ ___/ / ___/ //_/
 | 
				
			||||||
 | 
					 / ___ |(__  ) /_/  __/ /  / (__  ) ,<   
 | 
				
			||||||
 | 
					/_/  |_/____/\__/\___/_/  /_/____/_/|_|  
 | 
				
			||||||
 | 
					                                         
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/fumadocs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/fumadocs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ______                          __               
 | 
				
			||||||
 | 
					   / ____/_  ______ ___  ____ _____/ /___  __________
 | 
				
			||||||
 | 
					  / /_  / / / / __ `__ \/ __ `/ __  / __ \/ ___/ ___/
 | 
				
			||||||
 | 
					 / __/ / /_/ / / / / / / /_/ / /_/ / /_/ / /__(__  ) 
 | 
				
			||||||
 | 
					/_/    \__,_/_/ /_/ /_/\__,_/\__,_/\____/\___/____/  
 | 
				
			||||||
 | 
					                                                     
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/gatus
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/gatus
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					                __            
 | 
				
			||||||
 | 
					   ____ _____ _/ /___  _______
 | 
				
			||||||
 | 
					  / __ `/ __ `/ __/ / / / ___/
 | 
				
			||||||
 | 
					 / /_/ / /_/ / /_/ /_/ (__  ) 
 | 
				
			||||||
 | 
					 \__, /\__,_/\__/\__,_/____/  
 | 
				
			||||||
 | 
					/____/                        
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
    __  __                               
 | 
					    __                                   
 | 
				
			||||||
   / / / /___  ____ ___  ____ ___________
 | 
					   / /_  ____  ____ ___  ____ ___________
 | 
				
			||||||
  / /_/ / __ \/ __ `__ \/ __ `/ ___/ ___/
 | 
					  / __ \/ __ \/ __ `__ \/ __ `/ ___/ ___/
 | 
				
			||||||
 / __  / /_/ / / / / / / /_/ / /  / /    
 | 
					 / / / / /_/ / / / / / / /_/ / /  / /    
 | 
				
			||||||
/_/ /_/\____/_/ /_/ /_/\__,_/_/  /_/     
 | 
					/_/ /_/\____/_/ /_/ /_/\__,_/_/  /_/     
 | 
				
			||||||
                                         
 | 
					                                         
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								ct/headers/odoo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/odoo
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					   ____      __          
 | 
				
			||||||
 | 
					  / __ \____/ /___  ____ 
 | 
				
			||||||
 | 
					 / / / / __  / __ \/ __ \
 | 
				
			||||||
 | 
					/ /_/ / /_/ / /_/ / /_/ /
 | 
				
			||||||
 | 
					\____/\__,_/\____/\____/ 
 | 
				
			||||||
 | 
					                         
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/streamlink-webui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/streamlink-webui
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					         __                            ___       __                      __          _ 
 | 
				
			||||||
 | 
					   _____/ /_________  ____ _____ ___  / (_)___  / /__     _      _____  / /_  __  __(_)
 | 
				
			||||||
 | 
					  / ___/ __/ ___/ _ \/ __ `/ __ `__ \/ / / __ \/ //_/____| | /| / / _ \/ __ \/ / / / / 
 | 
				
			||||||
 | 
					 (__  ) /_/ /  /  __/ /_/ / / / / / / / / / / / ,< /_____/ |/ |/ /  __/ /_/ / /_/ / /  
 | 
				
			||||||
 | 
					/____/\__/_/   \___/\__,_/_/ /_/ /_/_/_/_/ /_/_/|_|      |__/|__/\___/_.___/\__,_/_/   
 | 
				
			||||||
 | 
					                                                                                       
 | 
				
			||||||
							
								
								
									
										15
									
								
								ct/homarr.sh
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								ct/homarr.sh
									
									
									
									
									
								
							@@ -1,11 +1,11 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
# Copyright (c) 2021-2025 tteck
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
# Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz) | Co-Author: CrazyWolf13
 | 
					# Author: CrazyWolf13
 | 
				
			||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
# Source: https://homarr.dev/
 | 
					# Source: https://homarr.dev/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
APP="Homarr"
 | 
					APP="homarr"
 | 
				
			||||||
var_tags="${var_tags:-arr;dashboard}"
 | 
					var_tags="${var_tags:-arr;dashboard}"
 | 
				
			||||||
var_cpu="${var_cpu:-2}"
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
var_ram="${var_ram:-4096}"
 | 
					var_ram="${var_ram:-4096}"
 | 
				
			||||||
@@ -117,11 +117,12 @@ node apps/nextjs/server.js & PID=$!
 | 
				
			|||||||
wait $PID
 | 
					wait $PID
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
    chmod +x /opt/run_homarr.sh
 | 
					    chmod +x /opt/run_homarr.sh
 | 
				
			||||||
curl -fsSL "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.zip")
 | 
					    $STD command -v jq || $STD apt-get update && $STD apt-get install -y jq
 | 
				
			||||||
    unzip -q v${RELEASE}.zip
 | 
					    NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
 | 
				
			||||||
    rm -rf v${RELEASE}.zip
 | 
					    NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.packageManager | split("@")[1]')"
 | 
				
			||||||
 | 
					    install_node_and_modules
 | 
				
			||||||
    rm -rf /opt/homarr
 | 
					    rm -rf /opt/homarr
 | 
				
			||||||
    mv homarr-${RELEASE} /opt/homarr
 | 
					    fetch_and_deploy_gh_release "homarr-labs/homarr"
 | 
				
			||||||
    mv /opt/homarr-data-backup/.env /opt/homarr/.env
 | 
					    mv /opt/homarr-data-backup/.env /opt/homarr/.env
 | 
				
			||||||
    cd /opt/homarr
 | 
					    cd /opt/homarr
 | 
				
			||||||
    $STD pnpm install
 | 
					    $STD pnpm install
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,8 +21,6 @@ catch_errors
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
  header_info
 | 
					  header_info
 | 
				
			||||||
 | 
					 | 
				
			||||||
  # OS Check
 | 
					 | 
				
			||||||
  if ! lsb_release -d | grep -q "Ubuntu 24.10"; then
 | 
					  if ! lsb_release -d | grep -q "Ubuntu 24.10"; then
 | 
				
			||||||
    msg_error "Wrong OS detected. This script only supports Ubuntu 24.10."
 | 
					    msg_error "Wrong OS detected. This script only supports Ubuntu 24.10."
 | 
				
			||||||
    msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549"
 | 
					    msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549"
 | 
				
			||||||
@@ -32,15 +30,16 @@ function update_script() {
 | 
				
			|||||||
  check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
  if [[ ! -d /srv/homeassistant ]]; then
 | 
					  if [[ ! -d /srv/homeassistant ]]; then
 | 
				
			||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  PY=$(ls /srv/homeassistant/lib/)
 | 
					  setup_uv
 | 
				
			||||||
  IP=$(hostname -I | awk '{print $1}')
 | 
					  IP=$(hostname -I | awk '{print $1}')
 | 
				
			||||||
  UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
 | 
					  UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
 | 
				
			||||||
    "1" "Update Core" ON \
 | 
					    "1" "Update Core" ON \
 | 
				
			||||||
    "2" "Install HACS" OFF \
 | 
					    "2" "Install HACS" OFF \
 | 
				
			||||||
    "3" "Install FileBrowser" OFF \
 | 
					    "3" "Install FileBrowser" OFF \
 | 
				
			||||||
    3>&1 1>&2 2>&3)
 | 
					    3>&1 1>&2 2>&3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ "$UPD" == "1" ]; then
 | 
					  if [ "$UPD" == "1" ]; then
 | 
				
			||||||
    if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then
 | 
					    if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then
 | 
				
			||||||
      clear
 | 
					      clear
 | 
				
			||||||
@@ -53,33 +52,66 @@ function update_script() {
 | 
				
			|||||||
      echo -e "${GN}Updating to Stable Version${CL}"
 | 
					      echo -e "${GN}Updating to Stable Version${CL}"
 | 
				
			||||||
      BR=""
 | 
					      BR=""
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Stopping Home Assistant"
 | 
					    msg_info "Stopping Home Assistant"
 | 
				
			||||||
    systemctl stop homeassistant
 | 
					    systemctl stop homeassistant
 | 
				
			||||||
    msg_ok "Stopped Home Assistant"
 | 
					    msg_ok "Stopped Home Assistant"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -d /srv/homeassistant/bin ]]; then
 | 
				
			||||||
 | 
					      msg_info "Migrating to .venv-based structure"
 | 
				
			||||||
 | 
					      $STD source /srv/homeassistant/bin/activate
 | 
				
			||||||
 | 
					      PY_VER=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
 | 
				
			||||||
 | 
					      $STD deactivate
 | 
				
			||||||
 | 
					      mv /srv/homeassistant "/srv/homeassistant_backup_$PY_VER"
 | 
				
			||||||
 | 
					      mkdir -p /srv/homeassistant
 | 
				
			||||||
 | 
					      cd /srv/homeassistant
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      $STD uv python install 3.13
 | 
				
			||||||
 | 
					      UV_PYTHON=$(uv python list | awk '/3\.13\.[0-9]+.*\/root\/.local/ {print $2; exit}')
 | 
				
			||||||
 | 
					      if [[ -z "$UV_PYTHON" ]]; then
 | 
				
			||||||
 | 
					        msg_error "No local Python 3.13 found via uv"
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      $STD uv venv .venv --python "$UV_PYTHON"
 | 
				
			||||||
 | 
					      $STD source .venv/bin/activate
 | 
				
			||||||
 | 
					      $STD uv pip install homeassistant mysqlclient psycopg2-binary isal webrtcvad wheel
 | 
				
			||||||
 | 
					      mkdir -p /root/.homeassistant
 | 
				
			||||||
 | 
					      msg_ok "Migration complete"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      source /srv/homeassistant/.venv/bin/activate
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating Home Assistant"
 | 
					    msg_info "Updating Home Assistant"
 | 
				
			||||||
    source /srv/homeassistant/bin/activate
 | 
					    $STD uv pip install $BR --upgrade homeassistant
 | 
				
			||||||
    $STD pip install ${BR}--upgrade homeassistant
 | 
					 | 
				
			||||||
    msg_ok "Updated Home Assistant"
 | 
					    msg_ok "Updated Home Assistant"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting Home Assistant"
 | 
					    msg_info "Starting Home Assistant"
 | 
				
			||||||
 | 
					    if [[ -f /etc/systemd/system/homeassistant.service ]] && grep -q "/srv/homeassistant/bin/python3" /etc/systemd/system/homeassistant.service; then
 | 
				
			||||||
 | 
					      sed -i 's|ExecStart=/srv/homeassistant/bin/python3|ExecStart=/srv/homeassistant/.venv/bin/python3|' /etc/systemd/system/homeassistant.service
 | 
				
			||||||
 | 
					      sed -i 's|PATH=/srv/homeassistant/bin|PATH=/srv/homeassistant/.venv/bin|' /etc/systemd/system/homeassistant.service
 | 
				
			||||||
 | 
					      $STD systemctl daemon-reload
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    systemctl start homeassistant
 | 
					    systemctl start homeassistant
 | 
				
			||||||
    sleep 2
 | 
					    sleep 5
 | 
				
			||||||
    msg_ok "Started Home Assistant"
 | 
					    msg_ok "Started Home Assistant"
 | 
				
			||||||
    msg_ok "Update Successful"
 | 
					    msg_ok "Update Successful"
 | 
				
			||||||
    echo -e "\n  Go to http://${IP}:8123 \n"
 | 
					    echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ "$UPD" == "2" ]; then
 | 
					  if [ "$UPD" == "2" ]; then
 | 
				
			||||||
    msg_info "Installing Home Assistant Community Store (HACS)"
 | 
					    msg_info "Installing Home Assistant Community Store (HACS)"
 | 
				
			||||||
    $STD apt update
 | 
					    $STD apt update
 | 
				
			||||||
    $STD apt install -y unzip
 | 
					    $STD apt install -y unzip
 | 
				
			||||||
    cd .homeassistant
 | 
					    cd /root/.homeassistant
 | 
				
			||||||
    $STD bash <(curl -fsSL https://get.hacs.xyz)
 | 
					    $STD bash <(curl -fsSL https://get.hacs.xyz)
 | 
				
			||||||
    msg_ok "Installed Home Assistant Community Store (HACS)"
 | 
					    msg_ok "Installed Home Assistant Community Store (HACS)"
 | 
				
			||||||
    echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
 | 
					    echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [ "$UPD" == "3" ]; then
 | 
					  if [ "$UPD" == "3" ]; then
 | 
				
			||||||
    set +Eeuo pipefail
 | 
					    set +Eeuo pipefail
 | 
				
			||||||
    read -r -p "Would you like to use No Authentication? <y/N> " prompt
 | 
					    read -r -p "Would you like to use No Authentication? <y/N> " prompt
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,7 +38,7 @@ function update_script() {
 | 
				
			|||||||
    msg_info "Updating All Containers"
 | 
					    msg_info "Updating All Containers"
 | 
				
			||||||
    CONTAINER_LIST="${1:-$(docker ps -q)}"
 | 
					    CONTAINER_LIST="${1:-$(docker ps -q)}"
 | 
				
			||||||
    for container in ${CONTAINER_LIST}; do
 | 
					    for container in ${CONTAINER_LIST}; do
 | 
				
			||||||
      CONTAINER_IMAGE="$(docker inspect --format "{{.Config.Image}}" --type container ${container})"
 | 
					      CONTAINER_IMAGE="$(docker inspect --format "{{.Config.Image}}" --type container "${container}")"
 | 
				
			||||||
      RUNNING_IMAGE="$(docker inspect --format "{{.Image}}" --type container "${container}")"
 | 
					      RUNNING_IMAGE="$(docker inspect --format "{{.Image}}" --type container "${container}")"
 | 
				
			||||||
      docker pull "${CONTAINER_IMAGE}"
 | 
					      docker pull "${CONTAINER_IMAGE}"
 | 
				
			||||||
      LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
 | 
					      LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
 | 
				
			||||||
@@ -47,7 +47,7 @@ function update_script() {
 | 
				
			|||||||
        echo "Updating ${container} image ${CONTAINER_IMAGE}"
 | 
					        echo "Updating ${container} image ${CONTAINER_IMAGE}"
 | 
				
			||||||
        DOCKER_COMMAND="$(runlike --use-volume-id "${container}")"
 | 
					        DOCKER_COMMAND="$(runlike --use-volume-id "${container}")"
 | 
				
			||||||
        docker rm --force "${container}"
 | 
					        docker rm --force "${container}"
 | 
				
			||||||
        eval ${DOCKER_COMMAND}
 | 
					        eval "${DOCKER_COMMAND}"
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
    msg_ok "Updated All Containers"
 | 
					    msg_ok "Updated All Containers"
 | 
				
			||||||
@@ -109,4 +109,4 @@ msg_ok "Completed Successfully!\n"
 | 
				
			|||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}HA: http://${IP}:8123${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}HA: http://${IP}:8123${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}Portainer: https://${IP}:9443${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,10 +53,10 @@ function update_script() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if [ -z "$pnpm_current" ]; then
 | 
					    if [ -z "$pnpm_current" ]; then
 | 
				
			||||||
        msg_error "pnpm not found. Installing version $pnpm_desired..."
 | 
					        msg_error "pnpm not found. Installing version $pnpm_desired..."
 | 
				
			||||||
        $STD npm install -g pnpm@"$pnpm_desired"
 | 
					        NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" install_node_and_modules
 | 
				
			||||||
    elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)"; then
 | 
					    elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)"; then
 | 
				
			||||||
        msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..."
 | 
					        msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..."
 | 
				
			||||||
        $STD npm install -g pnpm@"$pnpm_desired"
 | 
					        NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" install_node_and_modules
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        msg_ok "pnpm is already installed and satisfies version $pnpm_desired."
 | 
					        msg_ok "pnpm is already installed and satisfies version $pnpm_desired."
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										40
									
								
								ct/komodo.sh
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								ct/komodo.sh
									
									
									
									
									
								
							@@ -23,39 +23,33 @@ function update_script() {
 | 
				
			|||||||
  header_info
 | 
					  header_info
 | 
				
			||||||
  check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
  check_container_resources
 | 
					  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 /opt/komodo/*.compose.yaml; do
 | 
					 | 
				
			||||||
        if [[ "$file" != "compose.env" ]]; then
 | 
					 | 
				
			||||||
            COMPOSE_FILE="${file#/opt/komodo/}"
 | 
					 | 
				
			||||||
            break
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [[ -d /opt/komodo ]] || {
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating ${APP}"
 | 
				
			||||||
 | 
					  COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
 | 
				
			||||||
  if [[ -z "$COMPOSE_FILE" ]]; then
 | 
					  if [[ -z "$COMPOSE_FILE" ]]; then
 | 
				
			||||||
    msg_error "No valid compose file found in /opt/komodo!"
 | 
					    msg_error "No valid compose file found in /opt/komodo!"
 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
 | 
				
			||||||
    BACKUP_FILE="${COMPOSE_FILE}.bak_$(date +%Y%m%d_%H%M%S)"
 | 
					  BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
 | 
				
			||||||
    mv "/opt/komodo/$COMPOSE_FILE" "/opt/komodo/$BACKUP_FILE" || {
 | 
					  cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
 | 
				
			||||||
        msg_error "Failed to create backup of $COMPOSE_FILE!"
 | 
					    msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
 | 
				
			||||||
    GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_FILE}"
 | 
					  if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
 | 
				
			||||||
    if ! curl -fsSL "$GITHUB_URL" -o "/opt/komodo/${COMPOSE_FILE}"; then
 | 
					    msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
 | 
				
			||||||
        msg_error "Failed to download ${COMPOSE_FILE} from GitHub!"
 | 
					    mv "$BACKUP_FILE" "$COMPOSE_FILE"
 | 
				
			||||||
        mv "/opt/komodo/${BACKUP_FILE}" "/opt/komodo/${COMPOSE_FILE}"
 | 
					 | 
				
			||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  $STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
 | 
				
			||||||
    $STD docker compose -p komodo -f "/opt/komodo/$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
 | 
					 | 
				
			||||||
  msg_ok "Updated ${APP}"
 | 
					  msg_ok "Updated ${APP}"
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,10 @@ function update_script() {
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
					  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
				
			||||||
 | 
					    NODE_VERSION="22"
 | 
				
			||||||
 | 
					    NODE_MODULE="yarn@latest"
 | 
				
			||||||
 | 
					    install_node_and_modules
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    msg_info "Stopping ${APP}"
 | 
					    msg_info "Stopping ${APP}"
 | 
				
			||||||
    systemctl stop linkwarden
 | 
					    systemctl stop linkwarden
 | 
				
			||||||
    msg_ok "Stopped ${APP}"
 | 
					    msg_ok "Stopped ${APP}"
 | 
				
			||||||
@@ -46,7 +50,7 @@ function update_script() {
 | 
				
			|||||||
    mv /opt/linkwarden/.env /opt/.env
 | 
					    mv /opt/linkwarden/.env /opt/.env
 | 
				
			||||||
    rm -rf /opt/linkwarden
 | 
					    rm -rf /opt/linkwarden
 | 
				
			||||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					    RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
    curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip")
 | 
					    curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o ${RELEASE}.zip
 | 
				
			||||||
    unzip -q ${RELEASE}.zip
 | 
					    unzip -q ${RELEASE}.zip
 | 
				
			||||||
    mv linkwarden-${RELEASE:1} /opt/linkwarden
 | 
					    mv linkwarden-${RELEASE:1} /opt/linkwarden
 | 
				
			||||||
    cd /opt/linkwarden
 | 
					    cd /opt/linkwarden
 | 
				
			||||||
@@ -54,8 +58,9 @@ function update_script() {
 | 
				
			|||||||
    $STD npx playwright install-deps
 | 
					    $STD npx playwright install-deps
 | 
				
			||||||
    $STD yarn playwright install
 | 
					    $STD yarn playwright install
 | 
				
			||||||
    cp /opt/.env /opt/linkwarden/.env
 | 
					    cp /opt/.env /opt/linkwarden/.env
 | 
				
			||||||
    $STD yarn build
 | 
					    $STD yarn prisma:generate
 | 
				
			||||||
    $STD yarn prisma migrate deploy
 | 
					    $STD yarn web:build
 | 
				
			||||||
 | 
					    $STD yarn prisma:deploy
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
				
			||||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
					    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,7 +30,7 @@ function update_script() {
 | 
				
			|||||||
  case "$UPD" in
 | 
					  case "$UPD" in
 | 
				
			||||||
  "1")
 | 
					  "1")
 | 
				
			||||||
    msg_info "Updating Alpine OS"
 | 
					    msg_info "Updating Alpine OS"
 | 
				
			||||||
        apk update && apk upgrade
 | 
					    $STD apk -U upgrade
 | 
				
			||||||
    msg_ok "System updated"
 | 
					    msg_ok "System updated"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
    ;;
 | 
					    ;;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										71
									
								
								ct/odoo.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								ct/odoo.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/odoo/odoo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Odoo"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-erp}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-6}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-2048}"
 | 
				
			||||||
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  check_container_storage
 | 
				
			||||||
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -f /etc/odoo/odoo.conf ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  RELEASE=$(curl -fsSL https://nightly.odoo.com/ | grep -oE 'href="[0-9]+\.[0-9]+/nightly"' | head -n1 | cut -d'"' -f2 | cut -d/ -f1)
 | 
				
			||||||
 | 
					  LATEST_VERSION=$(curl -fsSL "https://nightly.odoo.com/${RELEASE}/nightly/deb/" |
 | 
				
			||||||
 | 
					    grep -oP "odoo_${RELEASE}\.\d+_all\.deb" |
 | 
				
			||||||
 | 
					    sed -E "s/odoo_(${RELEASE}\.[0-9]+)_all\.deb/\1/" |
 | 
				
			||||||
 | 
					    sort -V |
 | 
				
			||||||
 | 
					    tail -n1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ "${LATEST_VERSION}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
				
			||||||
 | 
					    msg_info "Stopping ${APP} service"
 | 
				
			||||||
 | 
					    systemctl stop odoo
 | 
				
			||||||
 | 
					    msg_ok "Stopped ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating ${APP} to ${LATEST_VERSION}"
 | 
				
			||||||
 | 
					    curl -fsSL https://nightly.odoo.com/${RELEASE}/nightly/deb/odoo_${RELEASE}.latest_all.deb -o /opt/odoo.deb
 | 
				
			||||||
 | 
					    $STD apt install -y /opt/odoo.deb
 | 
				
			||||||
 | 
					    echo "$LATEST_VERSION" >/opt/${APP}_version.txt
 | 
				
			||||||
 | 
					    msg_ok "Updated ${APP} to ${LATEST_VERSION}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting ${APP} service"
 | 
				
			||||||
 | 
					    systemctl start odoo
 | 
				
			||||||
 | 
					    msg_ok "Started ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Cleaning Up"
 | 
				
			||||||
 | 
					    rm -f /opt/odoo.deb
 | 
				
			||||||
 | 
					    msg_ok "Cleaned"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at ${LATEST_VERSION}"
 | 
				
			||||||
 | 
					  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}:8069${CL}"
 | 
				
			||||||
@@ -8,8 +8,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
				
			|||||||
APP="Open WebUI"
 | 
					APP="Open WebUI"
 | 
				
			||||||
var_tags="${var_tags:-ai;interface}"
 | 
					var_tags="${var_tags:-ai;interface}"
 | 
				
			||||||
var_cpu="${var_cpu:-4}"
 | 
					var_cpu="${var_cpu:-4}"
 | 
				
			||||||
var_ram="${var_ram:-4096}"
 | 
					var_ram="${var_ram:-8192}"
 | 
				
			||||||
var_disk="${var_disk:-16}"
 | 
					var_disk="${var_disk:-25}"
 | 
				
			||||||
var_os="${var_os:-debian}"
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
var_version="${var_version:-12}"
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@ function update_script() {
 | 
				
			|||||||
        msg_error "No ${APP} Installation Found!"
 | 
					        msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					    setup_uv
 | 
				
			||||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					    RELEASE=$(curl -fsSL https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
    if [[ -f /opt/${APP}_version.txt ]] && [[ "${RELEASE}" == "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					    if [[ -f /opt/${APP}_version.txt ]] && [[ "${RELEASE}" == "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
				
			||||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
					        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										75
									
								
								ct/streamlink-webui.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								ct/streamlink-webui.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: CrazyWolf13
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/CrazyWolf13/streamlink-webui
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="streamlink-webui"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-download,streaming}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-2048}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-10}"
 | 
				
			||||||
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  check_container_storage
 | 
				
			||||||
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -d /opt/streamlink-webui ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/CrazyWolf13/streamlink-webui/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
 | 
				
			||||||
 | 
					    msg_info "Starting Update"
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    msg_info "Stopping $APP"
 | 
				
			||||||
 | 
					    systemctl stop ${APP}
 | 
				
			||||||
 | 
					    msg_ok "Stopped $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rm -rf /opt/${APP}
 | 
				
			||||||
 | 
					    NODE_VERSION="22"
 | 
				
			||||||
 | 
					    NODE_MODULE="npm,yarn"
 | 
				
			||||||
 | 
					    install_node_and_modules
 | 
				
			||||||
 | 
					    setup_uv
 | 
				
			||||||
 | 
					    fetch_and_deploy_gh_release "CrazyWolf13/streamlink-webui"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating $APP to v${RELEASE}"
 | 
				
			||||||
 | 
					    $STD uv venv /opt/"${APP}"/backend/src/.venv
 | 
				
			||||||
 | 
					    source /opt/"${APP}"/backend/src/.venv/bin/activate
 | 
				
			||||||
 | 
					    $STD uv pip install -r /opt/"${APP}"/backend/src/requirements.txt --python=/opt/"${APP}"/backend/src/.venv
 | 
				
			||||||
 | 
					    cd /opt/"${APP}"/frontend/src
 | 
				
			||||||
 | 
					    $STD yarn install
 | 
				
			||||||
 | 
					    $STD yarn build
 | 
				
			||||||
 | 
					    chmod +x /opt/"${APP}"/start.sh
 | 
				
			||||||
 | 
					    msg_ok "Updated $APP to v${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting $APP"
 | 
				
			||||||
 | 
					    systemctl start ${APP}
 | 
				
			||||||
 | 
					    msg_ok "Started $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Update Successful"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start
 | 
				
			||||||
 | 
					build_container
 | 
				
			||||||
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}"
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
# Author: tremor021
 | 
					# Author: Slaviša Arežina (tremor021)
 | 
				
			||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
# Source: https://github.com/Suwayomi/Suwayomi-Server
 | 
					# Source: https://github.com/Suwayomi/Suwayomi-Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -28,24 +28,33 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  if dpkg -l | grep -q "openjdk-17-jre"; then
 | 
				
			||||||
 | 
					    $STD apt-get remove -y openjdk-17-jre
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  JAVA_VERSION=21 install_java
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
  if [[ "${RELEASE}" != "$(cat /opt/suwayomi-server_version.txt)" ]] || [[ ! -f /opt/suwayomi-server_version.txt ]]; then
 | 
					  if [[ "${RELEASE}" != "$(cat /opt/suwayomi-server_version.txt)" ]] || [[ ! -f /opt/suwayomi-server_version.txt ]]; then
 | 
				
			||||||
    msg_info "Updating $APP"
 | 
					    msg_info "Updating $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Stopping $APP"
 | 
					    msg_info "Stopping $APP"
 | 
				
			||||||
    systemctl stop suwayomi-server
 | 
					    systemctl stop suwayomi-server
 | 
				
			||||||
    msg_ok "Stopped $APP"
 | 
					    msg_ok "Stopped $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
					    msg_info "Updating $APP to v${RELEASE}"
 | 
				
			||||||
        cd /tmp
 | 
					    temp_file=$(mktemp)
 | 
				
			||||||
        URL=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "browser_download_url" | awk '{print substr($2, 2, length($2)-2) }' | tail -n+2 | head -n 1)
 | 
					    RELEASE=$(curl -fsSL https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
        curl -fsSL "$URL" -o $(basename "$URL")
 | 
					    curl -fsSL "https://github.com/Suwayomi/Suwayomi-Server/releases/download/${RELEASE}/Suwayomi-Server-${RELEASE}-debian-all.deb" -o "$temp_file"
 | 
				
			||||||
        $STD dpkg -i /tmp/*.deb
 | 
					    $STD dpkg -i "$temp_file"
 | 
				
			||||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
					    msg_ok "Updated $APP to v${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting $APP"
 | 
					    msg_info "Starting $APP"
 | 
				
			||||||
    systemctl start suwayomi-server
 | 
					    systemctl start suwayomi-server
 | 
				
			||||||
    msg_ok "Started $APP"
 | 
					    msg_ok "Started $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Cleaning Up"
 | 
					    msg_info "Cleaning Up"
 | 
				
			||||||
        rm -f *.deb
 | 
					    rm -f "$temp_file"
 | 
				
			||||||
    msg_ok "Cleanup Completed"
 | 
					    msg_ok "Cleanup Completed"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    echo "${RELEASE}" >/opt/suwayomi-server_version.txt.txt
 | 
					    echo "${RELEASE}" >/opt/suwayomi-server_version.txt.txt
 | 
				
			||||||
    msg_ok "Update Successful"
 | 
					    msg_ok "Update Successful"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,12 +76,12 @@ function update_script() {
 | 
				
			|||||||
    msg_ok "Stopped Vaultwarden"
 | 
					    msg_ok "Stopped Vaultwarden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating Web-Vault to $WVRELEASE"
 | 
					    msg_info "Updating Web-Vault to $WVRELEASE"
 | 
				
			||||||
    $STD curl -fsSLO https://github.com/dani-garcia/bw_web_builds/releases/download/$WVRELEASE/bw_web_$WVRELEASE.tar.gz
 | 
					    $STD curl -fsSLO https://github.com/dani-garcia/bw_web_builds/releases/download/"$WVRELEASE"/bw_web_"$WVRELEASE".tar.gz
 | 
				
			||||||
    $STD tar -zxf bw_web_$WVRELEASE.tar.gz -C /opt/vaultwarden/
 | 
					    $STD tar -zxf bw_web_"$WVRELEASE".tar.gz -C /opt/vaultwarden/
 | 
				
			||||||
    msg_ok "Updated Web-Vault"
 | 
					    msg_ok "Updated Web-Vault"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Cleaning up"
 | 
					    msg_info "Cleaning up"
 | 
				
			||||||
    rm bw_web_$WVRELEASE.tar.gz
 | 
					    rm bw_web_"$WVRELEASE".tar.gz
 | 
				
			||||||
    msg_ok "Cleaned"
 | 
					    msg_ok "Cleaned"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting Vaultwarden"
 | 
					    msg_info "Starting Vaultwarden"
 | 
				
			||||||
@@ -94,7 +94,7 @@ function update_script() {
 | 
				
			|||||||
    if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Set the ADMIN_TOKEN" 10 58 3>&1 1>&2 2>&3); then
 | 
					    if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Set the ADMIN_TOKEN" 10 58 3>&1 1>&2 2>&3); then
 | 
				
			||||||
      if [[ -z "$NEWTOKEN" ]]; then exit; fi
 | 
					      if [[ -z "$NEWTOKEN" ]]; then exit; fi
 | 
				
			||||||
      if ! command -v argon2 >/dev/null 2>&1; then $STD apt-get install -y argon2; fi
 | 
					      if ! command -v argon2 >/dev/null 2>&1; then $STD apt-get install -y argon2; fi
 | 
				
			||||||
      TOKEN=$(echo -n ${NEWTOKEN} | argon2 "$(openssl rand -base64 32)" -t 2 -m 16 -p 4 -l 64 -e)
 | 
					      TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -t 2 -m 16 -p 4 -l 64 -e)
 | 
				
			||||||
      sed -i "s|ADMIN_TOKEN=.*|ADMIN_TOKEN='${TOKEN}'|" /opt/vaultwarden/.env
 | 
					      sed -i "s|ADMIN_TOKEN=.*|ADMIN_TOKEN='${TOKEN}'|" /opt/vaultwarden/.env
 | 
				
			||||||
      if [[ -f /opt/vaultwarden/data/config.json ]]; then
 | 
					      if [[ -f /opt/vaultwarden/data/config.json ]]; then
 | 
				
			||||||
        sed -i "s|\"admin_token\":.*|\"admin_token\": \"${TOKEN}\"|" /opt/vaultwarden/data/config.json
 | 
					        sed -i "s|\"admin_token\":.*|\"admin_token\": \"${TOKEN}\"|" /opt/vaultwarden/data/config.json
 | 
				
			||||||
@@ -112,4 +112,4 @@ description
 | 
				
			|||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8000${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								frontend/public/json/actualbudget.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								frontend/public/json/actualbudget.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "name": "Actual Budget",
 | 
				
			||||||
 | 
					    "slug": "actualbudget",
 | 
				
			||||||
 | 
					    "categories": [
 | 
				
			||||||
 | 
					        23
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "date_created": "2025-05-06",
 | 
				
			||||||
 | 
					    "type": "ct",
 | 
				
			||||||
 | 
					    "updateable": true,
 | 
				
			||||||
 | 
					    "privileged": false,
 | 
				
			||||||
 | 
					    "interface_port": 5006,
 | 
				
			||||||
 | 
					    "documentation": "https://github.com/community-scripts/ProxmoxVE/discussions/807",
 | 
				
			||||||
 | 
					    "website": "https://actualbudget.org/",
 | 
				
			||||||
 | 
					    "config_path": "/opt/actualbudget-data/config.json",
 | 
				
			||||||
 | 
					    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/actual-budget.svg",
 | 
				
			||||||
 | 
					    "description": "Actual Budget is a super fast and privacy-focused app for managing your finances. At its heart is the well proven and much loved Envelope Budgeting methodology.",
 | 
				
			||||||
 | 
					    "install_methods": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "type": "default",
 | 
				
			||||||
 | 
					            "script": "ct/actualbudget.sh",
 | 
				
			||||||
 | 
					            "resources": {
 | 
				
			||||||
 | 
					                "cpu": 2,
 | 
				
			||||||
 | 
					                "ram": 2048,
 | 
				
			||||||
 | 
					                "hdd": 4,
 | 
				
			||||||
 | 
					                "os": "debian",
 | 
				
			||||||
 | 
					                "version": "12"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "default_credentials": {
 | 
				
			||||||
 | 
					        "username": null,
 | 
				
			||||||
 | 
					        "password": null
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "notes": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -21,7 +21,7 @@
 | 
				
			|||||||
      "resources": {
 | 
					      "resources": {
 | 
				
			||||||
        "cpu": 1,
 | 
					        "cpu": 1,
 | 
				
			||||||
        "ram": 256,
 | 
					        "ram": 256,
 | 
				
			||||||
              "hdd": 0.2,
 | 
					        "hdd": 0.5,
 | 
				
			||||||
        "os": "alpine",
 | 
					        "os": "alpine",
 | 
				
			||||||
        "version": "3.21"
 | 
					        "version": "3.21"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -32,7 +32,7 @@
 | 
				
			|||||||
      "resources": {
 | 
					      "resources": {
 | 
				
			||||||
        "cpu": 1,
 | 
					        "cpu": 1,
 | 
				
			||||||
        "ram": 256,
 | 
					        "ram": 256,
 | 
				
			||||||
              "hdd": 0.2,
 | 
					        "hdd": 0.5,
 | 
				
			||||||
        "os": "alpine",
 | 
					        "os": "alpine",
 | 
				
			||||||
        "version": "3.21"
 | 
					        "version": "3.21"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -44,4 +44,3 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "notes": []
 | 
					  "notes": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										55
									
								
								frontend/public/json/alpine-rclone.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								frontend/public/json/alpine-rclone.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Alpine-rclone",
 | 
				
			||||||
 | 
					  "slug": "alpine-rclone",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    11
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-06",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 3000,
 | 
				
			||||||
 | 
					  "documentation": "https://rclone.org/docs/",
 | 
				
			||||||
 | 
					  "website": "https://rclone.org/",
 | 
				
			||||||
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/rclone.svg",
 | 
				
			||||||
 | 
					  "config_path": "~/.config/rclone/rclone.conf",
 | 
				
			||||||
 | 
					  "description": "Rclone is a command-line program to manage files on cloud storage. It is a feature-rich alternative to cloud vendors' web storage interfaces",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-rclone.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 1,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "alpine",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-rclone.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 1,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "info",
 | 
				
			||||||
 | 
					      "text": "`cat ~/rclone.creds` to view login credentials"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "info",
 | 
				
			||||||
 | 
					      "text": "`htpasswd -b -B /opt/login.pwd newuser newuserpassword` to add more users."
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										51
									
								
								frontend/public/json/alpine-tinyauth.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								frontend/public/json/alpine-tinyauth.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Alpine-tinyauth",
 | 
				
			||||||
 | 
					  "slug": "alpine-tinyauth",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    6
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-06",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 3000,
 | 
				
			||||||
 | 
					  "documentation": "https://tinyauth.app/docs/getting-started.html",
 | 
				
			||||||
 | 
					  "website": "https://tinyauth.app/",
 | 
				
			||||||
 | 
					  "logo": "https://raw.githubusercontent.com/steveiliop56/tinyauth/refs/heads/main/frontend/public/android-chrome-192x192.png",
 | 
				
			||||||
 | 
					  "config_path": "/opt/tinyauth/.env",
 | 
				
			||||||
 | 
					  "description": "Tinyauth is a simple authentication middleware that adds simple username/password login or OAuth with Google, Github and any generic provider to all of your docker apps. It is designed for traefik but it can be extended to work with all reverse proxies like caddy and nginx.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-tinyauth.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 3,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "alpine",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-tinyauth.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 3,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "info",
 | 
				
			||||||
 | 
					      "text": "`cat ~/tinyauth.creds` to view login credentials"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -21,7 +21,7 @@
 | 
				
			|||||||
      "resources": {
 | 
					      "resources": {
 | 
				
			||||||
        "cpu": 1,
 | 
					        "cpu": 1,
 | 
				
			||||||
        "ram": 512,
 | 
					        "ram": 512,
 | 
				
			||||||
                "hdd": 0.1,
 | 
					        "hdd": 0.5,
 | 
				
			||||||
        "os": "alpine",
 | 
					        "os": "alpine",
 | 
				
			||||||
        "version": "3.21"
 | 
					        "version": "3.21"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -32,7 +32,7 @@
 | 
				
			|||||||
      "resources": {
 | 
					      "resources": {
 | 
				
			||||||
        "cpu": 1,
 | 
					        "cpu": 1,
 | 
				
			||||||
        "ram": 512,
 | 
					        "ram": 512,
 | 
				
			||||||
                "hdd": 0.1,
 | 
					        "hdd": 0.5,
 | 
				
			||||||
        "os": "alpine",
 | 
					        "os": "alpine",
 | 
				
			||||||
        "version": "3.21"
 | 
					        "version": "3.21"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -44,9 +44,8 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "notes": [
 | 
					  "notes": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
            "text": "To Update Alpine: `apk update && apk upgrade`",
 | 
					      "text": "To Update Alpine: `apk -U upgrade`",
 | 
				
			||||||
      "type": "info"
 | 
					      "type": "info"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										33
									
								
								frontend/public/json/asterisk.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								frontend/public/json/asterisk.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Asterisk",
 | 
				
			||||||
 | 
					  "slug": "asterisk",
 | 
				
			||||||
 | 
					  "categories": [0],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-14",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": false,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": null,
 | 
				
			||||||
 | 
					  "documentation": "https://docs.asterisk.org/",
 | 
				
			||||||
 | 
					  "config_path": "/etc/asterisk",
 | 
				
			||||||
 | 
					  "website": "https://asterisk.org/",
 | 
				
			||||||
 | 
					  "logo": "https://docs.asterisk.org/favicon.ico",
 | 
				
			||||||
 | 
					  "description": "Asterisk is an open-source framework for building communications applications, most commonly used as a phone system (PBX). Developed by Digium (now part of Sangoma), it turns a standard computer into a powerful telephony server.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/asterisk.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 2,
 | 
				
			||||||
 | 
					        "ram": 2048,
 | 
				
			||||||
 | 
					        "hdd": 4,
 | 
				
			||||||
 | 
					        "os": "Debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -20,7 +20,7 @@
 | 
				
			|||||||
            "script": "ct/authentik.sh",
 | 
					            "script": "ct/authentik.sh",
 | 
				
			||||||
            "resources": {
 | 
					            "resources": {
 | 
				
			||||||
                "cpu": 6,
 | 
					                "cpu": 6,
 | 
				
			||||||
                "ram": 8192,
 | 
					                "ram": 10240,
 | 
				
			||||||
                "hdd": 12,
 | 
					                "hdd": 12,
 | 
				
			||||||
                "os": "debian",
 | 
					                "os": "debian",
 | 
				
			||||||
                "version": "12"
 | 
					                "version": "12"
 | 
				
			||||||
@@ -33,7 +33,11 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "notes": [
 | 
					    "notes": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            "text": "Authentik is very resource-heavy, it is recommended to use at least 8GB RAM anytime!",
 | 
					            "text": "Authentik is very resource-heavy, it is recommended to use at least 10GB RAM anytime!",
 | 
				
			||||||
 | 
					            "type": "warning"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "text": "Some updates don't work due to massive dependency errors, it's recommended to do a backup before updating or a pg_dump and a new LXC.",
 | 
				
			||||||
            "type": "warning"
 | 
					            "type": "warning"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,39 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "name": "VS Code Server",
 | 
					 | 
				
			||||||
  "slug": "code-server",
 | 
					 | 
				
			||||||
  "categories": [1, 20, 11],
 | 
					 | 
				
			||||||
  "date_created": "2024-05-02",
 | 
					 | 
				
			||||||
  "type": "addon",
 | 
					 | 
				
			||||||
  "updateable": false,
 | 
					 | 
				
			||||||
  "privileged": false,
 | 
					 | 
				
			||||||
  "interface_port": 8680,
 | 
					 | 
				
			||||||
  "documentation": null,
 | 
					 | 
				
			||||||
  "website": null,
 | 
					 | 
				
			||||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/visual-studio-code.svg",
 | 
					 | 
				
			||||||
  "config_path": "",
 | 
					 | 
				
			||||||
  "description": "VS Code Server is a service you can run on a remote development machine, like your desktop PC or a virtual machine (VM). It allows you to securely connect to that remote machine from anywhere through a vscode.dev URL, without the requirement of SSH.",
 | 
					 | 
				
			||||||
  "install_methods": [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "type": "default",
 | 
					 | 
				
			||||||
      "script": "tools/addon/code-server.sh",
 | 
					 | 
				
			||||||
      "resources": {
 | 
					 | 
				
			||||||
        "cpu": null,
 | 
					 | 
				
			||||||
        "ram": null,
 | 
					 | 
				
			||||||
        "hdd": null,
 | 
					 | 
				
			||||||
        "os": null,
 | 
					 | 
				
			||||||
        "version": null
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "default_credentials": {
 | 
					 | 
				
			||||||
    "username": null,
 | 
					 | 
				
			||||||
    "password": null
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "notes": [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "text": "Execute within an existing LXC Console",
 | 
					 | 
				
			||||||
      "type": "warning"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							
								
								
									
										42
									
								
								frontend/public/json/coder-code-server.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								frontend/public/json/coder-code-server.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Coder Code Server",
 | 
				
			||||||
 | 
					  "slug": "coder-code-server",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    1,
 | 
				
			||||||
 | 
					    20,
 | 
				
			||||||
 | 
					    11
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2024-05-02",
 | 
				
			||||||
 | 
					  "type": "addon",
 | 
				
			||||||
 | 
					  "updateable": false,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 8680,
 | 
				
			||||||
 | 
					  "documentation": "https://coder.com/docs/code-server",
 | 
				
			||||||
 | 
					  "website": "https://coder.com/",
 | 
				
			||||||
 | 
					  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/coder.svg",
 | 
				
			||||||
 | 
					  "config_path": "",
 | 
				
			||||||
 | 
					  "description": "Coder Code Server is an open-source project that enables you to run Visual Studio Code (VS Code) on a remote machine, such as a desktop PC or virtual server. It serves a web-based version of VS Code that you can access from any browser via a URL, allowing remote development without needing an SSH connection. Unlike the official VS Code Server used by vscode.dev for Remote Tunnels, code-server is developed by Coder and operates independently, providing similar capabilities through a self-hosted solution.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "tools/addon/coder-code-server.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": null,
 | 
				
			||||||
 | 
					        "ram": null,
 | 
				
			||||||
 | 
					        "hdd": null,
 | 
				
			||||||
 | 
					        "os": null,
 | 
				
			||||||
 | 
					        "version": null
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Execute within an existing LXC Console",
 | 
				
			||||||
 | 
					      "type": "warning"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -4,7 +4,7 @@
 | 
				
			|||||||
  "categories": [
 | 
					  "categories": [
 | 
				
			||||||
    12
 | 
					    12
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
    "date_created": "2025-04-28",
 | 
					  "date_created": "2025-05-14",
 | 
				
			||||||
  "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
  "updateable": true,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								frontend/public/json/fumadocs.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								frontend/public/json/fumadocs.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Fumadocs",
 | 
				
			||||||
 | 
					  "slug": "fumadocs",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    10
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-06",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 3000,
 | 
				
			||||||
 | 
					  "documentation": "https://fumadocs.vercel.app/docs/ui",
 | 
				
			||||||
 | 
					  "website": "https://fumadocs.vercel.app/",
 | 
				
			||||||
 | 
					  "logo": "https://raw.githubusercontent.com/fuma-nama/fumadocs/refs/heads/dev/documents/logo.png",
 | 
				
			||||||
 | 
					  "config_path": "",
 | 
				
			||||||
 | 
					  "description": "Fumadocs is a flexible and high-performance framework for creating well-structured documentation websites using Next.js. It allows developers to write content and transform it into structured data. Fumadocs supports various content sources, including MDX and Content Collections, and integrates search solutions like Orama and Algolia. It also provides interactive components to enhance the user experience.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/fumadocs.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 2,
 | 
				
			||||||
 | 
					        "ram": 2048,
 | 
				
			||||||
 | 
					        "hdd": 5,
 | 
				
			||||||
 | 
					        "os": "Debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										46
									
								
								frontend/public/json/gatus.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								frontend/public/json/gatus.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "gatus",
 | 
				
			||||||
 | 
					  "slug": "gatus",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    9
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-13",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 8080,
 | 
				
			||||||
 | 
					  "documentation": "https://gatus.io/docs",
 | 
				
			||||||
 | 
					  "website": "https://gatus.io/",
 | 
				
			||||||
 | 
					  "logo": "https://raw.githubusercontent.com/TwiN/gatus/refs/heads/master/web/static/img/logo.svg",
 | 
				
			||||||
 | 
					  "config_path": "/opt/gatus/config/config.yaml",
 | 
				
			||||||
 | 
					  "description": "Gatus is a developer-oriented health dashboard that gives you the ability to monitor your services using HTTP, ICMP, TCP, and even DNS queries as well as evaluate the result of said queries by using a list of conditions on values like the status code, the response time, the certificate expiration, the body and many others. The icing on top is that each of these health checks can be paired with alerting via Slack, Teams, PagerDuty, Discord, Twilio and many more.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/gatus.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 512,
 | 
				
			||||||
 | 
					        "hdd": 4,
 | 
				
			||||||
 | 
					        "os": "debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "alpine",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-gatus.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 3,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
  "documentation": "https://github.com/HabitRPG/habitica/wiki",
 | 
					  "documentation": "https://github.com/HabitRPG/habitica/wiki",
 | 
				
			||||||
  "website": "https://habitica.com/",
 | 
					  "website": "https://habitica.com/",
 | 
				
			||||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/habitica.svg",
 | 
					  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/habitica.svg",
 | 
				
			||||||
  "config_path": "/etc/headscale/config.yaml",
 | 
					  "config_path": "/opt/habitica/config.json",
 | 
				
			||||||
  "description": "Habitica is an open-source habit-building program that treats your life like a role-playing game. Level up as you succeed, lose HP as you fail, and earn Gold to buy weapons and armor!",
 | 
					  "description": "Habitica is an open-source habit-building program that treats your life like a role-playing game. Level up as you succeed, lose HP as you fail, and earn Gold to buy weapons and armor!",
 | 
				
			||||||
  "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -35,11 +35,6 @@
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
      "text": "It takes a minute or two after installation for web UI to start, please be patient.",
 | 
					      "text": "It takes a minute or two after installation for web UI to start, please be patient.",
 | 
				
			||||||
      "type": "info"
 | 
					      "type": "info"
 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "text": "Config file is at `/opt/habitica/config.json`",
 | 
					 | 
				
			||||||
      "type": "info"
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,7 +41,7 @@
 | 
				
			|||||||
            "type": "warning"
 | 
					            "type": "warning"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            "text": "Use Ubuntu 24.10 ONLY",
 | 
					            "text": "Deprecation-Warning: This Core-based setup will be deprecated by August 2025. Use Home Assistant OS is strongly recommended to ensure long-term stability and updates.",
 | 
				
			||||||
            "type": "warning"
 | 
					            "type": "warning"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
  "documentation": "https://jellyfin.org/docs/",
 | 
					  "documentation": "https://jellyfin.org/docs/",
 | 
				
			||||||
  "website": "https://jellyfin.org/",
 | 
					  "website": "https://jellyfin.org/",
 | 
				
			||||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/jellyfin.svg",
 | 
					  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/jellyfin.svg",
 | 
				
			||||||
  "config_path": "/root/.config/jellyfin",
 | 
					  "config_path": "/etc/jellyfin/",
 | 
				
			||||||
  "description": "Jellyfin is a free and open-source media server and suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.",
 | 
					  "description": "Jellyfin is a free and open-source media server and suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.",
 | 
				
			||||||
  "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,6 +25,17 @@
 | 
				
			|||||||
        "os": "debian",
 | 
					        "os": "debian",
 | 
				
			||||||
        "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "alpine",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-komodo.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 1024,
 | 
				
			||||||
 | 
					        "hdd": 10,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "default_credentials": {
 | 
					  "default_credentials": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
    "documentation": null,
 | 
					    "documentation": null,
 | 
				
			||||||
    "website": "https://www.navidrome.org/",
 | 
					    "website": "https://www.navidrome.org/",
 | 
				
			||||||
    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/navidrome.svg",
 | 
					    "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/navidrome.svg",
 | 
				
			||||||
    "config_path": "/var/lib/navidrome/navidrome.toml",
 | 
					    "config_path": "/etc/navidrome/navidrome.toml",
 | 
				
			||||||
    "description": "Navidrome is a music server solution that makes your music collection accessible from anywhere. It provides a modern web-based user interface and compatibility with a range of third-party mobile apps for both iOS and Android devices. With Navidrome, users can access their music collection from anywhere, whether at home or on the go. The software supports a variety of music formats, making it easy for users to play their favorite songs and albums. Navidrome provides a simple and user-friendly interface for managing and organizing music collections, making it a valuable tool for music lovers who want to access their music from anywhere. The software is designed to be easy to set up and use, making it a popular choice for those who want to host their own music server and enjoy their music collection from anywhere.",
 | 
					    "description": "Navidrome is a music server solution that makes your music collection accessible from anywhere. It provides a modern web-based user interface and compatibility with a range of third-party mobile apps for both iOS and Android devices. With Navidrome, users can access their music collection from anywhere, whether at home or on the go. The software supports a variety of music formats, making it easy for users to play their favorite songs and albums. Navidrome provides a simple and user-friendly interface for managing and organizing music collections, making it a valuable tool for music lovers who want to access their music from anywhere. The software is designed to be easy to set up and use, making it a popular choice for those who want to host their own music server and enjoy their music collection from anywhere.",
 | 
				
			||||||
    "install_methods": [
 | 
					    "install_methods": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -33,7 +33,7 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "notes": [
 | 
					    "notes": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            "text": "To change Navidrome music folder path, `nano /var/lib/navidrome/navidrome.toml`",
 | 
					            "text": "To change Navidrome music folder path, `nano /etc/navidrome/navidrome.toml`",
 | 
				
			||||||
            "type": "info"
 | 
					            "type": "info"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										40
									
								
								frontend/public/json/odoo.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/odoo.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Odoo",
 | 
				
			||||||
 | 
					  "slug": "odoo",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    25
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-14",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 8069,
 | 
				
			||||||
 | 
					  "documentation": "https://www.odoo.com/en_EN/page/docs",
 | 
				
			||||||
 | 
					  "website": "https://www.odoo.com/",
 | 
				
			||||||
 | 
					  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/odoo.svg",
 | 
				
			||||||
 | 
					  "config_path": "/etc/odoo/odoo.conf",
 | 
				
			||||||
 | 
					  "description": "Odoo is a comprehensive open-source business platform made up of modular apps that cover key areas such as CRM, accounting, inventory, sales, project management, HR, helpdesk, and e-commerce. All modules are tightly integrated, allowing businesses to fully digitize and automate their workflows. Its modular design makes it suitable for both small companies and large enterprises, with flexibility to adapt to different industries. Odoo combines user-friendliness with powerful functionality, offering a unified solution for managing a wide range of business operations.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/odoo.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 2,
 | 
				
			||||||
 | 
					        "ram": 2048,
 | 
				
			||||||
 | 
					        "hdd": 6,
 | 
				
			||||||
 | 
					        "os": "debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": "admin",
 | 
				
			||||||
 | 
					    "password": "admin"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Database Credentials: `cat ~/odoo.creds`",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -9,7 +9,7 @@
 | 
				
			|||||||
  "updateable": true,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": 8080,
 | 
					  "interface_port": 8080,
 | 
				
			||||||
    "documentation": null,
 | 
					  "documentation": "https://docs.openwebui.com/",
 | 
				
			||||||
  "website": "https://openwebui.com/",
 | 
					  "website": "https://openwebui.com/",
 | 
				
			||||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/open-webui.svg",
 | 
					  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/open-webui.svg",
 | 
				
			||||||
  "config_path": "/opt/open-webui/.env",
 | 
					  "config_path": "/opt/open-webui/.env",
 | 
				
			||||||
@@ -20,8 +20,8 @@
 | 
				
			|||||||
      "script": "ct/openwebui.sh",
 | 
					      "script": "ct/openwebui.sh",
 | 
				
			||||||
      "resources": {
 | 
					      "resources": {
 | 
				
			||||||
        "cpu": 4,
 | 
					        "cpu": 4,
 | 
				
			||||||
                "ram": 4096,
 | 
					        "ram": 8192,
 | 
				
			||||||
                "hdd": 16,
 | 
					        "hdd": 25,
 | 
				
			||||||
        "os": "debian",
 | 
					        "os": "debian",
 | 
				
			||||||
        "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
  "documentation": "https://stonith404.github.io/pingvin-share/introduction",
 | 
					  "documentation": "https://stonith404.github.io/pingvin-share/introduction",
 | 
				
			||||||
  "website": "https://github.com/stonith404/pingvin-share",
 | 
					  "website": "https://github.com/stonith404/pingvin-share",
 | 
				
			||||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/pingvin-share.svg",
 | 
					  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/pingvin-share.svg",
 | 
				
			||||||
  "config_path": "/opt/pingin-share/config.yaml",
 | 
					  "config_path": "/opt/pingvin-share/config.yaml",
 | 
				
			||||||
  "description": "Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer.",
 | 
					  "description": "Pingvin Share is self-hosted file sharing platform and an alternative for WeTransfer.",
 | 
				
			||||||
  "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -31,5 +31,10 @@
 | 
				
			|||||||
    "username": null,
 | 
					    "username": null,
 | 
				
			||||||
    "password": null
 | 
					    "password": null
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "notes": []
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Run `DATA_DIRECTORY=path-to-your-data-directory pm2 restart all --update-env` to update path to your data directory or to update environment variables.",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "date_created": "2024-05-02",
 | 
					  "date_created": "2024-05-02",
 | 
				
			||||||
  "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
  "updateable": false,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": 8080,
 | 
					  "interface_port": 8080,
 | 
				
			||||||
  "documentation": "https://docs.sftpgo.com/latest/",
 | 
					  "documentation": "https://docs.sftpgo.com/latest/",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										40
									
								
								frontend/public/json/streamlink-webui.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/streamlink-webui.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Streamlink WebUI",
 | 
				
			||||||
 | 
					  "slug": "streamlink-webui",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    11
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-05-06",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 8000,
 | 
				
			||||||
 | 
					  "documentation": "https://github.com/CrazyWolf13/streamlink-webui",
 | 
				
			||||||
 | 
					  "config_path": "/opt/streamlink-webui.env",
 | 
				
			||||||
 | 
					  "website": "https://github.com/CrazyWolf13/streamlink-webui",
 | 
				
			||||||
 | 
					  "logo": null,
 | 
				
			||||||
 | 
					  "description": "a simple web-ui to the well-known streamlink cli application, which allows you to save twitch streams to your local disk.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/streamlink-webui.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 2,
 | 
				
			||||||
 | 
					        "ram": 2048,
 | 
				
			||||||
 | 
					        "hdd": 5,
 | 
				
			||||||
 | 
					        "os": "Debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": "null",
 | 
				
			||||||
 | 
					    "password": "null"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "This app requires a Twitch cliend_ID and client_secret, set it in the config file. Look in the application documentation on how to obtain it.",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,40 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "name": "Suwayomi-Server",
 | 
					 | 
				
			||||||
    "slug": "suwayomi-server",
 | 
					 | 
				
			||||||
    "categories": [
 | 
					 | 
				
			||||||
        13
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "date_created": "2025-02-07",
 | 
					 | 
				
			||||||
    "type": "ct",
 | 
					 | 
				
			||||||
    "updateable": true,
 | 
					 | 
				
			||||||
    "privileged": false,
 | 
					 | 
				
			||||||
    "interface_port": 4567,
 | 
					 | 
				
			||||||
    "documentation": "https://github.com/Suwayomi/Suwayomi-Server/wiki",
 | 
					 | 
				
			||||||
    "website": "https://github.com/Suwayomi/Suwayomi-Server",
 | 
					 | 
				
			||||||
    "logo": "https://github.com/Suwayomi/Suwayomi-Server/raw/master/server/src/main/resources/icon/faviconlogo.png",
 | 
					 | 
				
			||||||
    "config_path": "",
 | 
					 | 
				
			||||||
    "description": "A free and open source manga reader server that runs extensions built for Mihon (Tachiyomi).",
 | 
					 | 
				
			||||||
    "install_methods": [
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "type": "default",
 | 
					 | 
				
			||||||
            "script": "ct/suwayomiserver.sh",
 | 
					 | 
				
			||||||
            "resources": {
 | 
					 | 
				
			||||||
                "cpu": 1,
 | 
					 | 
				
			||||||
                "ram": 1024,
 | 
					 | 
				
			||||||
                "hdd": 4,
 | 
					 | 
				
			||||||
                "os": "debian",
 | 
					 | 
				
			||||||
                "version": "12"
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "default_credentials": {
 | 
					 | 
				
			||||||
        "username": null,
 | 
					 | 
				
			||||||
        "password": null
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "notes": [
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "text": "This application is conflicting with Kaspersky products. You need to disable Kaspersky in order to use this application.",
 | 
					 | 
				
			||||||
            "type": "info"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -25,6 +25,17 @@
 | 
				
			|||||||
                "os": "debian",
 | 
					                "os": "debian",
 | 
				
			||||||
                "version": "12"
 | 
					                "version": "12"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "type": "alpine",
 | 
				
			||||||
 | 
					            "script": "ct/alpine-traefik.sh",
 | 
				
			||||||
 | 
					            "resources": {
 | 
				
			||||||
 | 
					                "cpu": 1,
 | 
				
			||||||
 | 
					                "ram": 512,
 | 
				
			||||||
 | 
					                "hdd": 1,
 | 
				
			||||||
 | 
					                "os": "alpine",
 | 
				
			||||||
 | 
					                "version": "3.21"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
    "default_credentials": {
 | 
					    "default_credentials": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,15 +4,15 @@
 | 
				
			|||||||
  "categories": [
 | 
					  "categories": [
 | 
				
			||||||
    11
 | 
					    11
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
    "date_created": "2024-05-02",
 | 
					  "date_created": "2025-05-02",
 | 
				
			||||||
  "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
    "updateable": false,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": 9091,
 | 
					  "interface_port": 9091,
 | 
				
			||||||
    "documentation": null,
 | 
					  "documentation": "https://github.com/transmission/transmission/blob/main/docs/README.md",
 | 
				
			||||||
  "website": "https://transmissionbt.com/",
 | 
					  "website": "https://transmissionbt.com/",
 | 
				
			||||||
  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/transmission.svg",
 | 
					  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/transmission.svg",
 | 
				
			||||||
    "config_path": "/etc/transmission-daemon/settings.json",
 | 
					  "config_path": "Debian `/etc/transmission-daemon/settings.json` | Alpine `/var/lib/transmission/config/settings.json`",
 | 
				
			||||||
  "description": "Transmission is a free, open-source BitTorrent client known for its fast download speeds and ease of use. It supports various platforms such as Windows, Linux, and macOS and has features like web interface, peer exchange, and encrypted transfers.",
 | 
					  "description": "Transmission is a free, open-source BitTorrent client known for its fast download speeds and ease of use. It supports various platforms such as Windows, Linux, and macOS and has features like web interface, peer exchange, and encrypted transfers.",
 | 
				
			||||||
  "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -25,11 +25,31 @@
 | 
				
			|||||||
        "os": "debian",
 | 
					        "os": "debian",
 | 
				
			||||||
        "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "alpine",
 | 
				
			||||||
 | 
					      "script": "ct/alpine-transmission.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 256,
 | 
				
			||||||
 | 
					        "hdd": 1,
 | 
				
			||||||
 | 
					        "os": "alpine",
 | 
				
			||||||
 | 
					        "version": "3.21"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "default_credentials": {
 | 
					  "default_credentials": {
 | 
				
			||||||
        "username": "transmission",
 | 
					    "username": null,
 | 
				
			||||||
        "password": "transmission"
 | 
					    "password": null
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
    "notes": []
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "info",
 | 
				
			||||||
 | 
					      "text": "Script disables whitelisting by default. Change config to suit your needs."
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "info",
 | 
				
			||||||
 | 
					      "text": "Alpine script sets initial disk size to 1GB. Please adjust for your needs after installation ends."
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@
 | 
				
			|||||||
  "updateable": true,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": 8000,
 | 
					  "interface_port": 8000,
 | 
				
			||||||
    "documentation": null,
 | 
					  "documentation": "https://github.com/dani-garcia/vaultwarden/wiki",
 | 
				
			||||||
  "website": "https://github.com/dani-garcia/vaultwarden/",
 | 
					  "website": "https://github.com/dani-garcia/vaultwarden/",
 | 
				
			||||||
  "logo": "https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/resources/vaultwarden-icon-white.svg",
 | 
					  "logo": "https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/resources/vaultwarden-icon-white.svg",
 | 
				
			||||||
  "config_path": "/opt/vaultwarden/.env",
 | 
					  "config_path": "/opt/vaultwarden/.env",
 | 
				
			||||||
@@ -44,7 +44,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "notes": [
 | 
					  "notes": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
            "text": "Vaultwarden needs to be behind a proxy (Nginx Proxy Manager, Caddy, etc) to obtain HTTPS and to allow clients to connect. If you try to open the web page directly on the new container, the web site will not load",
 | 
					      "text": "Application uses self-signed certificate for HTTPS to work and is enabled by default. If you need a different setup, please read the documentation.",
 | 
				
			||||||
      "type": "warning"
 | 
					      "type": "warning"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -53,4 +53,3 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -16,7 +16,10 @@ import React from "react";
 | 
				
			|||||||
import { Badge } from "./ui/badge";
 | 
					import { Badge } from "./ui/badge";
 | 
				
			||||||
import { Button } from "./ui/button";
 | 
					import { Button } from "./ui/button";
 | 
				
			||||||
import { DialogTitle } from "./ui/dialog";
 | 
					import { DialogTitle } from "./ui/dialog";
 | 
				
			||||||
import { Sparkles } from "lucide-react"; // <- Hinzugefügt
 | 
					import { Sparkles } from "lucide-react";
 | 
				
			||||||
 | 
					import { TooltipContent, TooltipProvider } from "./ui/tooltip";
 | 
				
			||||||
 | 
					import { TooltipTrigger } from "./ui/tooltip";
 | 
				
			||||||
 | 
					import { Tooltip } from "./ui/tooltip";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const formattedBadge = (type: string) => {
 | 
					export const formattedBadge = (type: string) => {
 | 
				
			||||||
  switch (type) {
 | 
					  switch (type) {
 | 
				
			||||||
@@ -111,16 +114,19 @@ export default function CommandMenu() {
 | 
				
			|||||||
          </kbd>
 | 
					          </kbd>
 | 
				
			||||||
        </Button>
 | 
					        </Button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <Button
 | 
					        <TooltipProvider>
 | 
				
			||||||
          variant="outline"
 | 
					          <Tooltip delayDuration={100}>
 | 
				
			||||||
          size="icon"
 | 
					            <TooltipTrigger asChild>
 | 
				
			||||||
          onClick={openRandomScript}
 | 
					              <Button variant="outline" size="icon" onClick={openRandomScript} disabled={isLoading} className="hidden lg:flex">
 | 
				
			||||||
          title="Open random script"
 | 
					                <Sparkles className="size-4" />
 | 
				
			||||||
          disabled={isLoading}
 | 
					                <span className="sr-only">Open Random Script</span>
 | 
				
			||||||
          className="h-9 w-9"
 | 
					 | 
				
			||||||
        >
 | 
					 | 
				
			||||||
          <Sparkles className="h-5 w-5" />
 | 
					 | 
				
			||||||
              </Button>
 | 
					              </Button>
 | 
				
			||||||
 | 
					            </TooltipTrigger>
 | 
				
			||||||
 | 
					            <TooltipContent>
 | 
				
			||||||
 | 
					              <p>Open Random Script</p>
 | 
				
			||||||
 | 
					            </TooltipContent>
 | 
				
			||||||
 | 
					          </Tooltip>
 | 
				
			||||||
 | 
					        </TooltipProvider>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <CommandDialog open={open} onOpenChange={setOpen}>
 | 
					      <CommandDialog open={open} onOpenChange={setOpen}>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,8 +41,8 @@ export default function CodeCopyButton({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  return (
 | 
					  return (
 | 
				
			||||||
    <div className="mt-4 flex">
 | 
					    <div className="mt-4 flex">
 | 
				
			||||||
      <Card className="flex items-center overflow-x-auto bg-primary-foreground pl-4">
 | 
					      <Card className="flex items-center overflow-x-auto bg-primary-foreground pl-4 [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/20">
 | 
				
			||||||
        <div className="overflow-x-auto whitespace-pre-wrap text-nowrap break-all pr-4 text-sm">
 | 
					        <div className="overflow-x-auto whitespace-pre-wrap text-nowrap break-all pr-4 text-sm [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/20">
 | 
				
			||||||
          {!isMobile && children ? children : "Copy install command"}
 | 
					          {!isMobile && children ? children : "Copy install command"}
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <button
 | 
					        <button
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,4 +34,9 @@ export const FAQ_Items = [
 | 
				
			|||||||
    content:
 | 
					    content:
 | 
				
			||||||
      "If an LXC script fails, run it again using Verbose mode. Standard mode hides detailed output for neatness, showing only progress. Verbose mode displays all messages, which helps you (and us) diagnose the error. Include this verbose output if you report the issue.",
 | 
					      "If an LXC script fails, run it again using Verbose mode. Standard mode hides detailed output for neatness, showing only progress. Verbose mode displays all messages, which helps you (and us) diagnose the error. Include this verbose output if you report the issue.",
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    title: "What does \"Updatable\" and \"Not updatable\" mean?",
 | 
				
			||||||
 | 
					    content:
 | 
				
			||||||
 | 
					      "Updatable means that script has a function that is used to update the installed application to the latest version available. Not updatable means that script doesn't have a function that can safely update the application to the latest version available, so only the LXC OS is updated.",
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										96
									
								
								install/actualbudget-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								install/actualbudget-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,96 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://actualbudget.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					verb_ip6
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					setting_up_container
 | 
				
			||||||
 | 
					network_check
 | 
				
			||||||
 | 
					update_os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing Dependencies"
 | 
				
			||||||
 | 
					$STD apt-get install -y \
 | 
				
			||||||
 | 
					  make
 | 
				
			||||||
 | 
					msg_ok "Installed Dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing Actual Budget"
 | 
				
			||||||
 | 
					cd /opt
 | 
				
			||||||
 | 
					RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					NODE_VERSION="22"
 | 
				
			||||||
 | 
					install_node_and_modules
 | 
				
			||||||
 | 
					mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
 | 
				
			||||||
 | 
					chown -R root:root /opt/actualbudget-data
 | 
				
			||||||
 | 
					chmod -R 755 /opt/actualbudget-data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat <<EOF >/opt/actualbudget-data/config.json
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "port": 5006,
 | 
				
			||||||
 | 
					  "hostname": "::",
 | 
				
			||||||
 | 
					  "serverFiles": "/opt/actualbudget-data/server-files",
 | 
				
			||||||
 | 
					  "userFiles": "/opt/actualbudget-data/user-files",
 | 
				
			||||||
 | 
					  "trustedProxies": [
 | 
				
			||||||
 | 
					    "10.0.0.0/8",
 | 
				
			||||||
 | 
					    "172.16.0.0/12",
 | 
				
			||||||
 | 
					    "192.168.0.0/16",
 | 
				
			||||||
 | 
					    "127.0.0.0/8",
 | 
				
			||||||
 | 
					    "::1/128",
 | 
				
			||||||
 | 
					    "fc00::/7"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "https": {
 | 
				
			||||||
 | 
					    "key": "/opt/actualbudget/selfhost.key",
 | 
				
			||||||
 | 
					    "cert": "/opt/actualbudget/selfhost.crt"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mkdir -p /opt/actualbudget
 | 
				
			||||||
 | 
					cd /opt/actualbudget
 | 
				
			||||||
 | 
					$STD npm install --location=global @actual-app/sync-server
 | 
				
			||||||
 | 
					$STD openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfhost.key -out selfhost.crt <<EOF
 | 
				
			||||||
 | 
					US
 | 
				
			||||||
 | 
					California
 | 
				
			||||||
 | 
					San Francisco
 | 
				
			||||||
 | 
					My Organization
 | 
				
			||||||
 | 
					My Unit
 | 
				
			||||||
 | 
					localhost
 | 
				
			||||||
 | 
					myemail@example.com
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					echo "${RELEASE}" >"/opt/actualbudget_version.txt"
 | 
				
			||||||
 | 
					msg_ok "Installed Actual Budget"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Creating Service"
 | 
				
			||||||
 | 
					cat <<EOF >/etc/systemd/system/actualbudget.service
 | 
				
			||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Actual Budget Service
 | 
				
			||||||
 | 
					After=network.target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					Type=simple
 | 
				
			||||||
 | 
					User=root
 | 
				
			||||||
 | 
					Group=root
 | 
				
			||||||
 | 
					WorkingDirectory=/opt/actualbudget
 | 
				
			||||||
 | 
					Environment=ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB=20
 | 
				
			||||||
 | 
					Environment=ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB=50
 | 
				
			||||||
 | 
					Environment=ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB=20
 | 
				
			||||||
 | 
					ExecStart=/usr/bin/actual-server --config /opt/actualbudget-data/config.json
 | 
				
			||||||
 | 
					Restart=always
 | 
				
			||||||
 | 
					RestartSec=10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					systemctl enable -q --now actualbudget
 | 
				
			||||||
 | 
					msg_ok "Created Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					motd_ssh
 | 
				
			||||||
 | 
					customize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Cleaning up"
 | 
				
			||||||
 | 
					$STD apt-get -y autoremove
 | 
				
			||||||
 | 
					$STD apt-get -y autoclean
 | 
				
			||||||
 | 
					msg_ok "Cleaned"
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user