mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			64 Commits
		
	
	
		
			2025-02-05
			...
			2025-02-09
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					f94d727af7 | ||
| 
						 | 
					054829c4d5 | ||
| 
						 | 
					d20c92bd4f | ||
| 
						 | 
					64b9fa090a | ||
| 
						 | 
					5abc84b776 | ||
| 
						 | 
					2b0666bcf8 | ||
| 
						 | 
					2ef6ac2fe4 | ||
| 
						 | 
					4bb887a390 | ||
| 
						 | 
					8fd8ca2c50 | ||
| 
						 | 
					f69d5b5831 | ||
| 
						 | 
					fead4b76f8 | ||
| 
						 | 
					800c1065b9 | ||
| 
						 | 
					782e0a8535 | ||
| 
						 | 
					5863d81571 | ||
| 
						 | 
					c15e34143f | ||
| 
						 | 
					57c3a42a6e | ||
| 
						 | 
					7c13a7bce0 | ||
| 
						 | 
					9c23b55bc0 | ||
| 
						 | 
					5c0811c5ba | ||
| 
						 | 
					6bc92a0feb | ||
| 
						 | 
					9f5f5f54a0 | ||
| 
						 | 
					047ef8e669 | ||
| 
						 | 
					be572755a9 | ||
| 
						 | 
					393e1c6481 | ||
| 
						 | 
					539696e84a | ||
| 
						 | 
					6ecfc10b8c | ||
| 
						 | 
					1c7bab33e6 | ||
| 
						 | 
					b0cdb308bd | ||
| 
						 | 
					9d61a37945 | ||
| 
						 | 
					c4bd38cb9e | ||
| 
						 | 
					2f37355d77 | ||
| 
						 | 
					59a132fd6b | ||
| 
						 | 
					9c3bd7dc20 | ||
| 
						 | 
					d73d312882 | ||
| 
						 | 
					3361fabfc4 | ||
| 
						 | 
					030682c754 | ||
| 
						 | 
					3029e69767 | ||
| 
						 | 
					7dcc717017 | ||
| 
						 | 
					9825506ab7 | ||
| 
						 | 
					f1eca8a4bf | ||
| 
						 | 
					199d304841 | ||
| 
						 | 
					4163526379 | ||
| 
						 | 
					9272a1181c | ||
| 
						 | 
					2e51c289ca | ||
| 
						 | 
					03828943b0 | ||
| 
						 | 
					d71ef779ec | ||
| 
						 | 
					9736d5c785 | ||
| 
						 | 
					ef33864adf | ||
| 
						 | 
					d7b6a97415 | ||
| 
						 | 
					5b4c417729 | ||
| 
						 | 
					9c4e9ed4be | ||
| 
						 | 
					5a25348e04 | ||
| 
						 | 
					f5a73a5449 | ||
| 
						 | 
					82fecd7bbd | ||
| 
						 | 
					9badef6f03 | ||
| 
						 | 
					0e2f711cac | ||
| 
						 | 
					fbec881f70 | ||
| 
						 | 
					a3f1ff30e0 | ||
| 
						 | 
					4eb93ea49b | ||
| 
						 | 
					7d8ecead7d | ||
| 
						 | 
					5cf1f880c6 | ||
| 
						 | 
					873ae3e8af | ||
| 
						 | 
					4a273c7134 | ||
| 
						 | 
					439a7ed9e8 | 
							
								
								
									
										10
									
								
								.github/CONTRIBUTOR_GUIDE/ct/AppName.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/CONTRIBUTOR_GUIDE/ct/AppName.md
									
									
									
									
										vendored
									
									
								
							@@ -171,7 +171,7 @@ if [[ ! -d /opt/snipe-it ]]; then
 | 
			
		||||
 | 
			
		||||
### 3.3 **Check version**
 | 
			
		||||
 | 
			
		||||
- Befoer updating, check if a new version exists.
 | 
			
		||||
- Before updating, check if a new version exists.
 | 
			
		||||
  - We use the `${APPLICATION}_version.txt` file created in `/opt` during the install to compare new versions against the currently installed version.
 | 
			
		||||
 | 
			
		||||
Example with a Github Release:
 | 
			
		||||
@@ -241,7 +241,7 @@ Example:
 | 
			
		||||
 | 
			
		||||
### 3.7 **No update function**
 | 
			
		||||
 | 
			
		||||
- In case you can not provide a update function use the following code to provide user feedback.
 | 
			
		||||
