mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			165 Commits
		
	
	
		
			2025-03-02
			...
			2025-03-15
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					db3ab3c7f9 | ||
| 
						 | 
					0b014d25be | ||
| 
						 | 
					0a9eb5078a | ||
| 
						 | 
					46016dc3da | ||
| 
						 | 
					f9c7717719 | ||
| 
						 | 
					ea05730868 | ||
| 
						 | 
					077e49c5c9 | ||
| 
						 | 
					4cc1ab728c | ||
| 
						 | 
					66c4d0e03f | ||
| 
						 | 
					b95e6ec9cf | ||
| 
						 | 
					936a526de3 | ||
| 
						 | 
					72b35646bb | ||
| 
						 | 
					e10574e724 | ||
| 
						 | 
					57b5852f91 | ||
| 
						 | 
					b774ad37c1 | ||
| 
						 | 
					efd5f1944b | ||
| 
						 | 
					bad18f77cb | ||
| 
						 | 
					09cca74147 | ||
| 
						 | 
					c59c796774 | ||
| 
						 | 
					0dc526af08 | ||
| 
						 | 
					127390c917 | ||
| 
						 | 
					d1528d4ba7 | ||
| 
						 | 
					6953a7779b | ||
| 
						 | 
					7aebd12d87 | ||
| 
						 | 
					a426e80b83 | ||
| 
						 | 
					ed93923672 | ||
| 
						 | 
					41ee6adab2 | ||
| 
						 | 
					3dbce17fc3 | ||
| 
						 | 
					4646e10382 | ||
| 
						 | 
					c895fb7809 | ||
| 
						 | 
					540d80a21c | ||
| 
						 | 
					9ad4dcf8d0 | ||
| 
						 | 
					91bfe2442c | ||
| 
						 | 
					f4afe5be9e | ||
| 
						 | 
					fe956f650d | ||
| 
						 | 
					3dd67e46c2 | ||
| 
						 | 
					6de4a8107c | ||
| 
						 | 
					f6a6ca5e26 | ||
| 
						 | 
					7f796478f3 | ||
| 
						 | 
					d72d742fbb | ||
| 
						 | 
					d5f5f1e5de | ||
| 
						 | 
					31d80c3461 | ||
| 
						 | 
					68936f0edd | ||
| 
						 | 
					5ce76f0a3a | ||
| 
						 | 
					48c20bbd6d | ||
| 
						 | 
					05266b2849 | ||
| 
						 | 
					293a220719 | ||
| 
						 | 
					a0f7643838 | ||
| 
						 | 
					96c943a7de | ||
| 
						 | 
					57350a8324 | ||
| 
						 | 
					9953d8d662 | ||
| 
						 | 
					35efc4ed8a | ||
| 
						 | 
					de001f5022 | ||
| 
						 | 
					c737473f8b | ||
| 
						 | 
					a9db3283dd | ||
| 
						 | 
					77fbf68a43 | ||
| 
						 | 
					04a473b4a8 | ||
| 
						 | 
					49d7d4a106 | ||
| 
						 | 
					4b638e93be | ||
| 
						 | 
					e508fb101f | ||
| 
						 | 
					2c73cd7cf7 | ||
| 
						 | 
					da94a2c6bc | ||
| 
						 | 
					1de7e428cd | ||
| 
						 | 
					60994b6851 | ||
| 
						 | 
					30e14a157f | ||
| 
						 | 
					ff30e03e88 | ||
| 
						 | 
					88c952c1b4 | ||
| 
						 | 
					8441e65000 | ||
| 
						 | 
					d4ac4809c0 | ||
| 
						 | 
					824e091a67 | ||
| 
						 | 
					cc0ce1a756 | ||
| 
						 | 
					e5b39e6671 | ||
| 
						 | 
					6ad1ea004f | ||
| 
						 | 
					a640814ae0 | ||
| 
						 | 
					89962b01fa | ||
| 
						 | 
					b0a06bdc5f | ||
| 
						 | 
					54fc60b60e | ||
| 
						 | 
					830634517b | ||
| 
						 | 
					f99fd28fe6 | ||
| 
						 | 
					70f96e3bfd | ||
| 
						 | 
					a56bbba2bd | ||
| 
						 | 
					9f0945394f | ||
| 
						 | 
					c9dec5e3cd | ||
| 
						 | 
					6e8dd730ad | ||
| 
						 | 
					0fdab8c0b4 | ||
| 
						 | 
					24af87ae08 | ||
| 
						 | 
					175150d928 | ||
| 
						 | 
					50963e0fa1 | ||
| 
						 | 
					e0f65118a4 | ||
| 
						 | 
					c48111496c | ||
| 
						 | 
					2630c46c24 | ||
| 
						 | 
					4a41b24386 | ||
| 
						 | 
					f3d59531c1 | ||
| 
						 | 
					4a67ba0a88 | ||
| 
						 | 
					d19d535873 | ||
| 
						 | 
					2fd035582a | ||
| 
						 | 
					c057e14daf | ||
| 
						 | 
					06771873f3 | ||
| 
						 | 
					ee008c7db4 | ||
| 
						 | 
					b4874d9705 | ||
| 
						 | 
					06fc4209a7 | ||
| 
						 | 
					9d46a6d133 | ||
| 
						 | 
					bbbbd3cb5f | ||
| 
						 | 
					5db4a93697 | ||
| 
						 | 
					dc7529dc8e | ||
| 
						 | 
					301ea36264 | ||
| 
						 | 
					fc26badfdb | ||
| 
						 | 
					0ded79b785 | ||
| 
						 | 
					83a79dcb6d | ||
| 
						 | 
					c98e92b034 | ||
| 
						 | 
					c8dd6b1af1 | ||
| 
						 | 
					7ee0c9cc78 | ||
| 
						 | 
					648e452f8b | ||
| 
						 | 
					8e3177135f | ||
| 
						 | 
					7352cbc220 | ||
| 
						 | 
					3dd87d8989 | ||
| 
						 | 
					4a3192b704 | ||
| 
						 | 
					7cbb8947ff | ||
| 
						 | 
					482ad0444c | ||
| 
						 | 
					a3da545905 | ||
| 
						 | 
					043baf299a | ||
| 
						 | 
					cf2f7a9af5 | ||
| 
						 | 
					204219a477 | ||
| 
						 | 
					f7101c6aec | ||
| 
						 | 
					d8f104e765 | ||
| 
						 | 
					52e8568bdb | ||
| 
						 | 
					ab94ff3cdc | ||
| 
						 | 
					4bee83a981 | ||
| 
						 | 
					4359f23e63 | ||
| 
						 | 
					b7968becc3 | ||
| 
						 | 
					cc9075a14b | ||
| 
						 | 
					bc06ad4226 | ||
| 
						 | 
					183c829917 | ||
| 
						 | 
					266eee3029 | ||
| 
						 | 
					80631f5152 | ||
| 
						 | 
					3b965e7431 | ||
| 
						 | 
					a6c99568aa | ||
| 
						 | 
					c5639ca45b | ||
| 
						 | 
					46605615c0 | ||
| 
						 | 
					1950fba34b | ||
| 
						 | 
					02e694afc5 | ||
| 
						 | 
					18534b73be | ||
| 
						 | 
					430e2c27f2 | ||
| 
						 | 
					e623eb4197 | ||
| 
						 | 
					5f805ba414 | ||
| 
						 | 
					ba00f1d302 | ||
| 
						 | 
					367dc0d78f | ||
| 
						 | 
					48a824de07 | ||
| 
						 | 
					6c5200d0a1 | ||
| 
						 | 
					712ff6f5cc | ||
| 
						 | 
					f80bc3c09a | ||
| 
						 | 
					7c5efad1ca | ||
| 
						 | 
					d0edd224ca | ||
| 
						 | 
					6c5ef63375 | ||
| 
						 | 
					402420e159 | ||
| 
						 | 
					af302d62f3 | ||
| 
						 | 
					bedb908682 | ||
| 
						 | 
					9bf30de4cb | ||
| 
						 | 
					9302e2e27d | ||
| 
						 | 
					6ab8815b3b | ||
| 
						 | 
					4baae014ab | ||
| 
						 | 
					d000c35ff5 | ||
| 
						 | 
					9570c9199a | ||
| 
						 | 
					705ad208d7 | ||
| 
						 | 
					6e3367c4e7 | 
							
								
								
									
										29
									
								
								.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md
									
									
									
									
										vendored
									
									
								
							@@ -40,7 +40,7 @@ Before contributing, please ensure that you have the following setup:
 | 
			
		||||
   - [Shell Format](https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format)
 | 
			
		||||
 | 
			
		||||
### Important Notes
 | 
			
		||||
- Use [AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh) and [AppName-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh) as templates when creating new scripts.
 | 
			
		||||
