mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			238 Commits
		
	
	
		
			2025-08-28
			...
			2025-09-13
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					7d1788a079 | ||
| 
						 | 
					83e04257d9 | ||
| 
						 | 
					11c33e34d2 | ||
| 
						 | 
					52df77cab5 | ||
| 
						 | 
					17f6264a03 | ||
| 
						 | 
					9463b0b808 | ||
| 
						 | 
					eba83f3848 | ||
| 
						 | 
					e3f6ea73c3 | ||
| 
						 | 
					06247e742c | ||
| 
						 | 
					4606782d6b | ||
| 
						 | 
					a988acf2d5 | ||
| 
						 | 
					5f44007372 | ||
| 
						 | 
					8b87272e38 | ||
| 
						 | 
					ceccf08f69 | ||
| 
						 | 
					5a80cd7e02 | ||
| 
						 | 
					d617a49766 | ||
| 
						 | 
					7c0d79c115 | ||
| 
						 | 
					0d4a508543 | ||
| 
						 | 
					f979dd2277 | ||
| 
						 | 
					87de220511 | ||
| 
						 | 
					481e70b0aa | ||
| 
						 | 
					6c3a16e579 | ||
| 
						 | 
					394f91c994 | ||
| 
						 | 
					63a268d6c5 | ||
| 
						 | 
					9ee6e23a59 | ||
| 
						 | 
					eceb1cd53c | ||
| 
						 | 
					719c55655d | ||
| 
						 | 
					aeb15c7ea1 | ||
| 
						 | 
					0c7a366782 | ||
| 
						 | 
					93a3a572d4 | ||
| 
						 | 
					8b2645a529 | ||
| 
						 | 
					b72e132699 | ||
| 
						 | 
					f4df8e2ccc | ||
| 
						 | 
					f03f004226 | ||
| 
						 | 
					b13c840bda | ||
| 
						 | 
					ce90647bda | ||
| 
						 | 
					164e487090 | ||
| 
						 | 
					a4660adedd | ||
| 
						 | 
					9352eec854 | ||
| 
						 | 
					4478f8f6e0 | ||
| 
						 | 
					d69cbcd941 | ||
| 
						 | 
					affcfd06cf | ||
| 
						 | 
					b94b088c19 | ||
| 
						 | 
					5385382a88 | ||
| 
						 | 
					d06ad37a22 | ||
| 
						 | 
					72c7d4199b | ||
| 
						 | 
					2e75ced83f | ||
| 
						 | 
					9a28ce0263 | ||
| 
						 | 
					9ed2507bdc | ||
| 
						 | 
					c617870c2b | ||
| 
						 | 
					eb71d21ea3 | ||
| 
						 | 
					762452b2b3 | ||
| 
						 | 
					31cd3e3119 | ||
| 
						 | 
					c25dba9212 | ||
| 
						 | 
					52cefe4a00 | ||
| 
						 | 
					7b8fcab242 | ||
| 
						 | 
					b733e8b5ea | ||
| 
						 | 
					4a4e67a3cf | ||
| 
						 | 
					b00feea00d | ||
| 
						 | 
					c250cec418 | ||
| 
						 | 
					a0af0f5196 | ||
| 
						 | 
					2f0b6e10ab | ||
| 
						 | 
					a41364d91d | ||
| 
						 | 
					e580a5d9c1 | ||
| 
						 | 
					9d059b2a13 | ||
| 
						 | 
					6e32eebdf0 | ||
| 
						 | 
					7f3ebd4296 | ||
| 
						 | 
					0c4d55bd78 | ||
| 
						 | 
					8f05be3f6b | ||
| 
						 | 
					e06cd4b28c | ||
| 
						 | 
					b9242b3232 | ||
| 
						 | 
					63f6d772ea | ||
| 
						 | 
					652df1f370 | ||
| 
						 | 
					f4b5baf308 | ||
| 
						 | 
					cc36fd5434 | ||
| 
						 | 
					3e182978ad | ||
| 
						 | 
					e7adf1a9b5 | ||
| 
						 | 
					36fb86eaf8 | ||
| 
						 | 
					495c47224e | ||
| 
						 | 
					7af71384b4 | ||
| 
						 | 
					e318152ee3 | ||
| 
						 | 
					17dc7c90a1 | ||
| 
						 | 
					226a5bce8f | ||
| 
						 | 
					ffd2ed01b9 | ||
| 
						 | 
					3348e2fff0 | ||
| 
						 | 
					def41f66f4 | ||
| 
						 | 
					02a1a732f8 | ||
| 
						 | 
					2494af7e1c | ||
| 
						 | 
					0c4711d99f | ||
| 
						 | 
					039f73a5ed | ||
| 
						 | 
					74b58d5b10 | ||
| 
						 | 
					61044104a2 | ||
| 
						 | 
					fac612077a | ||
| 
						 | 
					135b3ff964 | ||
| 
						 | 
					393b853119 | ||
| 
						 | 
					6bb2938e34 | ||
| 
						 | 
					fbf16fd54d | ||
| 
						 | 
					d6d4fd034f | ||
| 
						 | 
					aa4999dac6 | ||
| 
						 | 
					b6c0b50e79 | ||
| 
						 | 
					0f07f1927e | ||
| 
						 | 
					4493d86e51 | ||
| 
						 | 
					fbfeeeb88f | ||
| 
						 | 
					2366111bba | ||
| 
						 | 
					5fb42b87f1 | ||
| 
						 | 
					500c35c58d | ||
| 
						 | 
					ca3446c90e | ||
| 
						 | 
					4c3d42d5d1 | ||
| 
						 | 
					299a10efe8 | ||
| 
						 | 
					7adac2a342 | ||
| 
						 | 
					eb58b10d75 | ||
| 
						 | 
					5e46d81c45 | ||
| 
						 | 
					2963926c45 | ||
| 
						 | 
					d9a0b863a8 | ||
| 
						 | 
					db6369f3c6 | ||
| 
						 | 
					d450e263f0 | ||
| 
						 | 
					462960d9bf | ||
| 
						 | 
					8ea4829e8a | ||
| 
						 | 
					c5d23dc883 | ||
| 
						 | 
					3dc973e4ac | ||
| 
						 | 
					751f488f9e | ||
| 
						 | 
					0ed4363247 | ||
| 
						 | 
					e77612c27e | ||
| 
						 | 
					59c8e214af | ||
| 
						 | 
					c790f03a6b | ||
| 
						 | 
					54d4d58b15 | ||
| 
						 | 
					889a58c00e | ||
| 
						 | 
					e9a5d7587a | ||
| 
						 | 
					6f84046741 | ||
| 
						 | 
					ff96351db8 | ||
| 
						 | 
					1b632199b3 | ||
| 
						 | 
					9fb02a93b4 | ||
| 
						 | 
					3aa56651d8 | ||
| 
						 | 
					17d4c59041 | ||
| 
						 | 
					2bfb35779b | ||
| 
						 | 
					83b93390c9 | ||
| 
						 | 
					7ce47ad414 | ||
| 
						 | 
					646e0c31f4 | ||
| 
						 | 
					0c7e200a94 | ||
| 
						 | 
					a9b02b3e9c | ||
| 
						 | 
					b62adc2c5c | ||
| 
						 | 
					3438b046e5 | ||
| 
						 | 
					cbd6d6d0f3 | ||
| 
						 | 
					cf6c429c57 | ||
| 
						 | 
					bbe71cbbb9 | ||
| 
						 | 
					9b6a736c8c | ||
| 
						 | 
					c395ccc270 | ||
| 
						 | 
					3dd72e08e9 | ||
| 
						 | 
					1d989bea73 | ||
| 
						 | 
					f881b88344 | ||
| 
						 | 
					06dbad83ef | ||
| 
						 | 
					7ff966b042 | ||
| 
						 | 
					62264f37a6 | ||
| 
						 | 
					bf05dabc4c | ||
| 
						 | 
					bc229d9738 | ||
| 
						 | 
					969b08caa8 | ||
| 
						 | 
					c1c43ed2cb | ||
| 
						 | 
					e74767d1a4 | ||
| 
						 | 
					e9e17f4f51 | ||
| 
						 | 
					2c1b15a40e | ||
| 
						 | 
					a4bfaf1646 | ||
| 
						 | 
					6fa12cc814 | ||
| 
						 | 
					d314168a37 | ||
| 
						 | 
					d6ad11c5c2 | ||
| 
						 | 
					534592b44a | ||
| 
						 | 
					d9b6b58b36 | ||
| 
						 | 
					298eb7e83d | ||
| 
						 | 
					c2dd1e413f | ||
| 
						 | 
					a4f1766408 | ||
| 
						 | 
					a24169e9b8 | ||
| 
						 | 
					45a2163e66 | ||
| 
						 | 
					2fc3e62d60 | ||
| 
						 | 
					210b846d61 | ||
| 
						 | 
					b04cfb65f7 | ||
| 
						 | 
					6a2fc4083b | ||
| 
						 | 
					f7f53943c2 | ||
| 
						 | 
					31f4d9b16c | ||
| 
						 | 
					cd4cd5eec1 | ||
| 
						 | 
					8a7eeee727 | ||
| 
						 | 
					be5d65f421 | ||
| 
						 | 
					591af3f109 | ||
| 
						 | 
					a3e0df9de1 | ||
| 
						 | 
					596699d07e | ||
| 
						 | 
					b2275b44c2 | ||
| 
						 | 
					737842fb1e | ||
| 
						 | 
					646cb2bc30 | ||
| 
						 | 
					4599bfe052 | ||
| 
						 | 
					bb85b1d4ac | ||
| 
						 | 
					57ae4a48a7 | ||
| 
						 | 
					06e8460851 | ||
| 
						 | 
					9713c95bf4 | ||
| 
						 | 
					705748bba5 | ||
| 
						 | 
					022f079821 | ||
| 
						 | 
					80d75731a8 | ||
| 
						 | 
					227721a72f | ||
| 
						 | 
					5572a7a0ab | ||
| 
						 | 
					6a69185a2d | ||
| 
						 | 
					77441b6189 | ||
| 
						 | 
					4aa337c2f2 | ||
| 
						 | 
					4bd2f6866a | ||
| 
						 | 
					377de80103 | ||
| 
						 | 
					1c62d4614e | ||
| 
						 | 
					a91f7410a4 | ||
| 
						 | 
					528c0a8de5 | ||
| 
						 | 
					988bd3ef19 | ||
| 
						 | 
					99d9664ae4 | ||
| 
						 | 
					09649eb5b1 | ||
| 
						 | 
					5c49ba784a | ||
| 
						 | 
					469f959911 | ||
| 
						 | 
					7504c4b7e9 | ||
| 
						 | 
					9a6047393d | ||
| 
						 | 
					dec2ef817a | ||
| 
						 | 
					54a9bc8841 | ||
| 
						 | 
					8def7c0f0a | ||
| 
						 | 
					13cbc2756b | ||
| 
						 | 
					933928c4ee | ||
| 
						 | 
					2beaab0d88 | ||
| 
						 | 
					560ed60745 | ||
| 
						 | 
					46febb33a9 | ||
| 
						 | 
					ddd8e0ee68 | ||
| 
						 | 
					be255263c6 | ||
| 
						 | 
					c8d969d38a | ||
| 
						 | 
					96511325ab | ||
| 
						 | 
					bc545df207 | ||
| 
						 | 
					36bf265fc6 | ||
| 
						 | 
					892ad29c60 | ||
| 
						 | 
					a5d02b5459 | ||
| 
						 | 
					3ccf9924a1 | ||
| 
						 | 
					953bbd7978 | ||
| 
						 | 
					4228cb99db | ||
| 
						 | 
					f7791fe2ff | ||
| 
						 | 
					616c736428 | ||
| 
						 | 
					ede5f35f39 | ||
| 
						 | 
					b73bfdf7fd | ||
| 
						 | 
					9305a4ca85 | ||
| 
						 | 
					54b59e24ca | ||
| 
						 | 
					d57c613535 | ||
| 
						 | 
					f02525af8a | 
							
								
								
									
										8
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -67,6 +67,14 @@ body:
 | 
			
		||||
    validations:
 | 
			
		||||
      required: true
 | 
			
		||||
 | 
			
		||||
  - type: input
 | 
			
		||||
    id: pve_version
 | 
			
		||||
    attributes:
 | 
			
		||||
      label: 📈 Which Proxmox version are you on?
 | 
			
		||||
      placeholder: "run pveversion in your PVE node console"
 | 
			
		||||
    validations:
 | 
			
		||||
      required: true
 | 
			
		||||
 | 
			
		||||
  - type: textarea
 | 
			
		||||
    id: issue_description
 | 
			
		||||
    attributes:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										313
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										313
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -10,8 +10,321 @@
 | 
			
		||||
> [!CAUTION]
 | 
			
		||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
 | 
			
		||||
 | 
			
		||||
## 2025-09-14
 | 
			
		||||
 | 
			
		||||