- In case you can not provide an update function use the following code to provide user feedback.
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
function update_script() {
 | 
			
		||||
@@ -252,7 +252,7 @@ function update_script() {
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "Ther is currently no automatic update function for ${APP}."
 | 
			
		||||
    msg_error "There is currently no automatic update function for ${APP}."
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
@@ -286,6 +286,6 @@ echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
- [ ] Metadata (author, license) is included at the top.
 | 
			
		||||
- [ ] Variables follow naming conventions.
 | 
			
		||||
- [ ] Update function exists.
 | 
			
		||||
- [ ] Update functions checks if app is installed an for new version.
 | 
			
		||||
- [ ] Update function up temporary files.
 | 
			
		||||
- [ ] Update functions checks if app is installed and for new version.
 | 
			
		||||
- [ ] Update function cleans up temporary files.
 | 
			
		||||
- [ ] Script ends with a helpful message for the user to reach the application.
 | 
			
		||||
 
 | 
			
		||||
@@ -80,7 +80,4 @@ msg_info "Cleaning up"
 | 
			
		||||
rm -f ${RELEASE}.zip
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/CONTRIBUTOR_GUIDE/json/AppName.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/CONTRIBUTOR_GUIDE/json/AppName.json
									
									
									
									
										vendored
									
									
								
							@@ -12,7 +12,7 @@
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "LINK TO WEBSITE",
 | 
			
		||||
    "logo": "LINK TO LOGO",
 | 
			
		||||
    "description": "Deescription of the app",
 | 
			
		||||
    "description": "Description of the app",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
 
 | 
			
		||||
@@ -74,7 +74,7 @@ jobs:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
      
 | 
			
		||||
      - name: Approve pull request
 | 
			
		||||
        if: steps.verify-diff.outputs.changed == 'true'
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        run: |
 | 
			
		||||
@@ -84,7 +84,7 @@ jobs:
 | 
			
		||||
          fi
 | 
			
		||||
          
 | 
			
		||||
      - name: Re-approve pull request after update
 | 
			
		||||
        if: steps.verify-diff.outputs.changed == 'true'
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        run: |
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										90
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										90
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -17,6 +17,96 @@ All LXC instances created using this repository come pre-installed with Midnight
 | 
			
		||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 2025-02-09
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New Script: pbs_microcode.sh [@DonPablo1010](https://github.com/DonPablo1010) ([#2166](https://github.com/community-scripts/ProxmoxVE/pull/2166))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Keep the same hass_config volume for Home Assistant [@genehand](https://github.com/genehand) ([#2160](https://github.com/community-scripts/ProxmoxVE/pull/2160))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Website: Set new Logo for Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2194](https://github.com/community-scripts/ProxmoxVE/pull/2194))
 | 
			
		||||
- Fix: Barcode Buddy Logo & Title [@MickLesk](https://github.com/MickLesk) ([#2183](https://github.com/community-scripts/ProxmoxVE/pull/2183))
 | 
			
		||||
 | 
			
		||||
## 2025-02-08
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New script: Barcode Buddy [@bvdberg01](https://github.com/bvdberg01) ([#2167](https://github.com/community-scripts/ProxmoxVE/pull/2167))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix: Actualbudget - salvage the `.migrate` file when upgrading [@bourquep](https://github.com/bourquep) ([#2173](https://github.com/community-scripts/ProxmoxVE/pull/2173))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Update cosmos.json description [@BramSuurdje](https://github.com/BramSuurdje) ([#2162](https://github.com/community-scripts/ProxmoxVE/pull/2162))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- fix typos in CONTRIBUTOR_GUIDE [@thomashondema](https://github.com/thomashondema) ([#2174](https://github.com/community-scripts/ProxmoxVE/pull/2174))
 | 
			
		||||
 | 
			
		||||
## 2025-02-07 - 10.000 ⭐
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
- [core]: Enhance LXC template handling and improve error recovery [@MickLesk](https://github.com/MickLesk) ([#2128](https://github.com/community-scripts/ProxmoxVE/pull/2128))
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New Script: Cosmos [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2120](https://github.com/community-scripts/ProxmoxVE/pull/2120))
 | 
			
		||||
- New Script: SearXNG [@MickLesk](https://github.com/MickLesk) ([#2123](https://github.com/community-scripts/ProxmoxVE/pull/2123))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix: Trillium Update Function & Harmonize Installation [@MickLesk](https://github.com/MickLesk) ([#2148](https://github.com/community-scripts/ProxmoxVE/pull/2148))
 | 
			
		||||
- Fix: Zerotier-One fixed missing dependency [@tremor021](https://github.com/tremor021) ([#2147](https://github.com/community-scripts/ProxmoxVE/pull/2147))
 | 
			
		||||
- Fix: Openwrt Version checking [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2137](https://github.com/community-scripts/ProxmoxVE/pull/2137))
 | 
			
		||||
- Fix: PeaNUT Increase HDD & RAM Size [@MickLesk](https://github.com/MickLesk) ([#2127](https://github.com/community-scripts/ProxmoxVE/pull/2127))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Fix: Zerotier json had a bad script path [@tremor021](https://github.com/tremor021) ([#2144](https://github.com/community-scripts/ProxmoxVE/pull/2144))
 | 
			
		||||
- Fix: Cosmos logo doesnt display on website [@MickLesk](https://github.com/MickLesk) ([#2132](https://github.com/community-scripts/ProxmoxVE/pull/2132))
 | 
			
		||||
- Fix JSON-Editor [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2121](https://github.com/community-scripts/ProxmoxVE/pull/2121))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
- [gh]: Following the trend - add star-history in readme [@MickLesk](https://github.com/MickLesk) ([#2135](https://github.com/community-scripts/ProxmoxVE/pull/2135))
 | 
			
		||||
 | 
			
		||||
## 2025-02-06
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 | 
			
		||||
### ✨ New Scripts
 | 
			
		||||
 | 
			
		||||
- New Script: Duplicati [@tremor021](https://github.com/tremor021) ([#2052](https://github.com/community-scripts/ProxmoxVE/pull/2052))
 | 
			
		||||
- New Script: Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2093](https://github.com/community-scripts/ProxmoxVE/pull/2093))
 | 
			
		||||
- New Script: Apache Tika [@andygrunwald](https://github.com/andygrunwald) ([#2079](https://github.com/community-scripts/ProxmoxVE/pull/2079))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
- Fix: Alpine IT-Tools Update [@MickLesk](https://github.com/MickLesk) ([#2067](https://github.com/community-scripts/ProxmoxVE/pull/2067))
 | 
			
		||||
- Fix: Pocket-ID Change link to GH Repo [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2082](https://github.com/community-scripts/ProxmoxVE/pull/2082))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
- Refactor JSON generator buttons layout for better alignment and consistency [@BramSuurdje](https://github.com/BramSuurdje) ([#2106](https://github.com/community-scripts/ProxmoxVE/pull/2106))
 | 
			
		||||
- Website: Refactor Footer for improved layout and styling consistency [@BramSuurdje](https://github.com/BramSuurdje) ([#2107](https://github.com/community-scripts/ProxmoxVE/pull/2107))
 | 
			
		||||
- Website: Update Footer for Json-Editor & Api [@MickLesk](https://github.com/MickLesk) ([#2100](https://github.com/community-scripts/ProxmoxVE/pull/2100))
 | 
			
		||||
- Website: Add Download for json-editor [@MickLesk](https://github.com/MickLesk) ([#2099](https://github.com/community-scripts/ProxmoxVE/pull/2099))
 | 
			
		||||
- Radicale: Provide additional information about configuration [@tremor021](https://github.com/tremor021) ([#2072](https://github.com/community-scripts/ProxmoxVE/pull/2072))
 | 
			
		||||
 | 
			
		||||
## 2025-02-05
 | 
			
		||||
 | 
			
		||||
### Changed
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
									
									
									
									
								
							@@ -91,6 +91,16 @@ If you encounter any issues or have suggestions for improvement, file a new issu
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## ⭐ Star History
 | 
			
		||||
 | 
			
		||||
<a href="https://star-history.com/#community-scripts/ProxmoxVE&Date">
 | 
			
		||||
 <picture>
 | 
			
		||||
   <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date&theme=dark" />
 | 
			
		||||
   <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date" />
 | 
			
		||||
   <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=community-scripts/ProxmoxVE&type=Date" />
 | 
			
		||||
 </picture>
 | 
			
		||||
</a>
 | 
			
		||||
 | 
			
		||||
## 📜 License
 | 
			
		||||
 | 
			
		||||
This project is licensed under the [MIT License](LICENSE).
 | 
			
		||||
 
 | 
			
		||||
@@ -48,6 +48,7 @@ function update_script() {
 | 
			
		||||
        mv *ctual-server-* /opt/actualbudget
 | 
			
		||||
        rm -rf /opt/actualbudget/.env
 | 
			
		||||
        mv /opt/actualbudget_bak/.env /opt/actualbudget
 | 
			
		||||
        mv /opt/actualbudget_bak/.migrate /opt/actualbudget
 | 
			
		||||
        mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files
 | 
			
		||||
        cd /opt/actualbudget
 | 
			
		||||
        yarn install &>/dev/null
 | 
			
		||||
 
 | 
			
		||||
@@ -29,27 +29,28 @@ function update_script() {
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
 | 
			
		||||
    if [[ ! -d /usr/share/nginx/html ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
if [ ! -d /usr/share/nginx/html ]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
        DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
 | 
			
		||||
        msg_info "Updating ${APP} LXC"
 | 
			
		||||
        curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
			
		||||
        mkdir -p /usr/share/nginx/html
 | 
			
		||||
        rm -rf /usr/share/nginx/html/*
 | 
			
		||||
        unzip -q it-tools.zip -d /tmp/it-tools
 | 
			
		||||
        cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
			
		||||
        rm -rf /tmp/it-tools
 | 
			
		||||
        rm -f it-tools.zip
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
 | 
			
		||||
if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt 2>/dev/null)" ] || [ ! -f /opt/${APP}_version.txt ]; then
 | 
			
		||||
    DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
 | 
			
		||||
    msg_info "Updating ${APP} LXC"
 | 
			
		||||
    curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
			
		||||
    mkdir -p /usr/share/nginx/html
 | 
			
		||||
    rm -rf /usr/share/nginx/html/*
 | 
			
		||||
    unzip -q it-tools.zip -d /tmp/it-tools
 | 
			
		||||
    cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
			
		||||
    rm -rf /tmp/it-tools
 | 
			
		||||
    rm -f it-tools.zip
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										69
									
								
								ct/apache-tika.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										69
									
								
								ct/apache-tika.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Andy Grunwald (andygrunwald)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/apache/tika/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Apache-Tika"
 | 
			
		||||
var_tags="document"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="10"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /etc/systemd/system/apache-tika.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE="$(wget -qO- https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)"
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop apache-tika
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cd /opt/apache-tika
 | 
			
		||||
    wget -q "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar"
 | 
			
		||||
    mv --force tika-server-standard.jar tika-server-standard-prev-version.jar
 | 
			
		||||
    mv tika-server-standard-${RELEASE}.jar tika-server-standard.jar
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start apache-tika
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
    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}:9998${CL}"
 | 
			
		||||
							
								
								
									
										76
									
								
								ct/barcode-buddy.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								ct/barcode-buddy.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
#!/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/Forceu/barcodebuddy
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Barcode-Buddy"
 | 
			
		||||
var_tags="grocery;household"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="512"
 | 
			
		||||
var_disk="3"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/barcodebuddy ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/Forceu/barcodebuddy/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 apache2
 | 
			
		||||
    systemctl stop barcodebuddy
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
 | 
			
		||||
    wget -q "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
    unzip -q "v${RELEASE}.zip"
 | 
			
		||||
    mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
 | 
			
		||||
    cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
 | 
			
		||||
    chown -R www-data:www-data /opt/barcodebuddy/data
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start apache2
 | 
			
		||||
    systemctl start barcodebuddy
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -r "/opt/v${RELEASE}.zip"
 | 
			
		||||
    rm -r /opt/barcodebuddy-backup
 | 
			
		||||
    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}"
 | 
			
		||||
							
								
								
									
										45
									
								
								ct/cosmos.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ct/cosmos.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: Michel Roegl-Brunner (michelroegl-brunner)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://https://cosmos-cloud.io/
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="cosmos"
 | 
			
		||||
var_tags="os,docker"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="8"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/cosmos ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "${APP} updates itself automatically!"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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}"
 | 
			
		||||
@@ -182,24 +182,37 @@ mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLA
 | 
			
		||||
[ ${#TEMPLATES[@]} -gt 0 ] || { msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."; exit 207; }
 | 
			
		||||
TEMPLATE="${TEMPLATES[-1]}"
 | 
			
		||||
 | 
			
		||||
# Download LXC template if needed
 | 
			
		||||
if ! pveam list $TEMPLATE_STORAGE | grep -q $TEMPLATE; then
 | 
			
		||||
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"; then
 | 
			
		||||
  [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
 | 
			
		||||
  msg_info "Downloading LXC Template"
 | 
			
		||||
  pveam download $TEMPLATE_STORAGE $TEMPLATE >/dev/null ||
 | 
			
		||||
    msg_error "A problem occured while downloading the LXC template."
 | 
			
		||||
    exit 208
 | 
			
		||||
  pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||
 | 
			
		||||
    { msg_error "A problem occurred while downloading the LXC template."; exit 208; }
 | 
			
		||||
  msg_ok "Downloaded LXC Template"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Check and fix subuid/subgid
 | 
			
		||||
grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >> /etc/subuid
 | 
			
		||||
grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >> /etc/subgid
 | 
			
		||||
 | 
			
		||||
# Combine all options
 | 
			
		||||
DEFAULT_PCT_OPTIONS=(
 | 
			
		||||
  -arch $(dpkg --print-architecture))
 | 
			
		||||
 | 
			
		||||
PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}})
 | 
			
		||||
[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs $CONTAINER_STORAGE:${PCT_DISK_SIZE:-8})
 | 
			
		||||
[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs "$CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}")
 | 
			
		||||
 | 
			
		||||
# Create container
 | 
			
		||||
# Create container with template integrity check
 | 
			
		||||
msg_info "Creating LXC Container"
 | 
			
		||||
pct create $CTID ${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE} ${PCT_OPTIONS[@]} >/dev/null || { msg_error "A problem occured while trying to create container.";  exit 200; }
 | 
			
		||||
  if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
 | 
			
		||||
      [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
 | 
			
		||||
      
 | 
			
		||||
    msg_ok "Template integrity check completed"
 | 
			
		||||
    pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||    
 | 
			
		||||
      { msg_error "A problem occurred while re-downloading the LXC template."; exit 208; }
 | 
			
		||||
    
 | 
			
		||||
    msg_ok "Re-downloaded LXC Template"
 | 
			
		||||
    if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
 | 
			
		||||
        msg_error "A problem occurred while trying to create container after re-downloading template."
 | 
			
		||||
      exit 200
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
msg_ok "LXC Container ${BL}$CTID${CL} ${GN}was successfully created."
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										65
									
								
								ct/duplicati.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								ct/duplicati.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,65 @@
 | 
			
		||||
#!/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: tremor021
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/duplicati/duplicati/
 | 
			
		||||
 | 
			
		||||
APP="Duplicati"
 | 
			
		||||
TAGS="backup"
 | 
			
		||||
var_cpu="1"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
var_disk="10"
 | 
			
		||||
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 /usr/bin/duplicati-server ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/duplicati/duplicati/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 duplicati
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
        wget -q "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb"
 | 
			
		||||
        $STD dpkg -i duplicati-${RELEASE}-linux-x64-gui.deb
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start duplicati
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf ~/duplicati-${RELEASE}-linux-x64-gui.deb
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8200${CL}"
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/apache-tika
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/apache-tika
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___                     __             _______ __        
 | 
			
		||||
   /   |  ____  ____ ______/ /_  ___      /_  __(_) /______ _
 | 
			
		||||
  / /| | / __ \/ __ `/ ___/ __ \/ _ \______/ / / / //_/ __ `/
 | 
			
		||||
 / ___ |/ /_/ / /_/ / /__/ / / /  __/_____/ / / / ,< / /_/ / 
 | 
			
		||||
/_/  |_/ .___/\__,_/\___/_/ /_/\___/     /_/ /_/_/|_|\__,_/  
 | 
			
		||||
      /_/                                                    
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/barcode-buddy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/barcode-buddy
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____                            __           ____            __    __     
 | 
			
		||||
   / __ )____ _______________  ____/ /__        / __ )__  ______/ /___/ /_  __
 | 
			
		||||
  / __  / __ `/ ___/ ___/ __ \/ __  / _ \______/ __  / / / / __  / __  / / / /
 | 
			
		||||
 / /_/ / /_/ / /  / /__/ /_/ / /_/ /  __/_____/ /_/ / /_/ / /_/ / /_/ / /_/ / 
 | 
			
		||||
/_____/\__,_/_/   \___/\____/\__,_/\___/     /_____/\__,_/\__,_/\__,_/\__, /  
 | 
			
		||||
                                                                     /____/   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/cosmos
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/cosmos
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
                                       
 | 
			
		||||
  _________  _________ ___  ____  _____
 | 
			
		||||
 / ___/ __ \/ ___/ __ `__ \/ __ \/ ___/
 | 
			
		||||
/ /__/ /_/ (__  ) / / / / / /_/ (__  ) 
 | 
			
		||||
\___/\____/____/_/ /_/ /_/\____/____/  
 | 
			
		||||
                                       
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/duplicati
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/duplicati
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____              ___            __  _ 
 | 
			
		||||
   / __ \__  ______  / (_)________ _/ /_(_)
 | 
			
		||||
  / / / / / / / __ \/ / / ___/ __ `/ __/ / 
 | 
			
		||||
 / /_/ / /_/ / /_/ / / / /__/ /_/ / /_/ /  
 | 
			
		||||
/_____/\__,_/ .___/_/_/\___/\__,_/\__/_/   
 | 
			
		||||
           /_/                             
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/paperless-ai
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/paperless-ai
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____                        __                     ___    ____
 | 
			
		||||
   / __ \____ _____  ___  _____/ /__  __________      /   |  /  _/
 | 
			
		||||
  / /_/ / __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/_____/ /| |  / /  
 | 
			
		||||
 / ____/ /_/ / /_/ /  __/ /  / /  __(__  |__  )_____/ ___ |_/ /   
 | 
			
		||||
/_/    \__,_/ .___/\___/_/  /_/\___/____/____/     /_/  |_/___/   
 | 
			
		||||
           /_/                                                    
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/searxng
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/searxng
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   _____                _  __ _   ________
 | 
			
		||||
  / ___/___  ____ _____| |/ // | / / ____/
 | 
			
		||||
  \__ \/ _ \/ __ `/ ___/   //  |/ / / __  
 | 
			
		||||
 ___/ /  __/ /_/ / /  /   |/ /|  / /_/ /  
 | 
			
		||||
/____/\___/\__,_/_/  /_/|_/_/ |_/\____/   
 | 
			
		||||
                                          
 | 
			
		||||
@@ -49,7 +49,7 @@ function update_script() {
 | 
			
		||||
      LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
 | 
			
		||||
      if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then
 | 
			
		||||
        echo "Updating ${container} image ${CONTAINER_IMAGE}"
 | 
			
		||||
        DOCKER_COMMAND="$(runlike "${container}")"
 | 
			
		||||
        DOCKER_COMMAND="$(runlike --use-volume-id "${container}")"
 | 
			
		||||
        docker rm --force "${container}"
 | 
			
		||||
        eval ${DOCKER_COMMAND}
 | 
			
		||||
      fi
 | 
			
		||||
@@ -113,4 +113,4 @@ 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}HA: http://${IP}:8123${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										75
									
								
								ct/paperless-ai.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								ct/paperless-ai.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: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/clusterzx/paperless-ai
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="Paperless-AI"
 | 
			
		||||
var_tags="ai;document"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="5"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/paperless-ai ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/clusterzx/paperless-ai/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 paperless-ai
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/paperless-ai /opt/paperless-ai_bak
 | 
			
		||||
    wget -q "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    mv paperless-ai-${RELEASE} /opt/paperless-ai
 | 
			
		||||
    mkdir -p /opt/paperless-ai/data
 | 
			
		||||
    cp -a /opt/paperless-ai_bak/data/. /opt/paperless-ai/data/
 | 
			
		||||
    cd /opt/paperless-ai
 | 
			
		||||
    npm install &>/dev/null
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start paperless-ai
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/paperless-ai_bak
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
@@ -9,8 +9,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
APP="PeaNUT"
 | 
			
		||||
var_tags="network;ups;"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
var_ram="3072"
 | 
			
		||||
var_disk="7"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Snarkenfaugister
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/stonith404/pocket-id
 | 
			
		||||
# Source: https://github.com/pocket-id/pocket-id
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="PocketID"
 | 
			
		||||
@@ -34,7 +34,7 @@ function update_script() {
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/stonith404/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/pocket-id/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
        msg_info "Updating $APP"
 | 
			
		||||
 | 
			
		||||
@@ -50,7 +50,7 @@ function update_script() {
 | 
			
		||||
        cp /opt/pocket-id/backend/.env /opt/backend.env
 | 
			
		||||
        cp /opt/pocket-id/frontend/.env /opt/frontend.env
 | 
			
		||||
        rm -r /opt/pocket-id
 | 
			
		||||
        wget -q "https://github.com/stonith404/pocket-id/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
        wget -q "https://github.com/pocket-id/pocket-id/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
        unzip -q v${RELEASE}.zip
 | 
			
		||||
        mv pocket-id-${RELEASE} /opt/pocket-id
 | 
			
		||||
        mv /opt/data /opt/pocket-id/backend/data
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										47
									
								
								ct/searxng.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								ct/searxng.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
#!/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://github.com/searxng/searxng
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="SearXNG"
 | 
			
		||||
var_tags="search"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="7"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
# App Output & Base Settings
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
base_settings
 | 
			
		||||
 | 
			
		||||
# Core
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /usr/local/searxng/searxng-src ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
    if cd /usr/local/searxng/searxng-src && git pull | grep -q 'Already up to date'; then
 | 
			
		||||
    msg_ok "There is currently no update available."
 | 
			
		||||
  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}:8888${CL}"
 | 
			
		||||
@@ -32,21 +32,30 @@ function update_script() {
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop trilium
 | 
			
		||||
    sleep 1
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating to ${RELEASE}"
 | 
			
		||||
    mkdir -p /opt/trilium_backup
 | 
			
		||||
    mv /opt/trilium/{db,dump-db} /opt/trilium_backup/
 | 
			
		||||
    rm -rf /opt/trilium
 | 
			
		||||
    cd /tmp
 | 
			
		||||
    wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
 | 
			
		||||
    tar -xf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
 | 
			
		||||
    cp -r trilium-linux-x64-server/* /opt/trilium/
 | 
			
		||||
    mv trilium-linux-x64-server /opt/trilium
 | 
			
		||||
    cp -r /opt/trilium_backup/{db,dump-db} /opt/trilium/
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz trilium-linux-x64-server
 | 
			
		||||
    rm -rf /tmp/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz 
 | 
			
		||||
    rm -rf /opt/trilium_backup
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
@@ -54,7 +63,10 @@ function update_script() {
 | 
			
		||||
    sleep 1
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
    exit
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -64,8 +64,8 @@ function InstallMethod({
 | 
			
		||||
            if (key === "type") {
 | 
			
		||||
              updatedMethod.script =
 | 
			
		||||
                value === "alpine"
 | 
			
		||||
                  ? `/${prev.type}/alpine-${prev.slug}.sh`
 | 
			
		||||
                  : `/${prev.type}/${prev.slug}.sh`;
 | 
			
		||||
                  ? `${prev.type}/alpine-${prev.slug}.sh`
 | 
			
		||||
                  : `${prev.type}/${prev.slug}.sh`;
 | 
			
		||||
 | 
			
		||||
              // Set OS to Alpine and reset version if type is alpine
 | 
			
		||||
              if (value === "alpine") {
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ import { fetchCategories } from "@/lib/data";
 | 
			
		||||
import { Category } from "@/lib/types";
 | 
			
		||||
import { cn } from "@/lib/utils";
 | 
			
		||||
import { format } from "date-fns";
 | 
			
		||||
import { CalendarIcon, Check, Clipboard } from "lucide-react";
 | 
			
		||||
import { CalendarIcon, Check, Clipboard, Download } from "lucide-react";
 | 
			
		||||
import { useCallback, useEffect, useMemo, useState } from "react";
 | 
			
		||||
import { toast } from "sonner";
 | 
			
		||||
import { z } from "zod";
 | 
			
		||||
@@ -76,8 +76,8 @@ export default function JSONGenerator() {
 | 
			
		||||
            ...method,
 | 
			
		||||
            script:
 | 
			
		||||
              method.type === "alpine"
 | 
			
		||||
                ? `/${updated.type}/alpine-${updated.slug}.sh`
 | 
			
		||||
                : `/${updated.type}/${updated.slug}.sh`,
 | 
			
		||||
                ? `${updated.type}/alpine-${updated.slug}.sh`
 | 
			
		||||
                : `${updated.type}/${updated.slug}.sh`,
 | 
			
		||||
          }));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -97,6 +97,21 @@ export default function JSONGenerator() {
 | 
			
		||||
    toast.success("Copied metadata to clipboard");
 | 
			
		||||
  }, [script]);
 | 
			
		||||
 | 
			
		||||
  const handleDownload = useCallback(() => {
 | 
			
		||||
    const jsonString = JSON.stringify(script, null, 2);
 | 
			
		||||
    const blob = new Blob([jsonString], { type: "application/json" });
 | 
			
		||||
    const url = URL.createObjectURL(blob);
 | 
			
		||||
  
 | 
			
		||||
    const a = document.createElement("a");
 | 
			
		||||
    a.href = url;
 | 
			
		||||
    a.download = `${script.slug || "script"}.json`;
 | 
			
		||||
    document.body.appendChild(a);
 | 
			
		||||
    a.click();
 | 
			
		||||
  
 | 
			
		||||
    URL.revokeObjectURL(url);
 | 
			
		||||
    document.body.removeChild(a);
 | 
			
		||||
  }, [script]);
 | 
			
		||||
 | 
			
		||||
  const handleDateSelect = useCallback(
 | 
			
		||||
    (date: Date | undefined) => {
 | 
			
		||||
      updateScript("date_created", format(date || new Date(), "yyyy-MM-dd"));
 | 
			
		||||
@@ -313,18 +328,23 @@ export default function JSONGenerator() {
 | 
			
		||||
      <div className="w-1/2 p-4 bg-background overflow-y-auto">
 | 
			
		||||
        {validationAlert}
 | 
			
		||||
        <div className="relative">
 | 
			
		||||
          <Button
 | 
			
		||||
            className="absolute right-2 top-2"
 | 
			
		||||
            size="icon"
 | 
			
		||||
            variant="outline"
 | 
			
		||||
            onClick={handleCopy}
 | 
			
		||||
          >
 | 
			
		||||
            {isCopied ? (
 | 
			
		||||
              <Check className="h-4 w-4" />
 | 
			
		||||
            ) : (
 | 
			
		||||
              <Clipboard className="h-4 w-4" />
 | 
			
		||||
            )}
 | 
			
		||||
          </Button>
 | 
			
		||||
          <div className="absolute right-2 top-2 flex gap-1">
 | 
			
		||||
            <Button
 | 
			
		||||
              size="icon"
 | 
			
		||||
              variant="outline"
 | 
			
		||||
              onClick={handleCopy}
 | 
			
		||||
            >
 | 
			
		||||
              {isCopied ? <Check className="h-4 w-4" /> : <Clipboard className="h-4 w-4" />}
 | 
			
		||||
            </Button>
 | 
			
		||||
            <Button
 | 
			
		||||
              size="icon"
 | 
			
		||||
              variant="outline"
 | 
			
		||||
              onClick={handleDownload}
 | 
			
		||||
            >
 | 
			
		||||
              <Download className="h-4 w-4" />
 | 
			
		||||
            </Button>
 | 
			
		||||
          </div>
 | 
			
		||||
        
 | 
			
		||||
          <pre className="mt-4 p-4 bg-secondary rounded shadow overflow-x-scroll">
 | 
			
		||||
            {JSON.stringify(script, null, 2)}
 | 
			
		||||
          </pre>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,22 +1,41 @@
 | 
			
		||||
import { basePath } from "@/config/siteConfig";
 | 
			
		||||
import Link from "next/link";
 | 
			
		||||
import { FileJson, Server, ExternalLink } from "lucide-react";
 | 
			
		||||
import { buttonVariants } from "./ui/button";
 | 
			
		||||
import { cn } from "@/lib/utils";
 | 
			
		||||
 | 
			
		||||
export default function Footer() {
 | 
			
		||||
  return (
 | 
			
		||||
    <div className="supports-backdrop-blur:bg-background/90 mt-auto flex border-t border-border bg-background/40 py-6 backdrop-blur-lg">
 | 
			
		||||
      <div className="flex w-full justify-between">
 | 
			
		||||
        <div className="mx-6 w-full max-w-7xl text-xs sm:text-sm text-muted-foreground">
 | 
			
		||||
          Website built by the community. The source code is avaliable on{" "}
 | 
			
		||||
    <div className="supports-backdrop-blur:bg-background/90 mt-auto border-t w-full flex justify-between border-border bg-background/40 py-6 backdrop-blur-lg">
 | 
			
		||||
      <div className="mx-6 w-full flex justify-between text-xs sm:text-sm text-muted-foreground">
 | 
			
		||||
        <div className="flex items-center">
 | 
			
		||||
          <p>
 | 
			
		||||
            Website built by the community. The source code is available on{" "}
 | 
			
		||||
            <Link
 | 
			
		||||
              href={`https://github.com/community-scripts/${basePath}`}
 | 
			
		||||
              target="_blank"
 | 
			
		||||
              rel="noreferrer"
 | 
			
		||||
              className="font-semibold underline-offset-2 duration-300 hover:underline"
 | 
			
		||||
              data-umami-event="View Website Source Code on Github"
 | 
			
		||||
            >
 | 
			
		||||
              GitHub
 | 
			
		||||
            </Link>
 | 
			
		||||
            .
 | 
			
		||||
          </p>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div className="sm:flex hidden">
 | 
			
		||||
          <Link
 | 
			
		||||
            href={`https://github.com/community-scripts/${basePath}`}
 | 
			
		||||
            target="_blank"
 | 
			
		||||
            rel="noreferrer"
 | 
			
		||||
            className="font-semibold underline-offset-2 duration-300 hover:underline"
 | 
			
		||||
            data-umami-event="View Website Source Code on Github"
 | 
			
		||||
            href="/json-editor"
 | 
			
		||||
            className={cn(buttonVariants({ variant: "link" }), "text-muted-foreground flex items-center gap-2")}
 | 
			
		||||
          >
 | 
			
		||||
            GitHub
 | 
			
		||||
            <FileJson className="h-4 w-4" /> JSON Editor
 | 
			
		||||
          </Link>
 | 
			
		||||
          <Link
 | 
			
		||||
            href="/data"
 | 
			
		||||
            className={cn(buttonVariants({ variant: "link" }), "text-muted-foreground flex items-center gap-2")}
 | 
			
		||||
          >
 | 
			
		||||
            <Server className="h-4 w-4" /> API Data
 | 
			
		||||
          </Link>
 | 
			
		||||
          .
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										78
									
								
								install/apache-tika-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								install/apache-tika-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Andy Grunwald (andygrunwald)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/apache/tika/
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
  curl \
 | 
			
		||||
  sudo \
 | 
			
		||||
  mc \
 | 
			
		||||
  software-properties-common \
 | 
			
		||||
  gdal-bin \
 | 
			
		||||
  tesseract-ocr \
 | 
			
		||||
  tesseract-ocr-eng \
 | 
			
		||||
  tesseract-ocr-ita \
 | 
			
		||||
  tesseract-ocr-fra \
 | 
			
		||||
  tesseract-ocr-spa \
 | 
			
		||||
  tesseract-ocr-deu
 | 
			
		||||
$STD echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  xfonts-utils \
 | 
			
		||||
  fonts-freefont-ttf \
 | 
			
		||||
  fonts-liberation \
 | 
			
		||||
  ttf-mscorefonts-installer \
 | 
			
		||||
  cabextract
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup OpenJDK"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  openjdk-17-jre-headless
 | 
			
		||||
msg_ok "Setup OpenJDK"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Apache Tika"
 | 
			
		||||
mkdir -p /opt/apache-tika
 | 
			
		||||
cd /opt/apache-tika
 | 
			
		||||
RELEASE="$(wget -qO- https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)"
 | 
			
		||||
wget -q "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar"
 | 
			
		||||
mv tika-server-standard-${RELEASE}.jar tika-server-standard.jar
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
msg_ok "Installed Apache Tika"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/apache-tika.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Apache Tika
 | 
			
		||||
Documentation=https://tika.apache.org/
 | 
			
		||||
After=syslog.target network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
User=root
 | 
			
		||||
Restart=always
 | 
			
		||||
Type=simple
 | 
			
		||||
ExecStart=java -jar /opt/apache-tika/tika-server-standard.jar --host 0.0.0.0 --port 9998
 | 
			
		||||
ExecReload=/bin/kill -HUP \$MAINPID
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now apache-tika
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
							
								
								
									
										81
									
								
								install/barcode-buddy-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								install/barcode-buddy-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: bvdberg01
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
  curl \
 | 
			
		||||
  sudo \
 | 
			
		||||
  mc \
 | 
			
		||||
  apache2 \
 | 
			
		||||
  redis \
 | 
			
		||||
  php-{curl,date,json,mbstring,redis,sqlite3,sockets} \
 | 
			
		||||
  libapache2-mod-php
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing barcodebuddy"
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
cd /opt
 | 
			
		||||
wget -q "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
unzip -q "v${RELEASE}.zip"
 | 
			
		||||
mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
 | 
			
		||||
chown -R www-data:www-data /opt/barcodebuddy/data
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
msg_ok "Installed barcodebuddy"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Services"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/barcodebuddy.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Run websocket server for barcodebuddy screen feature
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
ExecStart=/usr/bin/php /opt/barcodebuddy/wsserver.php
 | 
			
		||||
StandardOutput=null
 | 
			
		||||
Restart=on-failure
 | 
			
		||||
User=www-data
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
cat <<EOF >/etc/apache2/sites-available/barcodebuddy.conf
 | 
			
		||||
<VirtualHost *:80>
 | 
			
		||||
    ServerName barcodebuddy
 | 
			
		||||
    DocumentRoot /opt/barcodebuddy
 | 
			
		||||
    
 | 
			
		||||
    <Directory /opt/barcodebuddy>
 | 
			
		||||
        Options FollowSymLinks
 | 
			
		||||
        AllowOverride All
 | 
			
		||||
        Require all granted
 | 
			
		||||
    </Directory>
 | 
			
		||||
 | 
			
		||||
    ErrorLog /var/log/apache2/barcodebuddy_error.log
 | 
			
		||||
    CustomLog /var/log/apache2/barcodebuddy_access.log combined
 | 
			
		||||
</VirtualHost>
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now barcodebuddy
 | 
			
		||||
$STD a2ensite barcodebuddy
 | 
			
		||||
$STD a2enmod rewrite
 | 
			
		||||
$STD a2dissite 000-default.conf
 | 
			
		||||
$STD systemctl reload apache2
 | 
			
		||||
msg_ok "Created Services"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf "/opt/v${RELEASE}.zip"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
							
								
								
									
										86
									
								
								install/cosmos-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								install/cosmos-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,86 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Michel Roegl-Brunner (michelroegl-brunner)
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
source /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 \
 | 
			
		||||
 curl \
 | 
			
		||||
 mc \
 | 
			
		||||
 sudo \
 | 
			
		||||
 snapraid \
 | 
			
		||||
 avahi-daemon \
 | 
			
		||||
 fdisk
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Install mergerfs"
 | 
			
		||||
MERGERFS_VERSION="2.40.2"
 | 
			
		||||
wget -q "https://github.com/trapexit/mergerfs/releases/download/${MERGERFS_VERSION}/mergerfs_${MERGERFS_VERSION}.debian-bullseye_amd64.deb"
 | 
			
		||||
$STD dpkg -i "mergerfs_${MERGERFS_VERSION}.debian-bullseye_amd64.deb" || $STD apt-get install -f -y
 | 
			
		||||
rm "mergerfs_${MERGERFS_VERSION}.debian-bullseye_amd64.deb"
 | 
			
		||||
msg_ok "Installed mergerfs"
 | 
			
		||||
 | 
			
		||||
msg_info "Install Docker"
 | 
			
		||||
curl -fsSL https://get.docker.com -o get-docker.sh
 | 
			
		||||
$STD sh get-docker.sh
 | 
			
		||||
rm get-docker.sh
 | 
			
		||||
msg_ok "Installed Docker"
 | 
			
		||||
 | 
			
		||||
msg_info "Install Cosmos" 
 | 
			
		||||
mkdir -p /opt/cosmos
 | 
			
		||||
LATEST_RELEASE=$(curl -s https://api.github.com/repos/azukaar/Cosmos-Server/releases/latest | grep "tag_name" | cut -d '"' -f 4)
 | 
			
		||||
ZIP_FILE="cosmos-cloud-${LATEST_RELEASE#v}-amd64.zip"
 | 
			
		||||
curl -sL "https://github.com/azukaar/Cosmos-Server/releases/download/${LATEST_RELEASE}/${ZIP_FILE}" -o "/opt/cosmos/${ZIP_FILE}"
 | 
			
		||||
cd /opt/cosmos
 | 
			
		||||
unzip -o -q "${ZIP_FILE}"
 | 
			
		||||
LATEST_RELEASE_NO_V=${LATEST_RELEASE#v}
 | 
			
		||||
mv /opt/cosmos/cosmos-cloud-${LATEST_RELEASE_NO_V}/* /opt/cosmos/
 | 
			
		||||
rmdir /opt/cosmos/cosmos-cloud-${LATEST_RELEASE_NO_V}
 | 
			
		||||
chmod +x /opt/cosmos/cosmos
 | 
			
		||||
msg_ok "Installed Cosmos"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF > /etc/systemd/system/cosmos.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Cosmos Cloud service
 | 
			
		||||
ConditionFileIsExecutable=/opt/cosmos/start.sh
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
StartLimitInterval=10
 | 
			
		||||
StartLimitBurst=5
 | 
			
		||||
ExecStart=/opt/cosmos/start.sh
 | 
			
		||||
 | 
			
		||||
WorkingDirectory=/opt/cosmos
 | 
			
		||||
 | 
			
		||||
Restart=always
 | 
			
		||||
 | 
			
		||||
RestartSec=2
 | 
			
		||||
EnvironmentFile=-/etc/sysconfig/CosmosCloud
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
systemctl enable -q --now cosmos.service
 | 
			
		||||
msg_info "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -f "/opt/cosmos/cosmos-cloud-${LATEST_RELEASE#v}-amd64.zip"
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
							
								
								
									
										66
									
								
								install/duplicati-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								install/duplicati-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: tremor021
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/duplicati/duplicati
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
  curl \
 | 
			
		||||
  sudo \
 | 
			
		||||
  mc \
 | 
			
		||||
  libice6 \
 | 
			
		||||
  libsm6 \
 | 
			
		||||
  libfontconfig1
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Duplicati"
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/duplicati/duplicati/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
 | 
			
		||||
wget -q "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb"
 | 
			
		||||
$STD dpkg -i duplicati-${RELEASE}-linux-x64-gui.deb
 | 
			
		||||
echo "${RELEASE}" >/opt/Duplicati_version.txt
 | 
			
		||||
msg_ok "Finished setting up Duplicati"
 | 
			
		||||
 | 
			
		||||
DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
 | 
			
		||||
ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
 | 
			
		||||
{
 | 
			
		||||
    echo "Admin password = ${ADMINPASS}"
 | 
			
		||||
    echo "Database encryption key = ${DECRYPTKEY}"
 | 
			
		||||
} >> ~/duplicati.creds
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/duplicati.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Duplicati Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
ExecStart=/usr/bin/duplicati-server --webservice-interface=any --webservice-password=$ADMINPASS --settings-encryption-key=$DECRYPTKEY
 | 
			
		||||
Restart=always
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now duplicati
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -f duplicati-${RELEASE}-linux-x64-gui.deb
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
							
								
								
									
										93
									
								
								install/paperless-ai-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								install/paperless-ai-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,93 @@
 | 
			
		||||
#!/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 /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 \
 | 
			
		||||
	curl \
 | 
			
		||||
	sudo \
 | 
			
		||||
	mc \
 | 
			
		||||
	gpg
 | 
			
		||||
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 apt-get update
 | 
			
		||||
$STD apt-get install -y nodejs
 | 
			
		||||
msg_ok "Installed Node.js"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup Paperless-AI"
 | 
			
		||||
cd /opt
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/clusterzx/paperless-ai/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
wget -q "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
unzip -q v${RELEASE}.zip
 | 
			
		||||
mv paperless-ai-${RELEASE} /opt/paperless-ai
 | 
			
		||||
cd /opt/paperless-ai
 | 
			
		||||
$STD npm install
 | 
			
		||||
mkdir -p /opt/paperless-ai/data
 | 
			
		||||
cat <<EOF >/opt/paperless-ai/data/.env
 | 
			
		||||
PAPERLESS_API_URL=
 | 
			
		||||
PAPERLESS_API_TOKEN=
 | 
			
		||||
PAPERLESS_USERNAME=
 | 
			
		||||
AI_PROVIDER=openai
 | 
			
		||||
OPENAI_API_KEY=
 | 
			
		||||
OPENAI_MODEL=gpt-4o-mini
 | 
			
		||||
OLLAMA_API_URL=
 | 
			
		||||
OLLAMA_MODEL=
 | 
			
		||||
SCAN_INTERVAL=*/10 * * * *
 | 
			
		||||
SYSTEM_PROMPT=""
 | 
			
		||||
PROCESS_PREDEFINED_DOCUMENTS=no
 | 
			
		||||
TAGS=
 | 
			
		||||
ADD_AI_PROCESSED_TAG=no
 | 
			
		||||
AI_PROCESSED_TAG_NAME=ki-gen
 | 
			
		||||
USE_PROMPT_TAGS=no
 | 
			
		||||
PROMPT_TAGS=
 | 
			
		||||
USE_EXISTING_DATA=no
 | 
			
		||||
API_KEY=
 | 
			
		||||
CUSTOM_API_KEY=
 | 
			
		||||
CUSTOM_BASE_URL=
 | 
			
		||||
CUSTOM_MODEL=
 | 
			
		||||
EOF
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
msg_ok "Setup Paperless-AI"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/paperless-ai.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=PaperlessAI Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
WorkingDirectory=/opt/paperless-ai
 | 
			
		||||
ExecStart=/usr/bin/npm start
 | 
			
		||||
Restart=always
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now paperless-ai.service
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Snarkenfaugister
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/stonith404/pocket-id
 | 
			
		||||
# Source: https://github.com/pocket-id/pocket-id
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
@@ -48,8 +48,8 @@ msg_ok "Installed Golang"
 | 
			
		||||
read -r -p "What public URL do you want to use (e.g. pocketid.mydomain.com)? " public_url
 | 
			
		||||
msg_info "Setup Pocket ID"
 | 
			
		||||
cd /opt
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/stonith404/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
wget -q "https://github.com/stonith404/pocket-id/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/pocket-id/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
wget -q "https://github.com/pocket-id/pocket-id/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
unzip -q v${RELEASE}.zip
 | 
			
		||||
mv pocket-id-${RELEASE}/ /opt/pocket-id
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										116
									
								
								install/searxng-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								install/searxng-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,116 @@
 | 
			
		||||
#!/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://github.com/searxng/searxng
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies (Patience)"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  redis-server \
 | 
			
		||||
  build-essential \
 | 
			
		||||
  libffi-dev \
 | 
			
		||||
  libssl-dev \
 | 
			
		||||
  curl \
 | 
			
		||||
  sudo \
 | 
			
		||||
  git \
 | 
			
		||||
  mc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup Python3" 
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  python3 \
 | 
			
		||||
  python3-{pip,venv,yaml,dev} 
 | 
			
		||||
$STD pip install --upgrade pip setuptools wheel 
 | 
			
		||||
$STD pip install pyyaml
 | 
			
		||||
msg_ok "Setup Python3"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup SearXNG"
 | 
			
		||||
mkdir -p /usr/local/searxng /etc/searxng
 | 
			
		||||
useradd -d /etc/searxng searxng
 | 
			
		||||
chown searxng:searxng /usr/local/searxng /etc/searxng
 | 
			
		||||
$STD git clone https://github.com/searxng/searxng.git /usr/local/searxng/searxng-src
 | 
			
		||||
cd /usr/local/searxng/
 | 
			
		||||
sudo -u searxng python3 -m venv /usr/local/searxng/searx-pyenv
 | 
			
		||||
source /usr/local/searxng/searx-pyenv/bin/activate
 | 
			
		||||
$STD pip install --upgrade pip setuptools wheel 
 | 
			
		||||
$STD pip install pyyaml
 | 
			
		||||
$STD pip install -e /usr/local/searxng/searxng-src
 | 
			
		||||
SECRET_KEY=$(openssl rand -hex 32)
 | 
			
		||||
cat <<EOF >/etc/searxng/settings.yml
 | 
			
		||||
# SearXNG settings
 | 
			
		||||
use_default_settings: true
 | 
			
		||||
general:
 | 
			
		||||
  debug: false
 | 
			
		||||
  instance_name: "SearXNG"
 | 
			
		||||
  privacypolicy_url: false
 | 
			
		||||
  contact_url: false
 | 
			
		||||
server:
 | 
			
		||||
  bind_address: "0.0.0.0"
 | 
			
		||||
  port: 8888
 | 
			
		||||
  secret_key: "${SECRET_KEY}"
 | 
			
		||||
  limiter: true
 | 
			
		||||
  image_proxy: true
 | 
			
		||||
redis:
 | 
			
		||||
  url: "redis://127.0.0.1:6379/0"
 | 
			
		||||
ui:
 | 
			
		||||
  static_use_hash: true
 | 
			
		||||
enabled_plugins:
 | 
			
		||||
  - 'Hash plugin'
 | 
			
		||||
  - 'Self Information'
 | 
			
		||||
  - 'Tracker URL remover'
 | 
			
		||||
  - 'Ahmia blacklist'
 | 
			
		||||
search:
 | 
			
		||||
  safe_search: 2
 | 
			
		||||
  autocomplete: 'google'
 | 
			
		||||
engines:
 | 
			
		||||
  - name: google
 | 
			
		||||
    engine: google
 | 
			
		||||
    shortcut: gg
 | 
			
		||||
    use_mobile_ui: false
 | 
			
		||||
  - name: duckduckgo
 | 
			
		||||
    engine: duckduckgo
 | 
			
		||||
    shortcut: ddg
 | 
			
		||||
    display_error_messages: true
 | 
			
		||||
EOF
 | 
			
		||||
chown searxng:searxng /etc/searxng/settings.yml
 | 
			
		||||
chmod 640 /etc/searxng/settings.yml
 | 
			
		||||
msg_ok "Setup SearXNG"
 | 
			
		||||
 | 
			
		||||
msg_info "Set up web services"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/searxng.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=SearXNG service
 | 
			
		||||
After=network.target redis-server.service
 | 
			
		||||
Wants=redis-server.service
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
User=searxng
 | 
			
		||||
Group=searxng
 | 
			
		||||
Environment="SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml"
 | 
			
		||||
ExecStart=/usr/local/searxng/searx-pyenv/bin/python -m searx.webapp
 | 
			
		||||
WorkingDirectory=/usr/local/searxng/searxng-src
 | 
			
		||||
Restart=always
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now searxng
 | 
			
		||||
msg_ok "Created Services"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
$STD apt-get autoremove
 | 
			
		||||
$STD apt-get autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -2,8 +2,7 @@
 | 
			
		||||
 | 
			
		||||
# 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 /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
@@ -14,23 +13,24 @@ 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 \
 | 
			
		||||
  curl \
 | 
			
		||||
  sudo \
 | 
			
		||||
  mc
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup TriliumNext"
 | 
			
		||||
cd /opt
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
 | 
			
		||||
msg_info "Installing TriliumNext"
 | 
			
		||||
wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
 | 
			
		||||
tar -xf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
 | 
			
		||||
mv trilium-linux-x64-server /opt/trilium
 | 
			
		||||
msg_ok "Installed TriliumNext"
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
msg_ok "Setup TriliumNext"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
service_path="/etc/systemd/system/trilium.service"
 | 
			
		||||
 | 
			
		||||
echo "[Unit]
 | 
			
		||||
cat <<EOF >/etc/systemd/system/trilium.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Trilium Daemon
 | 
			
		||||
After=syslog.target network.target
 | 
			
		||||
 | 
			
		||||
@@ -43,7 +43,8 @@ TimeoutStopSec=20
 | 
			
		||||
Restart=always
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target" >$service_path
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable --now -q trilium
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
@@ -51,7 +52,7 @@ motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /opt/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
rm -rf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,8 @@ msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  curl \
 | 
			
		||||
  mc \
 | 
			
		||||
  sudo
 | 
			
		||||
  sudo \
 | 
			
		||||
  gnupg
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Zerotier-One"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										34
									
								
								json/apache-tika.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								json/apache-tika.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Apache Tika",
 | 
			
		||||
    "slug": "apache-tika",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        12
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2025-02-05",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": true,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 9998,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "https://tika.apache.org/",
 | 
			
		||||
    "logo": "https://tika.apache.org/tika.png",
 | 
			
		||||
    "description": "The Apache Tika™ toolkit detects and extracts metadata and text from over a thousand different file types (such as PPT, XLS, and PDF). All of these file types can be parsed through a single interface, making Tika useful for search engine indexing, content analysis, translation, and much more.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/apache-tika.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 2024,
 | 
			
		||||
                "hdd": 10,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										39
									
								
								json/barcode-buddy.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								json/barcode-buddy.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Barcode Buddy",
 | 
			
		||||
  "slug": "barcode-buddy",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    24
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-02-08",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 80,
 | 
			
		||||
  "documentation": "https://barcodebuddy-documentation.readthedocs.io/en/latest/",
 | 
			
		||||
  "website": "https://github.com/Forceu/barcodebuddy",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/Forceu/barcodebuddy/refs/heads/master/incl/img/favicon/android-icon-192x192.png",
 | 
			
		||||
  "description": "Barcode Buddy for Grocy is an extension for Grocy, allowing to pass barcodes to Grocy. It supports barcodes for products and chores. If you own a physical barcode scanner, it can be integrated, so that all barcodes scanned are automatically pushed to BarcodeBuddy/Grocy.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/barcode-buddy.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 512,
 | 
			
		||||
        "hdd": 3,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "text": "After install enable the option \"Use Redis cache\" on the settings page.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										35
									
								
								json/cosmos.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								json/cosmos.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Cosmos",
 | 
			
		||||
  "slug": "cosmos",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    2,
 | 
			
		||||
    3
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-02-07",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 80,
 | 
			
		||||
  "documentation": "https://cosmos-cloud.io/doc/1%20index/",
 | 
			
		||||
  "website": "https://cosmos-cloud.io/",
 | 
			
		||||
  "logo": "https://cosmos-cloud.io/Logo.png",
 | 
			
		||||
  "description": "Cosmos Cloud is a self-hosting platform that automates maintenance and security. It offers an app marketplace, reverse proxy management, container control, VPN integration, real-time monitoring, and disk management. Security features include SSO, anti-DDoS, and encryption. It simplifies self-hosting for all users.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/cosmos.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 8,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										39
									
								
								json/duplicati.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								json/duplicati.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Duplicati",
 | 
			
		||||
    "slug": "duplicati",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        7
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2025-02-06",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": true,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 8200,
 | 
			
		||||
    "documentation": "https://docs.duplicati.com/",
 | 
			
		||||
    "website": "https://duplicati.com/",
 | 
			
		||||
    "logo": "https://framerusercontent.com/images/LezF3gmqYkyAgrNprSShLYIsw.png",
 | 
			
		||||
    "description": "Duplicati is a free, open-source backup solution that offers zero-trust, fully encrypted backups for your data.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/duplicati.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 1048,
 | 
			
		||||
                "hdd": 10,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Admin password and database encryption key: `cat ~/duplicati.creds`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								json/paperless-ai.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								json/paperless-ai.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "PaperlessAI",
 | 
			
		||||
  "slug": "paperless-ai",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    20
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-02-06",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": null,
 | 
			
		||||
  "website": "https://github.com/clusterzx/paperless-ai",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/clusterzx/paperless-ai/refs/heads/main/icon.png",
 | 
			
		||||
  "description": "An automated document analyzer for Paperless-ngx using OpenAI API, Ollama and all OpenAI API compatible Services to automatically analyze and tag your documents.It features: Automode, Manual Mode, Ollama and OpenAI, a Chat function to query your documents with AI, a modern and intuitive Webinterface.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/paperless-ai.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 5,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										43
									
								
								json/pbs-microcode.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								json/pbs-microcode.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Proxmox Backup Server Processor Microcode",
 | 
			
		||||
    "slug": "pbs-microcode",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        1
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2025-02-07",
 | 
			
		||||
    "type": "misc",
 | 
			
		||||
    "updateable": false,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": null,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": null,
 | 
			
		||||
    "logo": "https://github.com/community-scripts/ProxmoxVE/blob/main/misc/images/processor.png?raw=true",
 | 
			
		||||
    "description": "Processor Microcode is a layer of low-level software that runs on the processor and provides patches or updates to its firmware. Microcode updates can fix hardware bugs, improve performance, and enhance security features of the processor. This script is adapted for the Proxmox Backup Server environment and will only run on bare metal systems. If running in a virtualized environment, the script will exit. Note that firmware update mechanisms, such as Intel's Management Engine (ME) or AMD's Platform Security Processor (PSP), may vary depending on your processor and its implementation. Please consult your processor's documentation to verify if firmware updates can be applied through the operating system.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "misc/pbs_microcode.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": null,
 | 
			
		||||
                "ram": null,
 | 
			
		||||
                "hdd": null,
 | 
			
		||||
                "os": null,
 | 
			
		||||
                "version": null
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": [
 | 
			
		||||
        {
 | 
			
		||||
            "text": "Execute within the Proxmox Backup Server shell on a bare metal system. The script will exit if it detects that it is running in a virtualized environment.",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "text": "After a reboot, you can check whether any microcode updates are currently in effect by running the following command: `journalctl -k | grep -E \"microcode\" | head -n 1`",
 | 
			
		||||
            "type": "info"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -19,8 +19,8 @@
 | 
			
		||||
            "script": "ct/peanut.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 2,
 | 
			
		||||
                "ram": 2048,
 | 
			
		||||
                "hdd": 4,
 | 
			
		||||
                "ram": 3072,
 | 
			
		||||
                "hdd": 7,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,10 @@
 | 
			
		||||
      {
 | 
			
		||||
      "text": "To view the user credentials : `cat radicale.creds`",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "text": "This application requires additional configuration. Please refer to https://github.com/community-scripts/ProxmoxVE/discussions/2073.",
 | 
			
		||||
        "type": "info"
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
							
								
								
									
										34
									
								
								json/searxng.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								json/searxng.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "SearXNG",
 | 
			
		||||
  "slug": "searxng",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    0
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-02-07",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 8888,
 | 
			
		||||
  "documentation": "https://docs.searxng.org/",
 | 
			
		||||
  "website": "https://github.com/searxng/searxng",
 | 
			
		||||
  "logo": "https://raw.githubusercontent.com/searxng/searxng/master/src/brand/searxng-wordmark.svg",
 | 
			
		||||
  "description": "SearXNG is a free internet metasearch engine which aggregates results from up to 215 search services. Users are neither tracked nor profiled. Additionally, SearXNG can be used over Tor for online anonymity.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/searxng.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 7,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
}
 | 
			
		||||
@@ -16,7 +16,7 @@
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/debian.sh",
 | 
			
		||||
            "script": "ct/zerotier-one.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 512,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										176
									
								
								misc/pbs_microcode.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								misc/pbs_microcode.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,176 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Copyright (c) 2025 DonPablo1010
 | 
			
		||||
# Adapted for the Proxmox Backup Server - Baremetal Only
 | 
			
		||||
# License: MIT
 | 
			
		||||
# This script searches for CPU microcode packages (Intel/AMD) and offers the option to install them.
 | 
			
		||||
# A system reboot is required to apply the changes.
 | 
			
		||||
# IMPORTANT: This script will only proceed if running on bare metal. If running in a VM, it will exit.
 | 
			
		||||
 | 
			
		||||
function header_info {
 | 
			
		||||
  clear
 | 
			
		||||
  cat <<"EOF"
 | 
			
		||||
    ____                                               __  ____                                __
 | 
			
		||||
   / __ \_________  ________  ______________  _____   /  |/  (_)_____________  _________  ____/ /__
 | 
			
		||||
  / /_/ / ___/ __ \/ ___/ _ \/ ___/ ___/ __ \/ ___/  / /|_/ / / ___/ ___/ __ \/ ___/ __ \/ __  / _ \
 | 
			
		||||
 / ____/ /  / /_/ / /__/  __(__  |__  ) /_/ / /     / /  / / / /__/ /  / /_/ / /__/ /_/ / /_/ /  __/
 | 
			
		||||
/_/   /_/   \____/\___/\___/____/____/\____/_/     /_/  /_/_/\___/_/   \____/\___/\____/\__,_/\___/
 | 
			
		||||
 | 
			
		||||
              Proxmox Backup Server Processor Microcode Updater
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Color definitions
 | 
			
		||||
RD=$(echo "\033[01;31m")
 | 
			
		||||
YW=$(echo "\033[33m")
 | 
			
		||||
GN=$(echo "\033[1;92m")
 | 
			
		||||
CL=$(echo "\033[m")
 | 
			
		||||
BFR="\\r\\033[K"
 | 
			
		||||
HOLD="-"
 | 
			
		||||
CM="${GN}✓${CL}"
 | 
			
		||||
CROSS="${RD}✗${CL}"
 | 
			
		||||
 | 
			
		||||
msg_info() { echo -ne " ${HOLD} ${YW}$1..."; }
 | 
			
		||||
msg_ok() { echo -e "${BFR} ${CM} ${GN}$1${CL}"; }
 | 
			
		||||
msg_error() { echo -e "${BFR} ${CROSS} ${RD}$1${CL}"; }
 | 
			
		||||
 | 
			
		||||
header_info
 | 
			
		||||
 | 
			
		||||
# Check if running on bare metal using systemd-detect-virt.
 | 
			
		||||
virt=$(systemd-detect-virt)
 | 
			
		||||
if [ "$virt" != "none" ]; then
 | 
			
		||||
    msg_error "This script must be run on bare metal. Detected virtual environment: $virt"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Attempt to obtain the current loaded microcode revision
 | 
			
		||||
current_microcode=$(journalctl -k | grep -i 'microcode: Current revision:' | grep -oP 'Current revision: \K0x[0-9a-f]+')
 | 
			
		||||
[ -z "$current_microcode" ] && current_microcode="Not found."
 | 
			
		||||
 | 
			
		||||
intel() {
 | 
			
		||||
  if ! dpkg -s iucode-tool >/dev/null 2>&1; then
 | 
			
		||||
    msg_info "Installing iucode-tool (Intel microcode updater)"
 | 
			
		||||
    apt-get install -y iucode-tool &>/dev/null
 | 
			
		||||
    msg_ok "Installed iucode-tool"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "Intel iucode-tool is already installed"
 | 
			
		||||
    sleep 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  intel_microcode=$(curl -fsSL "https://ftp.debian.org/debian/pool/non-free-firmware/i/intel-microcode/" | grep -o 'href="[^"]*amd64.deb"' | sed 's/href="//;s/"//')
 | 
			
		||||
  [ -z "$intel_microcode" ] && { 
 | 
			
		||||
    whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Found" --msgbox "No microcode packages were found.\nTry again later." 10 68
 | 
			
		||||
    msg_info "Exiting"
 | 
			
		||||
    sleep 1
 | 
			
		||||
    msg_ok "Done"
 | 
			
		||||
    exit
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  MICROCODE_MENU=()
 | 
			
		||||
  MSG_MAX_LENGTH=0
 | 
			
		||||
 | 
			
		||||
  while read -r TAG ITEM; do
 | 
			
		||||
    OFFSET=2
 | 
			
		||||
    (( ${#ITEM} + OFFSET > MSG_MAX_LENGTH )) && MSG_MAX_LENGTH=$(( ${#ITEM} + OFFSET ))
 | 
			
		||||
    MICROCODE_MENU+=("$TAG" "$ITEM " "OFF")
 | 
			
		||||
  done < <(echo "$intel_microcode")
 | 
			
		||||
 | 
			
		||||
  microcode=$(whiptail --backtitle "Proxmox Backup Server Helper Scripts" \
 | 
			
		||||
    --title "Current Microcode Revision: ${current_microcode}" \
 | 
			
		||||
    --radiolist "\nSelect a microcode package to install:\n" \
 | 
			
		||||
    16 $((MSG_MAX_LENGTH + 58)) 6 "${MICROCODE_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"') || exit
 | 
			
		||||
 | 
			
		||||
  [ -z "$microcode" ] && { 
 | 
			
		||||
    whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Selected" --msgbox "No microcode package was selected." 10 68
 | 
			
		||||
    msg_info "Exiting"
 | 
			
		||||
    sleep 1
 | 
			
		||||
    msg_ok "Done"
 | 
			
		||||
    exit
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  msg_info "Downloading Intel processor microcode package $microcode"
 | 
			
		||||
  wget -q http://ftp.debian.org/debian/pool/non-free-firmware/i/intel-microcode/$microcode
 | 
			
		||||
  msg_ok "Downloaded Intel processor microcode package $microcode"
 | 
			
		||||
 | 
			
		||||
  msg_info "Installing $microcode (this might take a while)"
 | 
			
		||||
  dpkg -i $microcode &>/dev/null
 | 
			
		||||
  msg_ok "Installed $microcode"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning up"
 | 
			
		||||
  rm $microcode
 | 
			
		||||
  msg_ok "Clean up complete"
 | 
			
		||||
  echo -e "\nA system reboot is required to apply the changes.\n"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
amd() {
 | 
			
		||||
  amd_microcode=$(curl -fsSL "https://ftp.debian.org/debian/pool/non-free-firmware/a/amd64-microcode/" | grep -o 'href="[^"]*amd64.deb"' | sed 's/href="//;s/"//')
 | 
			
		||||
 | 
			
		||||
  [ -z "$amd_microcode" ] && { 
 | 
			
		||||
    whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Found" --msgbox "No microcode packages were found.\nTry again later." 10 68
 | 
			
		||||
    msg_info "Exiting"
 | 
			
		||||
    sleep 1
 | 
			
		||||
    msg_ok "Done"
 | 
			
		||||
    exit
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  MICROCODE_MENU=()
 | 
			
		||||
  MSG_MAX_LENGTH=0
 | 
			
		||||
 | 
			
		||||
  while read -r TAG ITEM; do
 | 
			
		||||
    OFFSET=2
 | 
			
		||||
    (( ${#ITEM} + OFFSET > MSG_MAX_LENGTH )) && MSG_MAX_LENGTH=$(( ${#ITEM} + OFFSET ))
 | 
			
		||||
    MICROCODE_MENU+=("$TAG" "$ITEM " "OFF")
 | 
			
		||||
  done < <(echo "$amd_microcode")
 | 
			
		||||
 | 
			
		||||
  microcode=$(whiptail --backtitle "Proxmox Backup Server Helper Scripts" \
 | 
			
		||||
    --title "Current Microcode Revision: ${current_microcode}" \
 | 
			
		||||
    --radiolist "\nSelect a microcode package to install:\n" \
 | 
			
		||||
    16 $((MSG_MAX_LENGTH + 58)) 6 "${MICROCODE_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"') || exit
 | 
			
		||||
 | 
			
		||||
  [ -z "$microcode" ] && { 
 | 
			
		||||
    whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Selected" --msgbox "No microcode package was selected." 10 68
 | 
			
		||||
    msg_info "Exiting"
 | 
			
		||||
    sleep 1
 | 
			
		||||
    msg_ok "Done"
 | 
			
		||||
    exit
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  msg_info "Downloading AMD processor microcode package $microcode"
 | 
			
		||||
  wget -q https://ftp.debian.org/debian/pool/non-free-firmware/a/amd64-microcode/$microcode
 | 
			
		||||
  msg_ok "Downloaded AMD processor microcode package $microcode"
 | 
			
		||||
 | 
			
		||||
  msg_info "Installing $microcode (this might take a while)"
 | 
			
		||||
  dpkg -i $microcode &>/dev/null
 | 
			
		||||
  msg_ok "Installed $microcode"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning up"
 | 
			
		||||
  rm $microcode
 | 
			
		||||
  msg_ok "Clean up complete"
 | 
			
		||||
  echo -e "\nA system reboot is required to apply the changes.\n"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Check if this is a Proxmox Backup Server by verifying the presence of the datastore config.
 | 
			
		||||
if [ ! -f /etc/proxmox-backup/datastore.cfg ]; then
 | 
			
		||||
  header_info
 | 
			
		||||
  msg_error "Proxmox Backup Server not detected!"
 | 
			
		||||
  exit
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
whiptail --backtitle "Proxmox Backup Server Helper Scripts" \
 | 
			
		||||
  --title "Proxmox Backup Server Processor Microcode" \
 | 
			
		||||
  --yesno "This script searches for CPU microcode packages and offers the option to install them.\nProceed?" 10 68 || exit
 | 
			
		||||
 | 
			
		||||
msg_info "Checking CPU vendor"
 | 
			
		||||
cpu=$(lscpu | grep -oP 'Vendor ID:\s*\K\S+' | head -n 1)
 | 
			
		||||
if [ "$cpu" == "GenuineIntel" ]; then
 | 
			
		||||
  msg_ok "${cpu} detected"
 | 
			
		||||
  sleep 1
 | 
			
		||||
  intel
 | 
			
		||||
elif [ "$cpu" == "AuthenticAMD" ]; then
 | 
			
		||||
  msg_ok "${cpu} detected"
 | 
			
		||||
  sleep 1
 | 
			
		||||
  amd
 | 
			
		||||
else
 | 
			
		||||
  msg_error "CPU vendor ${cpu} is not supported"
 | 
			
		||||
  exit
 | 
			
		||||
fi
 | 
			
		||||
@@ -432,7 +432,7 @@ msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}."
 | 
			
		||||
msg_info "Getting URL for OpenWrt Disk Image"
 | 
			
		||||
 | 
			
		||||
response=$(curl -s https://openwrt.org)
 | 
			
		||||
stableversion=$(echo "$response" | sed -n 's/.*Current stable release - OpenWrt \([0-9.]\+\).*/\1/p')
 | 
			
		||||
stableversion=$(echo "$response" | sed -n 's/.*Current stable release - OpenWrt \([0-9.]\+\).*/\1/p' | head -n 1)
 | 
			
		||||
URL="https://downloads.openwrt.org/releases/$stableversion/targets/x86/64/openwrt-$stableversion-x86-64-generic-ext4-combined.img.gz"
 | 
			
		||||
 | 
			
		||||
sleep 2
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user