- Use [AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh) and [AppName-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh) as templates when creating new scripts. Final version of the script (the one you will push for review), must have all comments removed, except the ones in the file header.
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
@@ -66,6 +66,12 @@ Start with the [template script](https://github.com/community-scripts/ProxmoxVE/
 | 
			
		||||
 | 
			
		||||
## 🤝 Contribution Process
 | 
			
		||||
 | 
			
		||||
All PR's related to new scripts should be made against our Dev repository first, where we can test the scripts before they are pushed and merged in the official repository.
 | 
			
		||||
 | 
			
		||||
**Our Dev repo is `http://www.github.com/community-scripts/ProxmoxVED`**
 | 
			
		||||
 | 
			
		||||
You will need to adjust paths mentioned further down this document to match the repo you're pushing the scripts to.
 | 
			
		||||
 | 
			
		||||
### 1. Fork the repository
 | 
			
		||||
Fork to your GitHub account
 | 
			
		||||
 | 
			
		||||
@@ -80,7 +86,24 @@ git switch -c your-feature-branch
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 4. Change paths in build.func install.func and AppName.sh
 | 
			
		||||
To be able to develop from your own branch you need to change `https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main` to `https://raw.githubusercontent.com/[USER]/[REPOSITORY]/refs/heads/[BRANCH]`. You need to make this change atleast in misc/build.func misc/install.func and in your ct/AppName.sh. This change is only for testing. Before opening a Pull Request you should change this line change all this back to point to `https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main`.
 | 
			
		||||
To be able to develop from your own branch you need to change:\
 | 
			
		||||
`https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main`\
 | 
			
		||||
to\
 | 
			
		||||
`https://raw.githubusercontent.com/[USER]/[REPOSITORY]/refs/heads/[BRANCH]`\
 | 
			
		||||
 in following files:
 | 
			
		||||
 | 
			
		||||
`misc/build.func`\
 | 
			
		||||
`misc/install.func`\
 | 
			
		||||
`ct/AppName.sh`
 | 
			
		||||
 | 
			
		||||
Example: `https://raw.githubusercontent.com/tremor021/PromoxVE/refs/heads/testbranch`
 | 
			
		||||
 | 
			
		||||
Also you need to change:\
 | 
			
		||||
`https://github.com/community-scripts/ProxmoxVE/raw/main`\
 | 
			
		||||
to\
 | 
			
		||||
`https://github.com/[USER]/[REPOSITORY]/raw/[BRANCH]`\
 | 
			
		||||
in `misc/install.func` in order for `update` shell command to work.\
 | 
			
		||||
These changes are only while writing and testing your scripts. Before opening a Pull Request, you should change all above mentioned paths in `misc/build.func`, `misc/install.func` and `ct/AppName.sh` to point to the original paths.
 | 
			
		||||
 | 
			
		||||
### 4. Commit changes (without build.func and install.func!)
 | 
			
		||||
```bash
 | 
			
		||||
@@ -93,7 +116,7 @@ git push origin your-feature-branch
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 6. Create a Pull Request
 | 
			
		||||
Open a Pull Request from your feature branch to the main repository branch. You must only include your **$AppName.sh**, **$AppName-install.sh** and **$AppName.json** files in the pull request.
 | 
			
		||||
Open a Pull Request from your feature branch to the main branch on the Dev repository. You must only include your **$AppName.sh**, **$AppName-install.sh** and **$AppName.json** files in the pull request.
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md
									
									
									
									
										vendored
									
									
								
							@@ -75,6 +75,7 @@ Example:
 | 
			
		||||
>
 | 
			
		||||
> - Add your username and source URL
 | 
			
		||||
> - For existing scripts, add "| Co-Author [YourUserName]" after the current author
 | 
			
		||||
> - Source is a URL of github repo containting source files of the application you're installing (not URL of your homepage or a blog)
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
@@ -95,7 +96,7 @@ Example:
 | 
			
		||||
>| Variable | Description | Notes |
 | 
			
		||||
>|----------|-------------|-------|
 | 
			
		||||
>| `APP` | Application name | Must match ct\AppName.sh |
 | 
			
		||||
>| `var_tags` | Proxmox display tags without Spaces, only ; | Limit the number |  
 | 
			
		||||
>| `var_tags` | Proxmox display tags without Spaces, only ; | Limit the number to 2 |  
 | 
			
		||||
>| `var_cpu` | CPU cores | Number of cores |
 | 
			
		||||
>| `var_ram` | RAM | In MB |
 | 
			
		||||
>| `var_disk` | Disk capacity | In GB |
 | 
			
		||||
 
 | 
			
		||||
@@ -67,6 +67,7 @@ Example:
 | 
			
		||||
>
 | 
			
		||||
> - Add your username
 | 
			
		||||
> - When updating/reworking scripts, add "| Co-Author [YourUserName]"
 | 
			
		||||
> - Source is a URL of github repo containting source files of the application you're installing (not URL of your homepage or a blog)
 | 
			
		||||
 | 
			
		||||
### 1.3 **Variables and function import**
 | 
			
		||||
 | 
			
		||||
@@ -177,6 +178,7 @@ echo "${RELEASE}" >"/opt/AppName_version.txt"
 | 
			
		||||
- Use standard functions like `msg_info`, `msg_ok` or `msg_error` to print status messages.
 | 
			
		||||
- Each `msg_info` must be followed with a `msg_ok` before any other output is made.
 | 
			
		||||
- Display meaningful progress messages at key stages.
 | 
			
		||||
- Taking user input with `read -p` must be outside of `msg_info`...`msg_ok` code block
 | 
			
		||||
 | 
			
		||||
Example:
 | 
			
		||||
 | 
			
		||||
@@ -184,6 +186,8 @@ Example:
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y ...
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
read -p "Do you wish to enable HTTPS mode? (y/N): " httpschoice
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 6.2 **Verbosity**
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							@@ -16,9 +16,9 @@ jobs:
 | 
			
		||||
      - name: Checkout repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Install minimatch
 | 
			
		||||
      - name: Install dependencies
 | 
			
		||||
        run: npm install minimatch
 | 
			
		||||
 | 
			
		||||
      
 | 
			
		||||
      - name: Label PR based on file changes and PR template
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
@@ -61,21 +61,26 @@ jobs:
 | 
			
		||||
                labelsToAdd.add(label);
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            const templateLabelMappings = {
 | 
			
		||||
              "🐞 **Bug fix**": "bugfix",
 | 
			
		||||
              "✨ **New feature**": "feature",
 | 
			
		||||
              "💥 **Breaking change**": "breaking change",
 | 
			
		||||
            };
 | 
			
		||||
            
 | 
			
		||||
            for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
 | 
			
		||||
              const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
 | 
			
		||||
              const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i");
 | 
			
		||||
              const match = prBody.match(regex);              
 | 
			
		||||
              if (match) {
 | 
			
		||||
                console.log(`Match: ${match}`);
 | 
			
		||||
                labelsToAdd.add(label);
 | 
			
		||||
            //if two labels or more are added, return
 | 
			
		||||
              if (labelsToAdd.size < 2) {
 | 
			
		||||
                const templateLabelMappings = {
 | 
			
		||||
                "🐞 **Bug fix**": "bugfix",
 | 
			
		||||
                "✨ **New feature**": "feature",
 | 
			
		||||
                "💥 **Breaking change**": "breaking change",
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
              for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
 | 
			
		||||
                const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
 | 
			
		||||
                const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i");
 | 
			
		||||
                const match = prBody.match(regex);              
 | 
			
		||||
                if (match) {
 | 
			
		||||
                  console.log(`Match: ${match}`);
 | 
			
		||||
                  labelsToAdd.add(label);
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            
 | 
			
		||||
            console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										58
									
								
								.github/workflows/close_issue_in_dev.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								.github/workflows/close_issue_in_dev.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
name: Close Matching Issue on PR Merge
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    types:
 | 
			
		||||
      - closed
 | 
			
		||||
jobs:
 | 
			
		||||
  close_issue:
 | 
			
		||||
    if: github.event.pull_request.merged == true
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    
 | 
			
		||||
    steps:        
 | 
			
		||||
      - name: Extract and Process PR Title
 | 
			
		||||
        id: extract_title
 | 
			
		||||
        run: |
 | 
			
		||||
          title=$(echo "${{ github.event.pull_request.title }}" | sed 's/^New Script://g' | tr '[:upper:]' '[:lower:]' | sed 's/ //g' | sed 's/-//g')
 | 
			
		||||
          echo "Processed Title: $title"
 | 
			
		||||
          echo "title=$title" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
      - name: Search for Issues with Similar Titles
 | 
			
		||||
        id: find_issue
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        run: |
 | 
			
		||||
          issues=$(gh issue list --repo community-scripts/ProxmoxVED --json number,title --jq '.[] | {number, title}')
 | 
			
		||||
          
 | 
			
		||||
          best_match_score=0
 | 
			
		||||
          best_match_number=0
 | 
			
		||||
          
 | 
			
		||||
          for issue in $(echo "$issues" | jq -r '. | @base64'); do
 | 
			
		||||
            _jq() {
 | 
			
		||||
              echo ${issue} | base64 --decode | jq -r ${1}
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            issue_title=$(_jq '.title' | tr '[:upper:]' '[:lower:]' | sed 's/ //g' | sed 's/-//g')
 | 
			
		||||
            issue_number=$(_jq '.number')
 | 
			
		||||
 | 
			
		||||
            match_score=$(echo "$title" | grep -o "$issue_title" | wc -l)
 | 
			
		||||
            
 | 
			
		||||
            if [ "$match_score" -gt "$best_match_score" ]; then
 | 
			
		||||
              best_match_score=$match_score
 | 
			
		||||
              best_match_number=$issue_number
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
          if [ "$best_match_number" != "0" ]; then
 | 
			
		||||
            echo "issue_number=$best_match_number" >> $GITHUB_ENV
 | 
			
		||||
          else
 | 
			
		||||
            echo "No matching issue found."
 | 
			
		||||
            exit 0
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Comment on the Best-Matching Issue and Close It
 | 
			
		||||
        if: env.issue_number != ''
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.PAT_MICHEL }}
 | 
			
		||||
        run: |
 | 
			
		||||
          gh issue comment $issue_number --repo community-scripts/ProxmoxVED --body "Merged with #${{ github.event.pull_request.number }} in ProxmoxVE"
 | 
			
		||||
          gh issue close $issue_number --repo community-scripts/ProxmoxVED
 | 
			
		||||
							
								
								
									
										39
									
								
								.github/workflows/github-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										39
									
								
								.github/workflows/github-release.yml
									
									
									
									
										vendored
									
									
								
							@@ -4,7 +4,7 @@ on:
 | 
			
		||||
  schedule:
 | 
			
		||||
    - cron: '1 0 * * *'  # Runs daily at 00:01 UTC
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
jobs:
 | 
			
		||||
  create-daily-release:
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
@@ -14,44 +14,33 @@ jobs:
 | 
			
		||||
      - name: Checkout repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Extract first 5000 characters from CHANGELOG.md
 | 
			
		||||
        run: head -c 5000 CHANGELOG.md > changelog_cropped.md
 | 
			
		||||
      - name: Clean CHANGELOG (remove HTML header)
 | 
			
		||||
        run: sed -n '/^## /,$p' CHANGELOG.md > changelog_cleaned.md
 | 
			
		||||
 | 
			
		||||
      - name: Debugging - Show extracted changelog
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "=== CHANGELOG EXCERPT ==="
 | 
			
		||||
          cat changelog_cropped.md
 | 
			
		||||
          echo "========================="
 | 
			
		||||
 | 
			
		||||
      - name: Parse CHANGELOG.md and create release
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
      - name: Extract relevant changelog section
 | 
			
		||||
        run: |
 | 
			
		||||
          YESTERDAY=$(date -u --date="yesterday" +%Y-%m-%d)
 | 
			
		||||
          echo "Checking for changes on: $YESTERDAY"
 | 
			
		||||
 | 
			
		||||
          # Ensure yesterday's date exists in the changelog
 | 
			
		||||
          if ! grep -q "## $YESTERDAY" changelog_cropped.md; then
 | 
			
		||||
            echo "No entry found for $YESTERDAY, skipping release."
 | 
			
		||||
            exit 0
 | 
			
		||||
          fi
 | 
			
		||||
          # Extract the section from "## $YESTERDAY" until the next "## YYYY-MM-DD"
 | 
			
		||||
          sed -n "/^## $YESTERDAY/,/^## [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/p" changelog_cleaned.md | head -n -1 > changelog_tmp_full.md
 | 
			
		||||
 | 
			
		||||
          # Extract section for yesterday's date
 | 
			
		||||
          awk -v date="## $YESTERDAY" '
 | 
			
		||||
            $0 ~ date {found=1; next} 
 | 
			
		||||
            found && /^## [0-9]{4}-[0-9]{2}-[0-9]{2}/ {exit} 
 | 
			
		||||
            found
 | 
			
		||||
          ' changelog_cropped.md > changelog_tmp.md
 | 
			
		||||
          # Truncate the extracted section to 5000 characters
 | 
			
		||||
          head -c 5000 changelog_tmp_full.md > changelog_tmp.md
 | 
			
		||||
 | 
			
		||||
          echo "=== Extracted Changelog ==="
 | 
			
		||||
          cat changelog_tmp.md
 | 
			
		||||
          echo "==========================="
 | 
			
		||||
 | 
			
		||||
          # Skip if no content was found
 | 
			
		||||
          # Abort if no content was found
 | 
			
		||||
          if [ ! -s changelog_tmp.md ]; then
 | 
			
		||||
            echo "No changes found for $YESTERDAY, skipping release."
 | 
			
		||||
            exit 0
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
          # Create GitHub release
 | 
			
		||||
      - name: Create GitHub release
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        run: |
 | 
			
		||||
          YESTERDAY=$(date -u --date="yesterday" +%Y-%m-%d)
 | 
			
		||||
          gh release create "$YESTERDAY" -t "$YESTERDAY" -F changelog_tmp.md
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										271
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										271
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -14,6 +14,277 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
 | 
			
		||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 2025-03-15
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - Homepage: Bugfix for v1.0.0 [@vhsdream](https://github.com/vhsdream) ([#3092](https://github.com/community-scripts/ProxmoxVE/pull/3092))
 | 
			
		||||
 | 
			
		||||
## 2025-03-14
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Memos: Increase RAM Usage and max space [@MickLesk](https://github.com/MickLesk) ([#3072](https://github.com/community-scripts/ProxmoxVE/pull/3072))
 | 
			
		||||
- Seafile - Minor bug fix: domain.sh script fix [@dave-yap](https://github.com/dave-yap) ([#3046](https://github.com/community-scripts/ProxmoxVE/pull/3046))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - openwrt: fix typo netmask [@qzydustin](https://github.com/qzydustin) ([#3084](https://github.com/community-scripts/ProxmoxVE/pull/3084))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - NPMplus: Add info about docker use. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3085](https://github.com/community-scripts/ProxmoxVE/pull/3085))
 | 
			
		||||
 | 
			
		||||
## 2025-03-13
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - NPMplus [@MickLesk](https://github.com/MickLesk) ([#3051](https://github.com/community-scripts/ProxmoxVE/pull/3051))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - OpenWebUI check if there are stashed changes before poping [@tremor021](https://github.com/tremor021) ([#3064](https://github.com/community-scripts/ProxmoxVE/pull/3064))
 | 
			
		||||
    - Update Fluid Calendar for v1.2.0 [@vhsdream](https://github.com/vhsdream) ([#3053](https://github.com/community-scripts/ProxmoxVE/pull/3053))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - alpine-Install (core) add timezone (tz) check [@MickLesk](https://github.com/MickLesk) ([#3057](https://github.com/community-scripts/ProxmoxVE/pull/3057))
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - New Workflow: Close Issues in DEV Repo when new Script is merged [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3042](https://github.com/community-scripts/ProxmoxVE/pull/3042))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Bump @babel/runtime from 7.26.0 to 7.26.10 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#3044](https://github.com/community-scripts/ProxmoxVE/pull/3044))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Update Vaultwarden Source [@MickLesk](https://github.com/MickLesk) ([#3036](https://github.com/community-scripts/ProxmoxVE/pull/3036))
 | 
			
		||||
    - Website: Fix Alpine "undefined" Link [@MickLesk](https://github.com/MickLesk) ([#3048](https://github.com/community-scripts/ProxmoxVE/pull/3048))
 | 
			
		||||
 | 
			
		||||
## 2025-03-12
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Fluid Calendar [@vhsdream](https://github.com/vhsdream) ([#2869](https://github.com/community-scripts/ProxmoxVE/pull/2869))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Feature: Filebrowser: support now alpine [@MickLesk](https://github.com/MickLesk) ([#2997](https://github.com/community-scripts/ProxmoxVE/pull/2997))
 | 
			
		||||
 | 
			
		||||
## 2025-03-11
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Plant-it [@MickLesk](https://github.com/MickLesk) ([#3000](https://github.com/community-scripts/ProxmoxVE/pull/3000))
 | 
			
		||||
- Seafile [@dave-yap](https://github.com/dave-yap) ([#2987](https://github.com/community-scripts/ProxmoxVE/pull/2987))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Headscale: Re-enable Service after Update [@Cerothen](https://github.com/Cerothen) ([#3012](https://github.com/community-scripts/ProxmoxVE/pull/3012))
 | 
			
		||||
    - SnipeIT: Harmonize composer install to Project-Dockerfile [@MickLesk](https://github.com/MickLesk) ([#3009](https://github.com/community-scripts/ProxmoxVE/pull/3009))
 | 
			
		||||
    - Teddycloud: fix update function [@tremor021](https://github.com/tremor021) ([#2996](https://github.com/community-scripts/ProxmoxVE/pull/2996))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - Cleanup Old Project Files (figlet, app-header, images) [@MickLesk](https://github.com/MickLesk) ([#3004](https://github.com/community-scripts/ProxmoxVE/pull/3004))
 | 
			
		||||
    - Additions and amends to the CONTIRBUTOR docs [@tremor021](https://github.com/tremor021) ([#2983](https://github.com/community-scripts/ProxmoxVE/pull/2983))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Jellyseer not labeled as updateable even though update function exists [@tremor021](https://github.com/tremor021) ([#2991](https://github.com/community-scripts/ProxmoxVE/pull/2991))
 | 
			
		||||
    - Fix Website - Show correct wget path for alpine [@MickLesk](https://github.com/MickLesk) ([#2998](https://github.com/community-scripts/ProxmoxVE/pull/2998))
 | 
			
		||||
 | 
			
		||||
## 2025-03-10
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Paperless-GPT [@MickLesk](https://github.com/MickLesk) ([#2965](https://github.com/community-scripts/ProxmoxVE/pull/2965))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Rework SnipeIT: Tarball & Tempfile [@MickLesk](https://github.com/MickLesk) ([#2963](https://github.com/community-scripts/ProxmoxVE/pull/2963))
 | 
			
		||||
    - pihole: fix path when accessing pihole using `pct enter` [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2964](https://github.com/community-scripts/ProxmoxVE/pull/2964))
 | 
			
		||||
    - Hoarder: v0.23.0 dependency update [@vhsdream](https://github.com/vhsdream) ([#2958](https://github.com/community-scripts/ProxmoxVE/pull/2958))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - Update autolabeler.yml: Set Labels correctly [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2968](https://github.com/community-scripts/ProxmoxVE/pull/2968))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Add warnings about externaly sourced scripts [@tremor021](https://github.com/tremor021) ([#2975](https://github.com/community-scripts/ProxmoxVE/pull/2975))
 | 
			
		||||
 | 
			
		||||
## 2025-03-09
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Fix wikijs update issue while backing up data [@AdelRefaat](https://github.com/AdelRefaat) ([#2950](https://github.com/community-scripts/ProxmoxVE/pull/2950))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Improve Release-Action (awk function) [@MickLesk](https://github.com/MickLesk) ([#2934](https://github.com/community-scripts/ProxmoxVE/pull/2934))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Pi-hole interface port in documentation [@la7eralus](https://github.com/la7eralus) ([#2953](https://github.com/community-scripts/ProxmoxVE/pull/2953))
 | 
			
		||||
 | 
			
		||||
## 2025-03-08
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Update slug to lowercase in pf2etools.json  [@PhoenixEmik](https://github.com/PhoenixEmik) ([#2942](https://github.com/community-scripts/ProxmoxVE/pull/2942))
 | 
			
		||||
 | 
			
		||||
## 2025-03-07
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - JupyterNotebook: Fix APP Variable [@MickLesk](https://github.com/MickLesk) ([#2924](https://github.com/community-scripts/ProxmoxVE/pull/2924))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Beszel: restarting service after update [@C0pywriting](https://github.com/C0pywriting) ([#2915](https://github.com/community-scripts/ProxmoxVE/pull/2915))
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - ActualBudget: Update Script with new Repo [@MickLesk](https://github.com/MickLesk) ([#2907](https://github.com/community-scripts/ProxmoxVE/pull/2907))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Improve Nextcloud(pi) docu and Name to NextcloudPi [@MickLesk](https://github.com/MickLesk) ([#2930](https://github.com/community-scripts/ProxmoxVE/pull/2930))
 | 
			
		||||
    - fix jupyternotebook slug [@MickLesk](https://github.com/MickLesk) ([#2922](https://github.com/community-scripts/ProxmoxVE/pull/2922))
 | 
			
		||||
    - Improve Trilium Description and Name to TriliumNext [@MickLesk](https://github.com/MickLesk) ([#2929](https://github.com/community-scripts/ProxmoxVE/pull/2929))
 | 
			
		||||
    - Prowlarr icon [@bannert1337](https://github.com/bannert1337) ([#2906](https://github.com/community-scripts/ProxmoxVE/pull/2906))
 | 
			
		||||
    - Update Apache Tika icon to SVG [@bannert1337](https://github.com/bannert1337) ([#2904](https://github.com/community-scripts/ProxmoxVE/pull/2904))
 | 
			
		||||
    - Update Prometheus Alertmanager Icon [@bannert1337](https://github.com/bannert1337) ([#2905](https://github.com/community-scripts/ProxmoxVE/pull/2905))
 | 
			
		||||
 | 
			
		||||
## 2025-03-06
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - InvenTree [@tremor021](https://github.com/tremor021) ([#2890](https://github.com/community-scripts/ProxmoxVE/pull/2890))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Homarr: Optional Reboot after update [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2876](https://github.com/community-scripts/ProxmoxVE/pull/2876))
 | 
			
		||||
    - Fix Tag "community-scripts" for ArchLinux / OPNSense [@MickLesk](https://github.com/MickLesk) ([#2875](https://github.com/community-scripts/ProxmoxVE/pull/2875))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Wastebin: Update Script for Version 3.0.0 [@MickLesk](https://github.com/MickLesk) ([#2885](https://github.com/community-scripts/ProxmoxVE/pull/2885))
 | 
			
		||||
 | 
			
		||||
## 2025-03-05
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Kimai: Better Handling of Updates (backup var / env / yaml) [@MickLesk](https://github.com/MickLesk) ([#2862](https://github.com/community-scripts/ProxmoxVE/pull/2862))
 | 
			
		||||
    - Fix NextcloudPi-Installation [@MickLesk](https://github.com/MickLesk) ([#2853](https://github.com/community-scripts/ProxmoxVE/pull/2853))
 | 
			
		||||
 | 
			
		||||
## 2025-03-04
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Reveal.js [@tremor021](https://github.com/tremor021) ([#2806](https://github.com/community-scripts/ProxmoxVE/pull/2806))
 | 
			
		||||
- Apache Tomcat [@MickLesk](https://github.com/MickLesk) ([#2797](https://github.com/community-scripts/ProxmoxVE/pull/2797))
 | 
			
		||||
- Pterodactyl Wings [@bvdberg01](https://github.com/bvdberg01) ([#2800](https://github.com/community-scripts/ProxmoxVE/pull/2800))
 | 
			
		||||
- Pterodactyl Panel [@bvdberg01](https://github.com/bvdberg01) ([#2801](https://github.com/community-scripts/ProxmoxVE/pull/2801))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - reveal.js: Update function now backs up index and config [@tremor021](https://github.com/tremor021) ([#2845](https://github.com/community-scripts/ProxmoxVE/pull/2845))
 | 
			
		||||
    - Changedetection: Increase RAM & Disk-Space [@MickLesk](https://github.com/MickLesk) ([#2838](https://github.com/community-scripts/ProxmoxVE/pull/2838))
 | 
			
		||||
    - Linkwarden: Optimze RUST Installation [@MickLesk](https://github.com/MickLesk) ([#2817](https://github.com/community-scripts/ProxmoxVE/pull/2817))
 | 
			
		||||
    - Nginx: Fix $STD for tar [@MickLesk](https://github.com/MickLesk) ([#2813](https://github.com/community-scripts/ProxmoxVE/pull/2813))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Add source to install scripts and make license one line [@bvdberg01](https://github.com/bvdberg01) ([#2842](https://github.com/community-scripts/ProxmoxVE/pull/2842))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Better handling of create release [@MickLesk](https://github.com/MickLesk) ([#2818](https://github.com/community-scripts/ProxmoxVE/pull/2818))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Json file update [@bvdberg01](https://github.com/bvdberg01) ([#2824](https://github.com/community-scripts/ProxmoxVE/pull/2824))
 | 
			
		||||
    - Prometheus-paperless-ngx-exporter: Fix wrong Interface Port [@schneider-de-com](https://github.com/schneider-de-com) ([#2812](https://github.com/community-scripts/ProxmoxVE/pull/2812))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Feature: Update Icons (selfhst repo) [@bannert1337](https://github.com/bannert1337) ([#2834](https://github.com/community-scripts/ProxmoxVE/pull/2834))
 | 
			
		||||
    - Website: Add Mikrotik to Network too, OPNSense & OpenWRT to OS [@MickLesk](https://github.com/MickLesk) ([#2823](https://github.com/community-scripts/ProxmoxVE/pull/2823))
 | 
			
		||||
 | 
			
		||||
## 2025-03-03
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Habitica [@tremor021](https://github.com/tremor021) ([#2779](https://github.com/community-scripts/ProxmoxVE/pull/2779))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Zigbee2Mqtt Use fixed pnpm Version 10.4.1 [@MickLesk](https://github.com/MickLesk) ([#2805](https://github.com/community-scripts/ProxmoxVE/pull/2805))
 | 
			
		||||
    - Linkwarden: Fix & Update Monolith-Installation [@MickLesk](https://github.com/MickLesk) ([#2787](https://github.com/community-scripts/ProxmoxVE/pull/2787))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Feature: MinIO use now static port 9001 [@MickLesk](https://github.com/MickLesk) ([#2786](https://github.com/community-scripts/ProxmoxVE/pull/2786))
 | 
			
		||||
    - Feature Template Path for Mountings [@MickLesk](https://github.com/MickLesk) ([#2785](https://github.com/community-scripts/ProxmoxVE/pull/2785))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Feature: Website - show default OS [@MickLesk](https://github.com/MickLesk) ([#2790](https://github.com/community-scripts/ProxmoxVE/pull/2790))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Update zigbee2mqtt.json - make sure link is clickable [@gurtjun](https://github.com/gurtjun) ([#2802](https://github.com/community-scripts/ProxmoxVE/pull/2802))
 | 
			
		||||
 | 
			
		||||
## 2025-03-02
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 
 | 
			
		||||
@@ -26,9 +26,93 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    if [[ ! -d /opt/actualbudget ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit 1
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping ${APP}"
 | 
			
		||||
        systemctl stop actualbudget
 | 
			
		||||
        msg_ok "${APP} Stopped"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
        cd /tmp
 | 
			
		||||
        wget -q https://github.com/actualbudget/actual/archive/refs/tags/v${RELEASE}.tar.gz
 | 
			
		||||
 | 
			
		||||
        mv /opt/actualbudget /opt/actualbudget_bak
 | 
			
		||||
        tar -xzf "v${RELEASE}.tar.gz"
 | 
			
		||||
        mv actual-${RELEASE} /opt/actualbudget
 | 
			
		||||
 | 
			
		||||
        mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
 | 
			
		||||
        for dir in server-files .migrate user-files migrations; do
 | 
			
		||||
            if [[ -d /opt/actualbudget_bak/$dir ]]; then
 | 
			
		||||
                mv /opt/actualbudget_bak/$dir/* /opt/actualbudget-data/$dir/ || true
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
        if [[ -f /opt/actualbudget-data/migrate/.migrations ]]; then
 | 
			
		||||
            sed -i 's/null/1732656575219/g' /opt/actualbudget-data/migrate/.migrations
 | 
			
		||||
            sed -i 's/null/1732656575220/g' /opt/actualbudget-data/migrate/.migrations
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ -f /opt/actualbudget/server-files/account.sqlite ]] && [[ ! -f /opt/actualbudget-data/server-files/account.sqlite ]]; then
 | 
			
		||||
            mv /opt/actualbudget/server-files/account.sqlite /opt/actualbudget-data/server-files/account.sqlite
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        if [[ -f /opt/actualbudget_bak/selfhost.key ]]; then
 | 
			
		||||
            mv /opt/actualbudget_bak/selfhost.key /opt/actualbudget/selfhost.key
 | 
			
		||||
            mv /opt/actualbudget_bak/selfhost.crt /opt/actualbudget/selfhost.crt
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        if [[ -f /opt/actualbudget_bak/.env ]]; then
 | 
			
		||||
            mv /opt/actualbudget_bak/.env /opt/actualbudget-data/.env
 | 
			
		||||
        else
 | 
			
		||||
            cat <<EOF >/opt/actualbudget-data/.env
 | 
			
		||||
ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload
 | 
			
		||||
ACTUAL_DATA_DIR=/opt/actualbudget-data
 | 
			
		||||
ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files
 | 
			
		||||
ACTUAL_USER_FILES=/opt/actualbudget-data/user-files
 | 
			
		||||
PORT=5006
 | 
			
		||||
ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1/128,fc00::/7"
 | 
			
		||||
ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key
 | 
			
		||||
ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt
 | 
			
		||||
EOF
 | 
			
		||||
        fi
 | 
			
		||||
        cd /opt/actualbudget
 | 
			
		||||
        $STD yarn workspaces focus @actual-app/sync-server --production
 | 
			
		||||
        echo "${RELEASE}" >/opt/actualbudget_version.txt
 | 
			
		||||
        msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting ${APP}"
 | 
			
		||||
        cat <<EOF >/etc/systemd/system/actualbudget.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Actual Budget Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
User=root
 | 
			
		||||
Group=root
 | 
			
		||||
WorkingDirectory=/opt/actualbudget
 | 
			
		||||
EnvironmentFile=/opt/actualbudget-data/.env
 | 
			
		||||
ExecStart=/usr/bin/yarn start:server
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=10
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
        systemctl daemon-reload
 | 
			
		||||
        systemctl start actualbudget
 | 
			
		||||
        msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf /opt/actualbudget_bak
 | 
			
		||||
        rm -rf "/tmp/v${RELEASE}.tar.gz"
 | 
			
		||||
        msg_ok "Cleaned"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "Due to major changes in the Actual Budget repository, we are currently unable to provide updates. Please check back later."
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								ct/apache-tomcat.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								ct/apache-tomcat.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (Canbiz)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://tomcat.apache.org/
 | 
			
		||||
 | 
			
		||||
APP="Apache-Tomcat"
 | 
			
		||||
var_tags="webserver"
 | 
			
		||||
var_disk="5"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
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 ! ls -d /opt/tomcat-* >/dev/null 2>&1; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "Currently we don't provide an update function for this ${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}:8080${CL}"
 | 
			
		||||
							
								
								
									
										14
									
								
								ct/beszel.sh
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								ct/beszel.sh
									
									
									
									
									
								
							@@ -27,8 +27,18 @@ function update_script() {
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    /opt/beszel/beszel update
 | 
			
		||||
    msg_error "Currently we don't provide an update function for this ${APP}."
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop beszel-hub
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    $STD /opt/beszel/beszel update
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start beszel-hub
 | 
			
		||||
    msg_ok "Successfully started $APP"
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
APP="Change Detection"
 | 
			
		||||
var_tags="monitoring;crawler"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
var_disk="8"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="10"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 
 | 
			
		||||
@@ -221,7 +221,8 @@ mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLA
 | 
			
		||||
  exit 207
 | 
			
		||||
}
 | 
			
		||||
TEMPLATE="${TEMPLATES[-1]}"
 | 
			
		||||
TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE"
 | 
			
		||||
TEMPLATE_PATH="$(pvesm path $TEMPLATE_STORAGE:vztmpl/$TEMPLATE)"
 | 
			
		||||
# Without NAS/Mount: TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE"
 | 
			
		||||
# Check if template exists, if corrupt remove and redownload
 | 
			
		||||
if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE" || ! zstdcat "$TEMPLATE_PATH" | tar -tf - >/dev/null 2>&1; then
 | 
			
		||||
  msg_warn "Template $TEMPLATE not found in storage or seems to be corrupted. Redownloading."
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										80
									
								
								ct/fluid-calendar.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								ct/fluid-calendar.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
#!/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: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://fluidcalendar.com
 | 
			
		||||
 | 
			
		||||
APP="fluid-calendar"
 | 
			
		||||
var_tags="calendar,tasks"
 | 
			
		||||
var_cpu="3"
 | 
			
		||||
var_ram="4096"
 | 
			
		||||
var_disk="7"
 | 
			
		||||
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/fluid-calendar ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/dotnetfactory/fluid-calendar/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 "Stopping $APP"
 | 
			
		||||
        systemctl stop fluid-calendar.service
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Creating Backup"
 | 
			
		||||
        $STD tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /opt/fluid-calendar
 | 
			
		||||
        msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
        tmp_file=$(mktemp)
 | 
			
		||||
        wget -q "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -O $tmp_file
 | 
			
		||||
        unzip -q $tmp_file
 | 
			
		||||
        cp -rf ${APP}-${RELEASE}/* /opt/fluid-calendar
 | 
			
		||||
        cd /opt/fluid-calendar
 | 
			
		||||
        export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
        $STD npm install --legacy-peer-deps
 | 
			
		||||
        $STD npm run prisma:generate
 | 
			
		||||
        $STD npm run prisma:migrate
 | 
			
		||||
        $STD npm run build:os
 | 
			
		||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start fluid-calendar.service
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf $tmp_file
 | 
			
		||||
        rm -rf "/opt/${APP}_backup_$(date +%F).tar.gz"
 | 
			
		||||
        rm -rf /tmp/${APP}-${RELEASE}
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
							
								
								
									
										74
									
								
								ct/habitica.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								ct/habitica.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,74 @@
 | 
			
		||||
#!/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/HabitRPG/habitica
 | 
			
		||||
 | 
			
		||||
APP="Habitica"
 | 
			
		||||
var_tags="gaming"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="4096"
 | 
			
		||||
var_disk="8"
 | 
			
		||||
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/habitica" ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/HabitRPG/habitica/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 "Stopping $APP"
 | 
			
		||||
        systemctl stop habitica-mongodb
 | 
			
		||||
        systemctl stop habitica
 | 
			
		||||
        systemctl stop habitica-client
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
        temp_file=$(mktemp)
 | 
			
		||||
        wget -q "https://github.com/HabitRPG/habitica/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
 | 
			
		||||
        tar zxf $temp_file
 | 
			
		||||
        cp -rf habitica-${RELEASE}/* /opt/habitica
 | 
			
		||||
        cd /opt/habitica
 | 
			
		||||
        $STD npm i
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start habitica-mongodb
 | 
			
		||||
        systemctl start habitica
 | 
			
		||||
        systemctl start habitica-client
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -f $temp_file
 | 
			
		||||
        rm -rf ~/habitica-${RELEASE}
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/apache-tomcat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/apache-tomcat
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___                     __             ______                           __ 
 | 
			
		||||
   /   |  ____  ____ ______/ /_  ___      /_  __/___  ____ ___  _________ _/ /_
 | 
			
		||||
  / /| | / __ \/ __ `/ ___/ __ \/ _ \______/ / / __ \/ __ `__ \/ ___/ __ `/ __/
 | 
			
		||||
 / ___ |/ /_/ / /_/ / /__/ / / /  __/_____/ / / /_/ / / / / / / /__/ /_/ / /_  
 | 
			
		||||
/_/  |_/ .___/\__,_/\___/_/ /_/\___/     /_/  \____/_/ /_/ /_/\___/\__,_/\__/  
 | 
			
		||||
      /_/                                                                      
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/fluid-calendar
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/fluid-calendar
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ______      _     __                 __               __          
 | 
			
		||||
   / __/ /_  __(_)___/ /     _________ _/ /__  ____  ____/ /___ ______
 | 
			
		||||
  / /_/ / / / / / __  /_____/ ___/ __ `/ / _ \/ __ \/ __  / __ `/ ___/
 | 
			
		||||
 / __/ / /_/ / / /_/ /_____/ /__/ /_/ / /  __/ / / / /_/ / /_/ / /    
 | 
			
		||||
/_/ /_/\__,_/_/\__,_/      \___/\__,_/_/\___/_/ /_/\__,_/\__,_/_/     
 | 
			
		||||
                                                                      
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/habitica
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/habitica
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __  __      __    _ __  _           
 | 
			
		||||
   / / / /___ _/ /_  (_) /_(_)________ _
 | 
			
		||||
  / /_/ / __ `/ __ \/ / __/ / ___/ __ `/
 | 
			
		||||
 / __  / /_/ / /_/ / / /_/ / /__/ /_/ / 
 | 
			
		||||
/_/ /_/\__,_/_.___/_/\__/_/\___/\__,_/  
 | 
			
		||||
                                        
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/inventree
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/inventree
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____                    ______             
 | 
			
		||||
   /  _/___ _   _____  ____/_  __/_______  ___ 
 | 
			
		||||
   / // __ \ | / / _ \/ __ \/ / / ___/ _ \/ _ \
 | 
			
		||||
 _/ // / / / |/ /  __/ / / / / / /  /  __/  __/
 | 
			
		||||
/___/_/ /_/|___/\___/_/ /_/_/ /_/   \___/\___/ 
 | 
			
		||||
                                               
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
       __                  __               _   __      __       __                __  
 | 
			
		||||
      / /_  ______  __  __/ /____  _____   / | / /___  / /____  / /_  ____  ____  / /__
 | 
			
		||||
 __  / / / / / __ \/ / / / __/ _ \/ ___/  /  |/ / __ \/ __/ _ \/ __ \/ __ \/ __ \/ //_/
 | 
			
		||||
/ /_/ / /_/ / /_/ / /_/ / /_/  __/ /     / /|  / /_/ / /_/  __/ /_/ / /_/ / /_/ / ,<   
 | 
			
		||||
\____/\__,_/ .___/\__, /\__/\___/_/     /_/ |_/\____/\__/\___/_.___/\____/\____/_/|_|  
 | 
			
		||||
          /_/    /____/                                                                
 | 
			
		||||
       __                  __            _   __      __       __                __  
 | 
			
		||||
      / /_  ______  __  __/ /____  _____/ | / /___  / /____  / /_  ____  ____  / /__
 | 
			
		||||
 __  / / / / / __ \/ / / / __/ _ \/ ___/  |/ / __ \/ __/ _ \/ __ \/ __ \/ __ \/ //_/
 | 
			
		||||
/ /_/ / /_/ / /_/ / /_/ / /_/  __/ /  / /|  / /_/ / /_/  __/ /_/ / /_/ / /_/ / ,<   
 | 
			
		||||
\____/\__,_/ .___/\__, /\__/\___/_/  /_/ |_/\____/\__/\___/_.___/\____/\____/_/|_|  
 | 
			
		||||
          /_/    /____/                                                             
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/npmplus
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/npmplus
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    _   ______  __  ___      __          
 | 
			
		||||
   / | / / __ \/  |/  /___  / /_  _______
 | 
			
		||||
  /  |/ / /_/ / /|_/ / __ \/ / / / / ___/
 | 
			
		||||
 / /|  / ____/ /  / / /_/ / / /_/ (__  ) 
 | 
			
		||||
/_/ |_/_/   /_/  /_/ .___/_/\__,_/____/  
 | 
			
		||||
                  /_/                    
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/paperless-gpt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/paperless-gpt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____                        __                     __________  ______
 | 
			
		||||
   / __ \____ _____  ___  _____/ /__  __________      / ____/ __ \/_  __/
 | 
			
		||||
  / /_/ / __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/_____/ / __/ /_/ / / /   
 | 
			
		||||
 / ____/ /_/ / /_/ /  __/ /  / /  __(__  |__  )_____/ /_/ / ____/ / /    
 | 
			
		||||
/_/    \__,_/ .___/\___/_/  /_/\___/____/____/      \____/_/     /_/     
 | 
			
		||||
           /_/                                                           
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/plant-it
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/plant-it
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____  __            __        _ __ 
 | 
			
		||||
   / __ \/ /___ _____  / /_      (_) /_
 | 
			
		||||
  / /_/ / / __ `/ __ \/ __/_____/ / __/
 | 
			
		||||
 / ____/ / /_/ / / / / /_/_____/ / /_  
 | 
			
		||||
/_/   /_/\__,_/_/ /_/\__/     /_/\__/  
 | 
			
		||||
                                       
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/pterodactyl-panel
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/pterodactyl-panel
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____  __                      __           __        __      ____                   __
 | 
			
		||||
   / __ \/ /____  _________  ____/ /___ ______/ /___  __/ /     / __ \____ _____  ___  / /
 | 
			
		||||
  / /_/ / __/ _ \/ ___/ __ \/ __  / __ `/ ___/ __/ / / / /_____/ /_/ / __ `/ __ \/ _ \/ / 
 | 
			
		||||
 / ____/ /_/  __/ /  / /_/ / /_/ / /_/ / /__/ /_/ /_/ / /_____/ ____/ /_/ / / / /  __/ /  
 | 
			
		||||
/_/    \__/\___/_/   \____/\__,_/\__,_/\___/\__/\__, /_/     /_/    \__,_/_/ /_/\___/_/   
 | 
			
		||||
                                               /____/                                     
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/pterodactyl-wings
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/pterodactyl-wings
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____  __                      __           __        __    _       ___                 
 | 
			
		||||
   / __ \/ /____  _________  ____/ /___ ______/ /___  __/ /   | |     / (_)___  ____ ______
 | 
			
		||||
  / /_/ / __/ _ \/ ___/ __ \/ __  / __ `/ ___/ __/ / / / /____| | /| / / / __ \/ __ `/ ___/
 | 
			
		||||
 / ____/ /_/  __/ /  / /_/ / /_/ / /_/ / /__/ /_/ /_/ / /_____/ |/ |/ / / / / / /_/ (__  ) 
 | 
			
		||||
/_/    \__/\___/_/   \____/\__,_/\__,_/\___/\__/\__, /_/      |__/|__/_/_/ /_/\__, /____/  
 | 
			
		||||
                                               /____/                        /____/        
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/revealjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/revealjs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____                       __    _______
 | 
			
		||||
   / __ \___ _   _____  ____ _/ /   / / ___/
 | 
			
		||||
  / /_/ / _ \ | / / _ \/ __ `/ /_  / /\__ \ 
 | 
			
		||||
 / _, _/  __/ |/ /  __/ /_/ / / /_/ /___/ / 
 | 
			
		||||
/_/ |_|\___/|___/\___/\__,_/_/\____//____/  
 | 
			
		||||
                                            
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/seafile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/seafile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   _____            _____ __   
 | 
			
		||||
  / ___/___  ____ _/ __(_) /__ 
 | 
			
		||||
  \__ \/ _ \/ __ `/ /_/ / / _ \
 | 
			
		||||
 ___/ /  __/ /_/ / __/ / /  __/
 | 
			
		||||
/____/\___/\__,_/_/ /_/_/\___/ 
 | 
			
		||||
                               
 | 
			
		||||
@@ -41,7 +41,8 @@ function update_script() {
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start headscale
 | 
			
		||||
    # Temporary fix until headscale project resolves service getting disabled on updates.
 | 
			
		||||
    systemctl enable -q --now headscale
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
@@ -55,4 +56,4 @@ build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
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}"
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,8 @@ function update_script() {
 | 
			
		||||
    cp -R Heimdall-${VER}/* /opt/Heimdall
 | 
			
		||||
    cd /opt/Heimdall
 | 
			
		||||
    $STD apt-get install -y composer
 | 
			
		||||
    $STD COMPOSER_ALLOW_SUPERUSER=1 composer dump-autoload
 | 
			
		||||
    export COMPOSER_ALLOW_SUPERUSER=1
 | 
			
		||||
    $STD composer dump-autoload
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Heimdall Dashboard to ${RELEASE}"
 | 
			
		||||
    msg_info "Restoring Data"
 | 
			
		||||
 
 | 
			
		||||
@@ -37,6 +37,9 @@ function update_script() {
 | 
			
		||||
    if [[ $(corepack -v) < "0.31.0" ]]; then
 | 
			
		||||
      $STD npm install -g corepack@0.31.0
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ "${PREV_RELEASE}" < 0.23.0 ]]; then
 | 
			
		||||
        $STD apt-get install -y graphicsmagick ghostscript
 | 
			
		||||
    fi
 | 
			
		||||
    cd /opt
 | 
			
		||||
    if [[ -f /opt/hoarder/.env ]] && [[ ! -f /etc/hoarder/hoarder.env ]]; then
 | 
			
		||||
      mkdir -p /etc/hoarder
 | 
			
		||||
 
 | 
			
		||||
@@ -148,9 +148,12 @@ EOF
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl start homarr
 | 
			
		||||
    systemctl restart homarr
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
    read -p "It's recommended to reboot the LXC after an update, would you like to reboot the LXC now ? (y/n): " choice
 | 
			
		||||
    if [[ "$choice" =~ ^[Yy]$ ]]; then
 | 
			
		||||
      reboot
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
APP="Homepage"
 | 
			
		||||
var_tags="dashboard"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
var_disk="3"
 | 
			
		||||
var_ram="4096"
 | 
			
		||||
var_disk="6"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
@@ -35,6 +35,7 @@ function update_script() {
 | 
			
		||||
      echo "Installed NPM..."
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
  LOCAL_IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/gethomepage/homepage/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 Homepage to v${RELEASE} (Patience)"
 | 
			
		||||
@@ -45,11 +46,15 @@ function update_script() {
 | 
			
		||||
    cp -r homepage-${RELEASE}/* /opt/homepage/
 | 
			
		||||
    rm -rf homepage-${RELEASE}
 | 
			
		||||
    cd /opt/homepage
 | 
			
		||||
    $STD npx --yes update-browserslist-db@latest
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    $STD npx --yes update-browserslist-db@latest
 | 
			
		||||
    export NEXT_PUBLIC_VERSION="v$RELEASE"
 | 
			
		||||
    export NEXT_PUBLIC_REVISION="source"
 | 
			
		||||
    export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    if [[ ! -f /opt/homepage/.env ]]; then
 | 
			
		||||
        echo "HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000" > /opt/homepage/.env
 | 
			
		||||
    fi
 | 
			
		||||
    systemctl start homepage
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Homepage to v${RELEASE}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								ct/inventree.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ct/inventree.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://github.com/inventree/InvenTree
 | 
			
		||||
 | 
			
		||||
APP="InvenTree"
 | 
			
		||||
var_tags="inventory"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="6"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
 | 
			
		||||
    if [[ ! -d "/opt/inventree" ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get install --only-upgrade inventree -y
 | 
			
		||||
    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}${CL}"
 | 
			
		||||
@@ -5,7 +5,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://jupyter.org/
 | 
			
		||||
 | 
			
		||||
APP="Jupyter Notebook"
 | 
			
		||||
APP="JupyterNotebook"
 | 
			
		||||
var_tags="ai;dev-tools"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										100
									
								
								ct/kimai.sh
									
									
									
									
									
								
							
							
						
						
									
										100
									
								
								ct/kimai.sh
									
									
									
									
									
								
							@@ -20,52 +20,62 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/kimai ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/kimai ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/kimai/kimai/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    BACKUP_DIR="/opt/kimai_backup"
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping Apache2"
 | 
			
		||||
        systemctl stop apache2
 | 
			
		||||
        msg_ok "Stopped Apache2"
 | 
			
		||||
 | 
			
		||||
        msg_info "Backing up Kimai configuration and var directory"
 | 
			
		||||
        mkdir -p "$BACKUP_DIR"
 | 
			
		||||
        [ -d /opt/kimai/var ] && cp -r /opt/kimai/var "$BACKUP_DIR/"
 | 
			
		||||
        [ -f /opt/kimai/.env ] && cp /opt/kimai/.env "$BACKUP_DIR/"
 | 
			
		||||
        [ -f /opt/kimai/config/packages/local.yaml ] && cp /opt/kimai/config/packages/local.yaml "$BACKUP_DIR/"
 | 
			
		||||
        msg_ok "Backup completed"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
        rm -rf /opt/kimai
 | 
			
		||||
        wget -q "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip"
 | 
			
		||||
        unzip -q ${RELEASE}.zip
 | 
			
		||||
        mv kimai-${RELEASE} /opt/kimai
 | 
			
		||||
        [ -d "$BACKUP_DIR/var" ] && cp -r "$BACKUP_DIR/var" /opt/kimai/
 | 
			
		||||
        [ -f "$BACKUP_DIR/.env" ] && cp "$BACKUP_DIR/.env" /opt/kimai/
 | 
			
		||||
        [ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/
 | 
			
		||||
        rm -rf "$BACKUP_DIR"
 | 
			
		||||
        cd /opt/kimai
 | 
			
		||||
        $STD composer install --no-dev --optimize-autoloader
 | 
			
		||||
        $STD bin/console kimai:update
 | 
			
		||||
        chown -R :www-data .
 | 
			
		||||
        chmod -R g+r .
 | 
			
		||||
        chmod -R g+rw var/
 | 
			
		||||
        chmod -R 777 /opt/kimai/var/
 | 
			
		||||
        chown -R www-data:www-data /opt/kimai
 | 
			
		||||
        chmod -R 755 /opt/kimai
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting Apache2"
 | 
			
		||||
        systemctl start apache2
 | 
			
		||||
        msg_ok "Started Apache2"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf ${RELEASE}.zip
 | 
			
		||||
        rm -rf "$BACKUP_DIR"
 | 
			
		||||
        msg_ok "Cleaned"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/kimai/kimai/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
 | 
			
		||||
    msg_info "Stopping Apache2"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
    msg_ok "Stopped Apache2"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    cp /opt/kimai/.env /opt/.env
 | 
			
		||||
    [ -f /opt/kimai/config/packages/local.yaml ] && cp /opt/kimai/config/packages/local.yaml /opt/local.yaml
 | 
			
		||||
    rm -rf /opt/kimai
 | 
			
		||||
    wget -q "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip"
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    mv kimai-${RELEASE} /opt/kimai
 | 
			
		||||
    mv /opt/.env /opt/kimai/.env
 | 
			
		||||
    [ -f /opt/local.yaml ] && mv /opt/local.yaml /opt/kimai/config/packages/local.yaml
 | 
			
		||||
    cd /opt/kimai
 | 
			
		||||
    $STD composer install --no-dev --optimize-autoloader
 | 
			
		||||
    $STD bin/console kimai:update
 | 
			
		||||
    chown -R :www-data .
 | 
			
		||||
    chmod -R g+r .
 | 
			
		||||
    chmod -R g+rw var/
 | 
			
		||||
    chmod -R 777 /opt/kimai/var/ 
 | 
			
		||||
    chown -R www-data:www-data /opt/kimai
 | 
			
		||||
    chmod -R 755 /opt/kimai
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Apache2"
 | 
			
		||||
    systemctl start apache2
 | 
			
		||||
    msg_ok "Started Apache2"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf ${RELEASE}.zip
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,15 @@ function update_script() {
 | 
			
		||||
    systemctl stop linkwarden
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Rust"
 | 
			
		||||
    $STD apt-get install -y build-essential
 | 
			
		||||
    $STD curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
 | 
			
		||||
    source $HOME/.cargo/env
 | 
			
		||||
    echo 'export PATH=/usr/local/cargo/bin:$PATH' >> /etc/profile
 | 
			
		||||
    source /etc/profile
 | 
			
		||||
    $STD cargo install monolith
 | 
			
		||||
    msg_ok "Updated Rust"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/linkwarden/.env /opt/.env
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
APP="Memos"
 | 
			
		||||
var_tags="notes"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_ram="3072"
 | 
			
		||||
var_disk="7"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
@@ -36,6 +36,7 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  systemctl stop memos
 | 
			
		||||
  export NODE_OPTIONS="--max-old-space-size=2048"
 | 
			
		||||
  cd /opt/memos/web
 | 
			
		||||
  $STD pnpm i --frozen-lockfile
 | 
			
		||||
  $STD pnpm build
 | 
			
		||||
 
 | 
			
		||||
@@ -51,7 +51,7 @@ function update_script() {
 | 
			
		||||
  msg_ok "Cleaned Old Files"
 | 
			
		||||
 | 
			
		||||
  msg_info "Downloading NPM v${RELEASE}"
 | 
			
		||||
  $STD wget -q https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE} -O - | tar -xz
 | 
			
		||||
  wget -q https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE} -O - | tar -xz
 | 
			
		||||
  cd nginx-proxy-manager-${RELEASE}
 | 
			
		||||
  msg_ok "Downloaded NPM v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
@@ -157,4 +157,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:81${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:81${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								ct/npmplus.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								ct/npmplus.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/ZoeyVid/NPMplus
 | 
			
		||||
 | 
			
		||||
APP="NPMplus"
 | 
			
		||||
var_tags="proxy;nginx"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="512"
 | 
			
		||||
var_disk="3"
 | 
			
		||||
var_os="alpine"
 | 
			
		||||
var_version="3.21"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    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 \
 | 
			
		||||
        3>&1 1>&2 2>&3)
 | 
			
		||||
 | 
			
		||||
    header_info
 | 
			
		||||
    if [ "$UPD" == "1" ]; then
 | 
			
		||||
        apk update && apk upgrade
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:81${CL}"
 | 
			
		||||
@@ -29,6 +29,11 @@ function update_script() {
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating ${APP} (Patience)"
 | 
			
		||||
  cd /opt/open-webui
 | 
			
		||||
  mkdir /opt/open-webui-backup
 | 
			
		||||
  cp -rf /opt/open-webui/backend/data /opt/open-webui-backup
 | 
			
		||||
  git add -A
 | 
			
		||||
  $STD git stash
 | 
			
		||||
  $STD git reset --hard
 | 
			
		||||
  output=$(git pull --no-rebase)
 | 
			
		||||
  if echo "$output" | grep -q "Already up to date."; then
 | 
			
		||||
    msg_ok "$APP is already up to date."
 | 
			
		||||
@@ -40,6 +45,10 @@ function update_script() {
 | 
			
		||||
  $STD npm run build
 | 
			
		||||
  cd ./backend
 | 
			
		||||
  $STD pip install -r requirements.txt -U
 | 
			
		||||
  cp -rf /opt/open-webui-backup/* /opt/open-webui/backend
 | 
			
		||||
  if git stash list | grep -q 'stash@{'; then
 | 
			
		||||
    $STD git stash pop
 | 
			
		||||
  fi
 | 
			
		||||
  systemctl start open-webui.service
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										74
									
								
								ct/paperless-gpt.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								ct/paperless-gpt.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,74 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/icereed/paperless-gpt
 | 
			
		||||
 | 
			
		||||
APP="Paperless-GPT"
 | 
			
		||||
var_tags="os"
 | 
			
		||||
var_cpu="3"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="7"
 | 
			
		||||
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/paperless-gpt ]]; then
 | 
			
		||||
        msg_error "No Paperless-GPT installation found!"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/icereed/paperless-gpt/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping Service"
 | 
			
		||||
        systemctl stop paperless-gpt
 | 
			
		||||
        msg_ok "Service Stopped"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating Paperless-GPT to ${RELEASE}"
 | 
			
		||||
        temp_file=$(mktemp)
 | 
			
		||||
        wget -q "https://github.com/icereed/paperless-gpt/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
 | 
			
		||||
        tar zxf $temp_file
 | 
			
		||||
        rm -rf /opt/paperless-gpt
 | 
			
		||||
        mv paperless-gpt-${RELEASE} /opt/paperless-gpt
 | 
			
		||||
        cd /opt/paperless-gpt/web-app
 | 
			
		||||
        $STD npm install
 | 
			
		||||
        $STD npm run build
 | 
			
		||||
        cd /opt/paperless-gpt
 | 
			
		||||
        go mod download
 | 
			
		||||
        export CC=musl-gcc
 | 
			
		||||
        CGO_ENABLED=1 go build -tags musl -o /dev/null github.com/mattn/go-sqlite3
 | 
			
		||||
        CGO_ENABLED=1 go build -tags musl -o paperless-gpt .
 | 
			
		||||
        echo "${RELEASE}" >"/opt/paperless-gpt_version.txt"
 | 
			
		||||
        msg_ok "Updated Paperless-GPT to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting Service"
 | 
			
		||||
        systemctl start paperless-gpt
 | 
			
		||||
        msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -f $temp_file
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${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}"
 | 
			
		||||
@@ -29,7 +29,7 @@ function update_script() {
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    set +e
 | 
			
		||||
    pihole -up
 | 
			
		||||
    /usr/local/bin/pihole -up
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
@@ -41,4 +41,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/admin${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/admin${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										64
									
								
								ct/plant-it.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								ct/plant-it.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://plant-it.org/
 | 
			
		||||
 | 
			
		||||
APP="Plant-it"
 | 
			
		||||
var_tags="plants;garden"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="5"
 | 
			
		||||
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/plant-it ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/MDeLuise/plant-it/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 "Stopping $APP"
 | 
			
		||||
        systemctl stop plant-it
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
        wget -q -O /opt/plant-it/server.jar "https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/server.jar"
 | 
			
		||||
        cd /opt/plant-it/frontend
 | 
			
		||||
        wget -q https://github.com/MDeLuise/plant-it/releases/download/${RELEASE}/client.tar.gz
 | 
			
		||||
        tar -xzf client.tar.gz
 | 
			
		||||
        rm -f client.tar.gz
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start plant-it
 | 
			
		||||
        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}:3000${CL}"
 | 
			
		||||
							
								
								
									
										74
									
								
								ct/pterodactyl-panel.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								ct/pterodactyl-panel.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,74 @@
 | 
			
		||||
#!/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: bvdberg01
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/pterodactyl/panel
 | 
			
		||||
 | 
			
		||||
APP="Pterodactyl-Panel"
 | 
			
		||||
var_tags="gaming"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
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/pterodactyl-panel ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/pterodactyl/panel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    cd /opt/pterodactyl-panel
 | 
			
		||||
    $STD php artisan down
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cp -r /opt/pterodactyl-panel/.env /opt/
 | 
			
		||||
    rm -rf * .*
 | 
			
		||||
    wget -q "https://github.com/pterodactyl/panel/releases/download/v${RELEASE}/panel.tar.gz"
 | 
			
		||||
    tar -xzf "panel.tar.gz"
 | 
			
		||||
    mv /opt/.env /opt/pterodactyl-panel/
 | 
			
		||||
    $STD composer install --no-dev --optimize-autoloader --no-interaction
 | 
			
		||||
    $STD php artisan view:clear
 | 
			
		||||
    $STD php artisan config:clear
 | 
			
		||||
    $STD php artisan migrate --seed --force --no-interaction
 | 
			
		||||
    chown -R www-data:www-data /opt/pterodactyl-panel/*
 | 
			
		||||
    chmod -R 755 /opt/pterodactyl-panel/storage /opt/pterodactyl-panel/bootstrap/cache/
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    $STD php artisan queue:restart
 | 
			
		||||
    $STD php artisan up
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf "/opt/pterodactyl-panel/panel.tar.gz"
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
							
								
								
									
										58
									
								
								ct/pterodactyl-wings.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								ct/pterodactyl-wings.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
#!/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: bvdberg01
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/pterodactyl/wings
 | 
			
		||||
 | 
			
		||||
APP="Pterodactyl-Wings"
 | 
			
		||||
var_tags="gaming"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="4096"
 | 
			
		||||
var_disk="8"
 | 
			
		||||
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 [[ ! -f /usr/local/bin/wings ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/pterodactyl/wings/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop wings
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    rm /usr/local/bin/wings
 | 
			
		||||
    wget -q -O /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/download/v${RELEASE}/wings_linux_amd64"
 | 
			
		||||
    chmod u+x /usr/local/bin/wings
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start wings
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
							
								
								
									
										75
									
								
								ct/revealjs.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								ct/revealjs.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,75 @@
 | 
			
		||||
#!/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/hakimel/reveal.js
 | 
			
		||||
 | 
			
		||||
APP="RevealJS"
 | 
			
		||||
var_tags="presentation"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
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/revealjs" ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/hakimel/reveal.js/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 "Stopping $APP"
 | 
			
		||||
        systemctl stop revealjs
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
        temp_file=$(mktemp)
 | 
			
		||||
        wget -q "https://github.com/hakimel/reveal.js/archive/refs/tags/${RELEASE}.tar.gz" -O $temp_file
 | 
			
		||||
        tar zxf $temp_file
 | 
			
		||||
        rm -rf /opt/revealjs/node_modules/*
 | 
			
		||||
        cp /opt/revealjs/index.html  /opt
 | 
			
		||||
        cp /opt/revealjs/gulpfile.js /opt
 | 
			
		||||
        cp -rf reveal.js-${RELEASE}/* /opt/revealjs
 | 
			
		||||
        cd /opt/revealjs
 | 
			
		||||
        $STD npm install
 | 
			
		||||
        cp -f /opt/index.html /opt/revealjs
 | 
			
		||||
        cp -f /opt/gulpfile.js /opt/revealjs
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start revealjs
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -f $temp_file
 | 
			
		||||
        rm -rf ~/reveal.js-${RELEASE}
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}"
 | 
			
		||||
							
								
								
									
										43
									
								
								ct/seafile.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								ct/seafile.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: dave-yap (dave-yap)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://seafile.com/
 | 
			
		||||
 | 
			
		||||
APP="Seafile"
 | 
			
		||||
var_tags="documents"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="20"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -f /etc/systemd/system/seafile.service ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "No upgrade path available now."
 | 
			
		||||
    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}"
 | 
			
		||||
@@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Source: https://snipeitapp.com/
 | 
			
		||||
 | 
			
		||||
APP="SnipeIT"
 | 
			
		||||
var_tags="assat-management;foss"
 | 
			
		||||
var_tags="asset-management;foss"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
@@ -27,13 +27,20 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop nginx
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
    mv /opt/snipe-it /opt/snipe-it-backup
 | 
			
		||||
    cd /opt
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
 | 
			
		||||
    tar zxf $temp_file
 | 
			
		||||
    mv snipe-it-${RELEASE} /opt/snipe-it
 | 
			
		||||
    $STD wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    mv snipe-it-${RELEASE} /opt/snipe-it
 | 
			
		||||
@@ -53,9 +60,13 @@ function update_script() {
 | 
			
		||||
    chmod -R 755 /opt/snipe-it
 | 
			
		||||
    rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/snipe-it-backup
 | 
			
		||||
    msg_ok "Updated ${APP} LXC"
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start nginx
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}."
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
@@ -67,4 +78,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -32,10 +32,10 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${VERSION}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/teddycloud /opt_teddycloud_bak
 | 
			
		||||
    mv /opt/teddycloud /opt/teddycloud_bak
 | 
			
		||||
    wget -q "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip"
 | 
			
		||||
    unzip -q -d /opt/teddycloud teddycloud.amd64.release_v${VERSION}.zip
 | 
			
		||||
    cp -R /opt_teddycloud_bak/certs /opt_teddycloud_bak/config /opt_teddycloud_bak/data /opt/teddycloud
 | 
			
		||||
    cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud
 | 
			
		||||
    echo "${VERSION}" >"/opt/${APP}_version.txt"
 | 
			
		||||
    msg_ok "Updated ${APP} to v${VERSION}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.vaultwarden.net/
 | 
			
		||||
# Source: https://github.com/dani-garcia/vaultwarden
 | 
			
		||||
 | 
			
		||||
APP="Vaultwarden"
 | 
			
		||||
var_tags="password-manager"
 | 
			
		||||
 
 | 
			
		||||
@@ -20,39 +20,69 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/wastebin ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/wastebin ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    # Dirty-Fix 03/2025 for missing APP_version.txt on old installations, set to pre-latest release
 | 
			
		||||
    msg_info "Running Migration"
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
        echo "2.7.1" >/opt/${APP}_version.txt
 | 
			
		||||
        mkdir -p /opt/wastebin-data
 | 
			
		||||
        cat <<EOF >/opt/wastebin-data/.env
 | 
			
		||||
WASTEBIN_DATABASE_PATH=/opt/wastebin-data/wastebin.db
 | 
			
		||||
WASTEBIN_CACHE_SIZE=1024
 | 
			
		||||
WASTEBIN_HTTP_TIMEOUT=30
 | 
			
		||||
WASTEBIN_SIGNING_KEY=$(openssl rand -hex 32)
 | 
			
		||||
WASTEBIN_PASTE_EXPIRATIONS=0,600,3600=d,86400,604800,2419200,29030400
 | 
			
		||||
EOF
 | 
			
		||||
        systemctl stop wastebin
 | 
			
		||||
        cat <<EOF >/etc/systemd/system/wastebin.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Wastebin Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
WorkingDirectory=/opt/wastebin
 | 
			
		||||
ExecStart=/opt/wastebin/wastebin
 | 
			
		||||
EnvironmentFile=/opt/wastebin-data/.env
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
        systemctl daemon-reload
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Migration Done"
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping Wastebin"
 | 
			
		||||
        systemctl stop wastebin
 | 
			
		||||
        msg_ok "Wastebin Stopped"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating Wastebin"
 | 
			
		||||
        temp_file=$(mktemp)
 | 
			
		||||
        wget -q https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.zip -O $temp_file
 | 
			
		||||
        unzip -o -q $temp_file
 | 
			
		||||
        cp -f wastebin /opt/wastebin/
 | 
			
		||||
        chmod +x /opt/wastebin/wastebin
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Updated Wastebin"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting Wastebin"
 | 
			
		||||
        systemctl start wastebin
 | 
			
		||||
        msg_ok "Started Wastebin"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -f $temp_file
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/matze/wastebin/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
 | 
			
		||||
    msg_info "Stopping Wastebin"
 | 
			
		||||
    systemctl stop wastebin
 | 
			
		||||
    msg_ok "Wastebin Stopped"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Wastebin"
 | 
			
		||||
    wget -q https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst
 | 
			
		||||
    tar -xf wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst
 | 
			
		||||
    cp -f wastebin /opt/wastebin/
 | 
			
		||||
    chmod +x /opt/wastebin/wastebin
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Wastebin"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Wastebin"
 | 
			
		||||
    systemctl start wastebin
 | 
			
		||||
    msg_ok "Started Wastebin"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -32,8 +32,11 @@ function update_script() {
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Backing up Data"
 | 
			
		||||
    rm -rf ~/data-backup
 | 
			
		||||
    mkdir -p ~/data-backup
 | 
			
		||||
    cp -R /opt/wikijs/{db.sqlite,config.yml,/data} ~/data-backup
 | 
			
		||||
    [ -f /opt/wikijs/db.sqlite ] && cp /opt/wikijs/db.sqlite ~/data-backup
 | 
			
		||||
    [ -f /opt/wikijs/config.yml ] && cp /opt/wikijs/config.yml ~/data-backup
 | 
			
		||||
    [ -d /opt/wikijs/data ] && cp -R /opt/wikijs/data ~/data-backup
 | 
			
		||||
    msg_ok "Backed up Data"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,10 @@ function update_script() {
 | 
			
		||||
    systemctl stop zigbee2mqtt
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating pnpm"
 | 
			
		||||
    $STD npm install -g pnpm@10.4.1
 | 
			
		||||
    msg_ok "Updated pnpm"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
      rm -rf /opt/${APP}_backup*.tar.gz
 | 
			
		||||
      mkdir -p /opt/z2m_backup
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -370,9 +370,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@babel/runtime": {
 | 
			
		||||
      "version": "7.26.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
 | 
			
		||||
      "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
 | 
			
		||||
      "version": "7.26.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz",
 | 
			
		||||
      "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "regenerator-runtime": "^0.14.0"
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,10 @@ function ScriptItem({
 | 
			
		||||
    setSelectedScript(null);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  const defaultInstallMethod = item.install_methods?.[0];
 | 
			
		||||
  const os = defaultInstallMethod?.resources?.os || "Proxmox Node";
 | 
			
		||||
  const version = defaultInstallMethod?.resources?.version || "";
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <div className="mr-7 mt-0 flex w-full min-w-fit">
 | 
			
		||||
      <div className="flex w-full min-w-fit">
 | 
			
		||||
@@ -60,6 +64,9 @@ function ScriptItem({
 | 
			
		||||
                      <p className="w-full text-sm text-muted-foreground">
 | 
			
		||||
                        Date added: {extractDate(item.date_created)}
 | 
			
		||||
                      </p>
 | 
			
		||||
                      <p className="text-sm text-muted-foreground">
 | 
			
		||||
                        Default OS: {os} {version}
 | 
			
		||||
                      </p>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <div className="flex gap-5">
 | 
			
		||||
                      <DefaultSettings item={item} />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,14 +1,23 @@
 | 
			
		||||
import { Button } from "@/components/ui/button";
 | 
			
		||||
import { basePath } from "@/config/siteConfig";
 | 
			
		||||
import { Script } from "@/lib/types";
 | 
			
		||||
import { BookOpenText, Code, Globe } from "lucide-react";
 | 
			
		||||
import { BookOpenText, Code, Globe, RefreshCcw } from "lucide-react";
 | 
			
		||||
import Link from "next/link";
 | 
			
		||||
 | 
			
		||||
const generateInstallSourceUrl = (slug: string) => {
 | 
			
		||||
  const baseUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main`;
 | 
			
		||||
  return `${baseUrl}/install/${slug}-install.sh`;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const generateSourceUrl = (slug: string, type: string) => {
 | 
			
		||||
  const baseUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main`;
 | 
			
		||||
  return type === "ct"
 | 
			
		||||
    ? `${baseUrl}/install/${slug}-install.sh`
 | 
			
		||||
    : `${baseUrl}/${type}/${slug}.sh`;
 | 
			
		||||
  return type === "vm" ? `${baseUrl}/vm/${slug}.sh` : `${baseUrl}/misc/${slug}.sh`;
 | 
			
		||||
  return `${baseUrl}/misc/${slug}.sh`;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const generateUpdateUrl = (slug: string) => {
 | 
			
		||||
  const baseUrl = `https://raw.githubusercontent.com/community-scripts/${basePath}/main`;
 | 
			
		||||
  return `${baseUrl}/ct/${slug}.sh`;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
interface ButtonLinkProps {
 | 
			
		||||
@@ -29,20 +38,35 @@ const ButtonLink = ({ href, icon, text }: ButtonLinkProps) => (
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
export default function Buttons({ item }: { item: Script }) {
 | 
			
		||||
  const isCtOrDefault = ["ct"].includes(item.type);
 | 
			
		||||
  const installSourceUrl = isCtOrDefault ? generateInstallSourceUrl(item.slug) : null;
 | 
			
		||||
  const updateSourceUrl = isCtOrDefault ? generateUpdateUrl(item.slug) : null;
 | 
			
		||||
  const sourceUrl = !isCtOrDefault ? generateSourceUrl(item.slug, item.type) : null;
 | 
			
		||||
 | 
			
		||||
  const buttons = [
 | 
			
		||||
    item.website && {
 | 
			
		||||
      href: item.website,
 | 
			
		||||
      icon: <Globe className="h-4 w-4" />,
 | 
			
		||||
      icon: <Globe className="h-4 w-4" />, 
 | 
			
		||||
      text: "Website",
 | 
			
		||||
    },
 | 
			
		||||
    item.documentation && {
 | 
			
		||||
      href: item.documentation,
 | 
			
		||||
      icon: <BookOpenText className="h-4 w-4" />,
 | 
			
		||||
      icon: <BookOpenText className="h-4 w-4" />, 
 | 
			
		||||
      text: "Documentation",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      href: generateSourceUrl(item.slug, item.type),
 | 
			
		||||
      icon: <Code className="h-4 w-4" />,
 | 
			
		||||
    installSourceUrl && {
 | 
			
		||||
      href: installSourceUrl,
 | 
			
		||||
      icon: <Code className="h-4 w-4" />, 
 | 
			
		||||
      text: "Install-Source",
 | 
			
		||||
    },
 | 
			
		||||
    updateSourceUrl && {
 | 
			
		||||
      href: updateSourceUrl,
 | 
			
		||||
      icon: <RefreshCcw className="h-4 w-4" />, 
 | 
			
		||||
      text: "Update-Source",
 | 
			
		||||
    },
 | 
			
		||||
    sourceUrl && {
 | 
			
		||||
      href: sourceUrl,
 | 
			
		||||
      icon: <Code className="h-4 w-4" />, 
 | 
			
		||||
      text: "Source Code",
 | 
			
		||||
    },
 | 
			
		||||
  ].filter(Boolean) as ButtonLinkProps[];
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,9 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: jkrgr0
 | 
			
		||||
# License: MIT
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://docs.2fauth.app/
 | 
			
		||||
 | 
			
		||||
# Import Functions und Setup
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
@@ -14,7 +13,6 @@ setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
# Installing Dependencies with the 3 core dependencies (curl;sudo;mc)
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  curl \
 | 
			
		||||
@@ -26,7 +24,6 @@ $STD apt-get install -y \
 | 
			
		||||
  mariadb-server
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
# Template: MySQL Database
 | 
			
		||||
msg_info "Setting up Database"
 | 
			
		||||
DB_NAME=2fauth_db
 | 
			
		||||
DB_USER=2fauth
 | 
			
		||||
@@ -42,7 +39,6 @@ $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH
 | 
			
		||||
} >> ~/2FAuth.creds
 | 
			
		||||
msg_ok "Set up Database"
 | 
			
		||||
 | 
			
		||||
# Setup App
 | 
			
		||||
msg_info "Setup 2FAuth"
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
wget -q "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip"
 | 
			
		||||
@@ -78,7 +74,6 @@ chmod -R 755 /opt/2fauth
 | 
			
		||||
echo "${RELEASE}" >"/opt/2fauth_version.txt"
 | 
			
		||||
msg_ok "Setup 2fauth"
 | 
			
		||||
 | 
			
		||||
# Configure Service (NGINX)
 | 
			
		||||
msg_info "Configure Service"
 | 
			
		||||
cat <<EOF >/etc/nginx/conf.d/2fauth.conf
 | 
			
		||||
server {
 | 
			
		||||
@@ -115,7 +110,6 @@ msg_ok "Configured Service"
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
# Cleanup
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -f "/opt/v${RELEASE}.zip"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://adguard.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck
 | 
			
		||||
# Co-Author: MickLesk (Canbiz)
 | 
			
		||||
# 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/seanmorley15/AdventureLog
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.ispyconnect.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,10 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.docker.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,10 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://grafana.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,10 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://alpinelinux.org/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: nicedevil007 (NiceDevil)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
# Source: https://it-tools.tech/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,10 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://nextcloud.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,10 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/dani-garcia/vaultwarden
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,10 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.zigbee2mqtt.io/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://cassandra.apache.org/_/index.html
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://couchdb.apache.org/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
#Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Michel Roegl-Brunner (michelroegl-brunner) | MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://guacamole.apache.org/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										160
									
								
								install/apache-tomcat-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								install/apache-tomcat-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,160 @@
 | 
			
		||||
#!/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://tomcat.apache.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 \
 | 
			
		||||
    gnupg2 \
 | 
			
		||||
    curl \
 | 
			
		||||
    sudo \
 | 
			
		||||
    mc \
 | 
			
		||||
    lsb-release \
 | 
			
		||||
    gpg \
 | 
			
		||||
    apt-transport-https
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Adoptium Repository"
 | 
			
		||||
mkdir -p /etc/apt/keyrings
 | 
			
		||||
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor >/etc/apt/trusted.gpg.d/adoptium.gpg
 | 
			
		||||
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" >/etc/apt/sources.list.d/adoptium.list
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
msg_ok "Set up Adoptium Repository"
 | 
			
		||||
 | 
			
		||||
read -r -p "Which Tomcat version would you like to install? (9, 10.1, 11): " version
 | 
			
		||||
case $version in
 | 
			
		||||
9)
 | 
			
		||||
    TOMCAT_VERSION="9"
 | 
			
		||||
    echo "Which LTS Java version would you like to use? (8, 11, 17, 21): "
 | 
			
		||||
    read -r jdk_version
 | 
			
		||||
    case $jdk_version in
 | 
			
		||||
    8)
 | 
			
		||||
        msg_info "Installing Temurin JDK 8 (LTS) for Tomcat $TOMCAT_VERSION"
 | 
			
		||||
        $STD apt-get install -y temurin-8-jdk
 | 
			
		||||
        msg_ok "Setup Temurin JDK 8 (LTS)"
 | 
			
		||||
        ;;
 | 
			
		||||
    11)
 | 
			
		||||
        msg_info "Installing Temurin JDK 11 (LTS) for Tomcat $TOMCAT_VERSION"
 | 
			
		||||
        $STD apt-get install -y temurin-11-jdk
 | 
			
		||||
        msg_ok "Setup Temurin JDK 11 (LTS)"
 | 
			
		||||
        ;;
 | 
			
		||||
    17)
 | 
			
		||||
        msg_info "Installing Temurin JDK 17 (LTS) for Tomcat $TOMCAT_VERSION"
 | 
			
		||||
        $STD apt-get install -qqy temurin-17-jdk
 | 
			
		||||
        msg_ok "Setup Temurin JDK 17 (LTS)"
 | 
			
		||||
        ;;
 | 
			
		||||
    21)
 | 
			
		||||
        msg_info "Installing Temurin JDK 21 (LTS) for Tomcat $TOMCAT_VERSION"
 | 
			
		||||
        $STD apt-get install -y temurin-21-jdk
 | 
			
		||||
        msg_ok "Setup Temurin JDK 21 (LTS)"
 | 
			
		||||
        ;;
 | 
			
		||||
    *)
 | 
			
		||||
        msg_error "Invalid JDK version selected. Please enter 8, 11, 17 or 21."
 | 
			
		||||
        exit 1
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
    ;;
 | 
			
		||||