## 2025-09-13
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Palmr: hotfix #7622 [@vhsdream](https://github.com/vhsdream) ([#7625](https://github.com/community-scripts/ProxmoxVE/pull/7625))
 | 
			
		||||
    - ollama: fix: ccurl continue on interrupts [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7620](https://github.com/community-scripts/ProxmoxVE/pull/7620))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - pdm: refactor for beta version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7619](https://github.com/community-scripts/ProxmoxVE/pull/7619))
 | 
			
		||||
    - Immich: bump to v1.142.0 [@vhsdream](https://github.com/vhsdream) ([#7594](https://github.com/community-scripts/ProxmoxVE/pull/7594))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - fix: tagline grammar [@jonathanwuki](https://github.com/jonathanwuki) ([#7621](https://github.com/community-scripts/ProxmoxVE/pull/7621))
 | 
			
		||||
- fix: grammar/capitalization for links and taglines [@jonathanwuki](https://github.com/jonathanwuki) ([#7609](https://github.com/community-scripts/ProxmoxVE/pull/7609))
 | 
			
		||||
 | 
			
		||||
## 2025-09-12
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Stylus ([#7588](https://github.com/community-scripts/ProxmoxVE/pull/7588))
 | 
			
		||||
- UHF ([#7589](https://github.com/community-scripts/ProxmoxVE/pull/7589))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Tweak: post-pve-install: create folder if Not exist  [@JVKeller](https://github.com/JVKeller) ([#7598](https://github.com/community-scripts/ProxmoxVE/pull/7598))
 | 
			
		||||
    - Update openwebui.sh [@webmogul1](https://github.com/webmogul1) ([#7582](https://github.com/community-scripts/ProxmoxVE/pull/7582))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - [core]: add fallback if mariadb upstream unreachable [@MickLesk](https://github.com/MickLesk) ([#7599](https://github.com/community-scripts/ProxmoxVE/pull/7599))
 | 
			
		||||
    - ESPHome: Increase default disk size [@tremor021](https://github.com/tremor021) ([#7600](https://github.com/community-scripts/ProxmoxVE/pull/7600))
 | 
			
		||||
 | 
			
		||||
## 2025-09-11
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - telegraf ([#7576](https://github.com/community-scripts/ProxmoxVE/pull/7576))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - [core] Sort tools.func functions alphabeticaly [@tremor021](https://github.com/tremor021) ([#7569](https://github.com/community-scripts/ProxmoxVE/pull/7569))
 | 
			
		||||
- mobile subscription nag fix [@dvino](https://github.com/dvino) ([#7567](https://github.com/community-scripts/ProxmoxVE/pull/7567))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - alpine-install: switch to using GitHub to fetch tools when using GitHub [@burritosoftware](https://github.com/burritosoftware) ([#7566](https://github.com/community-scripts/ProxmoxVE/pull/7566))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Add margin-bottom to Most Viewed Scripts header to unifi UI [@BramSuurdje](https://github.com/BramSuurdje) ([#7572](https://github.com/community-scripts/ProxmoxVE/pull/7572))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Fix frontend url [@r1cebank](https://github.com/r1cebank) ([#7578](https://github.com/community-scripts/ProxmoxVE/pull/7578))
 | 
			
		||||
 | 
			
		||||
## 2025-09-10
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Autocaliweb ([#7515](https://github.com/community-scripts/ProxmoxVE/pull/7515))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Palmr: fix #7556 [@vhsdream](https://github.com/vhsdream) ([#7558](https://github.com/community-scripts/ProxmoxVE/pull/7558))
 | 
			
		||||
    - Wizarr: Fix DB migrations [@vhsdream](https://github.com/vhsdream) ([#7552](https://github.com/community-scripts/ProxmoxVE/pull/7552))
 | 
			
		||||
    - fix: pmg - split no-nag script into separate config files [@MickLesk](https://github.com/MickLesk) ([#7540](https://github.com/community-scripts/ProxmoxVE/pull/7540))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Update Palmr to Support new v3.2.1 [@vhsdream](https://github.com/vhsdream) ([#7526](https://github.com/community-scripts/ProxmoxVE/pull/7526))
 | 
			
		||||
    - add external installer warnings and user confirmation in several LXC's [@MickLesk](https://github.com/MickLesk) ([#7539](https://github.com/community-scripts/ProxmoxVE/pull/7539))
 | 
			
		||||
    - Booklore: Add Bookdrop location to .env [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7533](https://github.com/community-scripts/ProxmoxVE/pull/7533))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor: audiobookshelf [@MickLesk](https://github.com/MickLesk) ([#7538](https://github.com/community-scripts/ProxmoxVE/pull/7538))
 | 
			
		||||
    - Refactor: Blocky [@MickLesk](https://github.com/MickLesk) ([#7537](https://github.com/community-scripts/ProxmoxVE/pull/7537))
 | 
			
		||||
    - Improve npmplus credential retrieval and messaging [@MickLesk](https://github.com/MickLesk) ([#7532](https://github.com/community-scripts/ProxmoxVE/pull/7532))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - Remove Pingvin Share [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7553](https://github.com/community-scripts/ProxmoxVE/pull/7553))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - set updateable to true for several lxc JSON-configs [@MickLesk](https://github.com/MickLesk) ([#7534](https://github.com/community-scripts/ProxmoxVE/pull/7534))
 | 
			
		||||
 | 
			
		||||
## 2025-09-09
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Tududi: v0.81 [@vhsdream](https://github.com/vhsdream) ([#7517](https://github.com/community-scripts/ProxmoxVE/pull/7517))
 | 
			
		||||
    - WGDashboard: Revert back to old update method [@tremor021](https://github.com/tremor021) ([#7500](https://github.com/community-scripts/ProxmoxVE/pull/7500))
 | 
			
		||||
    - AdventureLog: remove folder during update process [@MickLesk](https://github.com/MickLesk) ([#7507](https://github.com/community-scripts/ProxmoxVE/pull/7507))
 | 
			
		||||
    - PLANKA: Fix backup and restore commands [@tremor021](https://github.com/tremor021) ([#7505](https://github.com/community-scripts/ProxmoxVE/pull/7505))
 | 
			
		||||
    - Recyclarr: Suppress config creation output [@tremor021](https://github.com/tremor021) ([#7502](https://github.com/community-scripts/ProxmoxVE/pull/7502))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Pulse: standardise install/update with Pulse repo script [@vhsdream](https://github.com/vhsdream) ([#7519](https://github.com/community-scripts/ProxmoxVE/pull/7519))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Refactor GitHubStarsButton to wrap in Link component for external navigation [@BramSuurdje](https://github.com/BramSuurdje) ([#7492](https://github.com/community-scripts/ProxmoxVE/pull/7492))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Bump vite from 7.0.0 to 7.1.5 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#7522](https://github.com/community-scripts/ProxmoxVE/pull/7522))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - swizzin: Change category from nvr to media [@MickLesk](https://github.com/MickLesk) ([#7511](https://github.com/community-scripts/ProxmoxVE/pull/7511))
 | 
			
		||||
 | 
			
		||||
## 2025-09-08
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - CT's: fix missing variable declaration (actualBudget, openziti, umlautadaptarr) [@MickLesk](https://github.com/MickLesk) ([#7483](https://github.com/community-scripts/ProxmoxVE/pull/7483))
 | 
			
		||||
    - karakeep: fix service file [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7482](https://github.com/community-scripts/ProxmoxVE/pull/7482))
 | 
			
		||||
    - Update searxng-install.sh [@sebguy](https://github.com/sebguy) ([#7469](https://github.com/community-scripts/ProxmoxVE/pull/7469))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Immich: bump to version 1.141.1 [@vhsdream](https://github.com/vhsdream) ([#7418](https://github.com/community-scripts/ProxmoxVE/pull/7418))
 | 
			
		||||
    - [core]: switch all base_settings to variables [@MickLesk](https://github.com/MickLesk) ([#7479](https://github.com/community-scripts/ProxmoxVE/pull/7479))
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - RustDesk Server: Update the credentials info [@tremor021](https://github.com/tremor021) ([#7473](https://github.com/community-scripts/ProxmoxVE/pull/7473))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Format numerical values in DataFetcher component for better readability [@BramSuurdje](https://github.com/BramSuurdje) ([#7477](https://github.com/community-scripts/ProxmoxVE/pull/7477))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - feat: enhance github stars button to be better looking and more compact [@BramSuurdje](https://github.com/BramSuurdje) ([#7464](https://github.com/community-scripts/ProxmoxVE/pull/7464))
 | 
			
		||||
 | 
			
		||||
## 2025-09-07
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Update ExecStart path for karakeep service [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7460](https://github.com/community-scripts/ProxmoxVE/pull/7460))
 | 
			
		||||
 | 
			
		||||
## 2025-09-06
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Resilio Sync ([#7442](https://github.com/community-scripts/ProxmoxVE/pull/7442))
 | 
			
		||||
- leantime ([#7414](https://github.com/community-scripts/ProxmoxVE/pull/7414))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - use debian source for direct installation of MQTT [@EtlamGit](https://github.com/EtlamGit) ([#7423](https://github.com/community-scripts/ProxmoxVE/pull/7423))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - feat: added mobile ui subscription nag removal [@ivan-penchev](https://github.com/ivan-penchev) ([#7164](https://github.com/community-scripts/ProxmoxVE/pull/7164))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - MediaManager Configuration Path [@austinpilz](https://github.com/austinpilz) ([#7408](https://github.com/community-scripts/ProxmoxVE/pull/7408))
 | 
			
		||||
    - Paperless-NGX: Remove default credentials from json [@tremor021](https://github.com/tremor021) ([#7403](https://github.com/community-scripts/ProxmoxVE/pull/7403))
 | 
			
		||||
 | 
			
		||||
## 2025-09-05
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Tududi: Pin version to 0.80 [@vhsdream](https://github.com/vhsdream) ([#7420](https://github.com/community-scripts/ProxmoxVE/pull/7420))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - AdventureLog: Update dependencies [@tremor021](https://github.com/tremor021) ([#7404](https://github.com/community-scripts/ProxmoxVE/pull/7404))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - refactor: Enhance ScriptAccordion and Sidebar components to support selectedCategory state [@BramSuurdje](https://github.com/BramSuurdje) ([#7405](https://github.com/community-scripts/ProxmoxVE/pull/7405))
 | 
			
		||||
 | 
			
		||||
## 2025-09-04
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - fix: Syntax error in Immich scripts [@henworth](https://github.com/henworth) ([#7398](https://github.com/community-scripts/ProxmoxVE/pull/7398))
 | 
			
		||||
    - Netdata: Fix pve_check for 8 [@MickLesk](https://github.com/MickLesk) ([#7392](https://github.com/community-scripts/ProxmoxVE/pull/7392))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Immich: pin compiled photo library revisions [@vhsdream](https://github.com/vhsdream) ([#7395](https://github.com/community-scripts/ProxmoxVE/pull/7395))
 | 
			
		||||
 | 
			
		||||
## 2025-09-03
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Element-Synapse: Increase HDD size [@tremor021](https://github.com/tremor021) ([#7384](https://github.com/community-scripts/ProxmoxVE/pull/7384))
 | 
			
		||||
    - Wizarr: fix uv lock issue; use correct output suppression [@vhsdream](https://github.com/vhsdream) ([#7378](https://github.com/community-scripts/ProxmoxVE/pull/7378))
 | 
			
		||||
    - Netbox: Fix missing directory [@tremor021](https://github.com/tremor021) ([#7374](https://github.com/community-scripts/ProxmoxVE/pull/7374))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Enhanced IP-Tag installation script with interactive configuration, improved VM IP detection, and better visual indicators [@DesertGamer](https://github.com/DesertGamer) ([#7366](https://github.com/community-scripts/ProxmoxVE/pull/7366))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Fix navigation [@BramSuurdje](https://github.com/BramSuurdje) ([#7376](https://github.com/community-scripts/ProxmoxVE/pull/7376))
 | 
			
		||||
 | 
			
		||||
## 2025-09-02
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Increase default disk size for Apt-Cacher-NG [@MickLesk](https://github.com/MickLesk) ([#7352](https://github.com/community-scripts/ProxmoxVE/pull/7352))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Snipe-IT: Fix Nginx configuration [@tremor021](https://github.com/tremor021) ([#7358](https://github.com/community-scripts/ProxmoxVE/pull/7358))
 | 
			
		||||
    - booklore: remove folder before update [@MickLesk](https://github.com/MickLesk) ([#7351](https://github.com/community-scripts/ProxmoxVE/pull/7351))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Immich: bump version to 1.140.1 [@vhsdream](https://github.com/vhsdream) ([#7349](https://github.com/community-scripts/ProxmoxVE/pull/7349))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - pbs: increase note on website for ipv6 [@MickLesk](https://github.com/MickLesk) ([#7339](https://github.com/community-scripts/ProxmoxVE/pull/7339))
 | 
			
		||||
 | 
			
		||||
## 2025-09-01
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Update configarr.sh to mv backep up .env correctly [@finkerle](https://github.com/finkerle) ([#7323](https://github.com/community-scripts/ProxmoxVE/pull/7323))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Refactor + Feature Bump: HomeAssistant OS [@MickLesk](https://github.com/MickLesk) ([#7336](https://github.com/community-scripts/ProxmoxVE/pull/7336))
 | 
			
		||||
    - UmbrelOS: Refactor / use q35 / better import [@MickLesk](https://github.com/MickLesk) ([#7329](https://github.com/community-scripts/ProxmoxVE/pull/7329))
 | 
			
		||||
    - Harmonize GH Release Check (excl. Pre-Releases & Migrate old "_version.txt" [@MickLesk](https://github.com/MickLesk) ([#7328](https://github.com/community-scripts/ProxmoxVE/pull/7328))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Bump next from 15.2.4 to 15.5.2 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#7309](https://github.com/community-scripts/ProxmoxVE/pull/7309))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - booklore: add note for start-up in frontend [@MickLesk](https://github.com/MickLesk) ([#7331](https://github.com/community-scripts/ProxmoxVE/pull/7331))
 | 
			
		||||
 | 
			
		||||
## 2025-08-31
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - n8n: Increase disk size [@tremor021](https://github.com/tremor021) ([#7320](https://github.com/community-scripts/ProxmoxVE/pull/7320))
 | 
			
		||||
 | 
			
		||||
## 2025-08-30
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Immich: bump version to 1.140.0 [@vhsdream](https://github.com/vhsdream) ([#7275](https://github.com/community-scripts/ProxmoxVE/pull/7275))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor gitea-mirror env-file [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7240](https://github.com/community-scripts/ProxmoxVE/pull/7240))
 | 
			
		||||
 | 
			
		||||
## 2025-08-29
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - fix version check for pocket-id migration [@MickLesk](https://github.com/MickLesk) ([#7298](https://github.com/community-scripts/ProxmoxVE/pull/7298))
 | 
			
		||||
    - fix: remove file creation at release fetching and version checking logic [@MickLesk](https://github.com/MickLesk) ([#7299](https://github.com/community-scripts/ProxmoxVE/pull/7299))
 | 
			
		||||
    - Zitadel: Fix initial setup [@tremor021](https://github.com/tremor021) ([#7284](https://github.com/community-scripts/ProxmoxVE/pull/7284))
 | 
			
		||||
    - post-pbs: increase enterprise recognition [@MickLesk](https://github.com/MickLesk) ([#7280](https://github.com/community-scripts/ProxmoxVE/pull/7280))
 | 
			
		||||
    - Fix typo where install mode was changed instead of pinned version [@Brandsma](https://github.com/Brandsma) ([#7277](https://github.com/community-scripts/ProxmoxVE/pull/7277))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - [core]: feature - check_for_gh_release - version pinning [@MickLesk](https://github.com/MickLesk) ([#7279](https://github.com/community-scripts/ProxmoxVE/pull/7279))
 | 
			
		||||
    - [feat]: migrate all update_scripts to new version helper (gh) [@MickLesk](https://github.com/MickLesk) ([#7262](https://github.com/community-scripts/ProxmoxVE/pull/7262))
 | 
			
		||||
 | 
			
		||||
## 2025-08-28
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								ct/2fauth.sh
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								ct/2fauth.sh
									
									
									
									
									
								
							@@ -28,12 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Bubka/2FAuth/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.2fauth 2>/dev/null)" ]] || [[ ! -f ~/.2fauth ]]; then
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
  if check_for_gh_release "2fauth" "Bubka/2FAuth"; then
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
 | 
			
		||||
@@ -64,18 +59,13 @@ function update_script() {
 | 
			
		||||
    $STD systemctl restart nginx
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf "v${RELEASE}.zip"
 | 
			
		||||
    if dpkg -l | grep -q 'php8.2'; then
 | 
			
		||||
      $STD apt-get remove --purge -y php8.2*
 | 
			
		||||
    fi
 | 
			
		||||
    $STD apt-get -y autoremove
 | 
			
		||||
    $STD apt-get -y autoclean
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
    echo "${RELEASE}" >/opt/2fauth_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,13 +6,13 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
# Source: https://actualbudget.org/
 | 
			
		||||
 | 
			
		||||
APP="Actual Budget"
 | 
			
		||||
var_tags="finance"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
var_tags="${var_tags:-finance}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,11 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.adventurelog 2>/dev/null)" ]] || [[ ! -f ~/.adventurelog ]]; then
 | 
			
		||||
  if ! command -v memcached >/dev/null 2>&1; then
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get install -y memcached libmemcached-tools
 | 
			
		||||
  fi
 | 
			
		||||
  if check_for_gh_release "adventurelog" "seanmorley15/adventurelog"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop adventurelog-backend
 | 
			
		||||
    systemctl stop adventurelog-frontend
 | 
			
		||||
@@ -37,12 +39,13 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Backup Old Installation"
 | 
			
		||||
    cp -r /opt/adventurelog /opt/adventurelog-backup
 | 
			
		||||
    rm -rf /opt/adventurelog
 | 
			
		||||
    msg_ok "Backup done"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
 | 
			
		||||
    PYTHON_VERSION="3.12" setup_uv
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cp /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
 | 
			
		||||
    cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
 | 
			
		||||
    cd /opt/adventurelog/backend/server
 | 
			
		||||
@@ -70,10 +73,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf /opt/adventurelog-backup
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="Apt-Cacher-NG"
 | 
			
		||||
var_tags="${var_tags:-caching}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								ct/argus.sh
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								ct/argus.sh
									
									
									
									
									
								
							@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/release-argus/Argus/releases/latest | jq -r .tag_name | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.Argus 2>/dev/null)" ]] || [[ ! -f ~/.Argus ]]; then
 | 
			
		||||
  if check_for_gh_release "argus" "release-argus/Argus"; then
 | 
			
		||||
    msg_info "Stopping service"
 | 
			
		||||
    systemctl stop argus
 | 
			
		||||
    msg_ok "Service stopped"
 | 
			
		||||
@@ -39,11 +37,9 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting service"
 | 
			
		||||
    systemctl start argus
 | 
			
		||||
    msg_ok "Service started"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "${APP} is already up to date (${RELEASE})"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="audiobookshelf"
 | 
			
		||||
var_tags="${var_tags:-podcast;audiobook}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_disk="${var_disk:-5}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -23,11 +23,15 @@ function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
    if [[ ! -f /etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc ]]; then
 | 
			
		||||
  if [[ ! -f /etc/default/audiobookshelf ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
    echo "This application receives updates through the APT package manager."
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  $STD apt-get update
 | 
			
		||||
  $STD apt-get -y upgrade
 | 
			
		||||
  msg_ok "Updated $APP LXC"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -29,8 +29,8 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(/usr/bin/authelia -v | awk '{print substr($3, 2, length($2)) }')" ]]; then
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "authelia" "authelia/authelia"; then
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
 | 
			
		||||
@@ -40,14 +40,10 @@ function update_script() {
 | 
			
		||||
    $STD apt-get -y autoremove
 | 
			
		||||
    $STD apt-get -y autoclean
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/autobrr/autobrr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat ~/.autobrr 2>/dev/null)" ]] || [[ ! -f ~/.autobrr ]]; then
 | 
			
		||||
  if check_for_gh_release "autobrr" "autobrr/autobrr"; then
 | 
			
		||||
    msg_info "Stopping ${APP} LXC"
 | 
			
		||||
    systemctl stop autobrr
 | 
			
		||||
    msg_ok "Stopped ${APP} LXC"
 | 
			
		||||
@@ -39,10 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting ${APP} LXC"
 | 
			
		||||
    systemctl start autobrr
 | 
			
		||||
    msg_ok "Started ${APP} LXC"
 | 
			
		||||
      
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
      msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										83
									
								
								ct/autocaliweb.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								ct/autocaliweb.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/gelbphoenix/autocaliweb
 | 
			
		||||
 | 
			
		||||
APP="Autocaliweb"
 | 
			
		||||
var_tags="${var_tags:-ebooks}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/autocaliweb ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  setup_uv
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/gelbphoenix/autocaliweb/releases/latest | jq '.tag_name' | sed 's/^"v//;s/"$//')
 | 
			
		||||
  if check_for_gh_release "autocaliweb" "gelbphoenix/autocaliweb"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
 | 
			
		||||
    msg_ok "Stopped Services"
 | 
			
		||||
 | 
			
		||||
    INSTALL_DIR="/opt/autocaliweb"
 | 
			
		||||
    export VIRTUAL_ENV="${INSTALL_DIR}/venv"
 | 
			
		||||
    $STD tar -cf ~/autocaliweb_bkp.tar "$INSTALL_DIR"/{metadata_change_logs,dirs.json,.env,scripts/ingest_watcher.sh,scripts/auto_zipper_wrapper.sh,scripts/metadata_change_detector_wrapper.sh}
 | 
			
		||||
    fetch_and_deploy_gh_release "autocaliweb" "gelbphoenix/autocaliweb" "tarball" "latest" "/opt/autocaliweb"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd "$INSTALL_DIR"
 | 
			
		||||
    if [[ ! -d "$VIRTUAL_ENV" ]]; then
 | 
			
		||||
      $STD uv venv "$VIRTUAL_ENV"
 | 
			
		||||
    fi
 | 
			
		||||
    $STD uv sync --all-extras --active
 | 
			
		||||
    cd "$INSTALL_DIR"/koreader/plugins
 | 
			
		||||
    PLUGIN_DIGEST="$(find acwsync.koplugin -type f -name "*.lua" -o -name "*.json" | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)"
 | 
			
		||||
    echo "Plugin files digest: $PLUGIN_DIGEST" >acwsync.koplugin/${PLUGIN_DIGEST}.digest
 | 
			
		||||
    echo "Build date: $(date)" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
 | 
			
		||||
    echo "Files included:" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
 | 
			
		||||
    $STD zip -r koplugin.zip acwsync.koplugin/
 | 
			
		||||
    cp -r koplugin.zip "$INSTALL_DIR"/cps/static
 | 
			
		||||
    mkdir -p "$INSTALL_DIR"/metadata_temp
 | 
			
		||||
    $STD tar -xf ~/autocaliweb_bkp.tar --directory /
 | 
			
		||||
    KEPUB_VERSION="$(/usr/bin/kepubify --version)"
 | 
			
		||||
    CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
 | 
			
		||||
    echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
 | 
			
		||||
    echo "${CALIBRE_RELEASE#v}" >/"$INSTALL_DIR"/CALIBRE_RELEASE
 | 
			
		||||
    sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
 | 
			
		||||
    chown -R acw:acw "$INSTALL_DIR"
 | 
			
		||||
    rm ~/autocaliweb_bkp.tar
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl start autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  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}:8083${CL}"
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.babybuddy 2>/dev/null)" ]] || [[ ! -f ~/.babybuddy ]]; then
 | 
			
		||||
  if check_for_gh_release "babybuddy" "babybuddy/babybuddy"; then
 | 
			
		||||
    setup_uv
 | 
			
		||||
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
@@ -44,13 +43,13 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/babybuddy
 | 
			
		||||
    mv /tmp/production.py.bak /opt/babybuddy/babybuddy/settings/production.py
 | 
			
		||||
    source .venv/bin/activate
 | 
			
		||||
    $STD uv pip install -r requirements.txt
 | 
			
		||||
    $STD python manage.py migrate
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Fixing permissions"
 | 
			
		||||
    chown -R www-data:www-data /opt/data
 | 
			
		||||
@@ -62,14 +61,10 @@ function update_script() {
 | 
			
		||||
    systemctl start uwsgi
 | 
			
		||||
    systemctl start nginx
 | 
			
		||||
    msg_ok "Services Started"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.baikal 2>/dev/null)" ]] || [[ ! -f ~/.baikal ]]; then
 | 
			
		||||
  if check_for_gh_release "baikal" "sabre-io/Baikal"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -58,8 +57,6 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/baikal-backup
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -29,11 +29,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE_MEILISEARCH=$(curl -fsSL https://api.github.com/repos/meilisearch/meilisearch/releases/latest | jq -r '.tag_name | sub("^v"; "")')
 | 
			
		||||
  RELEASE_BARASSISTANT=$(curl -fsSL https://api.github.com/repos/karlomikus/bar-assistant/releases/latest | jq -r '.tag_name | sub("^v"; "")')
 | 
			
		||||
  RELEASE_SALTRIM=$(curl -fsSL https://api.github.com/repos/karlomikus/vue-salt-rim/releases/latest | jq -r '.tag_name | sub("^v"; "")')
 | 
			
		||||
 | 
			
		||||
  if [[ "${RELEASE_BARASSISTANT}" != "$(cat ~/.bar-assistant 2>/dev/null)" ]] || [[ ! -f ~/.bar-assistant ]]; then
 | 
			
		||||
  if check_for_gh_release "bar-assistant" "karlomikus/bar-assistant"; then
 | 
			
		||||
    msg_info "Stopping nginx"
 | 
			
		||||
    systemctl stop nginx
 | 
			
		||||
    msg_ok "Stopped nginx"
 | 
			
		||||
@@ -45,7 +41,7 @@ function update_script() {
 | 
			
		||||
    fetch_and_deploy_gh_release "bar-assistant" "karlomikus/bar-assistant" "tarball" "latest" "/opt/bar-assistant"
 | 
			
		||||
    setup_composer
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE_BARASSISTANT}"
 | 
			
		||||
    msg_info "Updating Bar-Assistant"
 | 
			
		||||
    cp -r /opt/bar-assistant-backup/.env /opt/bar-assistant/.env
 | 
			
		||||
    cp -r /opt/bar-assistant-backup/storage/bar-assistant /opt/bar-assistant/storage/bar-assistant
 | 
			
		||||
    cd /opt/bar-assistant
 | 
			
		||||
@@ -58,7 +54,7 @@ function update_script() {
 | 
			
		||||
    $STD php artisan route:cache
 | 
			
		||||
    $STD php artisan event:cache
 | 
			
		||||
    chown -R www-data:www-data /opt/bar-assistant
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE_BARASSISTANT}"
 | 
			
		||||
    msg_ok "Updated Bar-Assistant"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting nginx"
 | 
			
		||||
    systemctl start nginx
 | 
			
		||||
@@ -67,11 +63,9 @@ function update_script() {
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf /opt/bar-assistant-backup
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE_BARASSISTANT}"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [[ "${RELEASE_SALTRIM}" != "$(cat ~/.vue-salt-rim 2>/dev/null)" ]] || [[ ! -f ~/.vue-salt-rim ]]; then
 | 
			
		||||
  if check_for_gh_release "vue-salt-rim" "karlomikus/vue-salt-rim"; then
 | 
			
		||||
    msg_info "Backing up Vue Salt Rim"
 | 
			
		||||
    mv /opt/vue-salt-rim /opt/vue-salt-rim-backup
 | 
			
		||||
    msg_ok "Backed up Vue Salt Rim"
 | 
			
		||||
@@ -82,12 +76,12 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "vue-salt-rim" "karlomikus/vue-salt-rim" "tarball" "latest" "/opt/vue-salt-rim"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Salt Rim to ${RELEASE_SALTRIM}"
 | 
			
		||||
    msg_info "Updating Vue Salt Rim"
 | 
			
		||||
    cp /opt/vue-salt-rim-backup/public/config.js /opt/vue-salt-rim/public/config.js
 | 
			
		||||
    cd /opt/vue-salt-rim
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE_SALTRIM}"
 | 
			
		||||
    msg_ok "Updated Vue Salt Rim"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting nginx"
 | 
			
		||||
    systemctl start nginx
 | 
			
		||||
@@ -96,12 +90,9 @@ function update_script() {
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf /opt/vue-salt-rim-backup
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. Salt Rim is already at ${RELEASE_SALTRIM}"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [[ "${RELEASE_MEILISEARCH}" != "$(cat ~/.meilisearch 2>/dev/null)" ]] || [[ ! -f ~/.meilisearch ]]; then
 | 
			
		||||
  if check_for_gh_release "meilisearch" "meilisearch/meilisearch"; then
 | 
			
		||||
    msg_info "Stopping Meilisearch"
 | 
			
		||||
    systemctl stop meilisearch
 | 
			
		||||
    msg_ok "Stopped Meilisearch"
 | 
			
		||||
@@ -111,10 +102,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting Meilisearch"
 | 
			
		||||
    systemctl start meilisearch
 | 
			
		||||
    msg_ok "Started Meilisearch"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Meilisearch"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. Meilisearch is already at ${RELEASE_MEILISEARCH}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,8 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.barcodebuddy 2>/dev/null)" ]] || [[ ! -f ~/.barcodebuddy ]]; then
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "barcodebuddy" "Forceu/barcodebuddy"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
    systemctl stop barcodebuddy
 | 
			
		||||
@@ -55,8 +55,6 @@ function update_script() {
 | 
			
		||||
    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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								ct/bazarr.sh
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								ct/bazarr.sh
									
									
									
									
									
								
							@@ -27,14 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/morpheus65535/bazarr/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.bazarr 2>/dev/null)" ]] || [[ ! -f ~/.bazarr ]]; then
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "bazarr" "morpheus65535/bazarr"; then
 | 
			
		||||
    PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
    fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip"
 | 
			
		||||
 | 
			
		||||
@@ -44,10 +37,7 @@ function update_script() {
 | 
			
		||||
    sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
 | 
			
		||||
    $STD uv pip install -r /opt/bazarr/requirements.txt --system
 | 
			
		||||
    msg_ok "Setup Bazarr"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,8 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.bitmagnet 2>/dev/null)" ]] || [[ ! -f ~/.bitmagnet ]]; then
 | 
			
		||||
  if check_for_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop bitmagnet-web
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -63,22 +62,19 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/bitmagnet
 | 
			
		||||
    fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/bitmagnet
 | 
			
		||||
    VREL=v$RELEASE
 | 
			
		||||
    VREL=v$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    $STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
 | 
			
		||||
    chmod +x bitmagnet
 | 
			
		||||
    [ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
 | 
			
		||||
    [ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start bitmagnet-web
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								ct/blocky.sh
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								ct/blocky.sh
									
									
									
									
									
								
							@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://0xerr0r.github.io/blocky/latest/
 | 
			
		||||
# Source: https://0xerr0r.github.io/blocky
 | 
			
		||||
 | 
			
		||||
APP="Blocky"
 | 
			
		||||
var_tags="${var_tags:-adblock}"
 | 
			
		||||
@@ -23,14 +23,34 @@ function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
    if [[ ! -d /var ]]; then
 | 
			
		||||
  if [[ ! -d /opt/blocky ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
    msg_info "Updating $APP LXC"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
    msg_ok "Updated $APP LXC"
 | 
			
		||||
  if check_for_gh_release "blocky" "0xERR0R/blocky"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop blocky
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Backup Config"
 | 
			
		||||
    mv /opt/blocky/config.yml /opt/config.yml
 | 
			
		||||
    msg_ok "Backed Up Config"
 | 
			
		||||
 | 
			
		||||
    msg_info "Removing Old Version"
 | 
			
		||||
    rm -rf /opt/blocky
 | 
			
		||||
    msg_ok "Removed Old Version"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restore Config"
 | 
			
		||||
    mv /opt/config.yml /opt/blocky/config.yml
 | 
			
		||||
    msg_ok "Restored Config"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start blocky
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -28,13 +28,15 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.booklore 2>/dev/null)" ]] || [[ ! -f ~/.booklore ]]; then
 | 
			
		||||
  if check_for_gh_release "booklore" "booklore-app/BookLore"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop booklore
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "backup old install"
 | 
			
		||||
    mv /opt/booklore /opt/booklore_bak
 | 
			
		||||
    msg_ok "backup done"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building Frontend"
 | 
			
		||||
@@ -60,11 +62,9 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start booklore
 | 
			
		||||
    systemctl reload nginx
 | 
			
		||||
    rm -rf /opt/booklore_bak
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.bookstack 2>/dev/null)" ]] || [[ ! -f ~/.bookstack ]]; then
 | 
			
		||||
  if check_for_gh_release "bookstack" "BookStackApp/BookStack"; then
 | 
			
		||||
    msg_info "Stopping Apache2"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
@@ -58,7 +57,6 @@ function update_script() {
 | 
			
		||||
    chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage
 | 
			
		||||
    chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
 | 
			
		||||
    chmod -R 640 /opt/bookstack/.env
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Configured BookStack"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Apache2"
 | 
			
		||||
@@ -69,12 +67,9 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/bookstack-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
 | 
			
		||||
 
 | 
			
		||||
@@ -28,9 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.bytestash 2>/dev/null)" ]] || [[ ! -f ~/.bytestash ]]; then
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "bytestash" "jordan-dalby/ByteStash"; then
 | 
			
		||||
    read -rp "${TAB3}Did you make a backup via application WebUI? (y/n): " backuped
 | 
			
		||||
    if [[ "$backuped" =~ ^[Yy]$ ]]; then
 | 
			
		||||
      msg_info "Stopping Services"
 | 
			
		||||
@@ -57,10 +55,7 @@ function update_script() {
 | 
			
		||||
      exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -27,8 +27,8 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if check_for_gh_release "checkmk" "checkmk/checkmk"; then
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    $STD omd stop monitoring
 | 
			
		||||
    $STD omd cp monitoring monitoringbackup
 | 
			
		||||
@@ -39,11 +39,9 @@ curl -fsSL "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEA
 | 
			
		||||
    $STD omd -f rm monitoringbackup
 | 
			
		||||
    $STD omd cleanup
 | 
			
		||||
    rm -rf /opt/checkmk.deb
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}."
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/Cleanuparr/Cleanuparr/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat ~/.Cleanuparr 2>/dev/null)" ]] || [[ ! -f ~/.Cleanuparr ]]; then
 | 
			
		||||
  if check_for_gh_release "cleanuparr" "Cleanuparr/Cleanuparr"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop cleanuparr
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -40,12 +38,9 @@ function update_script() {
 | 
			
		||||
    systemctl start cleanuparr
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 
 | 
			
		||||
@@ -28,9 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/cloudreve/cloudreve/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.cloudreve 2>/dev/null)" ]] || [[ ! -f ~/.cloudreve ]]; then
 | 
			
		||||
  if check_for_gh_release "cloudreve" "cloudreve/cloudreve"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop cloudreve
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -40,10 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start cloudreve
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.commafeed 2>/dev/null)" ]] || [[ ! -f ~/.commafeed ]]; then
 | 
			
		||||
  if check_for_gh_release "commafeed" "Athou/commafeed"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop commafeed
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -59,8 +58,6 @@ function update_script() {
 | 
			
		||||
    systemctl start commafeed
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,31 +27,28 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/raydak-labs/configarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.configarr 2>/dev/null || cat /opt/configarr_version.txt 2>/dev/null)" ]]; then
 | 
			
		||||
  if check_for_gh_release "configarr" "raydak-labs/configarr"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop configarr-task.timer
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    mkdir -p /opt/backup/
 | 
			
		||||
    mv /opt/configarr/{config.yml,secrets.yml,.env} "/opt/backup/"
 | 
			
		||||
    rm -rf /opt/configarr
 | 
			
		||||
    fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr"
 | 
			
		||||
    mv /opt/backup/* /opt/configarr/
 | 
			
		||||
    mv /opt/backup/{config.yml,secrets.yml,.env} "/opt/configarr/"
 | 
			
		||||
    cd /opt/configarr
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    $STD pnpm run build
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start configarr-task.timer
 | 
			
		||||
    msg_ok "Started configarr"
 | 
			
		||||
 | 
			
		||||
    rm -rf /opt/backup
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,8 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/C4illin/ConvertX/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.convertx 2>/dev/null)" ]] || [[ ! -f ~/.convertx ]]; then
 | 
			
		||||
  if check_for_gh_release "ConvertX" "C4illin/ConvertX"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop convertx
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -41,25 +40,21 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "ConvertX" "C4illin/ConvertX" "tarball" "latest" "/opt/convertx"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    if [[ -d /opt/data ]]; then
 | 
			
		||||
      mv /opt/data /opt/convertx/data
 | 
			
		||||
    fi
 | 
			
		||||
    cd /opt/convertx
 | 
			
		||||
    $STD bun install
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start convertx
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 
 | 
			
		||||
@@ -33,27 +33,16 @@ function update_script() {
 | 
			
		||||
      msg_error "No ${APP} Installation Found!"
 | 
			
		||||
      exit
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then
 | 
			
		||||
      if ! command -v npm >/dev/null 2>&1; then
 | 
			
		||||
        echo "Installing NPM..."
 | 
			
		||||
        $STD apt-get install -y npm
 | 
			
		||||
        echo "Installed NPM..."
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
    NODE_VERSION="22" setup_nodejs
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    $STD /opt/cronicle/bin/control.sh upgrade
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if [ "$UPD" == "2" ]; then
 | 
			
		||||
    if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then
 | 
			
		||||
      if ! command -v npm >/dev/null 2>&1; then
 | 
			
		||||
        echo "Installing NPM..."
 | 
			
		||||
        $STD apt-get install -y npm
 | 
			
		||||
        echo "Installed NPM..."
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
    LATEST=$(curl -fsSL https://api.github.com/repos/jhuckaby/Cronicle/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
 | 
			
		||||
    NODE_VERSION="22" setup_nodejs
 | 
			
		||||
    if check_for_gh_release "cronicle" "jhuckaby/Cronicle"; then
 | 
			
		||||
      IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
      msg_info "Installing Dependencies"
 | 
			
		||||
      $STD apt-get install -y \
 | 
			
		||||
@@ -80,6 +69,7 @@ function update_script() {
 | 
			
		||||
      echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n"
 | 
			
		||||
      exit
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.cryptpad 2>/dev/null)" ]] || [[ ! -f ~/.cryptpad ]]; then
 | 
			
		||||
  if check_for_gh_release "cryptpad" "cryptpad/cryptpad"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop cryptpad
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -40,12 +39,12 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    cd /opt/cryptpad
 | 
			
		||||
    $STD npm ci
 | 
			
		||||
    $STD npm run install:components
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restoring configuration"
 | 
			
		||||
    mv /opt/config.js /opt/cryptpad/config/
 | 
			
		||||
@@ -54,10 +53,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start cryptpad
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								ct/dashy.sh
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								ct/dashy.sh
									
									
									
									
									
								
							@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.dashy 2>/dev/null)" ]] || [[ ! -f ~/.dashy ]]; then
 | 
			
		||||
  if check_for_gh_release "dashy" "Lissy93/dashy"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop dashy
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -46,11 +44,11 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/dashy
 | 
			
		||||
    fetch_and_deploy_gh_release "dashy" "Lissy93/dashy"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/dashy
 | 
			
		||||
    npm install
 | 
			
		||||
    npm run build
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restoring conf.yml"
 | 
			
		||||
    cd ~
 | 
			
		||||
@@ -64,10 +62,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting Dashy"
 | 
			
		||||
    systemctl start dashy
 | 
			
		||||
    msg_ok "Started Dashy"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,8 +30,8 @@ function update_script() {
 | 
			
		||||
    NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
 | 
			
		||||
  fi
 | 
			
		||||
  export NODE_OPTIONS="--max_old_space_size=4096"
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.docmost 2>/dev/null)" ]] || [[ ! -f ~/.docmost ]]; then
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "docmost" "docmost/docmost"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop docmost
 | 
			
		||||
    msg_ok "${APP} Stopped"
 | 
			
		||||
@@ -44,7 +44,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "docmost" "docmost/docmost"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/docmost
 | 
			
		||||
    mv /opt/.env /opt/docmost/.env
 | 
			
		||||
    mv /opt/data /opt/docmost/data
 | 
			
		||||
@@ -55,10 +55,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start docmost
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/duplicati/duplicati/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat ~/.duplicati)" ]] || [[ ! -f ~/.duplicati ]]; then
 | 
			
		||||
  if check_for_gh_release "duplicati" "duplicati/duplicati"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop duplicati
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -39,10 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start duplicati
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="Element Synapse"
 | 
			
		||||
var_tags="${var_tags:-server}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.emby 2>/dev/null)" ]] || [[ ! -f ~/.emby ]]; then
 | 
			
		||||
  if check_for_gh_release "emby" "MediaBrowser/Emby.Releases"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop emby-server
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -39,10 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start emby-server
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,10 +26,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\Kv\K[^"]+' | head -n1)
 | 
			
		||||
  RELEASE_FFMPEG=$(curl -fsSL https://api.github.com/repos/ErsatzTV/ErsatzTV-ffmpeg/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
 | 
			
		||||
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.ersatztv 2>/dev/null)" ]] || [[ ! -f ~/.ersatztv ]]; then
 | 
			
		||||
  if check_for_gh_release "ersatztv" "ErsatzTV/ErsatzTV"; then
 | 
			
		||||
    msg_info "Stopping ErsatzTV"
 | 
			
		||||
    systemctl stop ersatzTV
 | 
			
		||||
    msg_ok "Stopped ErsatzTV"
 | 
			
		||||
@@ -41,11 +38,9 @@ function update_script() {
 | 
			
		||||
    msg_ok "Started ErsatzTV"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [[ "${RELEASE_FFMPEG}" != "$(cat ~/.ersatztv-ffmpeg 2>/dev/null)" ]] || [[ ! -f ~/.ersatztv-ffmpeg ]]; then
 | 
			
		||||
  if check_for_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg"; then
 | 
			
		||||
    msg_info "Stopping ErsatzTV"
 | 
			
		||||
    systemctl stop ersatzTV
 | 
			
		||||
    msg_ok "Stopped ErsatzTV"
 | 
			
		||||
@@ -62,10 +57,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting ErsatzTV"
 | 
			
		||||
    systemctl start ersatzTV
 | 
			
		||||
    msg_ok "Started ErsatzTV"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ErsatzTV-ffmpeg is already at ${RELEASE_FFMPEG}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="ESPHome"
 | 
			
		||||
var_tags="${var_tags:-automation}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.excalidraw 2>/dev/null)" ]] || [[ ! -f ~/.excalidraw ]]; then
 | 
			
		||||
  if check_for_gh_release "excalidraw" "excalidraw/excalidraw"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop excalidraw
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -37,18 +36,15 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/excalidraw
 | 
			
		||||
    fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    cd /opt/excalidraw
 | 
			
		||||
    $STD yarn
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start excalidraw
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.firefly 2>/dev/null)" ]] || [[ ! -f ~/.firefly ]]; then
 | 
			
		||||
  if check_for_gh_release "firefly" "firefly-iii/firefly-iii"; then
 | 
			
		||||
    msg_info "Stopping Apache2"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
    msg_ok "Stopped Apache2"
 | 
			
		||||
@@ -42,7 +41,7 @@ function update_script() {
 | 
			
		||||
    fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii" "prebuild" "latest" "/opt/firefly" "FireflyIII-*.zip"
 | 
			
		||||
    setup_composer
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    rm -rf /opt/firefly/storage
 | 
			
		||||
    cp /opt/.env /opt/firefly/.env
 | 
			
		||||
    cp -r /opt/storage /opt/firefly/storage
 | 
			
		||||
@@ -58,15 +57,12 @@ function update_script() {
 | 
			
		||||
    $STD php artisan view:clear
 | 
			
		||||
    $STD php artisan firefly-iii:upgrade-database
 | 
			
		||||
    $STD php artisan firefly-iii:laravel-passport-keys
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Apache2"
 | 
			
		||||
    systemctl start apache2
 | 
			
		||||
    msg_ok "Started Apache2"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/FlareSolverr/FlareSolverr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.flaresolverr 2>/dev/null)" ]] || [[ ! -f ~/.flaresolverr ]]; then
 | 
			
		||||
  if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "3.3.5"; then
 | 
			
		||||
    msg_info "Stopping service"
 | 
			
		||||
    systemctl stop flaresolverr
 | 
			
		||||
    msg_ok "Stopped service"
 | 
			
		||||
@@ -40,8 +39,6 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting service"
 | 
			
		||||
    systemctl start flaresolverr
 | 
			
		||||
    msg_ok "Started service"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.fluid-calendar 2>/dev/null)" ]] || [[ ! -f ~/.fluid-calendar ]]; then
 | 
			
		||||
  if check_for_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop fluid-calendar
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -38,7 +37,7 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/fluid-calendar
 | 
			
		||||
    fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    mv /opt/fluid.env /opt/fluid-calendar/.env
 | 
			
		||||
    cd /opt/fluid-calendar
 | 
			
		||||
    export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
@@ -46,15 +45,12 @@ function update_script() {
 | 
			
		||||
    $STD npm run prisma:generate
 | 
			
		||||
    $STD npx prisma migrate deploy
 | 
			
		||||
    $STD npm run build:os
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start fluid-calendar
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								ct/gatus.sh
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								ct/gatus.sh
									
									
									
									
									
								
							@@ -28,10 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.gatus 2>/dev/null)" ]] || [[ ! -f ~/.gatus ]]; then
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "gatus" "TwiN/gatus"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop gatus
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -40,21 +37,18 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/gatus
 | 
			
		||||
    fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    cd /opt/gatus
 | 
			
		||||
    $STD go mod tidy
 | 
			
		||||
    CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
 | 
			
		||||
    setcap CAP_NET_RAW+ep gatus
 | 
			
		||||
    mv /opt/config.yaml config
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start gatus
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -32,14 +32,12 @@ function update_script() {
 | 
			
		||||
  APP_VERSION=$(grep -o '"version": *"[^"]*"' /opt/gitea-mirror/package.json | cut -d'"' -f4)
 | 
			
		||||
  if [[ $APP_VERSION =~ ^2\. ]]; then
 | 
			
		||||
    if ! whiptail --backtitle "Gitea Mirror Update" --title "⚠️  VERSION 2.x DETECTED" --yesno \
 | 
			
		||||
      "WARNING: Version $APP_VERSION detected!\n\nUpdating from version 2.x will CLEAR ALL CONFIGURATION.\n\nThis includes:\n• API tokens\n• User settings\n• Repository configurations\n• All custom settings\n\nDo you want to continue with the update process?" 15 70 --defaultno
 | 
			
		||||
    then
 | 
			
		||||
      "WARNING: Version $APP_VERSION detected!\n\nUpdating from version 2.x will CLEAR ALL CONFIGURATION.\n\nThis includes:\n• API tokens\n• User settings\n• Repository configurations\n• All custom settings\n\nDo you want to continue with the update process?" 15 70 --defaultno; then
 | 
			
		||||
      exit 0
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if ! whiptail --backtitle "Gitea Mirror Update" --title "⚠️  FINAL CONFIRMATION" --yesno \
 | 
			
		||||
        "FINAL WARNING: This update WILL clear all configuration!\n\nBEFORE PROCEEDING, please:\n\n• Copy API tokens to a safe location\n• Backup any custom configurations\n• Note down repository settings\n\nThis action CANNOT be undone!" 18 70 --defaultno 
 | 
			
		||||
    then
 | 
			
		||||
      "FINAL WARNING: This update WILL clear all configuration!\n\nBEFORE PROCEEDING, please:\n\n• Copy API tokens to a safe location\n• Backup any custom configurations\n• Note down repository settings\n\nThis action CANNOT be undone!" 18 70 --defaultno; then
 | 
			
		||||
      whiptail --backtitle "Gitea Mirror Update" --title "Update Cancelled" --msgbox "Update process cancelled. Please backup your configuration before proceeding." 8 60
 | 
			
		||||
      exit 0
 | 
			
		||||
    fi
 | 
			
		||||
@@ -48,9 +46,40 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/gitea-mirror
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/RayLabsHQ/gitea-mirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then
 | 
			
		||||
  if [[ ! -f /opt/gitea-mirror.env ]]; then
 | 
			
		||||
      msg_info "Detected old Enviroment, updating files"
 | 
			
		||||
      APP_SECRET=$(openssl rand -base64 32)
 | 
			
		||||
      HOST_IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
      cat <<EOF >/opt/gitea-mirror.env
 | 
			
		||||
# See here for config options: https://github.com/RayLabsHQ/gitea-mirror/blob/main/docs/ENVIRONMENT_VARIABLES.md
 | 
			
		||||
NODE_ENV=production
 | 
			
		||||
HOST=0.0.0.0
 | 
			
		||||
PORT=4321
 | 
			
		||||
DATABASE_URL=sqlite://data/gitea-mirror.db
 | 
			
		||||
BETTER_AUTH_URL=http://${HOST_IP}:4321
 | 
			
		||||
BETTER_AUTH_SECRET=${APP_SECRET}
 | 
			
		||||
npm_package_version=${APP_VERSION}
 | 
			
		||||
EOF
 | 
			
		||||
    rm /etc/systemd/system/gitea-mirror.service
 | 
			
		||||
    cat <<EOF >/etc/systemd/system/gitea-mirror.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Gitea Mirror
 | 
			
		||||
After=network.target
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
WorkingDirectory=/opt/gitea-mirror
 | 
			
		||||
ExecStart=/usr/local/bin/bun dist/server/entry.mjs
 | 
			
		||||
Restart=on-failure
 | 
			
		||||
RestartSec=10
 | 
			
		||||
EnvironmentFile=/opt/gitea-mirror.env
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
    systemctl daemon-reload
 | 
			
		||||
    msg_ok "Old Enviroment fixed"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop gitea-mirror
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
@@ -70,25 +99,23 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/gitea-mirror
 | 
			
		||||
    fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating and rebuilding ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating and rebuilding ${APP}"
 | 
			
		||||
    cd /opt/gitea-mirror
 | 
			
		||||
    $STD bun run setup
 | 
			
		||||
    $STD bun run build
 | 
			
		||||
    APP_VERSION=$(grep -o '"version": *"[^"]*"' package.json | cut -d'"' -f4)
 | 
			
		||||
    sudo sed -i.bak "s|^Environment=npm_package_version=.*|Environment=npm_package_version=${APP_VERSION}|" /etc/systemd/system/gitea-mirror.service
 | 
			
		||||
    msg_ok "Updated and rebuilt ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    sudo sed -i.bak "s|^npm_package_version=.*|npm_package_version=${APP_VERSION}|" /opt/gitea-mirror.env
 | 
			
		||||
    msg_ok "Updated and rebuilt ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restoring Data"
 | 
			
		||||
    cp /opt/gitea-mirror-backup/data/* /opt/gitea-mirror/data
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Restored Data"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl daemon-reload
 | 
			
		||||
    systemctl start gitea-mirror
 | 
			
		||||
    msg_ok "Service Started"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    msg_ok "Update Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.gitea 2>/dev/null)" ]] || [[ ! -f ~/.gitea ]]; then
 | 
			
		||||
  if check_for_gh_release "gitea" "go-gitea/gitea"; then
 | 
			
		||||
    msg_info "Stopping service"
 | 
			
		||||
    systemctl stop gitea
 | 
			
		||||
    msg_ok "Service stopped"
 | 
			
		||||
@@ -41,10 +40,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting service"
 | 
			
		||||
    systemctl start gitea
 | 
			
		||||
    msg_ok "Started service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.glance 2>/dev/null)" ]] || [[ ! -f ~/.glance ]]; then
 | 
			
		||||
  if check_for_gh_release "glance" "glanceapp/glance"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop glance
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -40,10 +39,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start glance
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/AlexxIT/go2rtc/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.go2rtc 2>/dev/null)" ]] || [[ ! -f ~/.go2rtc ]]; then
 | 
			
		||||
  if check_for_gh_release "go2rtc" "AlexxIT/go2rtc"; then
 | 
			
		||||
    msg_info "Stopping service"
 | 
			
		||||
    systemctl stop go2rtc
 | 
			
		||||
    msg_ok "Stopped service"
 | 
			
		||||
@@ -39,10 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting service"
 | 
			
		||||
    systemctl start go2rtc
 | 
			
		||||
    msg_ok "Started service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								ct/gokapi.sh
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								ct/gokapi.sh
									
									
									
									
									
								
							@@ -27,12 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
   if [[ -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
      mv /opt/${APP}_version ~/.gokapi
 | 
			
		||||
   fi
 | 
			
		||||
 | 
			
		||||
   RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/Gokapi/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
   if [[ "${RELEASE}" != "$(cat ~/.gokapi 2>/dev/null)" ]] || [[ ! -f ~/.gokapi ]]; then
 | 
			
		||||
  if check_for_gh_release "gokapi" "Forceu/Gokapi"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop gokapi
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -42,10 +37,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start gokapi
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,9 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  
 | 
			
		||||
  RELEASE=$(curl -fsSL "https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest" | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.gomft)" ]] || [[ ! -f ~/.gomft ]]; then
 | 
			
		||||
  if check_for_gh_release "gomft" "StarFleetCPTN/GoMFT"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop gomft
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -40,10 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start gomft
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/gotify/server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.gotify 2>/dev/null)" ]] || [[ ! -f ~/.gotify ]]; then
 | 
			
		||||
  if check_for_gh_release "gotify" "gotify/server"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop gotify
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -40,10 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start gotify
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,19 +27,14 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  
 | 
			
		||||
  php_ver=$(php -v | head -n 1 | awk '{print $2}')
 | 
			
		||||
  if [[ ! $php_ver == "8.3"* ]]; then
 | 
			
		||||
    PHP_VERSION="8.3" PHP_MODULE="sqlite3,bz2" PHP_APACHE="yes" setup_php
 | 
			
		||||
  fi
 | 
			
		||||
  
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/grocy/grocy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.grocy 2>/dev/null)" ]] || [[ ! -f ~/.grocy ]]; then
 | 
			
		||||
  if check_for_gh_release "grocy" "grocy/grocy"; then
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    bash /var/www/html/update.sh
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -29,9 +29,7 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/HabitRPG/habitica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.habitica 2>/dev/null)" ]] || [[ ! -f ~/.habitica ]]; then
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "habitica" "HabitRPG/habitica"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop habitica-mongodb
 | 
			
		||||
    systemctl stop habitica
 | 
			
		||||
@@ -48,13 +46,13 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    cd /opt/habitica
 | 
			
		||||
    $STD npm i
 | 
			
		||||
    $STD npm run postinstall
 | 
			
		||||
    $STD npm run client:build
 | 
			
		||||
    $STD gulp build:prod
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restoring configuration"
 | 
			
		||||
    if [[ -f ~/config.json ]]; then
 | 
			
		||||
@@ -69,10 +67,7 @@ function update_script() {
 | 
			
		||||
    systemctl start habitica
 | 
			
		||||
    systemctl start habitica-client
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/autocaliweb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/autocaliweb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___         __                   ___               __  
 | 
			
		||||
   /   | __  __/ /_____  _________ _/ (_)      _____  / /_ 
 | 
			
		||||
  / /| |/ / / / __/ __ \/ ___/ __ `/ / / | /| / / _ \/ __ \
 | 
			
		||||
 / ___ / /_/ / /_/ /_/ / /__/ /_/ / / /| |/ |/ /  __/ /_/ /
 | 
			
		||||
/_/  |_\__,_/\__/\____/\___/\__,_/_/_/ |__/|__/\___/_.___/ 
 | 
			
		||||
                                                           
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/leantime
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/leantime
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __                     __  _              
 | 
			
		||||
   / /   ___  ____ _____  / /_(_)___ ___  ___ 
 | 
			
		||||
  / /   / _ \/ __ `/ __ \/ __/ / __ `__ \/ _ \
 | 
			
		||||
 / /___/  __/ /_/ / / / / /_/ / / / / / /  __/
 | 
			
		||||
/_____/\___/\__,_/_/ /_/\__/_/_/ /_/ /_/\___/ 
 | 
			
		||||
                                              
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
    ____  _                   _     
 | 
			
		||||
   / __ \(_)___  ____ __   __(_)___ 
 | 
			
		||||
  / /_/ / / __ \/ __ `/ | / / / __ \
 | 
			
		||||
 / ____/ / / / / /_/ /| |/ / / / / /
 | 
			
		||||
/_/   /_/_/ /_/\__, / |___/_/_/ /_/ 
 | 
			
		||||
              /____/                
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/resiliosync
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/resiliosync
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____            _ ___          _____                 
 | 
			
		||||
   / __ \___  _____(_) (_)___     / ___/__  ______  _____
 | 
			
		||||
  / /_/ / _ \/ ___/ / / / __ \    \__ \/ / / / __ \/ ___/
 | 
			
		||||
 / _, _/  __(__  ) / / / /_/ /   ___/ / /_/ / / / / /__  
 | 
			
		||||
/_/ |_|\___/____/_/_/_/\____/   /____/\__, /_/ /_/\___/  
 | 
			
		||||
                                     /____/              
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/stylus
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/stylus
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   _____ __        __          
 | 
			
		||||
  / ___// /___  __/ /_  _______
 | 
			
		||||
  \__ \/ __/ / / / / / / / ___/
 | 
			
		||||
 ___/ / /_/ /_/ / / /_/ (__  ) 
 | 
			
		||||
/____/\__/\__, /_/\__,_/____/  
 | 
			
		||||
         /____/                
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/telegraf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/telegraf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   __       __                      ____
 | 
			
		||||
  / /____  / /__  ____ __________ _/ __/
 | 
			
		||||
 / __/ _ \/ / _ \/ __ `/ ___/ __ `/ /_  
 | 
			
		||||
/ /_/  __/ /  __/ /_/ / /  / /_/ / __/  
 | 
			
		||||
\__/\___/_/\___/\__, /_/   \__,_/_/     
 | 
			
		||||
               /____/                   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/uhf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/uhf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   __  ____  ________
 | 
			
		||||
  / / / / / / / ____/
 | 
			
		||||
 / / / / /_/ / /_    
 | 
			
		||||
/ /_/ / __  / __/    
 | 
			
		||||
\____/_/ /_/_/       
 | 
			
		||||
                     
 | 
			
		||||
@@ -31,8 +31,7 @@ function update_script() {
 | 
			
		||||
    mv /opt/"${APP}_version.txt" ~/.headscale
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/juanfont/headscale/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.headscale 2>/dev/null)" ]] || [[ ! -f ~/.headscale ]]; then
 | 
			
		||||
  if check_for_gh_release "headscale" "juanfont/headscale"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop headscale
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -41,12 +40,9 @@ function update_script() {
 | 
			
		||||
    fetch_and_deploy_gh_release "headscale-admin" "GoodiesHQ/headscale-admin" "prebuild" "latest" "/opt/headscale-admin" "admin.zip"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    # Temporary fix until headscale project resolves service getting disabled on updates.
 | 
			
		||||
    systemctl enable -q --now headscale
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,9 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/healthchecks/healthchecks/releases/latest | jq '.tag_name' | sed 's/^"v//;s/"$//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.healthchecks 2>/dev/null)" ]] || [[ ! -f ~/.healthchecks ]]; then
 | 
			
		||||
  if check_for_gh_release "healthchecks" "healthchecks/healthchecks"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop healthchecks
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -38,7 +36,7 @@ function update_script() {
 | 
			
		||||
    setup_uv
 | 
			
		||||
    fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    cd /opt/healthchecks
 | 
			
		||||
    mkdir -p /opt/healthchecks/static-collected/
 | 
			
		||||
    $STD uv pip install wheel gunicorn -r requirements.txt --system
 | 
			
		||||
@@ -46,16 +44,13 @@ function update_script() {
 | 
			
		||||
    $STD uv run -- python manage.py migrate --noinput
 | 
			
		||||
    $STD uv run -- python manage.py collectstatic --noinput
 | 
			
		||||
    $STD uv run -- python manage.py compress
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start healthchecks
 | 
			
		||||
    systemctl restart caddy
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -81,9 +81,8 @@ EOF
 | 
			
		||||
    msg_ok "Updated Services"
 | 
			
		||||
    systemctl daemon-reload
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/homarr-labs/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "homarr" "homarr-labs/homarr"; then
 | 
			
		||||
    msg_info "Stopping Services (Patience)"
 | 
			
		||||
    systemctl stop homarr
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
@@ -98,7 +97,6 @@ EOF
 | 
			
		||||
    $STD apt upgrade nodejs -y
 | 
			
		||||
    msg_ok "Updated Nodejs"
 | 
			
		||||
 | 
			
		||||
    $STD command -v jq || $STD apt-get update && $STD apt-get install -y jq
 | 
			
		||||
    NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
 | 
			
		||||
    NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.packageManager | split("@")[1]')"
 | 
			
		||||
    setup_nodejs
 | 
			
		||||
@@ -106,7 +104,7 @@ EOF
 | 
			
		||||
    rm -rf /opt/homarr
 | 
			
		||||
    fetch_and_deploy_gh_release "homarr" "homarr-labs/homarr"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating and rebuilding ${APP} to v${RELEASE} (Patience)"
 | 
			
		||||
    msg_info "Updating and rebuilding ${APP} (Patience)"
 | 
			
		||||
    rm /opt/run_homarr.sh
 | 
			
		||||
    cat <<'EOF' >/opt/run_homarr.sh
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
@@ -153,7 +151,6 @@ EOF
 | 
			
		||||
 | 
			
		||||
    mkdir /opt/homarr/build
 | 
			
		||||
    cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
@@ -164,8 +161,6 @@ EOF
 | 
			
		||||
    if [[ "$choice" =~ ^[Yy]$ ]]; then
 | 
			
		||||
      reboot
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -33,8 +33,7 @@ function update_script() {
 | 
			
		||||
    systemctl daemon-reload
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.homebox 2>/dev/null)" ]] || [[ ! -f ~/.homebox ]]; then
 | 
			
		||||
  if check_for_gh_release "homebox" "sysadminsmedia/homebox"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop homebox
 | 
			
		||||
    msg_ok "${APP} Stopped"
 | 
			
		||||
@@ -50,10 +49,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start homebox
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,8 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/danielbrendel/hortusfox-web/releases/latest | jq -r .tag_name | sed 's/^v//')
 | 
			
		||||
  if [[ ! -f ~/.hortusfox ]] || [[ "${RELEASE}" != "$(cat ~/.hortusfox)" ]]; then
 | 
			
		||||
  if check_for_gh_release "danielbrendel" "hortusfox-web"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -58,8 +57,6 @@ function update_script() {
 | 
			
		||||
    rm -r /opt/hortusfox-backup
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,16 +30,14 @@ function update_script() {
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  setup_uv
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/plexguide/Huntarr.io/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
 | 
			
		||||
  if [[ -f ~/.huntarr && "${RELEASE}" == "$(cat ~/.huntarr)" ]]; then
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping huntarr service"
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "huntarr" "plexguide/Huntarr.io"; then
 | 
			
		||||
    msg_info "Stopping huntarr"
 | 
			
		||||
    systemctl stop huntarr
 | 
			
		||||
  msg_ok "Stopped huntarr service"
 | 
			
		||||
    msg_ok "Stopped huntarr"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io"
 | 
			
		||||
 | 
			
		||||
    msg_info "Configuring $APP"
 | 
			
		||||
    cd /opt/huntarr
 | 
			
		||||
    $STD uv pip install -r requirements.txt --python /opt/huntarr/.venv/bin/python
 | 
			
		||||
@@ -48,8 +46,8 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start huntarr
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
  msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										39
									
								
								ct/immich.sh
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								ct/immich.sh
									
									
									
									
									
								
							@@ -61,13 +61,9 @@ function update_script() {
 | 
			
		||||
    done
 | 
			
		||||
    msg_ok "Image-processing libraries up to date"
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE="1.139.4"
 | 
			
		||||
  #RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping ${APP} services"
 | 
			
		||||
  RELEASE="1.142.0"
 | 
			
		||||
  if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop immich-web
 | 
			
		||||
    systemctl stop immich-ml
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -164,15 +160,14 @@ EOF
 | 
			
		||||
    cd "$SRC_DIR"/machine-learning
 | 
			
		||||
    mkdir -p "$ML_DIR"
 | 
			
		||||
    export VIRTUAL_ENV="${ML_DIR}"/ml-venv
 | 
			
		||||
  $STD /usr/local/bin/uv venv "$VIRTUAL_ENV"
 | 
			
		||||
    if [[ -f ~/.openvino ]]; then
 | 
			
		||||
      msg_info "Updating HW-accelerated machine-learning"
 | 
			
		||||
    /usr/local/bin/uv -q sync --extra openvino --no-cache --active
 | 
			
		||||
      $STD /usr/local/bin/uv sync --extra openvino --no-cache --active
 | 
			
		||||
      patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
 | 
			
		||||
      msg_ok "Updated HW-accelerated machine-learning"
 | 
			
		||||
    else
 | 
			
		||||
      msg_info "Updating machine-learning"
 | 
			
		||||
    /usr/local/bin/uv -q sync --extra cpu --no-cache --active
 | 
			
		||||
      $STD /usr/local/bin/uv sync --extra cpu --no-cache --active
 | 
			
		||||
      msg_ok "Updated machine-learning"
 | 
			
		||||
    fi
 | 
			
		||||
    cd "$SRC_DIR"
 | 
			
		||||
@@ -202,6 +197,7 @@ EOF
 | 
			
		||||
    $STD apt-get -y autoclean
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    systemctl restart immich-ml immich-web
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -209,8 +205,9 @@ function compile_libjxl() {
 | 
			
		||||
  SOURCE=${SOURCE_DIR}/libjxl
 | 
			
		||||
  JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
 | 
			
		||||
  JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
 | 
			
		||||
  : "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}"
 | 
			
		||||
  if [[ "${update:-}" ]] || [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
  # : "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}"
 | 
			
		||||
  : "${LIBJXL_REVISION:=794a5dcf0d54f9f0b20d288a12e87afb91d20dfc}"
 | 
			
		||||
  if [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
    msg_info "Recompiling libjxl"
 | 
			
		||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
			
		||||
    $STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
 | 
			
		||||
@@ -256,7 +253,8 @@ function compile_libheif() {
 | 
			
		||||
    $STD apt-get install -y libaom-dev
 | 
			
		||||
    local update="required"
 | 
			
		||||
  fi
 | 
			
		||||
  : "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}"
 | 
			
		||||
  # : "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}"
 | 
			
		||||
  : "${LIBHEIF_REVISION:=35dad50a9145332a7bfdf1ff6aef6801fb613d68}"
 | 
			
		||||
  if [[ "${update:-}" ]] || [[ "$LIBHEIF_REVISION" != "$(grep 'libheif' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
    msg_info "Recompiling libheif"
 | 
			
		||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
			
		||||
@@ -288,8 +286,9 @@ function compile_libheif() {
 | 
			
		||||
function compile_libraw() {
 | 
			
		||||
  SOURCE=${SOURCE_DIR}/libraw
 | 
			
		||||
  local update
 | 
			
		||||
  : "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
 | 
			
		||||
  if [[ "${update:-}" ]] || [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
  # : "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
 | 
			
		||||
  : "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}"
 | 
			
		||||
  if [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
    msg_info "Recompiling libraw"
 | 
			
		||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
			
		||||
    $STD git clone https://github.com/libraw/libraw.git "$SOURCE"
 | 
			
		||||
@@ -309,8 +308,9 @@ function compile_libraw() {
 | 
			
		||||
 | 
			
		||||
function compile_imagemagick() {
 | 
			
		||||
  SOURCE=$SOURCE_DIR/imagemagick
 | 
			
		||||
  : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}"
 | 
			
		||||
  if [[ "${update:-}" ]] || [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
  # : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}"
 | 
			
		||||
  : "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}"
 | 
			
		||||
  if [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
    msg_info "Recompiling ImageMagick"
 | 
			
		||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
			
		||||
    $STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
 | 
			
		||||
@@ -329,8 +329,9 @@ function compile_imagemagick() {
 | 
			
		||||
 | 
			
		||||
function compile_libvips() {
 | 
			
		||||
  SOURCE=$SOURCE_DIR/libvips
 | 
			
		||||
  : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
 | 
			
		||||
  if [[ "${update:-}" ]] || [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
  # : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
 | 
			
		||||
  : "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
 | 
			
		||||
  if [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
			
		||||
    msg_info "Recompiling libvips"
 | 
			
		||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
			
		||||
    $STD git clone https://github.com/libvips/libvips.git "$SOURCE"
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/inspircd/inspircd/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.inspircd 2>/dev/null)" ]] || [[ ! -f ~/.inspircd ]]; then
 | 
			
		||||
  if check_for_gh_release "inspircd" "inspircd/inspircd"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop inspircd
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -39,10 +37,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start inspircd
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -34,13 +34,18 @@ function update_script() {
 | 
			
		||||
DisableRootWarning=true
 | 
			
		||||
EOF
 | 
			
		||||
  fi
 | 
			
		||||
  if check_for_gh_release "Jackett" "Jackett/Jackett"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop jackett
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/Jackett/Jackett/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.jackett 2>/dev/null)" ]] || [[ ! -f ~/.jackett ]]; then
 | 
			
		||||
    rm -rf /opt/Jackett
 | 
			
		||||
    fetch_and_deploy_gh_release "jackett" "Jackett/Jackett" "prebuild" "latest" "/opt/Jackett" "Jackett.Binaries.LinuxAMDx64.tar.gz"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start jackett
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,10 +28,10 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/Casvt/Kapowarr/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat $HOME/.kapowarr)" ]] || [[ ! -f $HOME/.kapowarr ]]; then
 | 
			
		||||
 | 
			
		||||
  setup_uv
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "kapowarr" "Casvt/Kapowarr"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop kapowarr
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -41,17 +41,15 @@ function update_script() {
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "kapowarr" "Casvt/Kapowarr"
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    mv /opt/db /opt/kapowarr
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start kapowarr
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,11 +28,7 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/karakeep-app/karakeep/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ -f ~/.karakeep && "$RELEASE" == "$(cat ~/.karakeep)" ]]; then
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if check_for_gh_release "karakeep" "karakeep-app/karakeep"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop karakeep-web karakeep-workers karakeep-browser
 | 
			
		||||
    msg_ok "Stopped Services"
 | 
			
		||||
@@ -56,6 +52,12 @@ function update_script() {
 | 
			
		||||
      sed -i 's|^ExecStart=.*$|ExecStart=/usr/bin/node dist/index.mjs|' /etc/systemd/system/karakeep-workers.service
 | 
			
		||||
      systemctl daemon-reload
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if grep -q '^ExecStart=/usr/bin/node\s\+dist/index\.mjs$' /etc/systemd/system/karakeep-workers.service; then
 | 
			
		||||
      sed -i -E 's#^(ExecStart=/usr/bin/node\s+dist/)index\.mjs$#\1index.js#' /etc/systemd/system/karakeep-workers.service
 | 
			
		||||
      systemctl daemon-reload
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "karakeep" "karakeep-app/karakeep"
 | 
			
		||||
    if command -v corepack >/dev/null; then
 | 
			
		||||
      $STD corepack disable
 | 
			
		||||
@@ -63,7 +65,7 @@ function update_script() {
 | 
			
		||||
    MODULE_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/karakeep/package.json)"
 | 
			
		||||
    NODE_VERSION="22" NODE_MODULE="pnpm@${MODULE_VERSION}" setup_nodejs
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    corepack enable
 | 
			
		||||
    export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
			
		||||
    export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD="true"
 | 
			
		||||
@@ -83,8 +85,8 @@ function update_script() {
 | 
			
		||||
    cd /opt/karakeep/packages/db
 | 
			
		||||
    $STD pnpm migrate
 | 
			
		||||
    $STD pnpm store prune
 | 
			
		||||
  sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${RELEASE}/" /etc/karakeep/karakeep.env
 | 
			
		||||
  msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
    sed -i "s/^SERVER_VERSION=.*$/SERVER_VERSION=${CHECK_UPDATE_RELEASE}/" /etc/karakeep/karakeep.env
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl start karakeep-browser karakeep-workers karakeep-web
 | 
			
		||||
@@ -95,6 +97,7 @@ function update_script() {
 | 
			
		||||
    $STD apt-get autoclean -y
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,12 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
  
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/keycloak/keycloak/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.keycloak_app 2>/dev/null)" ]] || [[ ! -f ~/.keycloak_app ]]; then
 | 
			
		||||
  if check_for_gh_release "keycloak" "keycloak/keycloak"; then
 | 
			
		||||
    msg_info "Stopping Keycloak"
 | 
			
		||||
    systemctl stop keycloak
 | 
			
		||||
    msg_ok "Stopped Keycloak"
 | 
			
		||||
@@ -64,13 +59,10 @@ function update_script() {
 | 
			
		||||
    rm -rf keycloak.old
 | 
			
		||||
    msg_ok "Cleanup complete"
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 
 | 
			
		||||
@@ -27,8 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ ! -f ~/.koillection ]] || [[ "${RELEASE}" != "$(cat ~/.koillection)" ]]; then
 | 
			
		||||
  if check_for_gh_release "koillection" "benjaminjonard/koillection"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -39,7 +38,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "koillection" "benjaminjonard/koillection"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/koillection
 | 
			
		||||
    cp -r /opt/koillection-backup/.env.local /opt/koillection
 | 
			
		||||
    cp -r /opt/koillection-backup/public/uploads/. /opt/koillection/public/uploads/
 | 
			
		||||
@@ -51,7 +50,7 @@ function update_script() {
 | 
			
		||||
    $STD yarn install
 | 
			
		||||
    $STD yarn build
 | 
			
		||||
    chown -R www-data:www-data /opt/koillection/public/uploads
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start apache2
 | 
			
		||||
@@ -60,10 +59,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -r /opt/koillection-backup
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								ct/kometa.sh
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								ct/kometa.sh
									
									
									
									
									
								
							@@ -28,12 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | jq -r '.tag_name | sub("^v";"")')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.kometa 2>/dev/null)" ]] || [[ ! -f ~/.kometa ]]; then
 | 
			
		||||
  if check_for_gh_release "kometa" "Kometa-Team/Kometa"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop kometa
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -43,7 +38,6 @@ function update_script() {
 | 
			
		||||
    msg_ok "Backup completed"
 | 
			
		||||
 | 
			
		||||
    PYTHON_VERSION="3.12" setup_uv
 | 
			
		||||
    $STD uv python update-shell
 | 
			
		||||
    fetch_and_deploy_gh_release "kometa" "Kometa-Team/Kometa"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Kometa"
 | 
			
		||||
@@ -56,8 +50,6 @@ function update_script() {
 | 
			
		||||
    systemctl start kometa
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ ! -f ~/.komga-org ]] || [[ "${RELEASE}" != "$(cat ~/.komga-org)" ]]; then
 | 
			
		||||
  if check_for_gh_release "komga" "gotson/komga"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop komga
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -41,10 +39,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start komga
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/ipfs/kubo/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.kubo)" ]] || [[ ! -f ~/.kubo ]]; then
 | 
			
		||||
  if check_for_gh_release "kubo" "ipfs/kubo"; then
 | 
			
		||||
    msg_info "Stopping service"
 | 
			
		||||
    systemctl stop ipfs
 | 
			
		||||
    msg_ok "Stopped service"
 | 
			
		||||
@@ -39,10 +37,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting service"
 | 
			
		||||
    systemctl start ipfs
 | 
			
		||||
    msg_ok "Service started"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated successfuly"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										62
									
								
								ct/leantime.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								ct/leantime.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Stroopwafe1
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://leantime.io
 | 
			
		||||
 | 
			
		||||
APP="Leantime"
 | 
			
		||||
var_tags="${var_tags:-productivity}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-20}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/leantime ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "leantime" "Leantime/leantime"; then
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    mariadb-dump leantime >"/opt/${APP}_db_backup_$(date +%F).sql"
 | 
			
		||||
    tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" "/opt/${APP}"
 | 
			
		||||
    mv /opt/leantime /opt/leantime_bak
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "leantime" "Leantime/leantime" "prebuild" "latest" "/opt/leantime" Leantime*.tar.gz
 | 
			
		||||
 | 
			
		||||
    msg_info "Restoring Config & Permissions"
 | 
			
		||||
    mv /opt/leantime_bak/config/.env /opt/leantime/config/.env
 | 
			
		||||
    chown -R www-data:www-data "/opt/leantime"
 | 
			
		||||
    chmod -R 750 "/opt/leantime"
 | 
			
		||||
    msg_ok "Restored Config & Permissions"
 | 
			
		||||
 | 
			
		||||
    msg_info "Removing Backup"
 | 
			
		||||
    rm -rf /opt/leantime_bak
 | 
			
		||||
    msg_ok "Removed Backup"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  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}/install${CL}"
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/librespeed/speedtest-rust/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.librespeed 2>/dev/null)" ]] || [[ ! -f ~/.librespeed ]]; then
 | 
			
		||||
  if check_for_gh_release "librespeed-rust" "librespeed/speedtest-rust"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop librespeed_rs
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
@@ -39,8 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start librespeed_rs
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,25 +28,21 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/LibreTranslate/LibreTranslate/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat $HOME/.libretranslate)" ]] || [[ ! -f $HOME/.libretranslate ]]; then
 | 
			
		||||
  if check_for_gh_release "libretranslate" "LibreTranslate/LibreTranslate"; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop libretranslate
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    cd /opt/libretranslate
 | 
			
		||||
    source .venv/bin/activate
 | 
			
		||||
    $STD pip install -U libretranslate
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start libretranslate
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								ct/lidarr.sh
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								ct/lidarr.sh
									
									
									
									
									
								
							@@ -28,14 +28,8 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Lidarr/Lidarr/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.lidarr)" ]] || [[ ! -f ~/.lidarr ]]; then
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "lidarr" "Lidarr/Lidarr"; then
 | 
			
		||||
    msg_info "Stopping service"
 | 
			
		||||
    systemctl stop lidarr
 | 
			
		||||
    msg_ok "Service stopped"
 | 
			
		||||
@@ -46,10 +40,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting service"
 | 
			
		||||
    systemctl start lidarr
 | 
			
		||||
    msg_ok "Service started"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,8 +26,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/linkwarden_version.txt)" ]] || [[ ! -f /opt/linkwarden_version.txt ]]; then
 | 
			
		||||
  if check_for_gh_release "linkwarden" "linkwarden/linkwarden"; then
 | 
			
		||||
    NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop linkwarden
 | 
			
		||||
@@ -35,11 +34,15 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    RUST_CRATES="monolith" setup_rust
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    msg_info "Backing up data"
 | 
			
		||||
    mv /opt/linkwarden/.env /opt/.env
 | 
			
		||||
    [ -d /opt/linkwarden/data ] && mv /opt/linkwarden/data /opt/data.bak
 | 
			
		||||
    rm -rf /opt/linkwarden
 | 
			
		||||
    msg_ok "Backed up data"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/linkwarden
 | 
			
		||||
    $STD yarn
 | 
			
		||||
    $STD npx playwright install-deps
 | 
			
		||||
@@ -49,7 +52,7 @@ function update_script() {
 | 
			
		||||
    $STD yarn web:build
 | 
			
		||||
    $STD yarn prisma:deploy
 | 
			
		||||
    [ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start linkwarden
 | 
			
		||||
@@ -61,8 +64,6 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/linkwarden/.next/cache
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required.  ${APP} is already at ${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,12 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/knadh/listmonk/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.listmonk)" ]] || [[ ! -f ~/.listmonk ]]; then
 | 
			
		||||
  if check_for_gh_release "listmonk" "knadh/listmonk"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop listmonk
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -56,10 +51,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf /opt/listmonk-backup/
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,12 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/hargata/lubelog/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ ! -f ~/.lubelogger ]] || [[ "${RELEASE}" != "$(cat ~/.lubelogger)" ]]; then
 | 
			
		||||
  if check_for_gh_release "lubelogger" "hargata/lubelog"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop lubelogger
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -67,10 +62,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf /tmp/lubeloggerData
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								ct/mafl.sh
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								ct/mafl.sh
									
									
									
									
									
								
							@@ -27,14 +27,12 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/hywax/mafl/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.mafl 2>/dev/null)" ]] || [[ ! -f ~/.mafl ]]; then
 | 
			
		||||
  if check_for_gh_release "mafl" "hywax/mafl"; then
 | 
			
		||||
    msg_info "Stopping Mafl service"
 | 
			
		||||
    systemctl stop mafl
 | 
			
		||||
    msg_ok "Service stopped"
 | 
			
		||||
 | 
			
		||||
    msg_info "Performing backup"
 | 
			
		||||
    msg_info "Backing up data"
 | 
			
		||||
    mkdir -p /opt/mafl-backup/data
 | 
			
		||||
    mv /opt/mafl/data /opt/mafl-backup/data
 | 
			
		||||
    rm -rf /opt/mafl
 | 
			
		||||
@@ -42,15 +40,17 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "mafl" "hywax/mafl"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Mafl to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating Mafl"
 | 
			
		||||
    cd /opt/mafl
 | 
			
		||||
    yarn install
 | 
			
		||||
    yarn build
 | 
			
		||||
    $STD yarn install
 | 
			
		||||
    $STD yarn build
 | 
			
		||||
    mv /opt/mafl-backup/data /opt/mafl/data
 | 
			
		||||
    msg_ok "Mafl updated"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start mafl
 | 
			
		||||
    msg_ok "Updated Mafl to v${RELEASE}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    msg_ok "Service started"
 | 
			
		||||
    msg_ok "Update successfully"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,12 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ ! -f ~/.magicmirror ]] || [[ "${RELEASE}" != "$(cat ~/.magicmirror)" ]]; then
 | 
			
		||||
  if check_for_gh_release "magicmirror" "MagicMirrorOrg/MagicMirror"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop magicmirror
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -62,10 +57,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start magicmirror
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,12 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/intri-in/manage-my-damn-life-nextjs/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.mmdl)" ]] || [[ ! -f ~/.mmdl ]]; then
 | 
			
		||||
  if check_for_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs"; then
 | 
			
		||||
    msg_info "Stopping service"
 | 
			
		||||
    systemctl stop mmdl
 | 
			
		||||
    msg_ok "Stopped service"
 | 
			
		||||
@@ -54,10 +49,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting service"
 | 
			
		||||
    systemctl start mmdl
 | 
			
		||||
    msg_ok "Started service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								ct/mealie.sh
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								ct/mealie.sh
									
									
									
									
									
								
							@@ -28,10 +28,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/mealie-recipes/mealie/releases/latest | jq -r '.tag_name | sub("^v"; "")')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.mealie 2>/dev/null)" ]] || [[ ! -f ~/.mealie ]]; then
 | 
			
		||||
 | 
			
		||||
  if check_for_gh_release "mealie" "mealie-recipes/mealie"; then
 | 
			
		||||
    PYTHON_VERSION="3.12" setup_uv
 | 
			
		||||
    NODE_MODULE="yarn" NODE_VERSION="20" setup_nodejs
 | 
			
		||||
 | 
			
		||||
@@ -79,10 +76,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start mealie
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update to $RELEASE Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,8 +30,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
  setup_uv
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/maxdorninger/MediaManager/releases/latest | jq '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.mediamanager 2>/dev/null)" ]] || [[ ! -f ~/.mediamanager ]]; then
 | 
			
		||||
  if check_for_gh_release "mediamanager" "maxdorninger/MediaManager"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop mediamanager
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -61,10 +60,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start mediamanager
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "Already up to date"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,12 +27,8 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/bluenviron/mediamtx/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.mediamtx)" ]] || [[ ! -f ~/.mediamtx ]]; then
 | 
			
		||||
  if check_for_gh_release "mediamtx" "bluenviron/mediamtx"; then
 | 
			
		||||
    msg_info "Stopping service"
 | 
			
		||||
    systemctl stop mediamtx
 | 
			
		||||
    msg_ok "Service stopped"
 | 
			
		||||
@@ -42,10 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting service"
 | 
			
		||||
    systemctl start mediamtx
 | 
			
		||||
    msg_ok "Service started"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ function update_script() {
 | 
			
		||||
    3>&1 1>&2 2>&3)
 | 
			
		||||
 | 
			
		||||
  if [ "$UPD" == "1" ]; then
 | 
			
		||||
    if check_for_gh_release "meilisearch" "meilisearch/meilisearch"; then
 | 
			
		||||
      msg_info "Stopping Meilisearch"
 | 
			
		||||
      systemctl stop meilisearch
 | 
			
		||||
      msg_ok "Stopped Meilisearch"
 | 
			
		||||
@@ -39,6 +40,8 @@ function update_script() {
 | 
			
		||||
      msg_info "Starting Meilisearch"
 | 
			
		||||
      systemctl start meilisearch
 | 
			
		||||
      msg_ok "Started Meilisearch"
 | 
			
		||||
      msg_ok "Update Successfully"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
@@ -47,6 +50,7 @@ function update_script() {
 | 
			
		||||
      msg_error "No Meilisearch-UI Installation Found!"
 | 
			
		||||
      exit
 | 
			
		||||
    fi
 | 
			
		||||
    if check_for_gh_release "meilisearch-ui" "riccox/meilisearch-ui"; then
 | 
			
		||||
      msg_info "Stopping Meilisearch-UI"
 | 
			
		||||
      systemctl stop meilisearch-ui
 | 
			
		||||
      msg_ok "Stopped Meilisearch-UI"
 | 
			
		||||
@@ -65,6 +69,8 @@ function update_script() {
 | 
			
		||||
      msg_info "Starting Meilisearch-UI"
 | 
			
		||||
      systemctl start meilisearch-ui
 | 
			
		||||
      msg_ok "Started Meilisearch-UI"
 | 
			
		||||
      msg_ok "Update Successfully"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/usememos/memos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.memos 2>/dev/null)" ]] || [[ ! -f ~/.memos ]]; then
 | 
			
		||||
  if check_for_gh_release "memos" "usememos/memos"; then
 | 
			
		||||
    msg_info "Stopping service"
 | 
			
		||||
    systemctl stop memos
 | 
			
		||||
    msg_ok "Service stopped"
 | 
			
		||||
@@ -39,10 +37,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting service"
 | 
			
		||||
    systemctl start memos
 | 
			
		||||
    msg_ok "Service started"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/monicahq/monica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f ~/.monica ]] || [[ "${RELEASE}" != "$(cat ~/.monica)" ]]; then
 | 
			
		||||
  if check_for_gh_release "monica" "monicahq/monica"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop apache2
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -59,10 +57,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -r /opt/monica-backup
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,11 +27,10 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://github.com/gnmyt/myspeed/releases/latest | grep "title>Release" | cut -d " " -f 5)
 | 
			
		||||
  if [[ ! -f ~/.myspeed ]] || [[ "${RELEASE}" != "$(cat ~/.myspeed)" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP} Service"
 | 
			
		||||
  if check_for_gh_release "myspeed" "gnmyt/myspeed"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop myspeed
 | 
			
		||||
    msg_ok "Stopped ${APP} Service"
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating backup"
 | 
			
		||||
    cd /opt
 | 
			
		||||
@@ -41,22 +40,19 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "myspeed" "gnmyt/myspeed" "prebuild" "latest" "/opt/myspeed" "MySpeed-*.zip"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/myspeed
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    if [[ -d /opt/myspeed_bak/data ]]; then
 | 
			
		||||
      mkdir -p /opt/myspeed/data/
 | 
			
		||||
      cp -r /opt/myspeed_bak/data/* /opt/myspeed/data/
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP} Service"
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start myspeed
 | 
			
		||||
    msg_ok "Started ${APP} Service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Updated Successfully!\n"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="n8n"
 | 
			
		||||
var_tags="${var_tags:-automation}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,7 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat ~/.navidrome 2>/dev/null)" ]] || [[ ! -f ~/.navidrome ]]; then
 | 
			
		||||
  if check_for_gh_release "navidrome" "navidrome/navidrome"; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop navidrome
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
@@ -39,10 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl start navidrome
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/nocodb/nocodb/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    if [[ ! -f ~/.nocodb ]] || [[ "${RELEASE}" != "$(cat ~/.nocodb)" ]]; then
 | 
			
		||||
  if check_for_gh_release "nocodb" "nocodb/nocodb"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop nocodb
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -39,10 +37,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start nocodb
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								ct/nodebb.sh
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								ct/nodebb.sh
									
									
									
									
									
								
							@@ -30,26 +30,21 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/NodeBB/NodeBB/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.nodebb)" ]] || [[ ! -f ~/.nodebb ]]; then
 | 
			
		||||
  if check_for_gh_release "nodebb" "NodeBB/NodeBB"; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop nodebb
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt/nodebb
 | 
			
		||||
    $STD ./nodebb upgrade
 | 
			
		||||
    echo "${RELEASE}" > ~/.nodebb
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
    echo "${CHECK_UPDATE_RELEASE}" >~/.nodebb
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start nodebb
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully\n"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,22 +28,17 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/oauth2-proxy/oauth2-proxy/releases/latest | jq -r .tag_name | sed 's/^v//')
 | 
			
		||||
  if [[ ! -f ~/.oauth2-proxy ]] || [[ "${RELEASE}" != "$(cat ~/.oauth2-proxy)" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP} services"
 | 
			
		||||
  if check_for_gh_release "oauth2-proxy" "oauth2-proxy/oauth2-proxy"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop oauth2-proxy
 | 
			
		||||
    msg_ok "Stopped ${APP} service"
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "oauth2-proxy" "oauth2-proxy/oauth2-proxy" "prebuild" "latest" "/opt/oauth2-proxy" "oauth2-proxy*linux-amd64.tar.gz"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP} service"
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start oauth2-proxy
 | 
			
		||||
    msg_ok "Started ${APP} service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Updated successfully!\n"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "${APP} is already up to date (${RELEASE})"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
 | 
			
		||||
    TMP_TAR=$(mktemp --suffix=.tgz)
 | 
			
		||||
    curl -fL# -o "${TMP_TAR}" "https://github.com/ollama/ollama/releases/download/${RELEASE}/ollama-linux-amd64.tgz"
 | 
			
		||||
    curl -fL# -C - -o "${TMP_TAR}" "https://github.com/ollama/ollama/releases/download/${RELEASE}/ollama-linux-amd64.tgz"
 | 
			
		||||
    msg_info "Updating Ollama to ${RELEASE}"
 | 
			
		||||
    rm -rf /usr/local/lib/ollama
 | 
			
		||||
    rm -rf /usr/local/bin/ollama
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								ct/ombi.sh
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								ct/ombi.sh
									
									
									
									
									
								
							@@ -27,12 +27,10 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Ombi-app/Ombi/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.ombi)" ]] || [[ ! -f ~/.ombi ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP} service"
 | 
			
		||||
  if check_for_gh_release "ombi" "Ombi-app/Ombi"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop ombi
 | 
			
		||||
    msg_ok "Stopped ${APP} service"
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating backup"
 | 
			
		||||
    [[ -f /opt/ombi/Ombi.db ]] && mv /opt/ombi/Ombi.db /opt
 | 
			
		||||
@@ -46,13 +44,10 @@ function update_script() {
 | 
			
		||||
    [[ -f /opt/OmbiExternal.db ]] && mv /opt/OmbiExternal.db /opt/ombi
 | 
			
		||||
    [[ -f /opt/OmbiSettings.db ]] && mv /opt/OmbiSettings.db /opt/ombi
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP} service"
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start ombi
 | 
			
		||||
    msg_ok "Started ${APP} service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required.  ${APP} ia already at ${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,9 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/thomiceli/opengist/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f ~/.opengist ]] || [[ "${RELEASE}" != "$(cat ~/.opengist)" ]]; then
 | 
			
		||||
  if check_for_gh_release "opengist" "thomiceli/opengist"; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop opengist
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
@@ -40,17 +38,14 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "opengist" "thomiceli/opengist" "prebuild" "latest" "/opt/opengist" "opengist*linux-amd64.tar.gz"
 | 
			
		||||
 | 
			
		||||
    msg_info "Configuring ${APP}"
 | 
			
		||||
    msg_info "Restoring Configuration"
 | 
			
		||||
    mv /opt/opengist-backup/config.yml /opt/opengist/config.yml
 | 
			
		||||
    msg_ok "Configured ${APP}"
 | 
			
		||||
    msg_ok "Configuration Restored"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start opengist
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}."
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -33,11 +33,17 @@ function update_script() {
 | 
			
		||||
    OLLAMA_VERSION=$(ollama -v | awk '{print $NF}')
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/ollama/ollama/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
 | 
			
		||||
    if [ "$OLLAMA_VERSION" != "$RELEASE" ]; then
 | 
			
		||||
      msg_info "Stopping Service"
 | 
			
		||||
      systemctl stop ollama
 | 
			
		||||
      msg_ok "Stopped Service"
 | 
			
		||||
      curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
 | 
			
		||||
      rm -rf /usr/lib/ollama
 | 
			
		||||
      rm -rf /usr/bin/ollama
 | 
			
		||||
      curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
 | 
			
		||||
      tar -C /usr -xzf ollama-linux-amd64.tgz
 | 
			
		||||
      rm -rf ollama-linux-amd64.tgz
 | 
			
		||||
      msg_info "Starting Service"
 | 
			
		||||
      systemctl start ollama
 | 
			
		||||
      msg_info "Started Service"
 | 
			
		||||
      msg_ok "Ollama updated to version $RELEASE"
 | 
			
		||||
    else
 | 
			
		||||
      msg_ok "Ollama is already up to date."
 | 
			
		||||
 
 | 
			
		||||
@@ -6,13 +6,13 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 | 
			
		||||
# Source: https://github.com/openziti/ziti
 | 
			
		||||
 | 
			
		||||
APP="openziti-controller"
 | 
			
		||||
var_tags="network;openziti-controller"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="1024"
 | 
			
		||||
var_disk="8"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
var_tags="${var_tags:-network;openziti-controller}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user