10 | 10.1)
 | 
			
		||||
    TOMCAT_VERSION="10"
 | 
			
		||||
    echo "Which LTS Java version would you like to use? (11, 17): "
 | 
			
		||||
    read -r jdk_version
 | 
			
		||||
    case $jdk_version in
 | 
			
		||||
    11)
 | 
			
		||||
        msg_info "Installing Temurin JDK 11 (LTS) for Tomcat $TOMCAT_VERSION"
 | 
			
		||||
        $STD apt-get install -y temurin-11-jdk
 | 
			
		||||
        msg_ok "Setup Temurin JDK 11"
 | 
			
		||||
        ;;
 | 
			
		||||
    17)
 | 
			
		||||
        msg_info "Installing Temurin JDK 17 (LTS) for Tomcat $TOMCAT_VERSION"
 | 
			
		||||
        $STD apt-get install -y temurin-17-jdk
 | 
			
		||||
        msg_ok "Setup Temurin JDK 17"
 | 
			
		||||
        ;;
 | 
			
		||||
    21)
 | 
			
		||||
        msg_info "Installing Temurin JDK 21 (LTS) for Tomcat $TOMCAT_VERSION"
 | 
			
		||||
        $STD apt-get install -y temurin-21-jdk
 | 
			
		||||
        msg_ok "Setup Temurin JDK 21 (LTS)"
 | 
			
		||||
        ;;
 | 
			
		||||
    *)
 | 
			
		||||
        msg_error "Invalid JDK version selected. Please enter 11 or 17."
 | 
			
		||||
        exit 1
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
    ;;
 | 
			
		||||
11)
 | 
			
		||||
    TOMCAT_VERSION="11"
 | 
			
		||||
    echo "Which LTS Java version would you like to use? (17, 21): "
 | 
			
		||||
    read -r jdk_version
 | 
			
		||||
    case $jdk_version in
 | 
			
		||||
    17)
 | 
			
		||||
        msg_info "Installing Temurin JDK 17 (LTS) for Tomcat $TOMCAT_VERSION"
 | 
			
		||||
        $STD apt-get install -qqy temurin-17-jdk
 | 
			
		||||
        msg_ok "Setup Temurin JDK 17"
 | 
			
		||||
        ;;
 | 
			
		||||
    21)
 | 
			
		||||
        msg_info "Installing Temurin JDK 21 (LTS) for Tomcat $TOMCAT_VERSION"
 | 
			
		||||
        $STD apt-get install -y temurin-21-jdk
 | 
			
		||||
        msg_ok "Setup Temurin JDK 21 (LTS)"
 | 
			
		||||
        ;;
 | 
			
		||||
    *)
 | 
			
		||||
        msg_error "Invalid JDK version selected. Please enter 17 or 21."
 | 
			
		||||
        exit 1
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
    ;;
 | 
			
		||||
*)
 | 
			
		||||
    msg_error "Invalid Tomcat version selected. Please enter 9, 10.1 or 11."
 | 
			
		||||
    exit 1
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Tomcat $TOMCAT_VERSION"
 | 
			
		||||
LATEST_VERSION=$(curl -s "https://dlcdn.apache.org/tomcat/tomcat-$TOMCAT_VERSION/" | grep -oP 'v[0-9]+\.[0-9]+\.[0-9]+(-M[0-9]+)?/' | sort -V | tail -n 1 | sed 's/\/$//; s/v//')
 | 
			
		||||
TOMCAT_URL="https://dlcdn.apache.org/tomcat/tomcat-$TOMCAT_VERSION/v$LATEST_VERSION/bin/apache-tomcat-$LATEST_VERSION.tar.gz"
 | 
			
		||||
wget -qO /tmp/tomcat.tar.gz "$TOMCAT_URL"
 | 
			
		||||
mkdir -p /opt/tomcat-$TOMCAT_VERSION
 | 
			
		||||
tar --strip-components=1 -xzf /tmp/tomcat.tar.gz -C /opt/tomcat-$TOMCAT_VERSION
 | 
			
		||||
chown -R root:root /opt/tomcat-$TOMCAT_VERSION
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/systemd/system/tomcat.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Apache Tomcat Web Application Container
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=forking
 | 
			
		||||
User=$(whoami)
 | 
			
		||||
Group=$(whoami)
 | 
			
		||||
Environment=JAVA_HOME=/usr/lib/jvm/temurin-${jdk_version}-jdk-amd64
 | 
			
		||||
Environment=CATALINA_HOME=/opt/tomcat-$TOMCAT_VERSION
 | 
			
		||||
Environment=CATALINA_BASE=/opt/tomcat-$TOMCAT_VERSION
 | 
			
		||||
Environment=CATALINA_PID=/opt/tomcat-$TOMCAT_VERSION/temp/tomcat.pid
 | 
			
		||||
ExecStart=/opt/tomcat-$TOMCAT_VERSION/bin/catalina.sh start
 | 
			
		||||
ExecStop=/opt/tomcat-$TOMCAT_VERSION/bin/catalina.sh stop
 | 
			
		||||
PIDFile=/opt/tomcat-$TOMCAT_VERSION/temp/tomcat.pid
 | 
			
		||||
SuccessExitStatus=143
 | 
			
		||||
Restart=on-abnormal
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now tomcat
 | 
			
		||||
msg_ok "Tomcat $LATEST_VERSION installed and started"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -f /tmp/tomcat.tar.gz
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://wiki.debian.org/AptCacherNg
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://archivebox.io/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://aria2.github.io/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.audiobookshelf.org/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: remz1337
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://goauthentik.io/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://autobrr.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: bvdberg01
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://sabre.io/baikal/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: bvdberg01
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/Forceu/barcodebuddy
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.bazarr.media/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Michelle Zitzerman (Sinofage)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://beszel.dev/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://0xerr0r.github.io/blocky/latest/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (Canbiz)
 | 
			
		||||
# 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/BookStackApp/BookStack
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.bunkerweb.io/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster) | Co-Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://caddyserver.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,8 @@
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Co-Author: remz1337
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/janeczku/calibre-web
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://casaos.io/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://changedetection.io/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://getchannels.com/dvr-server/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,9 +2,8 @@
 | 
			
		||||
 | 
			
		||||
#Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Michel Roegl-Brunner (michelroegl-brunner)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://checkmk.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.cloudflare.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck
 | 
			
		||||
# Co-Author: havardthom
 | 
			
		||||
# 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/cockpit-project/cockpit
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.commafeed.com/#/welcome
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -3,9 +3,8 @@
 | 
			
		||||
 | 
			
		||||
#Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Michel Roegl-Brunner (michelroegl-brunner)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://https://cosmos-cloud.io/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://cronicle.net/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
@@ -14,20 +14,21 @@ network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y curl
 | 
			
		||||
$STD apt-get install -y sudo
 | 
			
		||||
$STD apt-get install -y mc
 | 
			
		||||
$STD apt-get install -y git
 | 
			
		||||
$STD apt-get install -y make
 | 
			
		||||
$STD apt-get install -y g++
 | 
			
		||||
$STD apt-get install -y gcc
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
    curl \
 | 
			
		||||
    sudo \
 | 
			
		||||
    mc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Node.js Repository"
 | 
			
		||||
mkdir -p /etc/apt/keyrings
 | 
			
		||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
 | 
			
		||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
 | 
			
		||||
msg_ok "Set up Node.js Repository"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Node.js"
 | 
			
		||||
$STD bash <(curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh)
 | 
			
		||||
. ~/.bashrc
 | 
			
		||||
$STD nvm install 16.20.1
 | 
			
		||||
ln -sf /root/.nvm/versions/node/v16.20.1/bin/node /usr/bin/node
 | 
			
		||||
$STD apt-get update
 | 
			
		||||
$STD apt-get install -y nodejs
 | 
			
		||||
msg_ok "Installed Node.js"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Cronicle Primary Server"
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://daemonsync.me/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://dashy.to/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.debian.org/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.phoscon.de/en/conbee2/software#deconz
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.deluge-torrent.org/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.docker.com/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user