mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			256 Commits
		
	
	
		
			2025-08-01
			...
			2025-08-16
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					b6d7ad7c38 | ||
| 
						 | 
					dd4d518052 | ||
| 
						 | 
					a99650f969 | ||
| 
						 | 
					842d73de82 | ||
| 
						 | 
					65f731d88b | ||
| 
						 | 
					363685d3d3 | ||
| 
						 | 
					ff77960aa6 | ||
| 
						 | 
					8d4a81d28e | ||
| 
						 | 
					faf10a9d5b | ||
| 
						 | 
					1b931becaa | ||
| 
						 | 
					905198116d | ||
| 
						 | 
					8d65b4624f | ||
| 
						 | 
					4e17190721 | ||
| 
						 | 
					9337e2de3c | ||
| 
						 | 
					c7a7ea763b | ||
| 
						 | 
					ce71992dd6 | ||
| 
						 | 
					f68b80fe4a | ||
| 
						 | 
					79adb4ef9b | ||
| 
						 | 
					8dda5ac31f | ||
| 
						 | 
					7d901bc594 | ||
| 
						 | 
					b6dce8cff1 | ||
| 
						 | 
					1b43202a79 | ||
| 
						 | 
					66687c0d21 | ||
| 
						 | 
					39b9cfcffc | ||
| 
						 | 
					24f4d2f488 | ||
| 
						 | 
					ee74400626 | ||
| 
						 | 
					032709e107 | ||
| 
						 | 
					65d60fbf1e | ||
| 
						 | 
					c7b80448dc | ||
| 
						 | 
					d7a60f6027 | ||
| 
						 | 
					241ae98c0b | ||
| 
						 | 
					63f24a8e61 | ||
| 
						 | 
					1cb87c4087 | ||
| 
						 | 
					5c22f9775e | ||
| 
						 | 
					a403da9f47 | ||
| 
						 | 
					4ce7335482 | ||
| 
						 | 
					bc52b1a7d7 | ||
| 
						 | 
					1c5ff8b26a | ||
| 
						 | 
					967b2a313f | ||
| 
						 | 
					50410acf8d | ||
| 
						 | 
					ab07afb7bd | ||
| 
						 | 
					eee083c7e0 | ||
| 
						 | 
					31ef36d744 | ||
| 
						 | 
					13afa93ddf | ||
| 
						 | 
					7c631eec00 | ||
| 
						 | 
					82d1a872c7 | ||
| 
						 | 
					0c23782485 | ||
| 
						 | 
					ef7c774a24 | ||
| 
						 | 
					c12ec76181 | ||
| 
						 | 
					a805e40b04 | ||
| 
						 | 
					727b713893 | ||
| 
						 | 
					5cedb8469e | ||
| 
						 | 
					c612a4daa8 | ||
| 
						 | 
					87b7166924 | ||
| 
						 | 
					9b9faf7a53 | ||
| 
						 | 
					51a1d3c0ef | ||
| 
						 | 
					8b1c2d6e68 | ||
| 
						 | 
					21c2ef2915 | ||
| 
						 | 
					6796e609d0 | ||
| 
						 | 
					723ac08abb | ||
| 
						 | 
					35c4c363a0 | ||
| 
						 | 
					32f99aee54 | ||
| 
						 | 
					1803ea0323 | ||
| 
						 | 
					fcf14a93c2 | ||
| 
						 | 
					549e1ee01e | ||
| 
						 | 
					c4b7966303 | ||
| 
						 | 
					2ed4d91f3c | ||
| 
						 | 
					6a5685505a | ||
| 
						 | 
					7cc1eaa259 | ||
| 
						 | 
					0db53c98e0 | ||
| 
						 | 
					0faf32c4d0 | ||
| 
						 | 
					5c564b4bd1 | ||
| 
						 | 
					5b81fc1aaa | ||
| 
						 | 
					047c7fe53c | ||
| 
						 | 
					c759269f0a | ||
| 
						 | 
					7540314f53 | ||
| 
						 | 
					8d73af0106 | ||
| 
						 | 
					f1cdef1f9b | ||
| 
						 | 
					79f3662636 | ||
| 
						 | 
					c43e5318ae | ||
| 
						 | 
					7e32903f10 | ||
| 
						 | 
					ba5c318276 | ||
| 
						 | 
					634fcb5abb | ||
| 
						 | 
					5d29a4f11c | ||
| 
						 | 
					cf62139e07 | ||
| 
						 | 
					716f1f05ec | ||
| 
						 | 
					47d773d088 | ||
| 
						 | 
					f9eb0cfa40 | ||
| 
						 | 
					2b164f8281 | ||
| 
						 | 
					6937ca1c67 | ||
| 
						 | 
					af6c1ae680 | ||
| 
						 | 
					75335f3362 | ||
| 
						 | 
					d0dfe1f3a6 | ||
| 
						 | 
					0ebc6b94ab | ||
| 
						 | 
					bf110c1814 | ||
| 
						 | 
					0d7de4f292 | ||
| 
						 | 
					f7ca7b28df | ||
| 
						 | 
					27b79a23b6 | ||
| 
						 | 
					49fbe38981 | ||
| 
						 | 
					0cd7985f8a | ||
| 
						 | 
					428fae66c3 | ||
| 
						 | 
					18c57600c6 | ||
| 
						 | 
					68d2d3c52c | ||
| 
						 | 
					76f9232c3a | ||
| 
						 | 
					4258d44a7d | ||
| 
						 | 
					c60f04e229 | ||
| 
						 | 
					6b93869e52 | ||
| 
						 | 
					c3cfdc1efa | ||
| 
						 | 
					33678fde1b | ||
| 
						 | 
					3dfdfeb2fa | ||
| 
						 | 
					305d3603ef | ||
| 
						 | 
					00138323b9 | ||
| 
						 | 
					1d50632019 | ||
| 
						 | 
					8883ba6b60 | ||
| 
						 | 
					7b06f611ad | ||
| 
						 | 
					412919670c | ||
| 
						 | 
					77ac07efd7 | ||
| 
						 | 
					55def0d441 | ||
| 
						 | 
					70a01abbd8 | ||
| 
						 | 
					d5b0209453 | ||
| 
						 | 
					755da8bdc3 | ||
| 
						 | 
					9228cd06e3 | ||
| 
						 | 
					49579e8558 | ||
| 
						 | 
					030a977209 | ||
| 
						 | 
					b8176dc7b3 | ||
| 
						 | 
					cd0625cba6 | ||
| 
						 | 
					73e131ecf8 | ||
| 
						 | 
					a0d6082b95 | ||
| 
						 | 
					70ccaf6835 | ||
| 
						 | 
					05b58decc2 | ||
| 
						 | 
					ff1b7cc81d | ||
| 
						 | 
					a2bbc2174a | ||
| 
						 | 
					a8a44a4d51 | ||
| 
						 | 
					ed620e8258 | ||
| 
						 | 
					1fc667088c | ||
| 
						 | 
					d89055a5cd | ||
| 
						 | 
					4ecd019e15 | ||
| 
						 | 
					e3a31aa47e | ||
| 
						 | 
					ed936528d2 | ||
| 
						 | 
					6f24de7d63 | ||
| 
						 | 
					54de40ed53 | ||
| 
						 | 
					872cd289ff | ||
| 
						 | 
					9c37ac385c | ||
| 
						 | 
					575ad61c93 | ||
| 
						 | 
					1773cc5507 | ||
| 
						 | 
					11b19fdeab | ||
| 
						 | 
					5e6081fbea | ||
| 
						 | 
					e2a310dd3a | ||
| 
						 | 
					d934d1b51b | ||
| 
						 | 
					6e3c08142d | ||
| 
						 | 
					a41497f90a | ||
| 
						 | 
					c54025f8de | ||
| 
						 | 
					a1eb53841d | ||
| 
						 | 
					6c4c3ffa39 | ||
| 
						 | 
					78f695f397 | ||
| 
						 | 
					4b0d24ed2e | ||
| 
						 | 
					705d66e7c6 | ||
| 
						 | 
					c4703527dc | ||
| 
						 | 
					9b607c60b4 | ||
| 
						 | 
					4717852019 | ||
| 
						 | 
					ab9c57ccf9 | ||
| 
						 | 
					dce77d12c7 | ||
| 
						 | 
					1f35b649cc | ||
| 
						 | 
					5938a9aceb | ||
| 
						 | 
					3b76211c12 | ||
| 
						 | 
					7221a0759d | ||
| 
						 | 
					a750932b3a | ||
| 
						 | 
					a4de1efae8 | ||
| 
						 | 
					f7570cb40c | ||
| 
						 | 
					10471b88aa | ||
| 
						 | 
					04a83cce10 | ||
| 
						 | 
					f9e26f4f7c | ||
| 
						 | 
					ed6baa1158 | ||
| 
						 | 
					a7cc93af09 | ||
| 
						 | 
					a494ed5872 | ||
| 
						 | 
					ede517a560 | ||
| 
						 | 
					bd41b236df | ||
| 
						 | 
					229c7ce4b3 | ||
| 
						 | 
					cc8381d7f7 | ||
| 
						 | 
					dc5b9be9ae | ||
| 
						 | 
					993aff59d7 | ||
| 
						 | 
					f3844c664c | ||
| 
						 | 
					47b3f71992 | ||
| 
						 | 
					09c815e935 | ||
| 
						 | 
					f59d4960f1 | ||
| 
						 | 
					c53d1d004a | ||
| 
						 | 
					bbdda06297 | ||
| 
						 | 
					daab80aaf4 | ||
| 
						 | 
					9250f9fae9 | ||
| 
						 | 
					6fa371fffc | ||
| 
						 | 
					e85263078e | ||
| 
						 | 
					f9b0916885 | ||
| 
						 | 
					964e29cd9e | ||
| 
						 | 
					31932499a9 | ||
| 
						 | 
					b155881de9 | ||
| 
						 | 
					010435ecaf | ||
| 
						 | 
					0863d080a4 | ||
| 
						 | 
					99837db81a | ||
| 
						 | 
					b4df862579 | ||
| 
						 | 
					01c6eb3a67 | ||
| 
						 | 
					5aabc88723 | ||
| 
						 | 
					23340f5d24 | ||
| 
						 | 
					77dcf87e6a | ||
| 
						 | 
					d9cefc3777 | ||
| 
						 | 
					7d6806e1fb | ||
| 
						 | 
					86d438c3a1 | ||
| 
						 | 
					fdc381e501 | ||
| 
						 | 
					3b1b8a7da2 | ||
| 
						 | 
					96f2c9c990 | ||
| 
						 | 
					349827aa97 | ||
| 
						 | 
					4dc458c605 | ||
| 
						 | 
					b5b6048697 | ||
| 
						 | 
					dc5fcb83e8 | ||
| 
						 | 
					db86049a3e | ||
| 
						 | 
					e6ceca0bc7 | ||
| 
						 | 
					d24425efad | ||
| 
						 | 
					3dda41df94 | ||
| 
						 | 
					fc77ca85e4 | ||
| 
						 | 
					db09b9cc36 | ||
| 
						 | 
					9f933c1e56 | ||
| 
						 | 
					efe45185fc | ||
| 
						 | 
					0a56fee31e | ||
| 
						 | 
					20048d442a | ||
| 
						 | 
					b1be93155c | ||
| 
						 | 
					1e2eb31560 | ||
| 
						 | 
					ca701632e1 | ||
| 
						 | 
					c3c5a7584b | ||
| 
						 | 
					3cd1fc7bce | ||
| 
						 | 
					1c7a39438c | ||
| 
						 | 
					46728b01fe | ||
| 
						 | 
					e0abf63778 | ||
| 
						 | 
					4451f07990 | ||
| 
						 | 
					6776912a42 | ||
| 
						 | 
					b914fd95df | ||
| 
						 | 
					f33afd9163 | ||
| 
						 | 
					c811b51a0a | ||
| 
						 | 
					ccbf86196b | ||
| 
						 | 
					64366a0b34 | ||
| 
						 | 
					183c459549 | ||
| 
						 | 
					44e62f73d4 | ||
| 
						 | 
					2f97e14f4d | ||
| 
						 | 
					7cd5a8d771 | ||
| 
						 | 
					9846bfd067 | ||
| 
						 | 
					77c37a5552 | ||
| 
						 | 
					8efcab38a4 | ||
| 
						 | 
					201782552c | ||
| 
						 | 
					7433f7df0c | ||
| 
						 | 
					dde882f9e5 | ||
| 
						 | 
					b8bdf56297 | ||
| 
						 | 
					df504635a5 | ||
| 
						 | 
					158bdfc88e | ||
| 
						 | 
					4eaffda82d | ||
| 
						 | 
					074bb615e7 | ||
| 
						 | 
					7c0869e29b | ||
| 
						 | 
					7862d23866 | ||
| 
						 | 
					e1669c22de | 
							
								
								
									
										272
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										272
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -10,8 +10,280 @@
 | 
				
			|||||||
> [!CAUTION]
 | 
					> [!CAUTION]
 | 
				
			||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
 | 
					Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-17
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Wireguard: Fix WGDashboard not updating [@tremor021](https://github.com/tremor021) ([#6898](https://github.com/community-scripts/ProxmoxVE/pull/6898))
 | 
				
			||||||
 | 
					    - Tandoor Images Fix [@WarLord185](https://github.com/WarLord185) ([#6892](https://github.com/community-scripts/ProxmoxVE/pull/6892))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Refactor: Uptime Kuma [@tremor021](https://github.com/tremor021) ([#6902](https://github.com/community-scripts/ProxmoxVE/pull/6902))
 | 
				
			||||||
 | 
					    - Refactor: Wallos [@tremor021](https://github.com/tremor021) ([#6900](https://github.com/community-scripts/ProxmoxVE/pull/6900))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Immich: pin Vectorchord release; adjust extension update commands [@vhsdream](https://github.com/vhsdream) ([#6878](https://github.com/community-scripts/ProxmoxVE/pull/6878))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Bump Immich to v1.138.0 [@vhsdream](https://github.com/vhsdream) ([#6813](https://github.com/community-scripts/ProxmoxVE/pull/6813))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Refactor: Wavelog [@tremor021](https://github.com/tremor021) ([#6869](https://github.com/community-scripts/ProxmoxVE/pull/6869))
 | 
				
			||||||
 | 
					    - Refactor: WatchYourLAN [@tremor021](https://github.com/tremor021) ([#6871](https://github.com/community-scripts/ProxmoxVE/pull/6871))
 | 
				
			||||||
 | 
					    - Refactor: Watcharr [@tremor021](https://github.com/tremor021) ([#6872](https://github.com/community-scripts/ProxmoxVE/pull/6872))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🌐 Website
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 📝 Script Information
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Add missing default user & pass for RabbitMQ [@hbenyoussef](https://github.com/hbenyoussef) ([#6883](https://github.com/community-scripts/ProxmoxVE/pull/6883))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-14
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Bugfix Searxng Redis replaced with Valkey in installscript  [@elvito](https://github.com/elvito) ([#6831](https://github.com/community-scripts/ProxmoxVE/pull/6831))
 | 
				
			||||||
 | 
					    - Spoolman: Use environment variables to control host and port [@tremor021](https://github.com/tremor021) ([#6825](https://github.com/community-scripts/ProxmoxVE/pull/6825))
 | 
				
			||||||
 | 
					    - Pulse: v4.3.2+ [@vhsdream](https://github.com/vhsdream) ([#6859](https://github.com/community-scripts/ProxmoxVE/pull/6859))
 | 
				
			||||||
 | 
					    - rustdeskserver: fix API version file [@steadfasterX](https://github.com/steadfasterX) ([#6847](https://github.com/community-scripts/ProxmoxVE/pull/6847))
 | 
				
			||||||
 | 
					    - Immich: quickfix #6836 [@vhsdream](https://github.com/vhsdream) ([#6848](https://github.com/community-scripts/ProxmoxVE/pull/6848))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Refactor: WikiJS [@tremor021](https://github.com/tremor021) ([#6840](https://github.com/community-scripts/ProxmoxVE/pull/6840))
 | 
				
			||||||
 | 
					    - Refactor: Zoraxy [@tremor021](https://github.com/tremor021) ([#6823](https://github.com/community-scripts/ProxmoxVE/pull/6823))
 | 
				
			||||||
 | 
					    - Refactor: Zitadel [@tremor021](https://github.com/tremor021) ([#6826](https://github.com/community-scripts/ProxmoxVE/pull/6826))
 | 
				
			||||||
 | 
					    - Refactor: WordPress [@tremor021](https://github.com/tremor021) ([#6837](https://github.com/community-scripts/ProxmoxVE/pull/6837))
 | 
				
			||||||
 | 
					    - Refactor: WireGuard [@tremor021](https://github.com/tremor021) ([#6839](https://github.com/community-scripts/ProxmoxVE/pull/6839))
 | 
				
			||||||
 | 
					    - Refactor: yt-dlp-webui [@tremor021](https://github.com/tremor021) ([#6832](https://github.com/community-scripts/ProxmoxVE/pull/6832))
 | 
				
			||||||
 | 
					    - Refactor: Zipline [@tremor021](https://github.com/tremor021) ([#6829](https://github.com/community-scripts/ProxmoxVE/pull/6829))
 | 
				
			||||||
 | 
					    - Refactor: Zot-Registry [@tremor021](https://github.com/tremor021) ([#6822](https://github.com/community-scripts/ProxmoxVE/pull/6822))
 | 
				
			||||||
 | 
					    - Refactor: Zwave-JS-UI [@tremor021](https://github.com/tremor021) ([#6820](https://github.com/community-scripts/ProxmoxVE/pull/6820))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🧰 Maintenance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 📂 Github
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - ProxmoxVE svg logo [@LuisPalacios](https://github.com/LuisPalacios) ([#6846](https://github.com/community-scripts/ProxmoxVE/pull/6846))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - emby: fix update output [@MickLesk](https://github.com/MickLesk) ([#6791](https://github.com/community-scripts/ProxmoxVE/pull/6791))
 | 
				
			||||||
 | 
					    - archivebox: fix wrong formatted uv command [@MickLesk](https://github.com/MickLesk) ([#6794](https://github.com/community-scripts/ProxmoxVE/pull/6794))
 | 
				
			||||||
 | 
					    - Outline: Fixes for install and update procedures [@tremor021](https://github.com/tremor021) ([#6806](https://github.com/community-scripts/ProxmoxVE/pull/6806))
 | 
				
			||||||
 | 
					    - Palmr: fix release version parsing // increase RAM [@vhsdream](https://github.com/vhsdream) ([#6800](https://github.com/community-scripts/ProxmoxVE/pull/6800))
 | 
				
			||||||
 | 
					    - myspeed: fix update process if no data exist [@MickLesk](https://github.com/MickLesk) ([#6795](https://github.com/community-scripts/ProxmoxVE/pull/6795))
 | 
				
			||||||
 | 
					    - crafty-controller: fix update output [@MickLesk](https://github.com/MickLesk) ([#6793](https://github.com/community-scripts/ProxmoxVE/pull/6793))
 | 
				
			||||||
 | 
					    - GLPI: Fix timezone command [@tremor021](https://github.com/tremor021) ([#6783](https://github.com/community-scripts/ProxmoxVE/pull/6783))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Docker LXC: Add Portainer info [@tremor021](https://github.com/tremor021) ([#6803](https://github.com/community-scripts/ProxmoxVE/pull/6803))
 | 
				
			||||||
 | 
					    - AgentDVR: Added update function [@tremor021](https://github.com/tremor021) ([#6804](https://github.com/community-scripts/ProxmoxVE/pull/6804))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Pulse: binary path changed AGAIN; other fixes [@vhsdream](https://github.com/vhsdream) ([#6770](https://github.com/community-scripts/ProxmoxVE/pull/6770))
 | 
				
			||||||
 | 
					    - fix alpine syncthing config not being created [@GamerHun1238](https://github.com/GamerHun1238) ([#6773](https://github.com/community-scripts/ProxmoxVE/pull/6773))
 | 
				
			||||||
 | 
					    - change owner of hortusfox directory [@snow2k9](https://github.com/snow2k9) ([#6763](https://github.com/community-scripts/ProxmoxVE/pull/6763))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Reactive Resume: use new release parsing; other fixes [@vhsdream](https://github.com/vhsdream) ([#6744](https://github.com/community-scripts/ProxmoxVE/pull/6744))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Fix/thinpool detection as it allows to delete active thinpool with different name than "data" [@onethree7](https://github.com/onethree7) ([#6730](https://github.com/community-scripts/ProxmoxVE/pull/6730))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Pulse: fix binary path [@vhsdream](https://github.com/vhsdream) ([#6740](https://github.com/community-scripts/ProxmoxVE/pull/6740))
 | 
				
			||||||
 | 
					    - Karakeep: chromium fix [@vhsdream](https://github.com/vhsdream) ([#6729](https://github.com/community-scripts/ProxmoxVE/pull/6729))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-09
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Paperless-AI: increase HDD Space to 20G [@MickLesk](https://github.com/MickLesk) ([#6716](https://github.com/community-scripts/ProxmoxVE/pull/6716))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - vaultwarden: increase disk space [@CrazyWolf13](https://github.com/CrazyWolf13) ([#6712](https://github.com/community-scripts/ProxmoxVE/pull/6712))
 | 
				
			||||||
 | 
					    - Fix: Bazarr requirements.txt file not parse-able by UV [@Xerovoxx98](https://github.com/Xerovoxx98) ([#6701](https://github.com/community-scripts/ProxmoxVE/pull/6701))
 | 
				
			||||||
 | 
					    - Improve backup of adventurelog folder [@ThomasDetemmerman](https://github.com/ThomasDetemmerman) ([#6653](https://github.com/community-scripts/ProxmoxVE/pull/6653))
 | 
				
			||||||
 | 
					    - HomeBox: Fixes for update procedure [@tremor021](https://github.com/tremor021) ([#6702](https://github.com/community-scripts/ProxmoxVE/pull/6702))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Refactor: Tianji [@MickLesk](https://github.com/MickLesk) ([#6662](https://github.com/community-scripts/ProxmoxVE/pull/6662))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-08
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Palmr ([#6642](https://github.com/community-scripts/ProxmoxVE/pull/6642))
 | 
				
			||||||
 | 
					- HortusFox ([#6641](https://github.com/community-scripts/ProxmoxVE/pull/6641))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Unifi: Update libssl dependency [@tremor021](https://github.com/tremor021) ([#6680](https://github.com/community-scripts/ProxmoxVE/pull/6680))
 | 
				
			||||||
 | 
					    - HomeBox: Fix checking for existing install [@tremor021](https://github.com/tremor021) ([#6677](https://github.com/community-scripts/ProxmoxVE/pull/6677))
 | 
				
			||||||
 | 
					    - Immich: unpin libvips revision [@vhsdream](https://github.com/vhsdream) ([#6669](https://github.com/community-scripts/ProxmoxVE/pull/6669))
 | 
				
			||||||
 | 
					    - Meilisearch: fix wrong path switch [@MickLesk](https://github.com/MickLesk) ([#6668](https://github.com/community-scripts/ProxmoxVE/pull/6668))
 | 
				
			||||||
 | 
					    - MariaDB: fix "feedback" (statistical informations) whiptail  [@MickLesk](https://github.com/MickLesk) ([#6657](https://github.com/community-scripts/ProxmoxVE/pull/6657))
 | 
				
			||||||
 | 
					    - Karakeep: workaround/fix for #6593 [@vhsdream](https://github.com/vhsdream) ([#6648](https://github.com/community-scripts/ProxmoxVE/pull/6648))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Feature: FSTrim (Filesystem Trim) - Log / LVM Check / ZFS [@MickLesk](https://github.com/MickLesk) ([#6660](https://github.com/community-scripts/ProxmoxVE/pull/6660))
 | 
				
			||||||
 | 
					    - IP Tag: Allow installation on PVE 9.x [@webhdx](https://github.com/webhdx) ([#6679](https://github.com/community-scripts/ProxmoxVE/pull/6679))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Refactor: Alpine IT-Tools [@tremor021](https://github.com/tremor021) ([#6579](https://github.com/community-scripts/ProxmoxVE/pull/6579))
 | 
				
			||||||
 | 
					    - Refactor: ArchiveBox [@MickLesk](https://github.com/MickLesk) ([#6670](https://github.com/community-scripts/ProxmoxVE/pull/6670))
 | 
				
			||||||
 | 
					    - Refactor: Bazarr [@MickLesk](https://github.com/MickLesk) ([#6663](https://github.com/community-scripts/ProxmoxVE/pull/6663))
 | 
				
			||||||
 | 
					    - Refactor: Kometa [@MickLesk](https://github.com/MickLesk) ([#6673](https://github.com/community-scripts/ProxmoxVE/pull/6673))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-07
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Commafeed: Fix Backup Handling while Update [@MickLesk](https://github.com/MickLesk) ([#6629](https://github.com/community-scripts/ProxmoxVE/pull/6629))
 | 
				
			||||||
 | 
					    - VictoriaMetrics: Fix release fetching [@tremor021](https://github.com/tremor021) ([#6632](https://github.com/community-scripts/ProxmoxVE/pull/6632))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Feature: Post-PVE-Script (PVE9 Support + some Features) [@MickLesk](https://github.com/MickLesk) ([#6626](https://github.com/community-scripts/ProxmoxVE/pull/6626))
 | 
				
			||||||
 | 
					    - Feature: Clean-LXC now supports Alpine based containers [@MickLesk](https://github.com/MickLesk) ([#6628](https://github.com/community-scripts/ProxmoxVE/pull/6628))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Refactor: Tandoor v2  [@MickLesk](https://github.com/MickLesk) ([#6635](https://github.com/community-scripts/ProxmoxVE/pull/6635))
 | 
				
			||||||
 | 
					    - Refactor: Paymenter [@tremor021](https://github.com/tremor021) ([#6589](https://github.com/community-scripts/ProxmoxVE/pull/6589))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-06
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - [core] better y/N handling for ressource check [@MickLesk](https://github.com/MickLesk) ([#6608](https://github.com/community-scripts/ProxmoxVE/pull/6608))
 | 
				
			||||||
 | 
					    - fix: update Pulse scripts for v4 Go rewrite support [@rcourtman](https://github.com/rcourtman) ([#6574](https://github.com/community-scripts/ProxmoxVE/pull/6574))
 | 
				
			||||||
 | 
					    - OpenProject: Fix missing apt update [@tremor021](https://github.com/tremor021) ([#6598](https://github.com/community-scripts/ProxmoxVE/pull/6598))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - PVE9: Remove Beta Whiptail / add correct version check [@MickLesk](https://github.com/MickLesk) ([#6599](https://github.com/community-scripts/ProxmoxVE/pull/6599))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-05
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - NIC offloading: e1000 support [@rcastley](https://github.com/rcastley) ([#6575](https://github.com/community-scripts/ProxmoxVE/pull/6575))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 💥 Breaking Changes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Temporary Remove: SearXNG [@MickLesk](https://github.com/MickLesk) ([#6578](https://github.com/community-scripts/ProxmoxVE/pull/6578))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Refactor: Prometheus Alertmanager [@tremor021](https://github.com/tremor021) ([#6577](https://github.com/community-scripts/ProxmoxVE/pull/6577))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-04
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🆕 New Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Tududi ([#6534](https://github.com/community-scripts/ProxmoxVE/pull/6534))
 | 
				
			||||||
 | 
					- ots ([#6532](https://github.com/community-scripts/ProxmoxVE/pull/6532))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - MySpeed: fix update and copy old tests back [@MickLesk](https://github.com/MickLesk) ([#6550](https://github.com/community-scripts/ProxmoxVE/pull/6550))
 | 
				
			||||||
 | 
					    - Composer: PATH Issues when updating [@MickLesk](https://github.com/MickLesk) ([#6543](https://github.com/community-scripts/ProxmoxVE/pull/6543))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Feat: enable tun for VPN services (wireguard) [@MickLesk](https://github.com/MickLesk) ([#6562](https://github.com/community-scripts/ProxmoxVE/pull/6562))
 | 
				
			||||||
 | 
					    - turnkey: add hostname & Fix TUN access [@masterofrpm](https://github.com/masterofrpm) ([#6512](https://github.com/community-scripts/ProxmoxVE/pull/6512))
 | 
				
			||||||
 | 
					    - Increase: Core Network check (pre-LXC Creation)  [@MickLesk](https://github.com/MickLesk) ([#6546](https://github.com/community-scripts/ProxmoxVE/pull/6546))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Refactor: PrivateBin [@tremor021](https://github.com/tremor021) ([#6559](https://github.com/community-scripts/ProxmoxVE/pull/6559))
 | 
				
			||||||
 | 
					    - Refactor: PocketID [@tremor021](https://github.com/tremor021) ([#6556](https://github.com/community-scripts/ProxmoxVE/pull/6556))
 | 
				
			||||||
 | 
					    - Refactor: Pocketbase [@tremor021](https://github.com/tremor021) ([#6554](https://github.com/community-scripts/ProxmoxVE/pull/6554))
 | 
				
			||||||
 | 
					    - Refactor: NocoDB [@tremor021](https://github.com/tremor021) ([#6548](https://github.com/community-scripts/ProxmoxVE/pull/6548))
 | 
				
			||||||
 | 
					    - Refactor: PairDrop [@tremor021](https://github.com/tremor021) ([#6528](https://github.com/community-scripts/ProxmoxVE/pull/6528))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2025-08-03
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - docmost: remove build step due new version [@MickLesk](https://github.com/MickLesk) ([#6513](https://github.com/community-scripts/ProxmoxVE/pull/6513))
 | 
				
			||||||
 | 
					    - Fix: Komga uses .komga as storage / so it fails after install [@MickLesk](https://github.com/MickLesk) ([#6517](https://github.com/community-scripts/ProxmoxVE/pull/6517))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 💥 Breaking Changes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Remove: Ubuntu 24.10-VM [@MickLesk](https://github.com/MickLesk) ([#6515](https://github.com/community-scripts/ProxmoxVE/pull/6515))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🔧 Refactor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Refactor: openHAB [@tremor021](https://github.com/tremor021) ([#6524](https://github.com/community-scripts/ProxmoxVE/pull/6524))
 | 
				
			||||||
 | 
					    - Refactor: OpenProject [@tremor021](https://github.com/tremor021) ([#6525](https://github.com/community-scripts/ProxmoxVE/pull/6525))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 2025-08-02
 | 
					## 2025-08-02
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Alternative connectivity checks for LXC [@mariano-dagostino](https://github.com/mariano-dagostino) ([#6472](https://github.com/community-scripts/ProxmoxVE/pull/6472))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### 🐞 Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - Immich: fix copy error during install [@vhsdream](https://github.com/vhsdream) ([#6497](https://github.com/community-scripts/ProxmoxVE/pull/6497))
 | 
				
			||||||
 | 
					    - MagicMirror: Fix install process [@tremor021](https://github.com/tremor021) ([#6492](https://github.com/community-scripts/ProxmoxVE/pull/6492))
 | 
				
			||||||
 | 
					    - chore: BookLore repo change [@vhsdream](https://github.com/vhsdream) ([#6493](https://github.com/community-scripts/ProxmoxVE/pull/6493))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - #### ✨ New Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - VictoriaMetrics: Make VictoriaLogs optional add-on [@tremor021](https://github.com/tremor021) ([#6489](https://github.com/community-scripts/ProxmoxVE/pull/6489))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 2025-08-01
 | 
					## 2025-08-01
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 🚀 Updated Scripts
 | 
					### 🚀 Updated Scripts
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,10 +36,7 @@ function update_script() {
 | 
				
			|||||||
    msg_ok "Services Stopped"
 | 
					    msg_ok "Services Stopped"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Backup Old Installation"
 | 
					    msg_info "Backup Old Installation"
 | 
				
			||||||
    mkdir -p /opt/adventurelog-backup
 | 
					    cp -r /opt/adventurelog /opt/adventurelog-backup
 | 
				
			||||||
    cp /opt/adventurelog/backend/server/.env /opt/adventurelog-backup/backend/server/.env
 | 
					 | 
				
			||||||
    cp -r /opt/adventurelog/backend/server/media /opt/adventurelog-backup/backend/server/media
 | 
					 | 
				
			||||||
    cp /opt/adventurelog/frontend/.env /opt/adventurelog-backup/frontend/.env
 | 
					 | 
				
			||||||
    msg_ok "Backup done"
 | 
					    msg_ok "Backup done"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
 | 
					    fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,30 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  msg_error "Currently we don't provide an update function for this ${APP}."
 | 
					  
 | 
				
			||||||
 | 
					  RELEASE=$(curl -fsSL "https://www.ispyconnect.com/api/Agent/DownloadLocation4?platform=Linux64&fromVersion=0" | grep -o 'https://.*\.zip')
 | 
				
			||||||
 | 
					  if [[ "${RELEASE}" != "$(cat ~/.agentdvr 2>/dev/null)" ]] || [[ ! -f ~/.agentdvr ]]; then
 | 
				
			||||||
 | 
					    msg_info "Stopping service"
 | 
				
			||||||
 | 
					    systemctl stop AgentDVR
 | 
				
			||||||
 | 
					    msg_ok "Service stopped"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating $APP"
 | 
				
			||||||
 | 
					    cd /opt/agentdvr/agent
 | 
				
			||||||
 | 
					    curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
 | 
				
			||||||
 | 
					    $STD unzip -o Agent_Linux64*.zip
 | 
				
			||||||
 | 
					    chmod +x ./Agent
 | 
				
			||||||
 | 
					    echo $RELEASE > ~/.agentdvr
 | 
				
			||||||
 | 
					    rm -rf Agent_Linux64*.zip
 | 
				
			||||||
 | 
					    msg_ok "Updated $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting service"
 | 
				
			||||||
 | 
					    systemctl start AgentDVR
 | 
				
			||||||
 | 
					    msg_ok "Service started"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Updated $APP successfully"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
  exit
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,16 +27,15 @@ function update_script() {
 | 
				
			|||||||
    exit 1
 | 
					    exit 1
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/sharevb/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
 | 
				
			||||||
  if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
 | 
					  if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
 | 
				
			||||||
    DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
 | 
					 | 
				
			||||||
    msg_info "Updating ${APP} LXC"
 | 
					    msg_info "Updating ${APP} LXC"
 | 
				
			||||||
    curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
					    curl -fsSL "https://github.com/sharevb/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" -o it-tools.zip
 | 
				
			||||||
    mkdir -p /usr/share/nginx/html
 | 
					    mkdir -p /usr/share/nginx/html
 | 
				
			||||||
    rm -rf /usr/share/nginx/html/*
 | 
					    rm -rf /usr/share/nginx/html/*
 | 
				
			||||||
    $STD unzip it-tools.zip -d /tmp/it-tools
 | 
					    $STD unzip it-tools.zip -d /tmp
 | 
				
			||||||
    cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
					    cp -r /tmp/dist/* /usr/share/nginx/html
 | 
				
			||||||
    rm -rf /tmp/it-tools
 | 
					    rm -rf /tmp/dist
 | 
				
			||||||
    rm -f it-tools.zip
 | 
					    rm -f it-tools.zip
 | 
				
			||||||
    msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,6 +13,7 @@ var_disk="${var_disk:-1}"
 | 
				
			|||||||
var_os="${var_os:-alpine}"
 | 
					var_os="${var_os:-alpine}"
 | 
				
			||||||
var_version="${var_version:-3.22}"
 | 
					var_version="${var_version:-3.22}"
 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					var_tun="${var_tun:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
header_info "$APP"
 | 
					header_info "$APP"
 | 
				
			||||||
variables
 | 
					variables
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,29 +20,38 @@ color
 | 
				
			|||||||
catch_errors
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
    header_info
 | 
					  header_info
 | 
				
			||||||
    check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
    check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
    if [[ ! -d /opt/archivebox ]]; then
 | 
					  if [[ ! -d /opt/archivebox ]]; then
 | 
				
			||||||
        msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    msg_info "Stopping ${APP}"
 | 
					 | 
				
			||||||
    systemctl stop archivebox
 | 
					 | 
				
			||||||
    msg_ok "Stopped ${APP}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg_info "Updating ${APP}"
 | 
					 | 
				
			||||||
    cd /opt/archivebox/data
 | 
					 | 
				
			||||||
    pip install --upgrade --ignore-installed archivebox
 | 
					 | 
				
			||||||
    sudo -u archivebox archivebox init
 | 
					 | 
				
			||||||
    msg_ok "Updated ${APP}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg_info "Starting ${APP}"
 | 
					 | 
				
			||||||
    systemctl start archivebox
 | 
					 | 
				
			||||||
    msg_ok "Started ${APP}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg_ok "Updated Successfully"
 | 
					 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  NODE_VERSION="22" setup_nodejs
 | 
				
			||||||
 | 
					  PYTHON_VERSION="3.13" setup_uv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Stopping ArchiveBox"
 | 
				
			||||||
 | 
					  systemctl stop archivebox
 | 
				
			||||||
 | 
					  msg_ok "Stopped ArchiveBox"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Upgrading Playwright"
 | 
				
			||||||
 | 
					  $STD uv pip install playwright --system
 | 
				
			||||||
 | 
					  $STD playwright install-deps chromium
 | 
				
			||||||
 | 
					  msg_ok "Upgraded Playwright"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Updating ArchiveBox"
 | 
				
			||||||
 | 
					  cd /opt/archivebox/data
 | 
				
			||||||
 | 
					  $STD uv pip install --system --upgrade --no-reinstall archivebox
 | 
				
			||||||
 | 
					  sudo -u archivebox archivebox init
 | 
				
			||||||
 | 
					  msg_ok "Updated ArchiveBox"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_info "Starting ArchiveBox"
 | 
				
			||||||
 | 
					  systemctl start archivebox
 | 
				
			||||||
 | 
					  msg_ok "Started ArchiveBox"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  msg_ok "Updated Successfully"
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
@@ -52,4 +61,4 @@ description
 | 
				
			|||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000/admin/login${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000/admin/login${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										43
									
								
								ct/bazarr.sh
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								ct/bazarr.sh
									
									
									
									
									
								
							@@ -20,20 +20,37 @@ color
 | 
				
			|||||||
catch_errors
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
    header_info
 | 
					  header_info
 | 
				
			||||||
    check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
    check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
    if [[ ! -d /var/lib/bazarr/ ]]; then
 | 
					  if [[ ! -d /var/lib/bazarr/ ]]; then
 | 
				
			||||||
        msg_error "No ${APP} Installation Found!"
 | 
					    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"
 | 
					 | 
				
			||||||
    exit
 | 
					    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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    PYTHON_VERSION="3.13" setup_uv
 | 
				
			||||||
 | 
					    fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Setup Bazarr"
 | 
				
			||||||
 | 
					    mkdir -p /var/lib/bazarr/
 | 
				
			||||||
 | 
					    chmod 775 /opt/bazarr /var/lib/bazarr/
 | 
				
			||||||
 | 
					    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}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
build_container
 | 
					build_container
 | 
				
			||||||
description
 | 
					description
 | 
				
			||||||
@@ -41,4 +58,4 @@ description
 | 
				
			|||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6767${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6767${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
				
			|||||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
# Author: MickLesk (CanbiZ)
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
# Source: https://github.com/adityachandelgit/BookLore
 | 
					# Source: https://github.com/booklore-app/BookLore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
APP="BookLore"
 | 
					APP="BookLore"
 | 
				
			||||||
var_tags="${var_tags:-books;library}"
 | 
					var_tags="${var_tags:-books;library}"
 | 
				
			||||||
@@ -29,13 +29,13 @@ function update_script() {
 | 
				
			|||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
 | 
					  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 [[ "${RELEASE}" != "$(cat ~/.booklore 2>/dev/null)" ]] || [[ ! -f ~/.booklore ]]; then
 | 
				
			||||||
    msg_info "Stopping $APP"
 | 
					    msg_info "Stopping $APP"
 | 
				
			||||||
    systemctl stop booklore
 | 
					    systemctl stop booklore
 | 
				
			||||||
    msg_ok "Stopped $APP"
 | 
					    msg_ok "Stopped $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fetch_and_deploy_gh_release "booklore" "adityachandelgit/BookLore"
 | 
					    fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Building Frontend"
 | 
					    msg_info "Building Frontend"
 | 
				
			||||||
    cd /opt/booklore/booklore-ui
 | 
					    cd /opt/booklore/booklore-ui
 | 
				
			||||||
@@ -45,7 +45,7 @@ function update_script() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    msg_info "Building Backend"
 | 
					    msg_info "Building Backend"
 | 
				
			||||||
    cd /opt/booklore/booklore-api
 | 
					    cd /opt/booklore/booklore-api
 | 
				
			||||||
    APP_VERSION=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
 | 
					    APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
 | 
				
			||||||
    yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
 | 
					    yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
 | 
				
			||||||
    $STD ./gradlew clean build --no-daemon
 | 
					    $STD ./gradlew clean build --no-daemon
 | 
				
			||||||
    mkdir -p /opt/booklore/dist
 | 
					    mkdir -p /opt/booklore/dist
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@ function update_script() {
 | 
				
			|||||||
        systemctl stop cleanuparr
 | 
					        systemctl stop cleanuparr
 | 
				
			||||||
        msg_ok "Stopped ${APP}"
 | 
					        msg_ok "Stopped ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "$RELEASE" "/opt/cleanuparr" "*linux-amd64.zip"
 | 
					        fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg_info "Starting ${APP}"
 | 
					        msg_info "Starting ${APP}"
 | 
				
			||||||
        systemctl start cleanuparr
 | 
					        systemctl start cleanuparr
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,16 +40,20 @@ function update_script() {
 | 
				
			|||||||
      $STD apt-get install -y rsync
 | 
					      $STD apt-get install -y rsync
 | 
				
			||||||
      msg_ok "Installed Dependencies"
 | 
					      msg_ok "Installed Dependencies"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [ -d /opt/commafeed/data ] && [ "$(ls -A /opt/commafeed/data)" ]; then
 | 
					    if [ -d /opt/commafeed/data ] && [ "$(ls -A /opt/commafeed/data)" ]; then
 | 
				
			||||||
 | 
					      msg_info "Backing up existing data"
 | 
				
			||||||
      mv /opt/commafeed/data /opt/data.bak
 | 
					      mv /opt/commafeed/data /opt/data.bak
 | 
				
			||||||
 | 
					      msg_ok "Backed up existing data"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip"
 | 
					    fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip"
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
					    if [ -d /opt/data.bak ] && [ "$(ls -A /opt/data.bak)" ]; then
 | 
				
			||||||
    if [ -d /opt/commafeed/data.bak ] && [ "$(ls -A /opt/commafeed/data.bak)" ]; then
 | 
					      msg_info "Restoring data"
 | 
				
			||||||
      mv /opt/commafeed/data.bak /opt/commafeed/data
 | 
					      mv /opt/data.bak /opt/commafeed/data
 | 
				
			||||||
 | 
					      msg_ok "Restored data"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting ${APP}"
 | 
					    msg_info "Starting ${APP}"
 | 
				
			||||||
    systemctl start commafeed
 | 
					    systemctl start commafeed
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,10 +68,10 @@ function update_script() {
 | 
				
			|||||||
    msg_ok "Started Crafty-Controller"
 | 
					    msg_ok "Started Crafty-Controller"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
    exit
 | 
					 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. Crafty-Controller is already at v${RELEASE}."
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -90,3 +90,5 @@ description
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
 | 
					echo -e "${INFO}${YW} If you installed Portainer, access it at the following URL:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:9443${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,7 +49,6 @@ function update_script() {
 | 
				
			|||||||
    mv /opt/.env /opt/docmost/.env
 | 
					    mv /opt/.env /opt/docmost/.env
 | 
				
			||||||
    mv /opt/data /opt/docmost/data
 | 
					    mv /opt/data /opt/docmost/data
 | 
				
			||||||
    $STD pnpm install --force
 | 
					    $STD pnpm install --force
 | 
				
			||||||
    $STD pnpm nx run server:build # Dirty fix https://github.com/community-scripts/ProxmoxVE/issues/6377
 | 
					 | 
				
			||||||
    $STD pnpm build
 | 
					    $STD pnpm build
 | 
				
			||||||
    msg_ok "Updated ${APP}"
 | 
					    msg_ok "Updated ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,8 +41,10 @@ function update_script() {
 | 
				
			|||||||
    msg_ok "Started ${APP}"
 | 
					    msg_ok "Started ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
    exit
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
    __  __                        ___              _      __              __        ______              
 | 
					 | 
				
			||||||
   / / / /___  ____ ___  ___     /   |  __________(_)____/ /_____ _____  / /_      / ____/___  ________ 
 | 
					 | 
				
			||||||
  / /_/ / __ \/ __ `__ \/ _ \   / /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/_____/ /   / __ \/ ___/ _ \
 | 
					 | 
				
			||||||
 / __  / /_/ / / / / / /  __/  / ___ |(__  |__  ) (__  ) /_/ /_/ / / / / /_/_____/ /___/ /_/ / /  /  __/
 | 
					 | 
				
			||||||
/_/ /_/\____/_/ /_/ /_/\___/  /_/  |_/____/____/_/____/\__/\__,_/_/ /_/\__/      \____/\____/_/   \___/ 
 | 
					 | 
				
			||||||
                                                                                                        
 | 
					 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/hortusfox
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/hortusfox
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    __  __           __             ______          
 | 
				
			||||||
 | 
					   / / / /___  _____/ /___  _______/ ____/___  _  __
 | 
				
			||||||
 | 
					  / /_/ / __ \/ ___/ __/ / / / ___/ /_  / __ \| |/_/
 | 
				
			||||||
 | 
					 / __  / /_/ / /  / /_/ /_/ (__  ) __/ / /_/ />  <  
 | 
				
			||||||
 | 
					/_/ /_/\____/_/   \__/\__,_/____/_/    \____/_/|_|  
 | 
				
			||||||
 | 
					                                                    
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/ots
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/ots
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					   ____  ___________
 | 
				
			||||||
 | 
					  / __ \/_  __/ ___/
 | 
				
			||||||
 | 
					 / / / / / /  \__ \ 
 | 
				
			||||||
 | 
					/ /_/ / / /  ___/ / 
 | 
				
			||||||
 | 
					\____/ /_/  /____/  
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/palmr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/palmr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    ____        __              
 | 
				
			||||||
 | 
					   / __ \____ _/ /___ ___  _____
 | 
				
			||||||
 | 
					  / /_/ / __ `/ / __ `__ \/ ___/
 | 
				
			||||||
 | 
					 / ____/ /_/ / / / / / / / /    
 | 
				
			||||||
 | 
					/_/    \__,_/_/_/ /_/ /_/_/     
 | 
				
			||||||
 | 
					                                
 | 
				
			||||||
							
								
								
									
										6
									
								
								ct/headers/tududi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/tududi
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					  ______          __          ___ 
 | 
				
			||||||
 | 
					 /_  __/_  ______/ /_  ______/ (_)
 | 
				
			||||||
 | 
					  / / / / / / __  / / / / __  / / 
 | 
				
			||||||
 | 
					 / / / /_/ / /_/ / /_/ / /_/ / /  
 | 
				
			||||||
 | 
					/_/  \__,_/\__,_/\__,_/\__,_/_/   
 | 
				
			||||||
 | 
					                                  
 | 
				
			||||||
@@ -1,165 +0,0 @@
 | 
				
			|||||||
#!/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: tteck (tteckster) | Co-Author: MickLesk (CanbiZ)
 | 
					 | 
				
			||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
					 | 
				
			||||||
# Source: https://www.home-assistant.io/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
APP="Home Assistant-Core"
 | 
					 | 
				
			||||||
var_tags="${var_tags:-automation;smarthome}"
 | 
					 | 
				
			||||||
var_cpu="${var_cpu:-2}"
 | 
					 | 
				
			||||||
var_ram="${var_ram:-2048}"
 | 
					 | 
				
			||||||
var_disk="${var_disk:-10}"
 | 
					 | 
				
			||||||
var_os="${var_os:-ubuntu}"
 | 
					 | 
				
			||||||
var_version="${var_version:-24.10}"
 | 
					 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
header_info "$APP"
 | 
					 | 
				
			||||||
variables
 | 
					 | 
				
			||||||
color
 | 
					 | 
				
			||||||
catch_errors
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function update_script() {
 | 
					 | 
				
			||||||
  header_info
 | 
					 | 
				
			||||||
  if ! lsb_release -d | grep -q "Ubuntu 24.10"; then
 | 
					 | 
				
			||||||
    msg_error "Wrong OS detected. This script only supports Ubuntu 24.10."
 | 
					 | 
				
			||||||
    msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549"
 | 
					 | 
				
			||||||
    exit 1
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
  check_container_storage
 | 
					 | 
				
			||||||
  check_container_resources
 | 
					 | 
				
			||||||
  if [[ ! -d /srv/homeassistant ]]; then
 | 
					 | 
				
			||||||
    msg_error "No ${APP} Installation Found!"
 | 
					 | 
				
			||||||
    exit 1
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
  setup_uv
 | 
					 | 
				
			||||||
  IP=$(hostname -I | awk '{print $1}')
 | 
					 | 
				
			||||||
  UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
 | 
					 | 
				
			||||||
    "1" "Update Core" ON \
 | 
					 | 
				
			||||||
    "2" "Install HACS" OFF \
 | 
					 | 
				
			||||||
    "3" "Install FileBrowser" OFF \
 | 
					 | 
				
			||||||
    3>&1 1>&2 2>&3)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if [ "$UPD" == "1" ]; then
 | 
					 | 
				
			||||||
    if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then
 | 
					 | 
				
			||||||
      clear
 | 
					 | 
				
			||||||
      header_info
 | 
					 | 
				
			||||||
      echo -e "${GN}Updating to Beta Version${CL}"
 | 
					 | 
				
			||||||
      BR="--pre"
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
      clear
 | 
					 | 
				
			||||||
      header_info
 | 
					 | 
				
			||||||
      echo -e "${GN}Updating to Stable Version${CL}"
 | 
					 | 
				
			||||||
      BR=""
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg_info "Stopping Home Assistant"
 | 
					 | 
				
			||||||
    systemctl stop homeassistant
 | 
					 | 
				
			||||||
    msg_ok "Stopped Home Assistant"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if [[ -d /srv/homeassistant/bin ]]; then
 | 
					 | 
				
			||||||
      msg_info "Migrating to .venv-based structure"
 | 
					 | 
				
			||||||
      $STD source /srv/homeassistant/bin/activate
 | 
					 | 
				
			||||||
      PY_VER=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
 | 
					 | 
				
			||||||
      $STD deactivate
 | 
					 | 
				
			||||||
      mv /srv/homeassistant "/srv/homeassistant_backup_$PY_VER"
 | 
					 | 
				
			||||||
      mkdir -p /srv/homeassistant
 | 
					 | 
				
			||||||
      cd /srv/homeassistant
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      $STD uv python install 3.13
 | 
					 | 
				
			||||||
      UV_PYTHON=$(uv python list | awk '/3\.13\.[0-9]+.*\/root\/.local/ {print $2; exit}')
 | 
					 | 
				
			||||||
      if [[ -z "$UV_PYTHON" ]]; then
 | 
					 | 
				
			||||||
        msg_error "No local Python 3.13 found via uv"
 | 
					 | 
				
			||||||
        exit 1
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      $STD uv venv .venv --python "$UV_PYTHON"
 | 
					 | 
				
			||||||
      $STD source .venv/bin/activate
 | 
					 | 
				
			||||||
      $STD uv pip install homeassistant mysqlclient psycopg2-binary isal webrtcvad wheel
 | 
					 | 
				
			||||||
      mkdir -p /root/.homeassistant
 | 
					 | 
				
			||||||
      msg_ok "Migration complete"
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
      source /srv/homeassistant/.venv/bin/activate
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg_info "Updating Home Assistant"
 | 
					 | 
				
			||||||
    $STD uv pip install $BR --upgrade homeassistant
 | 
					 | 
				
			||||||
    msg_ok "Updated Home Assistant"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg_info "Starting Home Assistant"
 | 
					 | 
				
			||||||
    if [[ -f /etc/systemd/system/homeassistant.service ]] && grep -q "/srv/homeassistant/bin/python3" /etc/systemd/system/homeassistant.service; then
 | 
					 | 
				
			||||||
      sed -i 's|ExecStart=/srv/homeassistant/bin/python3|ExecStart=/srv/homeassistant/.venv/bin/python3|' /etc/systemd/system/homeassistant.service
 | 
					 | 
				
			||||||
      sed -i 's|PATH=/srv/homeassistant/bin|PATH=/srv/homeassistant/.venv/bin|' /etc/systemd/system/homeassistant.service
 | 
					 | 
				
			||||||
      $STD systemctl daemon-reload
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    systemctl start homeassistant
 | 
					 | 
				
			||||||
    sleep 5
 | 
					 | 
				
			||||||
    msg_ok "Started Home Assistant"
 | 
					 | 
				
			||||||
    msg_ok "Update Successful"
 | 
					 | 
				
			||||||
    echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
 | 
					 | 
				
			||||||
    exit
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if [ "$UPD" == "2" ]; then
 | 
					 | 
				
			||||||
    msg_info "Installing Home Assistant Community Store (HACS)"
 | 
					 | 
				
			||||||
    $STD apt update
 | 
					 | 
				
			||||||
    cd /root/.homeassistant
 | 
					 | 
				
			||||||
    $STD bash <(curl -fsSL https://get.hacs.xyz)
 | 
					 | 
				
			||||||
    msg_ok "Installed Home Assistant Community Store (HACS)"
 | 
					 | 
				
			||||||
    echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
 | 
					 | 
				
			||||||
    exit
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if [ "$UPD" == "3" ]; then
 | 
					 | 
				
			||||||
    set +Eeuo pipefail
 | 
					 | 
				
			||||||
    read -r -p "${TAB3}Would you like to use No Authentication? <y/N> " prompt
 | 
					 | 
				
			||||||
    msg_info "Installing FileBrowser"
 | 
					 | 
				
			||||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/filebrowser/filebrowser/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g')
 | 
					 | 
				
			||||||
    $STD curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/$RELEASE/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
 | 
					 | 
				
			||||||
      $STD filebrowser config init -a '0.0.0.0'
 | 
					 | 
				
			||||||
      $STD filebrowser config set -a '0.0.0.0'
 | 
					 | 
				
			||||||
      $STD filebrowser config set --auth.method=noauth
 | 
					 | 
				
			||||||
      $STD filebrowser users add ID 1 --perm.admin
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
      $STD filebrowser config init -a '0.0.0.0'
 | 
					 | 
				
			||||||
      $STD filebrowser config set -a '0.0.0.0'
 | 
					 | 
				
			||||||
      $STD filebrowser users add admin helper-scripts.com --perm.admin
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    msg_ok "Installed FileBrowser"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg_info "Creating Service"
 | 
					 | 
				
			||||||
    cat <<EOF >/etc/systemd/system/filebrowser.service
 | 
					 | 
				
			||||||
[Unit]
 | 
					 | 
				
			||||||
Description=Filebrowser
 | 
					 | 
				
			||||||
After=network-online.target
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Service]
 | 
					 | 
				
			||||||
User=root
 | 
					 | 
				
			||||||
WorkingDirectory=/root/
 | 
					 | 
				
			||||||
ExecStart=/usr/local/bin/filebrowser -r /root/.homeassistant
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Install]
 | 
					 | 
				
			||||||
WantedBy=default.target
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    systemctl enable --now -q filebrowser.service
 | 
					 | 
				
			||||||
    msg_ok "Created Service"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    msg_ok "Completed Successfully!\n"
 | 
					 | 
				
			||||||
    echo -e "FileBrowser should be reachable by going to the following URL.
 | 
					 | 
				
			||||||
         ${BL}http://$IP:8080${CL}   admin|helper-scripts.com\n"
 | 
					 | 
				
			||||||
    exit
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
start
 | 
					 | 
				
			||||||
build_container
 | 
					 | 
				
			||||||
description
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
msg_ok "Completed Successfully!\n"
 | 
					 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					 | 
				
			||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
					 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
 | 
					 | 
				
			||||||
@@ -22,13 +22,14 @@ function update_script() {
 | 
				
			|||||||
  header_info
 | 
					  header_info
 | 
				
			||||||
  check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
  check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
  if [[ ! -d /opt/homebox ]]; then
 | 
					  if [[ ! -f /etc/systemd/system/homebox.service ]]; then
 | 
				
			||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  if [[ -x /opt/homebox ]]; then
 | 
					  if [[ -x /opt/homebox ]]; then
 | 
				
			||||||
    sed -i 's|/opt\b|/opt/homebox|g' /etc/systemd/system/homebox.service
 | 
					    sed -i 's|/opt\b|/opt/homebox|g' /etc/systemd/system/homebox.service
 | 
				
			||||||
    sed -i 's|^ExecStart=/opt/homebox$|ExecStart=/opt/homebox/homebox|' /etc/systemd/system/homebox.service
 | 
					    sed -i 's|^ExecStart=/opt/homebox$|ExecStart=/opt/homebox/homebox|' /etc/systemd/system/homebox.service
 | 
				
			||||||
 | 
					    systemctl daemon-reload
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
@@ -37,9 +38,11 @@ function update_script() {
 | 
				
			|||||||
    systemctl stop homebox
 | 
					    systemctl stop homebox
 | 
				
			||||||
    msg_ok "${APP} Stopped"
 | 
					    msg_ok "${APP} Stopped"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [ -x /opt/homebox ] && rm -f /opt/homebox
 | 
				
			||||||
    fetch_and_deploy_gh_release "homebox" "sysadminsmedia/homebox" "prebuild" "latest" "/opt/homebox" "homebox_Linux_x86_64.tar.gz"
 | 
					    fetch_and_deploy_gh_release "homebox" "sysadminsmedia/homebox" "prebuild" "latest" "/opt/homebox" "homebox_Linux_x86_64.tar.gz"
 | 
				
			||||||
    chmod +x /opt/homebox/homebox
 | 
					    chmod +x /opt/homebox/homebox
 | 
				
			||||||
    [ -f /opt/.env ] && mv /opt/.env /opt/homebox/.env
 | 
					    [ -f /opt/.env ] && mv /opt/.env /opt/homebox/.env
 | 
				
			||||||
 | 
					    [ -d /opt/.data ] && mv /opt/.data /opt/homebox/.data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting ${APP}"
 | 
					    msg_info "Starting ${APP}"
 | 
				
			||||||
    systemctl start homebox
 | 
					    systemctl start homebox
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										74
									
								
								ct/hortusfox.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								ct/hortusfox.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,74 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/danielbrendel/hortusfox-web
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="HortusFox"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-plants}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-2048}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-5}"
 | 
				
			||||||
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  check_container_storage
 | 
				
			||||||
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					  if [[ ! -d /opt/hortusfox ]]; then
 | 
				
			||||||
 | 
					    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
 | 
				
			||||||
 | 
					    msg_info "Stopping Service"
 | 
				
			||||||
 | 
					    systemctl stop apache2
 | 
				
			||||||
 | 
					    msg_ok "Stopped Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Backing up current HortusFox installation"
 | 
				
			||||||
 | 
					    cd /opt
 | 
				
			||||||
 | 
					    mv /opt/hortusfox/ /opt/hortusfox-backup
 | 
				
			||||||
 | 
					    msg_ok "Backed up current HortusFox installation"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating HortusFox"
 | 
				
			||||||
 | 
					    cd /opt/hortusfox
 | 
				
			||||||
 | 
					    mv /opt/hortusfox-backup/.env /opt/hortusfox/.env
 | 
				
			||||||
 | 
					    $STD composer install --no-dev --optimize-autoloader
 | 
				
			||||||
 | 
					    $STD php asatru migrate --no-interaction
 | 
				
			||||||
 | 
					    $STD php asatru plants:attributes
 | 
				
			||||||
 | 
					    $STD php asatru calendar:classes
 | 
				
			||||||
 | 
					    chown -R www-data:www-data /opt/hortusfox
 | 
				
			||||||
 | 
					    msg_ok "Updated HortusFox"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting Service"
 | 
				
			||||||
 | 
					    systemctl start apache2
 | 
				
			||||||
 | 
					    msg_ok "Started Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Cleaning up"
 | 
				
			||||||
 | 
					    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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start
 | 
				
			||||||
 | 
					build_container
 | 
				
			||||||
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
				
			||||||
							
								
								
									
										16
									
								
								ct/immich.sh
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								ct/immich.sh
									
									
									
									
									
								
							@@ -58,7 +58,7 @@ function update_script() {
 | 
				
			|||||||
    done
 | 
					    done
 | 
				
			||||||
    msg_ok "Image-processing libraries updated"
 | 
					    msg_ok "Image-processing libraries updated"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  RELEASE="1.137.3"
 | 
					  RELEASE="1.138.0"
 | 
				
			||||||
  #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) }')
 | 
					  #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
 | 
					  if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
@@ -74,7 +74,8 @@ function update_script() {
 | 
				
			|||||||
  APP_DIR="${INSTALL_DIR}/app"
 | 
					  APP_DIR="${INSTALL_DIR}/app"
 | 
				
			||||||
  ML_DIR="${APP_DIR}/machine-learning"
 | 
					  ML_DIR="${APP_DIR}/machine-learning"
 | 
				
			||||||
  GEO_DIR="${INSTALL_DIR}/geodata"
 | 
					  GEO_DIR="${INSTALL_DIR}/geodata"
 | 
				
			||||||
  VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
 | 
					  VCHORD_RELEASE="0.4.3"
 | 
				
			||||||
 | 
					  # VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [[ ! -f ~/.vchord_version ]] || [[ "$VCHORD_RELEASE" != "$(cat ~/.vchord_version)" ]]; then
 | 
					  if [[ ! -f ~/.vchord_version ]] || [[ "$VCHORD_RELEASE" != "$(cat ~/.vchord_version)" ]]; then
 | 
				
			||||||
    msg_info "Updating VectorChord"
 | 
					    msg_info "Updating VectorChord"
 | 
				
			||||||
@@ -91,7 +92,8 @@ function update_script() {
 | 
				
			|||||||
    $STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;"
 | 
					    $STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;"
 | 
				
			||||||
    systemctl restart postgresql
 | 
					    systemctl restart postgresql
 | 
				
			||||||
    if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then
 | 
					    if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then
 | 
				
			||||||
      $STD sudo -u postgres psql -d immich -c "REINDEX DATABASE;"
 | 
					      $STD sudo -u postgres psql -d immich -c "REINDEX INDEX face_index;"
 | 
				
			||||||
 | 
					      $STD sudo -u postgres psql -d immich -c "REINDEX INDEX clip_index;"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    echo "$VCHORD_RELEASE" >~/.vchord_version
 | 
					    echo "$VCHORD_RELEASE" >~/.vchord_version
 | 
				
			||||||
    rm ./vchord.deb
 | 
					    rm ./vchord.deb
 | 
				
			||||||
@@ -180,7 +182,10 @@ EOF
 | 
				
			|||||||
  msg_ok "Updated Immich CLI"
 | 
					  msg_ok "Updated Immich CLI"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  chown -R immich:immich "$INSTALL_DIR"
 | 
					  chown -R immich:immich "$INSTALL_DIR"
 | 
				
			||||||
  echo "$RELEASE" >/opt/"${APP}"_version.txt
 | 
					  if [[ ! -f ~/.debian_version.bak ]]; then
 | 
				
			||||||
 | 
					    cp /etc/debian_version ~/.debian_version.bak
 | 
				
			||||||
 | 
					    sed -i 's/.*/13.0/' /etc/debian_version
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
  msg_ok "Updated ${APP} to v${RELEASE}"
 | 
					  msg_ok "Updated ${APP} to v${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Cleaning up"
 | 
					  msg_info "Cleaning up"
 | 
				
			||||||
@@ -315,8 +320,7 @@ function compile_imagemagick() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function compile_libvips() {
 | 
					function compile_libvips() {
 | 
				
			||||||
  SOURCE=$SOURCE_DIR/libvips
 | 
					  SOURCE=$SOURCE_DIR/libvips
 | 
				
			||||||
  # : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
 | 
					  : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
 | 
				
			||||||
  : "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
 | 
					 | 
				
			||||||
  if [[ "${update:-}" ]] || [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
					  if [[ "${update:-}" ]] || [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
 | 
				
			||||||
    msg_info "Recompiling libvips"
 | 
					    msg_info "Recompiling libvips"
 | 
				
			||||||
    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
					    if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -78,7 +78,7 @@ function update_script() {
 | 
				
			|||||||
  cd /opt/karakeep/apps/cli
 | 
					  cd /opt/karakeep/apps/cli
 | 
				
			||||||
  $STD pnpm install --frozen-lockfile
 | 
					  $STD pnpm install --frozen-lockfile
 | 
				
			||||||
  $STD pnpm build
 | 
					  $STD pnpm build
 | 
				
			||||||
  DATA_DIR="$(sed -n '/^DATA_DIR/p' /etc/karakeep/karakeep.env | awk -F= '{print $2}')"
 | 
					  DATA_DIR="$(sed -n '/^DATA_DIR/p' /etc/karakeep/karakeep.env | awk -F= '{print $2}' | tr -d '="=')"
 | 
				
			||||||
  export DATA_DIR="${DATA_DIR:-/opt/karakeep_data}"
 | 
					  export DATA_DIR="${DATA_DIR:-/opt/karakeep_data}"
 | 
				
			||||||
  cd /opt/karakeep/packages/db
 | 
					  cd /opt/karakeep/packages/db
 | 
				
			||||||
  $STD pnpm migrate
 | 
					  $STD pnpm migrate
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										83
									
								
								ct/kometa.sh
									
									
									
									
									
								
							
							
						
						
									
										83
									
								
								ct/kometa.sh
									
									
									
									
									
								
							@@ -20,51 +20,46 @@ color
 | 
				
			|||||||
catch_errors
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
    header_info
 | 
					  header_info
 | 
				
			||||||
    check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
    check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ ! -f "/opt/kometa/kometa.py" ]]; then
 | 
					  if [[ ! -d "/opt/kometa" ]]; then
 | 
				
			||||||
        msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					 | 
				
			||||||
    if [[ "${RELEASE}" != "$(cat /opt/kometa_version.txt)" ]] || [[ ! -f /opt/kometa_version.txt ]]; then
 | 
					 | 
				
			||||||
        msg_info "Updating $APP"
 | 
					 | 
				
			||||||
        msg_info "Stopping $APP"
 | 
					 | 
				
			||||||
        systemctl stop kometa
 | 
					 | 
				
			||||||
        msg_ok "Stopped $APP"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        msg_info "Updating $APP to ${RELEASE}"
 | 
					 | 
				
			||||||
        cd /tmp
 | 
					 | 
				
			||||||
        temp_file=$(mktemp)
 | 
					 | 
				
			||||||
        RELEASE=$(curl -fsSL https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					 | 
				
			||||||
curl -fsSL "https://github.com/Kometa-Team/Kometa/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
 | 
					 | 
				
			||||||
        tar -xzf "$temp_file"
 | 
					 | 
				
			||||||
        cp /opt/kometa/config/config.yml /opt
 | 
					 | 
				
			||||||
        rm -rf /opt/kometa
 | 
					 | 
				
			||||||
        mv Kometa-${RELEASE} /opt/kometa
 | 
					 | 
				
			||||||
        cd /opt/kometa
 | 
					 | 
				
			||||||
        rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
 | 
					 | 
				
			||||||
        $STD pip install -r requirements.txt --ignore-installed
 | 
					 | 
				
			||||||
        mkdir -p config/assets
 | 
					 | 
				
			||||||
        cp /opt/config.yml config/config.yml
 | 
					 | 
				
			||||||
        echo "${RELEASE}" >/opt/kometa_version.txt
 | 
					 | 
				
			||||||
        msg_ok "Updated $APP to ${RELEASE}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        msg_info "Starting $APP"
 | 
					 | 
				
			||||||
        systemctl start kometa
 | 
					 | 
				
			||||||
        msg_ok "Started $APP"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        msg_info "Cleaning Up"
 | 
					 | 
				
			||||||
        rm -f $temp_file
 | 
					 | 
				
			||||||
        msg_ok "Cleanup Completed"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        msg_ok "Update Successful"
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    exit
 | 
					    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
 | 
				
			||||||
 | 
					    msg_info "Stopping Service"
 | 
				
			||||||
 | 
					    systemctl stop kometa
 | 
				
			||||||
 | 
					    msg_ok "Stopped Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Backing up data"
 | 
				
			||||||
 | 
					    cp /opt/kometa/config/config.yml /opt
 | 
				
			||||||
 | 
					    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"
 | 
				
			||||||
 | 
					    $STD uv pip install -r requirements.txt --system
 | 
				
			||||||
 | 
					    mkdir -p config/assets
 | 
				
			||||||
 | 
					    cp /opt/config.yml config/config.yml
 | 
				
			||||||
 | 
					    msg_ok "Updated Kometa"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting Service"
 | 
				
			||||||
 | 
					    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
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
@@ -74,4 +69,4 @@ description
 | 
				
			|||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access the LXC at following IP address:${CL}"
 | 
					echo -e "${INFO}${YW} Access the LXC at following IP address:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,7 @@ function update_script() {
 | 
				
			|||||||
    msg_ok "Stopped ${APP}"
 | 
					    msg_ok "Stopped ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rm -f /opt/komga/komga.jar
 | 
					    rm -f /opt/komga/komga.jar
 | 
				
			||||||
    USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
 | 
					    USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga-org" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
 | 
				
			||||||
    mv /opt/komga/komga-*.jar /opt/komga/komga.jar
 | 
					    mv /opt/komga/komga-*.jar /opt/komga/komga.jar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting ${APP}"
 | 
					    msg_info "Starting ${APP}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,6 +51,7 @@ function update_script() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    msg_info "Configuring MagicMirror"
 | 
					    msg_info "Configuring MagicMirror"
 | 
				
			||||||
    cd /opt/magicmirror
 | 
					    cd /opt/magicmirror
 | 
				
			||||||
 | 
					    sed -i -E 's/("postinstall": )".*"/\1""/; s/("prepare": )".*"/\1""/' package.json
 | 
				
			||||||
    $STD npm run install-mm
 | 
					    $STD npm run install-mm
 | 
				
			||||||
    cp /opt/magicmirror-backup/config.js /opt/magicmirror/config/
 | 
					    cp /opt/magicmirror-backup/config.js /opt/magicmirror/config/
 | 
				
			||||||
    if [[ -f /opt/magicmirror-backup/custom.css ]]; then
 | 
					    if [[ -f /opt/magicmirror-backup/custom.css ]]; then
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,10 +24,6 @@ function update_script() {
 | 
				
			|||||||
  check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
  check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if [[ ! -d /opt/meilisearch ]]; then
 | 
					 | 
				
			||||||
    msg_error "No Meilisearch Installation Found!"
 | 
					 | 
				
			||||||
    exit
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
  UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Meilisearch Update" --radiolist --cancel-button Exit-Script "Spacebar = Select" 10 58 2 \
 | 
					  UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Meilisearch Update" --radiolist --cancel-button Exit-Script "Spacebar = Select" 10 58 2 \
 | 
				
			||||||
    "1" "Update Meilisearch" ON \
 | 
					    "1" "Update Meilisearch" ON \
 | 
				
			||||||
    "2" "Update Meilisearch-UI" OFF \
 | 
					    "2" "Update Meilisearch-UI" OFF \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,6 +44,10 @@ function update_script() {
 | 
				
			|||||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
					    msg_info "Updating ${APP} to ${RELEASE}"
 | 
				
			||||||
    cd /opt/myspeed
 | 
					    cd /opt/myspeed
 | 
				
			||||||
    $STD npm install
 | 
					    $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} to ${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting ${APP} Service"
 | 
					    msg_info "Starting ${APP} Service"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								ct/nocodb.sh
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								ct/nocodb.sh
									
									
									
									
									
								
							@@ -27,15 +27,24 @@ function update_script() {
 | 
				
			|||||||
        msg_error "No ${APP} Installation Found!"
 | 
					        msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    msg_info "Updating ${APP}"
 | 
					
 | 
				
			||||||
    systemctl stop nocodb.service
 | 
					    RELEASE=$(curl -fsSL https://api.github.com/repos/nocodb/nocodb/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
    cd /opt/nocodb
 | 
					    if [[ ! -f ~/.nocodb ]] || [[ "${RELEASE}" != "$(cat ~/.nocodb)" ]]; then
 | 
				
			||||||
    rm -rf nocodb
 | 
					    msg_info "Stopping Service"
 | 
				
			||||||
    curl -fsSL http://get.nocodb.com/linux-x64 -o nocodb -L
 | 
					    systemctl stop nocodb
 | 
				
			||||||
    chmod +x nocodb
 | 
					    msg_ok "Stopped Service"
 | 
				
			||||||
    systemctl start nocodb.service
 | 
					
 | 
				
			||||||
 | 
					    fetch_and_deploy_gh_release "nocodb" "nocodb/nocodb" "singlefile" "latest" "/opt/nocodb/" "Noco-linux-x64"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting Service"
 | 
				
			||||||
 | 
					    systemctl start nocodb
 | 
				
			||||||
 | 
					    msg_ok "Started Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
    exit
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
@@ -45,4 +54,4 @@ description
 | 
				
			|||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/dashboard${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/dashboard${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,4 +42,4 @@ msg_ok "Completed Successfully!\n"
 | 
				
			|||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access it using one of the following URLs:${CL}"
 | 
					echo -e "${INFO}${YW} Access it using one of the following URLs:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										58
									
								
								ct/ots.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								ct/ots.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: bvdberg01
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/Luzifer/ots
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="OTS"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-secrets-sharer}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-1}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-512}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-3}"
 | 
				
			||||||
 | 
					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/ots ]]; then
 | 
				
			||||||
 | 
					        msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					        exit
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    RELEASE=$(curl -fsSL https://api.github.com/repos/Luzifer/ots/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
 | 
					    if [[ "${RELEASE}" != "$(cat ~/.ots 2>/dev/null)" ]] || [[ ! -f ~/.ots ]]; then
 | 
				
			||||||
 | 
					        msg_info "Stopping ${APP} Service"
 | 
				
			||||||
 | 
					        systemctl stop ots
 | 
				
			||||||
 | 
					        systemctl stop nginx
 | 
				
			||||||
 | 
					        msg_ok "Stopped ${APP} Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        fetch_and_deploy_gh_release "ots" "Luzifer/ots" "prebuild" "latest" "/opt/ots" "ots_linux_amd64.tgz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        msg_info "Stopping ${APP} Service"
 | 
				
			||||||
 | 
					        systemctl start ots
 | 
				
			||||||
 | 
					        systemctl start nginx
 | 
				
			||||||
 | 
					        msg_ok "Stopped ${APP} Service"
 | 
				
			||||||
 | 
					        msg_ok "Updated Successfully"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start
 | 
				
			||||||
 | 
					build_container
 | 
				
			||||||
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}https://${IP}${CL}"
 | 
				
			||||||
@@ -42,11 +42,12 @@ function update_script() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
					    msg_info "Updating ${APP} to ${RELEASE}"
 | 
				
			||||||
    cd /opt/outline
 | 
					    cd /opt/outline
 | 
				
			||||||
 | 
					    mv /opt/.env /opt/outline
 | 
				
			||||||
    export NODE_ENV=development
 | 
					    export NODE_ENV=development
 | 
				
			||||||
    export NODE_OPTIONS="--max-old-space-size=3584"
 | 
					    export NODE_OPTIONS="--max-old-space-size=3584"
 | 
				
			||||||
    $STD yarn install --frozen-lockfile
 | 
					    $STD yarn install --frozen-lockfile
 | 
				
			||||||
 | 
					    export NODE_ENV=production
 | 
				
			||||||
    $STD yarn build
 | 
					    $STD yarn build
 | 
				
			||||||
    mv /opt/.env /opt/outline
 | 
					 | 
				
			||||||
    msg_ok "Updated ${APP}"
 | 
					    msg_ok "Updated ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting Services"
 | 
					    msg_info "Starting Services"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,13 +27,28 @@ function update_script() {
 | 
				
			|||||||
        msg_error "No ${APP} Installation Found!"
 | 
					        msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    msg_info "Updating $APP"
 | 
					
 | 
				
			||||||
    systemctl stop pairdrop
 | 
					    RELEASE=$(curl -fsSL https://api.github.com/repos/schlagmichdoch/PairDrop/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
    cd /opt/pairdrop
 | 
					    if [[ ! -f ~/.pairdrop ]] || [[ "${RELEASE}" != "$(cat ~/.pairdrop)" ]]; then
 | 
				
			||||||
    git pull
 | 
					      msg_info "Stopping ${APP}"
 | 
				
			||||||
    npm install
 | 
					      systemctl stop pairdrop
 | 
				
			||||||
    systemctl start pairdrop
 | 
					      msg_ok "Stopped ${APP}"
 | 
				
			||||||
    msg_ok "Updated $APP"
 | 
					      
 | 
				
			||||||
 | 
					      fetch_and_deploy_gh_release "pairdrop" "schlagmichdoch/PairDrop" "tarball"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      msg_info "Configuring PairDrop"
 | 
				
			||||||
 | 
					      cd /opt/pairdrop
 | 
				
			||||||
 | 
					      $STD npm install
 | 
				
			||||||
 | 
					      msg_ok "Configured PairDrop"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      msg_info "Starting ${APP}"
 | 
				
			||||||
 | 
					      systemctl start pairdrop
 | 
				
			||||||
 | 
					      msg_ok "Started ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      msg_ok "Updated Successfully"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      msg_ok "No update required. ${APP} is already at ${RELEASE}."
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -44,4 +59,4 @@ description
 | 
				
			|||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										79
									
								
								ct/palmr.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								ct/palmr.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,79 @@
 | 
				
			|||||||
 | 
					#!/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/kyantech/Palmr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Palmr"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-files}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-4}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-6144}"
 | 
				
			||||||
 | 
					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/palmr_data ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/kyantech/palmr/releases/latest | jq '.tag_name' | sed 's/^"v//;s/"$//')
 | 
				
			||||||
 | 
					  if [[ "${RELEASE}" != "$(cat ~/.palmr 2>/dev/null)" ]] || [[ ! -f ~/.palmr ]]; then
 | 
				
			||||||
 | 
					    msg_info "Stopping Services"
 | 
				
			||||||
 | 
					    systemctl stop palmr-frontend palmr-backend
 | 
				
			||||||
 | 
					    msg_ok "Stopped Services"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cp /opt/palmr/apps/server/.env /opt/palmr.env
 | 
				
			||||||
 | 
					    fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)"
 | 
				
			||||||
 | 
					    NODE_VERSION="20" NODE_MODULE="$PNPM" setup_nodejs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating ${APP}"
 | 
				
			||||||
 | 
					    cd /opt/palmr/apps/server
 | 
				
			||||||
 | 
					    mv /opt/palmr.env /opt/palmr/apps/server/.env
 | 
				
			||||||
 | 
					    $STD pnpm install
 | 
				
			||||||
 | 
					    $STD pnpm dlx prisma generate
 | 
				
			||||||
 | 
					    $STD pnpm dlx prisma migrate deploy
 | 
				
			||||||
 | 
					    $STD pnpm dlx prisma db push
 | 
				
			||||||
 | 
					    $STD pnpm build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cd /opt/palmr/apps/web
 | 
				
			||||||
 | 
					    export NODE_ENV=production
 | 
				
			||||||
 | 
					    export NEXT_TELEMETRY_DISABLED=1
 | 
				
			||||||
 | 
					    mv ./.env.example ./.env
 | 
				
			||||||
 | 
					    $STD pnpm install
 | 
				
			||||||
 | 
					    $STD pnpm build
 | 
				
			||||||
 | 
					    chown -R palmr:palmr /opt/palmr_data /opt/palmr
 | 
				
			||||||
 | 
					    msg_ok "Updated $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting Services"
 | 
				
			||||||
 | 
					    systemctl start palmr-backend palmr-frontend
 | 
				
			||||||
 | 
					    msg_ok "Started Services"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "Already up to date"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start
 | 
				
			||||||
 | 
					build_container
 | 
				
			||||||
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
				
			||||||
@@ -9,7 +9,7 @@ APP="Paperless-AI"
 | 
				
			|||||||
var_tags="${var_tags:-ai;document}"
 | 
					var_tags="${var_tags:-ai;document}"
 | 
				
			||||||
var_cpu="${var_cpu:-2}"
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
var_ram="${var_ram:-2048}"
 | 
					var_ram="${var_ram:-2048}"
 | 
				
			||||||
var_disk="${var_disk:-12}"
 | 
					var_disk="${var_disk:-20}"
 | 
				
			||||||
var_os="${var_os:-debian}"
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
var_version="${var_version:-12}"
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,32 +23,25 @@ function update_script() {
 | 
				
			|||||||
  header_info
 | 
					  header_info
 | 
				
			||||||
  check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
  check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					 | 
				
			||||||
  if [[ ! -d /opt/paymenter ]]; then
 | 
					  if [[ ! -d /opt/paymenter ]]; then
 | 
				
			||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
 | 
					  CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
 | 
				
			||||||
  if [[ "$CURRENT_PHP" != "8.3" ]]; then
 | 
					  if [[ "$CURRENT_PHP" != "8.3" ]]; then
 | 
				
			||||||
    msg_info "Migrating PHP $CURRENT_PHP to 8.3"
 | 
					    PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="common,mysql,fpm,redis" setup_php
 | 
				
			||||||
    $STD curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
 | 
					    setup_composer
 | 
				
			||||||
    $STD dpkg -i /tmp/debsuryorg-archive-keyring.deb
 | 
					 | 
				
			||||||
    $STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
 | 
					 | 
				
			||||||
    $STD apt-get update
 | 
					 | 
				
			||||||
    $STD apt-get remove -y php"${CURRENT_PHP//./}"*
 | 
					 | 
				
			||||||
    $STD apt-get install -y \
 | 
					 | 
				
			||||||
      php8.3 \
 | 
					 | 
				
			||||||
      php8.3-{common,cli,gd,mysql,mbstring,bcmath,xml,curl,zip,intl,redis,fpm}
 | 
					 | 
				
			||||||
    sed -i 's|php8\.2-fpm\.sock|php8.3-fpm.sock|g' /etc/nginx/sites-available/paymenter.conf
 | 
					    sed -i 's|php8\.2-fpm\.sock|php8.3-fpm.sock|g' /etc/nginx/sites-available/paymenter.conf
 | 
				
			||||||
    $STD systemctl reload nginx
 | 
					    $STD systemctl reload nginx
 | 
				
			||||||
    msg_ok "Migrated PHP $CURRENT_PHP to 8.3"
 | 
					 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/paymenter/paymenter/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
 | 
					
 | 
				
			||||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/paymenter/paymenter/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					  if [[ ! -f ~/.paymenter ]] || [[ "${RELEASE}" != "$(cat ~/.paymenter)" ]]; then
 | 
				
			||||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
					    msg_info "Updating ${APP} to ${RELEASE}"
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					 | 
				
			||||||
    cd /opt/paymenter
 | 
					    cd /opt/paymenter
 | 
				
			||||||
    $STD php artisan p:upgrade --no-interaction
 | 
					    $STD php artisan p:upgrade --no-interaction
 | 
				
			||||||
 | 
					    echo "${RELEASE}" >~/.paymenter
 | 
				
			||||||
    msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}."
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}."
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,18 +27,26 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  msg_info "Stopping ${APP}"
 | 
					 | 
				
			||||||
  systemctl stop pocketbase
 | 
					 | 
				
			||||||
  msg_ok "Stopped ${APP}"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Updating ${APP}"
 | 
					  RELEASE=$(curl -s https://api.github.com/repos/pocketbase/pocketbase/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
  /opt/pocketbase/pocketbase update
 | 
					  if [[ "${RELEASE}" != "$(cat ~/.pocketbase 2>/dev/null)" ]] || [[ ! -f ~/.pocketbase ]]; then
 | 
				
			||||||
  msg_ok "Updated ${APP}"
 | 
					    msg_info "Stopping ${APP}"
 | 
				
			||||||
 | 
					    systemctl stop pocketbase
 | 
				
			||||||
 | 
					    msg_ok "Stopped ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Starting ${APP}"
 | 
					    msg_info "Updating ${APP}"
 | 
				
			||||||
  systemctl start pocketbase
 | 
					    /opt/pocketbase/pocketbase update
 | 
				
			||||||
  msg_ok "Started ${APP}"
 | 
					    echo "${RELEASE}" > ~/.pocketbase
 | 
				
			||||||
  msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting ${APP}"
 | 
				
			||||||
 | 
					    systemctl start pocketbase
 | 
				
			||||||
 | 
					    msg_ok "Started ${APP}"
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    msg_ok "Update Successful"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
  exit
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -49,4 +57,4 @@ description
 | 
				
			|||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/_/${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/_/${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,9 +29,10 @@ function update_script() {
 | 
				
			|||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [[ -f /opt/${APP}_version.txt ]] && mv /opt/${APP}_version.txt ~/.pocket-id
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/pocket-id/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/pocket-id/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
					  if [[ "${RELEASE}" != "$(cat ~/.pocket-id)" ]] || [[ ! -f ~/.pocket-id ]]; then
 | 
				
			||||||
    if [[ "$(cat /opt/${APP}_version.txt)" < "1.0.0" ]]; then
 | 
					    if [[ "$(cat ~/.pocket-id)" < "1.0.0" ]]; then
 | 
				
			||||||
      msg_info "Migrating ${APP} to v${RELEASE}"
 | 
					      msg_info "Migrating ${APP} to v${RELEASE}"
 | 
				
			||||||
      systemctl -q disable --now pocketid-backend pocketid-frontend caddy
 | 
					      systemctl -q disable --now pocketid-backend pocketid-frontend caddy
 | 
				
			||||||
      mv /etc/caddy/Caddyfile ~/Caddyfile.bak
 | 
					      mv /etc/caddy/Caddyfile ~/Caddyfile.bak
 | 
				
			||||||
@@ -58,19 +59,19 @@ function update_script() {
 | 
				
			|||||||
      mv /opt/data /opt/pocket-id
 | 
					      mv /opt/data /opt/pocket-id
 | 
				
			||||||
      msg_ok "Migration complete. The reverse proxy port has been changed to 1411."
 | 
					      msg_ok "Migration complete. The reverse proxy port has been changed to 1411."
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      msg_info "Updating $APP to v${RELEASE}"
 | 
					      msg_info "Stopping ${APP}"
 | 
				
			||||||
      systemctl stop pocketid
 | 
					      systemctl stop pocketid
 | 
				
			||||||
 | 
					      msg_ok "Stopped ${APP}"
 | 
				
			||||||
      cp /opt/pocket-id/.env /opt/env
 | 
					      cp /opt/pocket-id/.env /opt/env
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    curl -fsSL "https://github.com/pocket-id/pocket-id/releases/download/v${RELEASE}/pocket-id-linux-amd64" -o /opt/pocket-id/pocket-id
 | 
					
 | 
				
			||||||
    chmod u+x /opt/pocket-id/pocket-id
 | 
					    fetch_and_deploy_gh_release "pocket-id" "pocket-id/pocket-id" "singlefile" "latest" "/opt/pocket-id/" "pocket-id-linux-amd64"
 | 
				
			||||||
    mv /opt/env /opt/pocket-id/.env
 | 
					    mv /opt/env /opt/pocket-id/.env
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting $APP"
 | 
					    msg_info "Starting $APP"
 | 
				
			||||||
    systemctl start pocketid
 | 
					    systemctl start pocketid
 | 
				
			||||||
    msg_ok "Started $APP"
 | 
					    msg_ok "Started $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					 | 
				
			||||||
    msg_ok "Update Successful"
 | 
					    msg_ok "Update Successful"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,22 +27,25 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/PrivateBin/PrivateBin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/PrivateBin/PrivateBin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					  if [[ ! -f ~/.privatebin ]] || [[ "${RELEASE}" != "$(cat ~/.privatebin)" ]]; then
 | 
				
			||||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
					    msg_info "Creating backup"
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					 | 
				
			||||||
    cp -f /opt/privatebin/cfg/conf.php /tmp/privatebin_conf.bak
 | 
					    cp -f /opt/privatebin/cfg/conf.php /tmp/privatebin_conf.bak
 | 
				
			||||||
    curl -fsSL "https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${RELEASE}.zip")
 | 
					    msg_ok "Backup created"
 | 
				
			||||||
    $STD unzip ${RELEASE}.zip
 | 
					
 | 
				
			||||||
    rm -rf /opt/privatebin/*
 | 
					    rm -rf /opt/privatebin/*
 | 
				
			||||||
    mv PrivateBin-${RELEASE}/* /opt/privatebin/
 | 
					    fetch_and_deploy_gh_release "privatebin" "PrivateBin/PrivateBin" "tarball"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Configuring ${APP}"
 | 
				
			||||||
 | 
					    mkdir -p /opt/privatebin/data
 | 
				
			||||||
    mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php
 | 
					    mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php
 | 
				
			||||||
    chown -R www-data:www-data /opt/privatebin
 | 
					    chown -R www-data:www-data /opt/privatebin
 | 
				
			||||||
    chmod -R 0755 /opt/privatebin/data
 | 
					    chmod -R 0755 /opt/privatebin/data}
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					 | 
				
			||||||
    rm -rf ${RELEASE}.zip PrivateBin-${RELEASE}
 | 
					 | 
				
			||||||
    systemctl reload nginx php8.2-fpm
 | 
					    systemctl reload nginx php8.2-fpm
 | 
				
			||||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
					    msg_ok "Configured ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Successfully updated"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,24 +27,19 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/prometheus/alertmanager/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/prometheus/alertmanager/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					  if [[ ! -f ~/.alertmanager ]] || [[ "${RELEASE}" != "$(cat ~/.alertmanager)" ]]; then
 | 
				
			||||||
    msg_info "Stopping ${APP}"
 | 
					    msg_info "Stopping ${APP}"
 | 
				
			||||||
    systemctl stop prometheus-alertmanager
 | 
					    systemctl stop prometheus-alertmanager
 | 
				
			||||||
    msg_ok "Stopped ${APP}"
 | 
					    msg_ok "Stopped ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
					    fetch_and_deploy_gh_release "alertmanager" "prometheus/alertmanager" "prebuild" "latest" "/usr/local/bin/" "alertmanager*linux-amd64.tar.gz"
 | 
				
			||||||
    cd /opt
 | 
					 | 
				
			||||||
    curl -fsSL "https://github.com/prometheus/alertmanager/releases/download/v${RELEASE}/alertmanager-${RELEASE}.linux-amd64.tar.gz" -o $(basename "https://github.com/prometheus/alertmanager/releases/download/v${RELEASE}/alertmanager-${RELEASE}.linux-amd64.tar.gz")
 | 
					 | 
				
			||||||
    tar -xf alertmanager-${RELEASE}.linux-amd64.tar.gz
 | 
					 | 
				
			||||||
    cp -rf alertmanager-${RELEASE}.linux-amd64/alertmanager alertmanager-${RELEASE}.linux-amd64/amtool /usr/local/bin/
 | 
					 | 
				
			||||||
    rm -rf alertmanager-${RELEASE}.linux-amd64 alertmanager-${RELEASE}.linux-amd64.tar.gz
 | 
					 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					 | 
				
			||||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting ${APP}"
 | 
					    msg_info "Starting ${APP}"
 | 
				
			||||||
    systemctl start prometheus-alertmanager
 | 
					    systemctl start prometheus-alertmanager
 | 
				
			||||||
    msg_ok "Started ${APP}"
 | 
					    msg_ok "Started ${APP}"
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										54
									
								
								ct/pulse.sh
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								ct/pulse.sh
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
# Author: rcourtman
 | 
					# Author: rcourtman & vhsdream
 | 
				
			||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
# Source: https://github.com/rcourtman/Pulse
 | 
					# Source: https://github.com/rcourtman/Pulse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -23,42 +23,48 @@ function update_script() {
 | 
				
			|||||||
  header_info
 | 
					  header_info
 | 
				
			||||||
  check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
  check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
  if [[ -d /opt/pulse-monitor ]]; then
 | 
					 | 
				
			||||||
  msg_error "An old installation was detected. Please recreate the LXC from scratch (https://github.com/community-scripts/ProxmoxVE/pull/4848)"
 | 
					 | 
				
			||||||
  exit 1
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
  if [[ ! -d /opt/pulse ]]; then
 | 
					  if [[ ! -d /opt/pulse ]]; then
 | 
				
			||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					
 | 
				
			||||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					  if [[ ! -f ~/.pulse ]]; then
 | 
				
			||||||
 | 
					    msg_error "Old Installation Found! Please recreate the container due big changes in the software."
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
				
			||||||
 | 
					  SERVICE_PATH="/etc/systemd/system"
 | 
				
			||||||
 | 
					  if [[ "${RELEASE}" != "$(cat ~/.pulse 2>/dev/null)" ]] || [[ ! -f ~/.pulse ]]; then
 | 
				
			||||||
    msg_info "Stopping ${APP}"
 | 
					    msg_info "Stopping ${APP}"
 | 
				
			||||||
    systemctl stop pulse
 | 
					    systemctl stop pulse*.service
 | 
				
			||||||
    msg_ok "Stopped ${APP}"
 | 
					    msg_ok "Stopped ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating Pulse"
 | 
					    if [[ -f /opt/pulse/pulse ]]; then
 | 
				
			||||||
    temp_file=$(mktemp)
 | 
					      rm -f /opt/pulse/pulse
 | 
				
			||||||
    mkdir -p /opt/pulse
 | 
					    fi
 | 
				
			||||||
    rm -rf /opt/pulse/*
 | 
					 | 
				
			||||||
    curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file"
 | 
					 | 
				
			||||||
    tar zxf "$temp_file" --strip-components=1 -C /opt/pulse
 | 
					 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					 | 
				
			||||||
    msg_ok "Updated Pulse to ${RELEASE}"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Setting permissions for /opt/pulse..."
 | 
					    fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz"
 | 
				
			||||||
    chown -R pulse:pulse "/opt/pulse"
 | 
					    chown -R pulse:pulse /etc/pulse /opt/pulse
 | 
				
			||||||
    find "/opt/pulse" -type d -exec chmod 755 {} \;
 | 
					    if [[ -f "$SERVICE_PATH"/pulse.service ]]; then
 | 
				
			||||||
    find "/opt/pulse" -type f -exec chmod 644 {} \;
 | 
					      mv "$SERVICE_PATH"/pulse.service "$SERVICE_PATH"/pulse-backend.service
 | 
				
			||||||
    msg_ok "Set permissions."
 | 
					    fi
 | 
				
			||||||
 | 
					    sed -i -e 's|pulse/pulse|pulse/bin/pulse|' \
 | 
				
			||||||
 | 
					      -e 's/^Environment="API.*$//' "$SERVICE_PATH"/pulse-backend.service
 | 
				
			||||||
 | 
					    systemctl daemon-reload
 | 
				
			||||||
 | 
					    if grep -q 'pulse-home:/bin/bash' /etc/passwd; then
 | 
				
			||||||
 | 
					      usermod -s /usr/sbin/nologin pulse
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting ${APP}"
 | 
					    msg_info "Starting ${APP}"
 | 
				
			||||||
    systemctl start pulse
 | 
					    systemctl start pulse-backend
 | 
				
			||||||
    msg_ok "Started ${APP}"
 | 
					    msg_ok "Started ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}."
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  exit  
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
				
			|||||||
APP="Reactive-Resume"
 | 
					APP="Reactive-Resume"
 | 
				
			||||||
var_tags="${var_tags:-documents}"
 | 
					var_tags="${var_tags:-documents}"
 | 
				
			||||||
var_cpu="${var_cpu:-2}"
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
var_ram="${var_ram:-3072}"
 | 
					var_ram="${var_ram:-4096}"
 | 
				
			||||||
var_disk="${var_disk:-8}"
 | 
					var_disk="${var_disk:-8}"
 | 
				
			||||||
var_os="${var_os:-debian}"
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
var_version="${var_version:-12}"
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
@@ -28,15 +28,16 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No $APP Installation Found!"
 | 
					    msg_error "No $APP Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/lazy-media/Reactive-Resume/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/lazy-media/Reactive-Resume/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
				
			||||||
  if [[ ! -f "$HOME"/.reactive-resume ]] || [[ "$RELEASE" != "$(cat "$HOME"/.reactive-resume)" ]]; then
 | 
					  if [[ ! -f "$HOME"/.reactive-resume ]] || [[ "$RELEASE" != "$(cat "$HOME"/.reactive-resume)" ]]; then
 | 
				
			||||||
    msg_info "Stopping services"
 | 
					    msg_info "Stopping services"
 | 
				
			||||||
    systemctl stop Reactive-Resume
 | 
					    systemctl stop Reactive-Resume
 | 
				
			||||||
    msg_ok "Stopped services"
 | 
					    msg_ok "Stopped services"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cp /opt/"$APP"/.env /opt/rxresume.env
 | 
					    cp /opt/"$APP"/.env /opt/rxresume.env
 | 
				
			||||||
    rm -rf /opt/"$APP"
 | 
					
 | 
				
			||||||
    fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume"
 | 
					    fetch_and_deploy_gh_release "Reactive-Resume" "lazy-media/Reactive-Resume" "tarball" "latest" "/opt/Reactive-Resume"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
					    msg_info "Updating $APP to v${RELEASE}"
 | 
				
			||||||
    cd /opt/"$APP"
 | 
					    cd /opt/"$APP"
 | 
				
			||||||
    export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
					    export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
				
			||||||
@@ -84,9 +85,9 @@ function update_script() {
 | 
				
			|||||||
    rm -f "$brwsr_tmp"
 | 
					    rm -f "$brwsr_tmp"
 | 
				
			||||||
    msg_ok "Cleanup Completed"
 | 
					    msg_ok "Cleanup Completed"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_ok "Update Successful"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. $APP is already at v{$RELEASE}"
 | 
					    msg_ok "No update required. $APP is already at v${RELEASE}"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  exit
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@ function update_script() {
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
  APIRELEASE=$(curl -fsSL https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					  APIRELEASE=$(curl -fsSL https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
  if [[ "${RELEASE}" != "$(cat /opt/rustdesk_version.txt)" ]] || [[ "${APIRELEASE}" != "$(cat /opt/rustdesk-api.txt)" ]] || [[ ! -f /opt/rustdesk_version.txt ]] || [[ ! -f /opt/rustdesk-api.txt ]]; then
 | 
					  if [[ "${RELEASE}" != "$(cat /opt/rustdesk_version.txt)" ]] || [[ "${APIRELEASE}" != "$(cat /opt/rustdeskapi_version.txt)" ]] || [[ ! -f /opt/rustdesk_version.txt ]] || [[ ! -f /opt/rustdeskapi_version.txt ]]; then
 | 
				
			||||||
    msg_info "Stopping $APP"
 | 
					    msg_info "Stopping $APP"
 | 
				
			||||||
    systemctl stop rustdesk-hbbr
 | 
					    systemctl stop rustdesk-hbbr
 | 
				
			||||||
    systemctl stop rustdesk-hbbs
 | 
					    systemctl stop rustdesk-hbbs
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,10 +27,11 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  sed -i 's/^\([[:space:]]*limiter:\)[[:space:]]*true/\1 false/' /etc/searxng/settings.yml
 | 
					  msg_ok "There is currently no update available."
 | 
				
			||||||
  if cd /usr/local/searxng/searxng-src && git pull | grep -q 'Already up to date'; then
 | 
					  # sed -i 's/^\([[:space:]]*limiter:\)[[:space:]]*true/\1 false/' /etc/searxng/settings.yml
 | 
				
			||||||
    msg_ok "There is currently no update available."
 | 
					  # if cd /usr/local/searxng/searxng-src && git pull | grep -q 'Already up to date'; then
 | 
				
			||||||
  fi
 | 
					  #   msg_ok "There is currently no update available."
 | 
				
			||||||
 | 
					  # fi
 | 
				
			||||||
  exit
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
# Copyright (c) 2021-2025 tteck
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
# Author: MickLesk (Canbiz)
 | 
					# Author: MickLesk (Canbiz)
 | 
				
			||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
# Source: https://tandoor.dev/
 | 
					# Source: https://tandoor.dev/
 | 
				
			||||||
@@ -27,27 +27,57 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  #if ! [[ $(dpkg -s python3-xmlsec 2>/dev/null) ]]; then
 | 
					
 | 
				
			||||||
    #$STD apt-get update
 | 
					  if [[ ! -f ~/.tandoor ]]; then
 | 
				
			||||||
    #$STD apt-get install -y python3-xmlsec
 | 
					    msg_error "v1 Installation found, please export your data and create an new LXC."
 | 
				
			||||||
  #fi
 | 
					    exit
 | 
				
			||||||
  #if cd /opt/tandoor && git pull | grep -q 'Already up to date'; then
 | 
					  fi
 | 
				
			||||||
    msg_ok "There is currently no update available."
 | 
					
 | 
				
			||||||
  #else
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/TandoorRecipes/recipes/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
				
			||||||
    #msg_info "Updating ${APP} (Patience)"
 | 
					  if [[ "${RELEASE}" != "$(cat ~/.tandoor 2>/dev/null)" ]] || [[ ! -f ~/.tandoor ]]; then
 | 
				
			||||||
    #export $(cat /opt/tandoor/.env | grep "^[^#]" | xargs)
 | 
					    msg_info "Stopping $APP"
 | 
				
			||||||
    #cd /opt/tandoor/
 | 
					    systemctl stop tandoor
 | 
				
			||||||
    #$STD pip3 install -r requirements.txt
 | 
					    msg_ok "Stopped $APP"
 | 
				
			||||||
    #$STD /usr/bin/python3 /opt/tandoor/manage.py migrate
 | 
					
 | 
				
			||||||
    #$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic --no-input
 | 
					    msg_info "Creating Backup"
 | 
				
			||||||
    #$STD /usr/bin/python3 /opt/tandoor/manage.py collectstatic_js_reverse
 | 
					    mv /opt/tandoor /opt/tandoor.bak
 | 
				
			||||||
    #cd /opt/tandoor/vue
 | 
					    msg_ok "Backup Created"
 | 
				
			||||||
    #$STD yarn install
 | 
					
 | 
				
			||||||
    #$STD yarn build
 | 
					    NODE_VERSION="20" NODE_MODULE="yarn" setup_nodejs
 | 
				
			||||||
    #cd /opt/tandoor
 | 
					    PYTHON_VERSION="3.13" setup_uv
 | 
				
			||||||
    #$STD python3 version.py
 | 
					    fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
 | 
				
			||||||
    #systemctl restart gunicorn_tandoor
 | 
					
 | 
				
			||||||
    #msg_ok "Updated ${APP}"
 | 
					    msg_info "Updating $APP to ${RELEASE}"
 | 
				
			||||||
 | 
					    cp -r /opt/tandoor.bak/{config,api,mediafiles,staticfiles} /opt/tandoor/
 | 
				
			||||||
 | 
					    mv /opt/.env /opt/tandoor/.env
 | 
				
			||||||
 | 
					    cd /opt/tandoor
 | 
				
			||||||
 | 
					    $STD uv venv .venv --python=python3
 | 
				
			||||||
 | 
					    $STD uv pip install -r requirements.txt --python .venv/bin/python
 | 
				
			||||||
 | 
					    cd /opt/tandoor/vue3
 | 
				
			||||||
 | 
					    $STD yarn install
 | 
				
			||||||
 | 
					    $STD yarn build
 | 
				
			||||||
 | 
					    TANDOOR_VERSION="$(curl -fsSL https://api.github.com/repos/TandoorRecipes/recipes/releases/latest | jq -r .tag_name)"
 | 
				
			||||||
 | 
					    cat <<EOF >/opt/tandoor/cookbook/version_info.py
 | 
				
			||||||
 | 
					TANDOOR_VERSION = "$TANDOOR_VERSION"
 | 
				
			||||||
 | 
					TANDOOR_REF = "bare-metal"
 | 
				
			||||||
 | 
					VERSION_INFO = []
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					    cd /opt/tandoor
 | 
				
			||||||
 | 
					    $STD /opt/tandoor/.venv/bin/python manage.py migrate
 | 
				
			||||||
 | 
					    $STD /opt/tandoor/.venv/bin/python manage.py collectstatic --no-input
 | 
				
			||||||
 | 
					    msg_ok "Updated $APP to ${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting $APP"
 | 
				
			||||||
 | 
					    systemctl start tandoor
 | 
				
			||||||
 | 
					    systemctl reload nginx
 | 
				
			||||||
 | 
					    msg_ok "Started $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Cleaning Up"
 | 
				
			||||||
 | 
					    rm -rf /opt/tandoor.bak
 | 
				
			||||||
 | 
					    msg_ok "Cleanup Completed"
 | 
				
			||||||
 | 
					    msg_ok "Update Successful"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  exit
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										49
									
								
								ct/tianji.sh
									
									
									
									
									
								
							
							
						
						
									
										49
									
								
								ct/tianji.sh
									
									
									
									
									
								
							@@ -29,33 +29,26 @@ function update_script() {
 | 
				
			|||||||
  if ! command -v jq &>/dev/null; then
 | 
					  if ! command -v jq &>/dev/null; then
 | 
				
			||||||
    $STD apt-get install -y jq
 | 
					    $STD apt-get install -y jq
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
 | 
					 | 
				
			||||||
    msg_info "Installing Node.js 22"
 | 
					 | 
				
			||||||
    $STD apt-get purge -y nodejs
 | 
					 | 
				
			||||||
    rm -f /etc/apt/sources.list.d/nodesource.list
 | 
					 | 
				
			||||||
    rm -f /etc/apt/keyrings/nodesource.gpg
 | 
					 | 
				
			||||||
    mkdir -p /etc/apt/keyrings
 | 
					 | 
				
			||||||
    curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
 | 
					 | 
				
			||||||
    echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
 | 
					 | 
				
			||||||
    $STD apt-get update
 | 
					 | 
				
			||||||
    $STD apt-get install -y nodejs
 | 
					 | 
				
			||||||
    $STD npm install -g pnpm@9.7.1
 | 
					 | 
				
			||||||
    msg_ok "Node.js 22 installed"
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/msgbyte/tianji/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					 | 
				
			||||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					 | 
				
			||||||
    msg_info "Stopping ${APP} Service"
 | 
					 | 
				
			||||||
    systemctl stop tianji
 | 
					 | 
				
			||||||
    msg_ok "Stopped ${APP} Service"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/msgbyte/tianji/releases/latest | jq -r '.tag_name' | sed 's/^v//')
 | 
				
			||||||
    cd /opt
 | 
					  if [[ "${RELEASE}" != "$(cat ~/.tianji 2>/dev/null)" ]] || [[ ! -f ~/.tianji ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setup_uv
 | 
				
			||||||
 | 
					    NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/msgbyte/tianji/master/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Stopping Service"
 | 
				
			||||||
 | 
					    systemctl stop tianji
 | 
				
			||||||
 | 
					    msg_ok "Stopped Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Backing up data"
 | 
				
			||||||
    cp /opt/tianji/src/server/.env /opt/.env
 | 
					    cp /opt/tianji/src/server/.env /opt/.env
 | 
				
			||||||
    mv /opt/tianji /opt/tianji_bak
 | 
					    mv /opt/tianji /opt/tianji_bak
 | 
				
			||||||
    curl -fsSL "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip")
 | 
					    msg_ok "Backed up data"
 | 
				
			||||||
    $STD unzip v${RELEASE}.zip
 | 
					
 | 
				
			||||||
    mv tianji-${RELEASE} /opt/tianji
 | 
					    fetch_and_deploy_gh_release "tianji" "msgbyte/tianji"
 | 
				
			||||||
    cd tianji
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating ${APP}"
 | 
				
			||||||
 | 
					    cd /opt/tianji
 | 
				
			||||||
    export NODE_OPTIONS="--max_old_space_size=4096"
 | 
					    export NODE_OPTIONS="--max_old_space_size=4096"
 | 
				
			||||||
    $STD pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile
 | 
					    $STD pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile
 | 
				
			||||||
    $STD pnpm build:static
 | 
					    $STD pnpm build:static
 | 
				
			||||||
@@ -66,15 +59,17 @@ function update_script() {
 | 
				
			|||||||
    mv /opt/.env /opt/tianji/src/server/.env
 | 
					    mv /opt/.env /opt/tianji/src/server/.env
 | 
				
			||||||
    cd src/server
 | 
					    cd src/server
 | 
				
			||||||
    $STD pnpm db:migrate:apply
 | 
					    $STD pnpm db:migrate:apply
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					    msg_ok "Updated ${APP}"
 | 
				
			||||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating AppRise"
 | 
				
			||||||
 | 
					    $STD uv pip install apprise cryptography --system
 | 
				
			||||||
 | 
					    msg_ok "Updated AppRise"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting ${APP}"
 | 
					    msg_info "Starting ${APP}"
 | 
				
			||||||
    systemctl start tianji
 | 
					    systemctl start tianji
 | 
				
			||||||
    msg_ok "Started ${APP}"
 | 
					    msg_ok "Started ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Cleaning up"
 | 
					    msg_info "Cleaning up"
 | 
				
			||||||
    rm -R /opt/v${RELEASE}.zip
 | 
					 | 
				
			||||||
    rm -rf /opt/tianji_bak
 | 
					    rm -rf /opt/tianji_bak
 | 
				
			||||||
    rm -rf /opt/tianji/src/client
 | 
					    rm -rf /opt/tianji/src/client
 | 
				
			||||||
    rm -rf /opt/tianji/website
 | 
					    rm -rf /opt/tianji/website
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										72
									
								
								ct/tududi.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								ct/tududi.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,72 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: vhsdream
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://tududi.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Tududi"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-todo-app}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-2048}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-4}"
 | 
				
			||||||
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  check_container_storage
 | 
				
			||||||
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					  if [[ ! -d /opt/tududi ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/chrisvel/tududi/releases/latest | yq '.tag_name' | sed 's/^v//')
 | 
				
			||||||
 | 
					  if [[ "${RELEASE}" != "$(cat ~/.tududi 2>/dev/null)" ]] || [[ ! -f ~/.tududi ]]; then
 | 
				
			||||||
 | 
					    msg_info "Stopping Service"
 | 
				
			||||||
 | 
					    systemctl stop tududi
 | 
				
			||||||
 | 
					    msg_ok "Stopped Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Remove and backup Files"
 | 
				
			||||||
 | 
					    cp /opt/tududi/backend/.env /opt/tududi.env
 | 
				
			||||||
 | 
					    rm -rf /opt/tududi/backend/dist
 | 
				
			||||||
 | 
					    msg_ok "Backup and removed Files"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fetch_and_deploy_gh_release "tududi" "chrisvel/tududi"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating ${APP}"
 | 
				
			||||||
 | 
					    cd /opt/tududi
 | 
				
			||||||
 | 
					    $STD npm install
 | 
				
			||||||
 | 
					    export NODE_ENV=production
 | 
				
			||||||
 | 
					    $STD npm run frontend:build
 | 
				
			||||||
 | 
					    mv ./dist ./backend
 | 
				
			||||||
 | 
					    mv ./public/locales ./backend/dist
 | 
				
			||||||
 | 
					    mv ./public/favicon.* ./backend/dist
 | 
				
			||||||
 | 
					    mv /opt/tududi.env /opt/tududi/.env
 | 
				
			||||||
 | 
					    msg_ok "Updated $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting Service"
 | 
				
			||||||
 | 
					    systemctl start tududi
 | 
				
			||||||
 | 
					    msg_ok "Started Service"
 | 
				
			||||||
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "Already up to date"
 | 
				
			||||||
 | 
					  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}:3002${CL}"
 | 
				
			||||||
@@ -34,27 +34,29 @@ function update_script() {
 | 
				
			|||||||
      echo "Installed NPM..."
 | 
					      echo "Installed NPM..."
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  LATEST=$(curl -fsSL https://api.github.com/repos/louislam/uptime-kuma/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
 | 
					 | 
				
			||||||
  msg_info "Stopping ${APP}"
 | 
					 | 
				
			||||||
  $STD sudo systemctl stop uptime-kuma
 | 
					 | 
				
			||||||
  msg_ok "Stopped ${APP}"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  cd /opt/uptime-kuma
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/louislam/uptime-kuma/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
 | 
				
			||||||
 | 
					  if [[ ! -f ~/.uptime-kuma ]] || [[ "${RELEASE}" != "$(cat ~/.uptime-kuma)" ]]; then
 | 
				
			||||||
 | 
					    msg_info "Stopping ${APP}"
 | 
				
			||||||
 | 
					    $STD systemctl stop uptime-kuma
 | 
				
			||||||
 | 
					    msg_ok "Stopped ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Pulling ${APP} ${LATEST}"
 | 
					    fetch_and_deploy_gh_release "uptime-kuma" "louislam/uptime-kuma" "tarball"
 | 
				
			||||||
  $STD git fetch --all
 | 
					    cd /opt/uptime-kuma
 | 
				
			||||||
  $STD git checkout $LATEST --force
 | 
					 | 
				
			||||||
  msg_ok "Pulled ${APP} ${LATEST}"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Updating ${APP} to ${LATEST}"
 | 
					    msg_info "Updating ${APP} to ${LATEST}"
 | 
				
			||||||
  $STD npm install --production
 | 
					    $STD npm install --omit dev
 | 
				
			||||||
  $STD npm run download-dist
 | 
					    $STD npm run download-dist
 | 
				
			||||||
  msg_ok "Updated ${APP}"
 | 
					    msg_ok "Updated ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  msg_info "Starting ${APP}"
 | 
					    msg_info "Starting ${APP}"
 | 
				
			||||||
  $STD sudo systemctl start uptime-kuma
 | 
					    $STD sudo systemctl start uptime-kuma
 | 
				
			||||||
  msg_ok "Started ${APP}"
 | 
					    msg_ok "Started ${APP}"
 | 
				
			||||||
  msg_ok "Updated Successfully"
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
  exit
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ APP="Vaultwarden"
 | 
				
			|||||||
var_tags="${var_tags:-password-manager}"
 | 
					var_tags="${var_tags:-password-manager}"
 | 
				
			||||||
var_cpu="${var_cpu:-4}"
 | 
					var_cpu="${var_cpu:-4}"
 | 
				
			||||||
var_ram="${var_ram:-6144}"
 | 
					var_ram="${var_ram:-6144}"
 | 
				
			||||||
var_disk="${var_disk:-6}"
 | 
					var_disk="${var_disk:-20}"
 | 
				
			||||||
var_os="${var_os:-debian}"
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
var_version="${var_version:-12}"
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,10 +35,20 @@ function update_script() {
 | 
				
			|||||||
    [[ -f /etc/systemd/system/victoriametrics-logs.service ]] && systemctl stop victoriametrics-logs
 | 
					    [[ -f /etc/systemd/system/victoriametrics-logs.service ]] && systemctl stop victoriametrics-logs
 | 
				
			||||||
    msg_ok "Stopped $APP"
 | 
					    msg_ok "Stopped $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "victoria-metrics-linux-amd64-v+([0-9.]).tar.gz"
 | 
					    victoriametrics_filename=$(curl -fsSL "https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest" |
 | 
				
			||||||
    fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "vmutils-linux-amd64-v+([0-9.]).tar.gz"
 | 
					      jq -r '.assets[].name' |
 | 
				
			||||||
    fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
 | 
					      grep -E '^victoria-metrics-linux-amd64-v[0-9.]+\.tar\.gz$')
 | 
				
			||||||
    fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
 | 
					    vmutils_filename=$(curl -fsSL "https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest" |
 | 
				
			||||||
 | 
					      jq -r '.assets[].name' |
 | 
				
			||||||
 | 
					      grep -E '^vmutils-linux-amd64-v[0-9.]+\.tar\.gz$')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fetch_and_deploy_gh_release "victoriametrics" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "$victoriametrics_filename"
 | 
				
			||||||
 | 
					    fetch_and_deploy_gh_release "vmutils" "VictoriaMetrics/VictoriaMetrics" "prebuild" "latest" "/opt/victoriametrics" "$vmutils_filename"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [[ -f /etc/systemd/system/victoriametrics-logs.service ]]; then
 | 
				
			||||||
 | 
					      fetch_and_deploy_gh_release "victorialogs" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "victoria-logs-linux-amd64*.tar.gz"
 | 
				
			||||||
 | 
					      fetch_and_deploy_gh_release "vlutils" "VictoriaMetrics/VictoriaLogs" "prebuild" "latest" "/opt/victoriametrics" "vlutils-linux-amd64*.tar.gz"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
    chmod +x /opt/victoriametrics/*
 | 
					    chmod +x /opt/victoriametrics/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting $APP"
 | 
					    msg_info "Starting $APP"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								ct/wallos.sh
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								ct/wallos.sh
									
									
									
									
									
								
							@@ -27,17 +27,19 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/ellite/Wallos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/ellite/Wallos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					  if [[ ! -f ~/.wallos ]] || [[ "${RELEASE}" != "$(cat ~/.wallos)" ]]; then
 | 
				
			||||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
					    msg_info "Creating backup"
 | 
				
			||||||
    cd /opt
 | 
					 | 
				
			||||||
    curl -fsSL "https://github.com/ellite/Wallos/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/ellite/Wallos/archive/refs/tags/v${RELEASE}.zip")
 | 
					 | 
				
			||||||
    mkdir -p /opt/logos
 | 
					    mkdir -p /opt/logos
 | 
				
			||||||
    mv /opt/wallos/db/wallos.db /opt/wallos.db
 | 
					    mv /opt/wallos/db/wallos.db /opt/wallos.db
 | 
				
			||||||
    mv /opt/wallos/images/uploads/logos /opt/logos/
 | 
					    mv /opt/wallos/images/uploads/logos /opt/logos/
 | 
				
			||||||
    $STD unzip v${RELEASE}.zip
 | 
					    msg_ok "Backup created"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rm -rf /opt/wallos
 | 
					    rm -rf /opt/wallos
 | 
				
			||||||
    mv Wallos-${RELEASE} /opt/wallos
 | 
					    fetch_and_deploy_gh_release "wallos" "ellite/Wallos" "tarball"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Configuring ${APP}"
 | 
				
			||||||
    rm -rf /opt/wallos/db/wallos.empty.db
 | 
					    rm -rf /opt/wallos/db/wallos.empty.db
 | 
				
			||||||
    mv /opt/wallos.db /opt/wallos/db/wallos.db
 | 
					    mv /opt/wallos.db /opt/wallos/db/wallos.db
 | 
				
			||||||
    mv /opt/logos/* /opt/wallos/images/uploads/logos
 | 
					    mv /opt/logos/* /opt/wallos/images/uploads/logos
 | 
				
			||||||
@@ -48,16 +50,12 @@ function update_script() {
 | 
				
			|||||||
    chmod -R 755 /opt/wallos
 | 
					    chmod -R 755 /opt/wallos
 | 
				
			||||||
    mkdir -p /var/log/cron
 | 
					    mkdir -p /var/log/cron
 | 
				
			||||||
    $STD curl http://localhost/endpoints/db/migrate.php
 | 
					    $STD curl http://localhost/endpoints/db/migrate.php
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					    msg_ok "Configured ${APP}"
 | 
				
			||||||
    msg_ok "Updated ${APP}"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Reload Apache2"
 | 
					    msg_info "Reload Apache2"
 | 
				
			||||||
    systemctl reload apache2
 | 
					    systemctl reload apache2
 | 
				
			||||||
    msg_ok "Apache2 Reloaded"
 | 
					    msg_ok "Apache2 Reloaded"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Cleaning Up"
 | 
					 | 
				
			||||||
    rm -R /opt/v${RELEASE}.zip
 | 
					 | 
				
			||||||
    msg_ok "Cleaned"
 | 
					 | 
				
			||||||
    msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,22 +27,20 @@ function update_script() {
 | 
				
			|||||||
        msg_error "No ${APP} Installation Found!"
 | 
					        msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/sbondCo/Watcharr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					    RELEASE=$(curl -fsSL https://api.github.com/repos/sbondCo/Watcharr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
					    if [[ "${RELEASE}" != "$(cat ~/.watcharr)" ]] || [[ ! -f ~/.watcharr ]]; then
 | 
				
			||||||
        msg_info "Updating $APP"
 | 
					        msg_info "Updating $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg_info "Stopping $APP"
 | 
					        msg_info "Stopping $APP"
 | 
				
			||||||
        systemctl stop watcharr
 | 
					        systemctl stop watcharr
 | 
				
			||||||
        msg_ok "Stopped $APP"
 | 
					        msg_ok "Stopped $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
					 | 
				
			||||||
        temp_file=$(mktemp)
 | 
					 | 
				
			||||||
        temp_folder=$(mktemp -d)
 | 
					 | 
				
			||||||
        curl -fsSL "https://github.com/sbondCo/Watcharr/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
 | 
					 | 
				
			||||||
        tar -xzf "$temp_file" -C "$temp_folder"
 | 
					 | 
				
			||||||
        rm -f /opt/watcharr/server/watcharr
 | 
					        rm -f /opt/watcharr/server/watcharr
 | 
				
			||||||
        rm -rf /opt/watcharr/server/ui
 | 
					        rm -rf /opt/watcharr/server/ui
 | 
				
			||||||
        cp -rf ${temp_folder}/Watcharr-${RELEASE}/* /opt/watcharr
 | 
					        fetch_and_deploy_gh_release "watcharr" "sbondCo/Watcharr" "tarball"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        msg_info "Updating $APP to v${RELEASE}"
 | 
				
			||||||
        cd /opt/watcharr
 | 
					        cd /opt/watcharr
 | 
				
			||||||
        export GOOS=linux
 | 
					        export GOOS=linux
 | 
				
			||||||
        $STD npm i
 | 
					        $STD npm i
 | 
				
			||||||
@@ -57,12 +55,6 @@ function update_script() {
 | 
				
			|||||||
        systemctl start watcharr
 | 
					        systemctl start watcharr
 | 
				
			||||||
        msg_ok "Started $APP"
 | 
					        msg_ok "Started $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg_info "Cleaning Up"
 | 
					 | 
				
			||||||
        rm -f ${temp_file}
 | 
					 | 
				
			||||||
        rm -rf ${temp_folder}
 | 
					 | 
				
			||||||
        msg_ok "Cleanup Completed"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					 | 
				
			||||||
        msg_ok "Update Successful"
 | 
					        msg_ok "Update Successful"
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
					        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,17 +27,28 @@ function update_script() {
 | 
				
			|||||||
        msg_error "No ${APP} Installation Found!"
 | 
					        msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    msg_info "Updating $APP"
 | 
					
 | 
				
			||||||
    systemctl stop watchyourlan.service
 | 
					    RELEASE=$(curl -fsSL https://api.github.com/repos/aceberg/WatchYourLAN/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
				
			||||||
    cp -R /data/config.yaml config.yaml
 | 
					    if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
				
			||||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/aceberg/WatchYourLAN/releases/latest | grep -o '"tag_name": *"[^"]*"' | cut -d '"' -f 4)
 | 
					      msg_info "Stopping service"
 | 
				
			||||||
    curl -fsSL "https://github.com/aceberg/WatchYourLAN/releases/download/$RELEASE/watchyourlan_${RELEASE}_linux_amd64.deb" -o $(basename "https://github.com/aceberg/WatchYourLAN/releases/download/$RELEASE/watchyourlan_${RELEASE}_linux_amd64.deb")
 | 
					      systemctl stop watchyourlan.service
 | 
				
			||||||
    dpkg -i watchyourlan_${RELEASE}_linux_amd64.deb
 | 
					      msg_ok "Service stopped"
 | 
				
			||||||
    cp -R config.yaml /data/config.yaml
 | 
					
 | 
				
			||||||
    sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service
 | 
					      cp -R /data/config.yaml ~/config.yaml
 | 
				
			||||||
    rm watchyourlan_${RELEASE}_linux_amd64.deb config.yaml
 | 
					      fetch_and_deploy_gh_release "watchyourlan" "aceberg/WatchYourLAN" "binary"
 | 
				
			||||||
    systemctl enable -q --now watchyourlan
 | 
					      cp -R config.yaml /data/config.yaml
 | 
				
			||||||
    msg_ok "Updated $APP"
 | 
					      sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      msg_info "Cleaning up"
 | 
				
			||||||
 | 
					      rm ~/config.yaml
 | 
				
			||||||
 | 
					      msg_ok "Cleaned up"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      msg_info "Starting service"
 | 
				
			||||||
 | 
					      systemctl enable -q --now watchyourlan
 | 
				
			||||||
 | 
					      msg_ok "Service started"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,23 +27,26 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/wavelog/wavelog/releases/latest | grep "tag_name" | cut -d '"' -f 4)
 | 
					
 | 
				
			||||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/wavelog/wavelog/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
 | 
				
			||||||
 | 
					  if [[ ! -f ~/.wavelog ]] || [[ "${RELEASE}" != "$(cat ~/.wavelog)" ]]; then
 | 
				
			||||||
    msg_info "Stopping Services"
 | 
					    msg_info "Stopping Services"
 | 
				
			||||||
    systemctl stop apache2
 | 
					    systemctl stop apache2
 | 
				
			||||||
    msg_ok "Services Stopped"
 | 
					    msg_ok "Services Stopped"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
					    msg_info "Creating backup"
 | 
				
			||||||
    cp /opt/wavelog/application/config/config.php /opt/config.php
 | 
					    cp /opt/wavelog/application/config/config.php /opt/config.php
 | 
				
			||||||
    cp /opt/wavelog/application/config/database.php /opt/database.php
 | 
					    cp /opt/wavelog/application/config/database.php /opt/database.php
 | 
				
			||||||
    cp -r /opt/wavelog/userdata /opt/userdata
 | 
					    cp -r /opt/wavelog/userdata /opt/userdata
 | 
				
			||||||
    if [[ -f /opt/wavelog/assets/js/sections/custom.js ]]; then
 | 
					    if [[ -f /opt/wavelog/assets/js/sections/custom.js ]]; then
 | 
				
			||||||
      cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js
 | 
					      cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    curl -fsSL "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip")
 | 
					    msg_ok "Backup created"
 | 
				
			||||||
    $STD unzip ${RELEASE}.zip
 | 
					
 | 
				
			||||||
    rm -rf /opt/wavelog
 | 
					    rm -rf /opt/wavelog
 | 
				
			||||||
    mv wavelog-${RELEASE}/ /opt/wavelog
 | 
					    fetch_and_deploy_gh_release "wavelog" "wavelog/wavelog" "tarball"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating ${APP} to ${RELEASE}"
 | 
				
			||||||
    rm -rf /opt/wavelog/install
 | 
					    rm -rf /opt/wavelog/install
 | 
				
			||||||
    mv /opt/config.php /opt/wavelog/application/config/config.php
 | 
					    mv /opt/config.php /opt/wavelog/application/config/config.php
 | 
				
			||||||
    mv /opt/database.php /opt/wavelog/application/config/database.php
 | 
					    mv /opt/database.php /opt/wavelog/application/config/database.php
 | 
				
			||||||
@@ -55,16 +58,12 @@ function update_script() {
 | 
				
			|||||||
    chown -R www-data:www-data /opt/wavelog/
 | 
					    chown -R www-data:www-data /opt/wavelog/
 | 
				
			||||||
    find /opt/wavelog/ -type d -exec chmod 755 {} \;
 | 
					    find /opt/wavelog/ -type d -exec chmod 755 {} \;
 | 
				
			||||||
    find /opt/wavelog/ -type f -exec chmod 664 {} \;
 | 
					    find /opt/wavelog/ -type f -exec chmod 664 {} \;
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					 | 
				
			||||||
    msg_ok "Updated ${APP}"
 | 
					    msg_ok "Updated ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting Services"
 | 
					    msg_info "Starting Services"
 | 
				
			||||||
    systemctl start apache2
 | 
					    systemctl start apache2
 | 
				
			||||||
    msg_ok "Started Services"
 | 
					    msg_ok "Started Services"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Cleaning Up"
 | 
					 | 
				
			||||||
    rm -rf ${RELEASE}.zip
 | 
					 | 
				
			||||||
    msg_ok "Cleaned"
 | 
					 | 
				
			||||||
    msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								ct/wikijs.sh
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								ct/wikijs.sh
									
									
									
									
									
								
							@@ -27,8 +27,9 @@ function update_script() {
 | 
				
			|||||||
        msg_error "No ${APP} Installation Found!"
 | 
					        msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					    RELEASE=$(curl -fsSL https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
					    if [[ "${RELEASE}" != "$(cat ~/.wikijs)" ]] || [[ ! -f ~/.wikijs ]]; then
 | 
				
			||||||
        msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite."
 | 
					        msg_info "Verifying whether ${APP}' new release is v3.x+ and current install uses SQLite."
 | 
				
			||||||
        SQLITE_INSTALL=$([ -f /opt/wikijs/db.sqlite ] && echo "true" || echo "false")
 | 
					        SQLITE_INSTALL=$([ -f /opt/wikijs/db.sqlite ] && echo "true" || echo "false")
 | 
				
			||||||
        if [[ "${SQLITE_INSTALL}" == "true" && "${RELEASE}" =~ ^3.* ]]; then
 | 
					        if [[ "${SQLITE_INSTALL}" == "true" && "${RELEASE}" =~ ^3.* ]]; then
 | 
				
			||||||
@@ -47,13 +48,9 @@ function update_script() {
 | 
				
			|||||||
        cp -R /opt/wikijs/{config.yml,/data} /opt/wikijs-backup
 | 
					        cp -R /opt/wikijs/{config.yml,/data} /opt/wikijs-backup
 | 
				
			||||||
        msg_ok "Backed up Data"
 | 
					        msg_ok "Backed up Data"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg_info "Updating ${APP}"
 | 
					 | 
				
			||||||
        rm -rf /opt/wikijs/*
 | 
					        rm -rf /opt/wikijs/*
 | 
				
			||||||
        cd /opt/wikijs
 | 
					        fetch_and_deploy_gh_release "wikijs" "requarks/wiki" "prebuild" "latest" "/opt/wikijs" "wiki-js.tar.gz"
 | 
				
			||||||
        curl -fsSL "https://github.com/requarks/wiki/releases/download/v${RELEASE}/wiki-js.tar.gz" -o $(basename "https://github.com/requarks/wiki/releases/download/v${RELEASE}/wiki-js.tar.gz")
 | 
					        
 | 
				
			||||||
        tar -xzf wiki-js.tar.gz
 | 
					 | 
				
			||||||
        msg_ok "Updated ${APP}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        msg_info "Restoring Data"
 | 
					        msg_info "Restoring Data"
 | 
				
			||||||
        cp -R /opt/wikijs-backup/* /opt/wikijs
 | 
					        cp -R /opt/wikijs-backup/* /opt/wikijs
 | 
				
			||||||
        $SQLITE_INSTALL && $STD npm rebuild sqlite3
 | 
					        $SQLITE_INSTALL && $STD npm rebuild sqlite3
 | 
				
			||||||
@@ -64,9 +61,9 @@ function update_script() {
 | 
				
			|||||||
        msg_ok "Started ${APP}"
 | 
					        msg_ok "Started ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg_info "Cleaning Up"
 | 
					        msg_info "Cleaning Up"
 | 
				
			||||||
        rm -rf /opt/wikijs/wiki-js.tar.gz
 | 
					 | 
				
			||||||
        rm -rf /opt/wikijs-backup
 | 
					        rm -rf /opt/wikijs-backup
 | 
				
			||||||
        msg_ok "Cleanup Completed"
 | 
					        msg_ok "Cleanup Completed"
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        msg_ok "Updated Successfully"
 | 
					        msg_ok "Updated Successfully"
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
					        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,6 +13,7 @@ var_disk="${var_disk:-4}"
 | 
				
			|||||||
var_os="${var_os:-debian}"
 | 
					var_os="${var_os:-debian}"
 | 
				
			||||||
var_version="${var_version:-12}"
 | 
					var_version="${var_version:-12}"
 | 
				
			||||||
var_unprivileged="${var_unprivileged:-1}"
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					var_tun="${var_tun:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
header_info "$APP"
 | 
					header_info "$APP"
 | 
				
			||||||
variables
 | 
					variables
 | 
				
			||||||
@@ -20,20 +21,22 @@ color
 | 
				
			|||||||
catch_errors
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update_script() {
 | 
					function update_script() {
 | 
				
			||||||
    header_info
 | 
					  header_info
 | 
				
			||||||
    check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
    check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
    if [[ ! -d /etc/wireguard ]]; then
 | 
					  if [[ ! -d /etc/wireguard ]]; then
 | 
				
			||||||
        msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
        exit
 | 
					    exit
 | 
				
			||||||
    fi
 | 
					  fi
 | 
				
			||||||
    apt-get update
 | 
					  apt-get update
 | 
				
			||||||
    apt-get -y upgrade
 | 
					  apt-get -y upgrade
 | 
				
			||||||
 | 
					  if [[ -d /etc/wgdashboard ]]; then
 | 
				
			||||||
    sleep 2
 | 
					    sleep 2
 | 
				
			||||||
    cd /etc/wgdashboard/src
 | 
					    cd /etc/wgdashboard/src
 | 
				
			||||||
    ./wgd.sh update
 | 
					    ./wgd.sh update
 | 
				
			||||||
    ./wgd.sh start
 | 
					    ./wgd.sh start
 | 
				
			||||||
    exit
 | 
					  fi
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
start
 | 
					start
 | 
				
			||||||
@@ -42,5 +45,5 @@ description
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} WGDashboard Access it using the following URL:${CL}"
 | 
					echo -e "${INFO}${YW}Access WGDashboard (if installed) using the following URL:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,21 +28,20 @@ function update_script() {
 | 
				
			|||||||
      exit
 | 
					      exit
 | 
				
			||||||
   fi
 | 
					   fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   msg_info "Updating yt-dlp"
 | 
					
 | 
				
			||||||
   $STD yt-dlp -U
 | 
					 | 
				
			||||||
   msg_ok "Updated yt-dlp"
 | 
					 | 
				
			||||||
   RELEASE=$(curl -fsSL https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					   RELEASE=$(curl -fsSL https://api.github.com/repos/marcopiovanello/yt-dlp-web-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
   if [[ "${RELEASE}" != "$(cat /opt/yt-dlp-webui_version.txt)" ]] || [[ ! -f /opt/yt-dlp-webui_version.txt ]]; then
 | 
					   if [[ "${RELEASE}" != "$(cat ~/.yt-dlp-webui)" ]] || [[ ! -f ~/.yt-dlp-webui ]]; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      msg_info "Stopping $APP"
 | 
					      msg_info "Stopping $APP"
 | 
				
			||||||
      systemctl stop yt-dlp-webui
 | 
					      systemctl stop yt-dlp-webui
 | 
				
			||||||
      msg_ok "Stopped $APP"
 | 
					      msg_ok "Stopped $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      msg_info "Updating $APP to v${RELEASE}"
 | 
					      msg_info "Updating yt-dlp"
 | 
				
			||||||
 | 
					      $STD yt-dlp -U
 | 
				
			||||||
 | 
					      msg_ok "Updated yt-dlp"
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
      rm -rf /usr/local/bin/yt-dlp-webui
 | 
					      rm -rf /usr/local/bin/yt-dlp-webui
 | 
				
			||||||
curl -fsSL "https://github.com/marcopiovanello/yt-dlp-web-ui/releases/download/v${RELEASE}/yt-dlp-webui_linux-amd64" -o "/usr/local/bin/yt-dlp-webui"
 | 
					      fetch_and_deploy_gh_release "yt-dlp-webui" "marcopiovanello/yt-dlp-web-ui" "singlefile" "latest" "/usr/local/bin" "yt-dlp-webui_linux-amd64"
 | 
				
			||||||
      chmod +x /usr/local/bin/yt-dlp-webui
 | 
					 | 
				
			||||||
      msg_ok "Updated $APP LXC"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      msg_info "Starting $APP"
 | 
					      msg_info "Starting $APP"
 | 
				
			||||||
      systemctl start yt-dlp-webui
 | 
					      systemctl start yt-dlp-webui
 | 
				
			||||||
@@ -60,4 +59,4 @@ description
 | 
				
			|||||||
msg_ok "Completed Successfully!\n"
 | 
					msg_ok "Completed Successfully!\n"
 | 
				
			||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
					echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
				
			||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
					echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
				
			||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3033${CL}"
 | 
					echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3033${CL}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,36 +32,32 @@ function update_script() {
 | 
				
			|||||||
    $STD npm install -g pnpm@latest
 | 
					    $STD npm install -g pnpm@latest
 | 
				
			||||||
    msg_ok "Installed pnpm"
 | 
					    msg_ok "Installed pnpm"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/diced/zipline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/diced/zipline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					  if [[ ! -f ~/.zipline ]] || [[ "${RELEASE}" != "$(cat ~/.zipline)" ]]; then
 | 
				
			||||||
    msg_info "Stopping ${APP}"
 | 
					    msg_info "Stopping ${APP}"
 | 
				
			||||||
    systemctl stop zipline
 | 
					    systemctl stop zipline
 | 
				
			||||||
    msg_ok "${APP} Stopped"
 | 
					    msg_ok "${APP} Stopped"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
					 | 
				
			||||||
    cp /opt/zipline/.env /opt/
 | 
					 | 
				
			||||||
    mkdir -p /opt/zipline-uploads
 | 
					    mkdir -p /opt/zipline-uploads
 | 
				
			||||||
    if [ -d /opt/zipline/uploads ] && [ "$(ls -A /opt/zipline/uploads)" ]; then
 | 
					    if [ -d /opt/zipline/uploads ] && [ "$(ls -A /opt/zipline/uploads)" ]; then
 | 
				
			||||||
      cp -R /opt/zipline/uploads/* /opt/zipline-uploads/
 | 
					      cp -R /opt/zipline/uploads/* /opt/zipline-uploads/
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    curl -fsSL "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip")
 | 
					    cp /opt/zipline/.env /opt/
 | 
				
			||||||
    $STD unzip v"${RELEASE}".zip
 | 
					 | 
				
			||||||
    rm -R /opt/zipline
 | 
					    rm -R /opt/zipline
 | 
				
			||||||
    mv zipline-"${RELEASE}" /opt/zipline
 | 
					    fetch_and_deploy_gh_release "zipline" "diced/zipline" "tarball"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating ${APP} to ${RELEASE}"
 | 
				
			||||||
    cd /opt/zipline
 | 
					    cd /opt/zipline
 | 
				
			||||||
    mv /opt/.env /opt/zipline/.env
 | 
					    mv /opt/.env /opt/zipline/.env
 | 
				
			||||||
    $STD pnpm install
 | 
					    $STD pnpm install
 | 
				
			||||||
    $STD pnpm build
 | 
					    $STD pnpm build
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					 | 
				
			||||||
    msg_ok "Updated ${APP}"
 | 
					    msg_ok "Updated ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting ${APP}"
 | 
					    msg_info "Starting ${APP}"
 | 
				
			||||||
    systemctl start zipline
 | 
					    systemctl start zipline
 | 
				
			||||||
    msg_ok "Started ${APP}"
 | 
					    msg_ok "Started ${APP}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Cleaning Up"
 | 
					 | 
				
			||||||
    rm -rf v"${RELEASE}".zip
 | 
					 | 
				
			||||||
    msg_ok "Cleaned"
 | 
					 | 
				
			||||||
    msg_ok "Updated Successfully"
 | 
					    msg_ok "Updated Successfully"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,27 +27,24 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/zitadel/zitadel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/zitadel/zitadel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt | grep -oP '\d+\.\d+\.\d+')" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
					  if [[ ! -f ~/.zitadel ]] || [[ "${RELEASE}" != "$(cat ~/.zitadel)" ]]; then
 | 
				
			||||||
    msg_info "Stopping $APP"
 | 
					    msg_info "Stopping $APP"
 | 
				
			||||||
    systemctl stop zitadel
 | 
					    systemctl stop zitadel
 | 
				
			||||||
    msg_ok "Stopped $APP"
 | 
					    msg_ok "Stopped $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rm -f /usr/local/bin/zitadel
 | 
				
			||||||
 | 
					    fetch_and_deploy_gh_release "zitadel" "zitadel/zitadel" "prebuild" "latest" "/usr/local/bin" "zitadel-linux-amd64.tar.gz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
					    msg_info "Updating $APP to ${RELEASE}"
 | 
				
			||||||
    cd /tmp
 | 
					 | 
				
			||||||
    curl -fsSL "https://github.com/zitadel/zitadel/releases/download/v$RELEASE/zitadel-linux-amd64.tar.gz" | tar -xz
 | 
					 | 
				
			||||||
    mv zitadel-linux-amd64/zitadel /usr/local/bin
 | 
					 | 
				
			||||||
    $STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true
 | 
					    $STD zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					 | 
				
			||||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
					    msg_ok "Updated $APP to ${RELEASE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting $APP"
 | 
					    msg_info "Starting $APP"
 | 
				
			||||||
    systemctl start zitadel
 | 
					    systemctl start zitadel
 | 
				
			||||||
    msg_ok "Started $APP"
 | 
					    msg_ok "Started $APP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Cleaning Up"
 | 
					 | 
				
			||||||
    rm -rf /tmp/zitadel-linux-amd64
 | 
					 | 
				
			||||||
    msg_ok "Cleanup Completed"
 | 
					 | 
				
			||||||
    msg_ok "Update Successful"
 | 
					    msg_ok "Update Successful"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								ct/zoraxy.sh
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								ct/zoraxy.sh
									
									
									
									
									
								
							@@ -27,17 +27,21 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/tobychui/zoraxy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					
 | 
				
			||||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/tobychui/zoraxy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
					  if [[ ! -f ~/.zoraxy ]] || [[ "${RELEASE}" != "$(cat ~/.zoraxy)" ]]; then
 | 
				
			||||||
 | 
					    msg_info "Stopping service"
 | 
				
			||||||
    systemctl stop zoraxy
 | 
					    systemctl stop zoraxy
 | 
				
			||||||
    curl -fsSL "https://github.com/tobychui/zoraxy/releases/download/${RELEASE}/zoraxy_linux_amd64" -o $(basename "https://github.com/tobychui/zoraxy/releases/download/${RELEASE}/zoraxy_linux_amd64")
 | 
					    msg_ok "Service stopped"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rm -rf /opt/zoraxy/zoraxy
 | 
					    rm -rf /opt/zoraxy/zoraxy
 | 
				
			||||||
    mv zoraxy_linux_amd64 /opt/zoraxy/zoraxy
 | 
					    fetch_and_deploy_gh_release "zoraxy" "tobychui/zoraxy" "singlefile" "latest" "/opt/zoraxy" "zoraxy_linux_amd64"
 | 
				
			||||||
    chmod +x /opt/zoraxy/zoraxy
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Starting service"
 | 
				
			||||||
    systemctl start zoraxy
 | 
					    systemctl start zoraxy
 | 
				
			||||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
					    msg_ok "Service started"
 | 
				
			||||||
    msg_ok "Updated $APP"
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Updated successfully"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
					    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,25 +23,29 @@ function update_script() {
 | 
				
			|||||||
  header_info
 | 
					  header_info
 | 
				
			||||||
  check_container_storage
 | 
					  check_container_storage
 | 
				
			||||||
  check_container_resources
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					 | 
				
			||||||
  if [[ ! -f /usr/bin/zot ]]; then
 | 
					  if [[ ! -f /usr/bin/zot ]]; then
 | 
				
			||||||
    msg_error "No ${APP} installation found!"
 | 
					    msg_error "No ${APP} installation found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/project-zot/zot/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/project-zot/zot/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
 | 
				
			||||||
  if [[ ! -f ~/.${APP} ]] || [[ "${RELEASE}" != "$(cat ~/.${APP})" ]]; then
 | 
					  if [[ ! -f ~/.${APP} ]] || [[ "${RELEASE}" != "$(cat ~/.${APP})" ]]; then
 | 
				
			||||||
    msg_info "Stopping Zot service"
 | 
					    msg_info "Stopping Zot service"
 | 
				
			||||||
    systemctl stop zot
 | 
					    systemctl stop zot
 | 
				
			||||||
    msg_ok "Stopped Zot service"
 | 
					    msg_ok "Stopped Zot service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating Zot to ${RELEASE}"
 | 
					    rm -f /usr/bin/zot
 | 
				
			||||||
    curl -fsSL "https://github.com/project-zot/zot/releases/download/${RELEASE}/zot-linux-amd64" -o /usr/bin/zot
 | 
					    fetch_and_deploy_gh_release "zot" "project-zot/zot" "singlefile" "latest" "/usr/bin" "zot-linux-amd64"
 | 
				
			||||||
    chmod +x /usr/bin/zot
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Configuring Zot Registry"
 | 
				
			||||||
    chown root:root /usr/bin/zot
 | 
					    chown root:root /usr/bin/zot
 | 
				
			||||||
    echo "${RELEASE}" >~/.${APP}
 | 
					    msg_ok "Configured Zot Registry"
 | 
				
			||||||
    systemctl restart zot
 | 
					
 | 
				
			||||||
    msg_ok "Updated Zot to ${RELEASE}"
 | 
					    msg_info "Starting service"
 | 
				
			||||||
 | 
					    systemctl start zot
 | 
				
			||||||
 | 
					    msg_ok "Service started"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Updated successfuly"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "Zot is already up to date (${RELEASE})"
 | 
					    msg_ok "Zot is already up to date (${RELEASE})"
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,27 +27,24 @@ function update_script() {
 | 
				
			|||||||
    msg_error "No ${APP} Installation Found!"
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
  fi
 | 
					  fi
 | 
				
			||||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
					  
 | 
				
			||||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
					  RELEASE=$(curl -fsSL https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
				
			||||||
 | 
					  if [[ ! -f ~/.zwave-js-ui ]] || [[ "${RELEASE}" != "$(cat ~/.zwave-js-ui)" ]]; then
 | 
				
			||||||
    msg_info "Stopping Service"
 | 
					    msg_info "Stopping Service"
 | 
				
			||||||
    systemctl stop zwave-js-ui
 | 
					    systemctl stop zwave-js-ui
 | 
				
			||||||
    msg_ok "Stopped Service"
 | 
					    msg_ok "Stopped Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Updating Z-Wave JS UI"
 | 
					 | 
				
			||||||
    rm -rf /opt/zwave-js-ui/*
 | 
					    rm -rf /opt/zwave-js-ui/*
 | 
				
			||||||
    cd /opt/zwave-js-ui
 | 
					    fetch_and_deploy_gh_release "zwave-js-ui" "zwave-js/zwave-js-ui" "prebuild" "latest" "/opt/zwave-js-ui" "zwave-js-ui*-linux.zip"
 | 
				
			||||||
    curl -fsSL "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip" -o $(basename "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip")
 | 
					 | 
				
			||||||
    $STD unzip zwave-js-ui-${RELEASE}-linux.zip
 | 
					 | 
				
			||||||
    msg_ok "Updated Z-Wave JS UI"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Starting Service"
 | 
					    msg_info "Starting Service"
 | 
				
			||||||
    systemctl start zwave-js-ui
 | 
					    systemctl start zwave-js-ui
 | 
				
			||||||
    msg_ok "Started Service"
 | 
					    msg_ok "Started Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_info "Cleanup"
 | 
					    msg_info "Cleanup"
 | 
				
			||||||
    rm -rf /opt/zwave-js-ui/zwave-js-ui-${RELEASE}-linux.zip
 | 
					 | 
				
			||||||
    rm -rf /opt/zwave-js-ui/store
 | 
					    rm -rf /opt/zwave-js-ui/store
 | 
				
			||||||
    msg_ok "Cleaned"
 | 
					    msg_ok "Cleaned"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    msg_ok "Updated Successfully!\n"
 | 
					    msg_ok "Updated Successfully!\n"
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    msg_ok "No update required.  ${APP} is already at ${RELEASE}."
 | 
					    msg_ok "No update required.  ${APP} is already at ${RELEASE}."
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "date_created": "2024-05-02",
 | 
					  "date_created": "2024-05-02",
 | 
				
			||||||
  "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
  "updateable": false,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": true,
 | 
					  "privileged": true,
 | 
				
			||||||
  "interface_port": 8090,
 | 
					  "interface_port": 8090,
 | 
				
			||||||
  "documentation": "https://www.ispyconnect.com/docs/agent/about",
 | 
					  "documentation": "https://www.ispyconnect.com/docs/agent/about",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@
 | 
				
			|||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": 80,
 | 
					  "interface_port": 80,
 | 
				
			||||||
  "documentation": null,
 | 
					  "documentation": null,
 | 
				
			||||||
  "website": "https://it-tools.tech/",
 | 
					  "website": "https://sharevb-it-tools.vercel.app/",
 | 
				
			||||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/it-tools.webp",
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/it-tools.webp",
 | 
				
			||||||
  "config_path": "",
 | 
					  "config_path": "",
 | 
				
			||||||
  "description": "IT-Tools is a web-based suite of utilities designed to streamline and simplify various IT tasks, providing tools for developers and system administrators to manage their workflows efficiently.",
 | 
					  "description": "IT-Tools is a web-based suite of utilities designed to streamline and simplify various IT tasks, providing tools for developers and system administrators to manage their workflows efficiently.",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "date_created": "2024-05-02",
 | 
					  "date_created": "2024-05-02",
 | 
				
			||||||
  "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
  "updateable": false,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": 6767,
 | 
					  "interface_port": 6767,
 | 
				
			||||||
  "documentation": "https://wiki.bazarr.media/",
 | 
					  "documentation": "https://wiki.bazarr.media/",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,8 +9,8 @@
 | 
				
			|||||||
  "updateable": true,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": 6060,
 | 
					  "interface_port": 6060,
 | 
				
			||||||
  "documentation": "https://github.com/adityachandelgit/BookLore",
 | 
					  "documentation": "https://booklore-app.github.io/booklore-docs/docs/getting-started",
 | 
				
			||||||
  "website": "https://github.com/adityachandelgit/BookLore",
 | 
					  "website": "https://github.com/booklore-app/booklore",
 | 
				
			||||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/booklore.webp",
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/booklore.webp",
 | 
				
			||||||
  "config_path": "/opt/booklore_storage/.env",
 | 
					  "config_path": "/opt/booklore_storage/.env",
 | 
				
			||||||
  "description": "BookLore is a self-hosted digital library for managing and reading books, offering a beautiful interface and support for metadata management. Built with a modern tech stack, it provides support for importing, organizing, and reading EPUBs and PDFs, while also managing cover images and book metadata.",
 | 
					  "description": "BookLore is a self-hosted digital library for managing and reading books, offering a beautiful interface and support for metadata management. Built with a modern tech stack, it provides support for importing, organizing, and reading EPUBs and PDFs, while also managing cover images and book metadata.",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "date_created": "2024-05-02",
 | 
					  "date_created": "2024-05-02",
 | 
				
			||||||
  "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
  "updateable": false,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": null,
 | 
					  "interface_port": null,
 | 
				
			||||||
  "documentation": null,
 | 
					  "documentation": null,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@
 | 
				
			|||||||
  "website": "https://docmost.com/",
 | 
					  "website": "https://docmost.com/",
 | 
				
			||||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/docmost.webp",
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/docmost.webp",
 | 
				
			||||||
  "config_path": "/opt/docmost/.env",
 | 
					  "config_path": "/opt/docmost/.env",
 | 
				
			||||||
  "description": "Open-source collaborative wiki and documentation software Create, collaborate, and share knowledge seamlessly with Docmost. Ideal for managing your wiki, knowledge-base, documentation and a lot more.",
 | 
					  "description": "Open-source collaborative wiki and documentation software. Create, collaborate, and share knowledge seamlessly with Docmost. Ideal for managing your wiki, knowledge-base, documentation and a lot more.",
 | 
				
			||||||
  "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "type": "default",
 | 
					      "type": "default",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,52 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "name": "Home Assistant Core",
 | 
					 | 
				
			||||||
    "slug": "homeassistant-core",
 | 
					 | 
				
			||||||
    "categories": [
 | 
					 | 
				
			||||||
        16
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "date_created": "2025-01-17",
 | 
					 | 
				
			||||||
    "type": "ct",
 | 
					 | 
				
			||||||
    "updateable": true,
 | 
					 | 
				
			||||||
    "privileged": false,
 | 
					 | 
				
			||||||
    "interface_port": 8123,
 | 
					 | 
				
			||||||
    "documentation": "https://www.home-assistant.io/docs/",
 | 
					 | 
				
			||||||
    "website": "https://www.home-assistant.io/",
 | 
					 | 
				
			||||||
    "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
 | 
					 | 
				
			||||||
    "config_path": "/root/.homeassistant",
 | 
					 | 
				
			||||||
    "description": "A standalone installation of Home Assistant Core refers to a setup where the Home Assistant Core software is installed directly on a device or operating system, without the use of Docker containers. This provides a simpler, but less flexible and scalable solution, as the software is tightly coupled with the underlying system.",
 | 
					 | 
				
			||||||
    "install_methods": [
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "type": "default",
 | 
					 | 
				
			||||||
            "script": "ct/homeassistant-core.sh",
 | 
					 | 
				
			||||||
            "resources": {
 | 
					 | 
				
			||||||
                "cpu": 2,
 | 
					 | 
				
			||||||
                "ram": 2048,
 | 
					 | 
				
			||||||
                "hdd": 10,
 | 
					 | 
				
			||||||
                "os": "ubuntu",
 | 
					 | 
				
			||||||
                "version": "24.10"
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "default_credentials": {
 | 
					 | 
				
			||||||
        "username": null,
 | 
					 | 
				
			||||||
        "password": null
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "notes": [
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
 | 
					 | 
				
			||||||
            "type": "warning"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "text": "Requires PVE 8.2.2 with kernel 6.8.4-3-pve or newer",
 | 
					 | 
				
			||||||
            "type": "warning"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "text": "Deprecation-Warning: This Core-based setup will be deprecated by August 2025. Use Home Assistant OS is strongly recommended to ensure long-term stability and updates.",
 | 
					 | 
				
			||||||
            "type": "warning"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "text": "config path: `/root/.homeassistant`",
 | 
					 | 
				
			||||||
            "type": "info"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										40
									
								
								frontend/public/json/hortusfox.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/hortusfox.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "HortusFox",
 | 
				
			||||||
 | 
					  "slug": "hortusfox",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    24
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "date_created": "2025-08-08",
 | 
				
			||||||
 | 
					  "config_path": "/opt/hortusfox/.env",
 | 
				
			||||||
 | 
					  "interface_port": 80,
 | 
				
			||||||
 | 
					  "documentation": "https://github.com/danielbrendel/hortusfox-web",
 | 
				
			||||||
 | 
					  "website": "https://www.hortusfox.com/",
 | 
				
			||||||
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/hortusfox.webp",
 | 
				
			||||||
 | 
					  "description": "HortusFox is a collaborative plant management system for plant enthusiasts. Manage, document and track your entire plant collection – self-hosted and privacy-friendly.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/hortusfox.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 2,
 | 
				
			||||||
 | 
					        "ram": 2048,
 | 
				
			||||||
 | 
					        "hdd": 5,
 | 
				
			||||||
 | 
					        "os": "Debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Login Credentials : `cat ~/hortusfox.creds`",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
  "name": "Jenkins",
 | 
					  "name": "Jenkins",
 | 
				
			||||||
  "slug": "jenkins",
 | 
					  "slug": "jenkins",
 | 
				
			||||||
  "categories": [
 | 
					  "categories": [
 | 
				
			||||||
    22
 | 
					    20
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "date_created": "2024-12-26",
 | 
					  "date_created": "2024-12-26",
 | 
				
			||||||
  "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										40
									
								
								frontend/public/json/ots.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/ots.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "OTS",
 | 
				
			||||||
 | 
					  "slug": "ots",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    6
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-08-04",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 443,
 | 
				
			||||||
 | 
					  "documentation": "https://github.com/Luzifer/ots/wiki",
 | 
				
			||||||
 | 
					  "config_path": "/opt/ots/.env",
 | 
				
			||||||
 | 
					  "website": "https://github.com/Luzifer/ots",
 | 
				
			||||||
 | 
					  "logo": null,
 | 
				
			||||||
 | 
					  "description": "One-Time-Secret sharing platform with a symmetric 256bit AES encryption in the browser.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/ots.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 512,
 | 
				
			||||||
 | 
					        "hdd": 3,
 | 
				
			||||||
 | 
					        "os": "Debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "When it is in used external please use it behind reverse proxy or create your own certificates",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -6,7 +6,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "date_created": "2024-05-02",
 | 
					  "date_created": "2024-05-02",
 | 
				
			||||||
  "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
  "updateable": false,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": 3000,
 | 
					  "interface_port": 3000,
 | 
				
			||||||
  "documentation": "https://github.com/schlagmichdoch/PairDrop/blob/master/docs/host-your-own.md",
 | 
					  "documentation": "https://github.com/schlagmichdoch/PairDrop/blob/master/docs/host-your-own.md",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										48
									
								
								frontend/public/json/palmr.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								frontend/public/json/palmr.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Palmr",
 | 
				
			||||||
 | 
					  "slug": "palmr",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    11
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-08-08",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 3000,
 | 
				
			||||||
 | 
					  "documentation": "https://palmr.kyantech.com.br/docs/3.1-beta",
 | 
				
			||||||
 | 
					  "config_path": "/opt/palmr/apps/server/.env, /opt/palmr/apps/web/.env",
 | 
				
			||||||
 | 
					  "website": "https://palmr.kyantech.com.br/",
 | 
				
			||||||
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/palmr.webp",
 | 
				
			||||||
 | 
					  "description": "Palmr is a fast and secure platform for sharing files, built with performance and privacy in mind.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/palmr.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 4,
 | 
				
			||||||
 | 
					        "ram": 6144,
 | 
				
			||||||
 | 
					        "hdd": 6,
 | 
				
			||||||
 | 
					        "os": "Debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "This LXC is very memory-hungry when updating; it requires at least 6GB RAM, but RAM may be reduced to as low as 2GB when running normally",
 | 
				
			||||||
 | 
					      "type": "warning"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "To use a bind mount for storage, create symlinks to your mount for both `uploads` and `temp-uploads` in `/opt/palmr_data`",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "To use Palmr with a reverse proxy, uncomment `SECURE_SITE` in `/opt/palmr/apps/server/.env`",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -21,7 +21,7 @@
 | 
				
			|||||||
      "resources": {
 | 
					      "resources": {
 | 
				
			||||||
        "cpu": 2,
 | 
					        "cpu": 2,
 | 
				
			||||||
        "ram": 2048,
 | 
					        "ram": 2048,
 | 
				
			||||||
        "hdd": 12,
 | 
					        "hdd": 20,
 | 
				
			||||||
        "os": "debian",
 | 
					        "os": "debian",
 | 
				
			||||||
        "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
  "documentation": null,
 | 
					  "documentation": null,
 | 
				
			||||||
  "website": "https://github.com/rcourtman/Pulse",
 | 
					  "website": "https://github.com/rcourtman/Pulse",
 | 
				
			||||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/pulse.webp",
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/pulse.webp",
 | 
				
			||||||
  "config_path": "/opt/pulse/.env",
 | 
					  "config_path": "/etc/pulse",
 | 
				
			||||||
  "description": "A lightweight monitoring application for Proxmox VE that displays real-time status for VMs and containers via a simple web interface.",
 | 
					  "description": "A lightweight monitoring application for Proxmox VE that displays real-time status for VMs and containers via a simple web interface.",
 | 
				
			||||||
  "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -39,6 +39,10 @@
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
      "text": "After installation, access the web interface to configure your Proxmox connection details through the built-in setup wizard",
 | 
					      "text": "After installation, access the web interface to configure your Proxmox connection details through the built-in setup wizard",
 | 
				
			||||||
      "type": "Info"
 | 
					      "type": "Info"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Configure authentication in the Web UI => Settings => Security",
 | 
				
			||||||
 | 
					      "type": "Info"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,8 +28,8 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "default_credentials": {
 | 
					  "default_credentials": {
 | 
				
			||||||
    "username": null,
 | 
					    "username": "proxmox",
 | 
				
			||||||
    "password": null
 | 
					    "password": "proxmox"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "notes": []
 | 
					  "notes": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@
 | 
				
			|||||||
      "script": "ct/reactive-resume.sh",
 | 
					      "script": "ct/reactive-resume.sh",
 | 
				
			||||||
      "resources": {
 | 
					      "resources": {
 | 
				
			||||||
        "cpu": 2,
 | 
					        "cpu": 2,
 | 
				
			||||||
        "ram": 3072,
 | 
					        "ram": 4096,
 | 
				
			||||||
        "hdd": 8,
 | 
					        "hdd": 8,
 | 
				
			||||||
        "os": "Debian",
 | 
					        "os": "Debian",
 | 
				
			||||||
        "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,35 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "name": "SearXNG",
 | 
					 | 
				
			||||||
  "slug": "searxng",
 | 
					 | 
				
			||||||
  "categories": [
 | 
					 | 
				
			||||||
    0
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "date_created": "2025-02-07",
 | 
					 | 
				
			||||||
  "type": "ct",
 | 
					 | 
				
			||||||
  "updateable": true,
 | 
					 | 
				
			||||||
  "privileged": false,
 | 
					 | 
				
			||||||
  "interface_port": 8888,
 | 
					 | 
				
			||||||
  "documentation": "https://docs.searxng.org/",
 | 
					 | 
				
			||||||
  "website": "https://github.com/searxng/searxng",
 | 
					 | 
				
			||||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/searxng.webp",
 | 
					 | 
				
			||||||
  "config_path": "/etc/searxng/settings.yml",
 | 
					 | 
				
			||||||
  "description": "SearXNG is a free internet metasearch engine which aggregates results from up to 215 search services. Users are neither tracked nor profiled. Additionally, SearXNG can be used over Tor for online anonymity.",
 | 
					 | 
				
			||||||
  "install_methods": [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "type": "default",
 | 
					 | 
				
			||||||
      "script": "ct/searxng.sh",
 | 
					 | 
				
			||||||
      "resources": {
 | 
					 | 
				
			||||||
        "cpu": 2,
 | 
					 | 
				
			||||||
        "ram": 2048,
 | 
					 | 
				
			||||||
        "hdd": 7,
 | 
					 | 
				
			||||||
        "os": "debian",
 | 
					 | 
				
			||||||
        "version": "12"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "default_credentials": {
 | 
					 | 
				
			||||||
    "username": null,
 | 
					 | 
				
			||||||
    "password": null
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "notes": []
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -9,7 +9,7 @@
 | 
				
			|||||||
  "updateable": true,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": 7912,
 | 
					  "interface_port": 7912,
 | 
				
			||||||
  "documentation": null,
 | 
					  "documentation": "https://github.com/Donkie/Spoolman/wiki/Installation",
 | 
				
			||||||
  "website": "https://github.com/Donkie/Spoolman",
 | 
					  "website": "https://github.com/Donkie/Spoolman",
 | 
				
			||||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/spoolman.webp",
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/spoolman.webp",
 | 
				
			||||||
  "config_path": "/opt/spoolman/.env",
 | 
					  "config_path": "/opt/spoolman/.env",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										44
									
								
								frontend/public/json/tududi.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								frontend/public/json/tududi.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Tududi",
 | 
				
			||||||
 | 
					  "slug": "tududi",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    12
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-08-04",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 3002,
 | 
				
			||||||
 | 
					  "documentation": null,
 | 
				
			||||||
 | 
					  "config_path": "/opt/tududi/backend/.env",
 | 
				
			||||||
 | 
					  "website": "https://tududi.com/",
 | 
				
			||||||
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tududi.webp",
 | 
				
			||||||
 | 
					  "description": "Self-hosted task management with functional programming architecture, hierarchical organization, and multi-language support.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/tududi.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 2,
 | 
				
			||||||
 | 
					        "ram": 2048,
 | 
				
			||||||
 | 
					        "hdd": 4,
 | 
				
			||||||
 | 
					        "os": "Debian",
 | 
				
			||||||
 | 
					        "version": "12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Create users like this: `cd /opt/tududi` => `npm run user:create <email> <password>`",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Database location: `/opt/tududi-db`. Uploads: `/opt/tududi-uploads`",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,40 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "name": "Ubuntu 24.10",
 | 
					 | 
				
			||||||
  "slug": "ubuntu2410-vm",
 | 
					 | 
				
			||||||
  "categories": [
 | 
					 | 
				
			||||||
    2
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "date_created": "2025-01-24",
 | 
					 | 
				
			||||||
  "type": "vm",
 | 
					 | 
				
			||||||
  "updateable": true,
 | 
					 | 
				
			||||||
  "privileged": false,
 | 
					 | 
				
			||||||
  "interface_port": null,
 | 
					 | 
				
			||||||
  "documentation": null,
 | 
					 | 
				
			||||||
  "website": "https://ubuntu.com/",
 | 
					 | 
				
			||||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/ubuntu.webp",
 | 
					 | 
				
			||||||
  "config_path": "",
 | 
					 | 
				
			||||||
  "description": "Ubuntu is a distribution based on Debian, designed to have regular releases and a consistent user experience.",
 | 
					 | 
				
			||||||
  "install_methods": [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "type": "default",
 | 
					 | 
				
			||||||
      "script": "vm/ubuntu2410-vm.sh",
 | 
					 | 
				
			||||||
      "resources": {
 | 
					 | 
				
			||||||
        "cpu": 2,
 | 
					 | 
				
			||||||
        "ram": 2048,
 | 
					 | 
				
			||||||
        "hdd": 8,
 | 
					 | 
				
			||||||
        "os": null,
 | 
					 | 
				
			||||||
        "version": null
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "default_credentials": {
 | 
					 | 
				
			||||||
    "username": null,
 | 
					 | 
				
			||||||
    "password": null
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "notes": [
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      "text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
 | 
					 | 
				
			||||||
      "type": "info"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,35 +1,35 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "name": "Uptime Kuma",
 | 
					  "name": "Uptime Kuma",
 | 
				
			||||||
    "slug": "uptimekuma",
 | 
					  "slug": "uptimekuma",
 | 
				
			||||||
    "categories": [
 | 
					  "categories": [
 | 
				
			||||||
        9
 | 
					    9
 | 
				
			||||||
    ],
 | 
					  ],
 | 
				
			||||||
    "date_created": "2024-05-02",
 | 
					  "date_created": "2024-05-02",
 | 
				
			||||||
    "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
    "updateable": true,
 | 
					  "updateable": true,
 | 
				
			||||||
    "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
    "interface_port": 3001,
 | 
					  "interface_port": 3001,
 | 
				
			||||||
    "documentation": null,
 | 
					  "documentation": "https://github.com/louislam/uptime-kuma/wiki",
 | 
				
			||||||
    "website": "https://github.com/louislam/uptime-kuma#uptime-kuma",
 | 
					  "website": "https://github.com/louislam/uptime-kuma#uptime-kuma",
 | 
				
			||||||
    "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/uptime-kuma.webp",
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/uptime-kuma.webp",
 | 
				
			||||||
    "config_path": "",
 | 
					  "config_path": "",
 | 
				
			||||||
    "description": "Uptime Kuma is a monitoring and alerting system that tracks the availability and performance of servers, websites, and other internet-connected devices. It can be self-hosted and is open-source, offering a visually appealing interface for monitoring and receiving notifications about downtime events.",
 | 
					  "description": "Uptime Kuma is a monitoring and alerting system that tracks the availability and performance of servers, websites, and other internet-connected devices. It can be self-hosted and is open-source, offering a visually appealing interface for monitoring and receiving notifications about downtime events.",
 | 
				
			||||||
    "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
        {
 | 
					    {
 | 
				
			||||||
            "type": "default",
 | 
					      "type": "default",
 | 
				
			||||||
            "script": "ct/uptimekuma.sh",
 | 
					      "script": "ct/uptimekuma.sh",
 | 
				
			||||||
            "resources": {
 | 
					      "resources": {
 | 
				
			||||||
                "cpu": 1,
 | 
					        "cpu": 1,
 | 
				
			||||||
                "ram": 1024,
 | 
					        "ram": 1024,
 | 
				
			||||||
                "hdd": 4,
 | 
					        "hdd": 4,
 | 
				
			||||||
                "os": "debian",
 | 
					        "os": "debian",
 | 
				
			||||||
                "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
            }
 | 
					      }
 | 
				
			||||||
        }
 | 
					    }
 | 
				
			||||||
    ],
 | 
					  ],
 | 
				
			||||||
    "default_credentials": {
 | 
					  "default_credentials": {
 | 
				
			||||||
        "username": null,
 | 
					    "username": null,
 | 
				
			||||||
        "password": null
 | 
					    "password": null
 | 
				
			||||||
    },
 | 
					  },
 | 
				
			||||||
    "notes": []
 | 
					  "notes": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@
 | 
				
			|||||||
      "resources": {
 | 
					      "resources": {
 | 
				
			||||||
        "cpu": 4,
 | 
					        "cpu": 4,
 | 
				
			||||||
        "ram": 6144,
 | 
					        "ram": 6144,
 | 
				
			||||||
        "hdd": 6,
 | 
					        "hdd": 20,
 | 
				
			||||||
        "os": "debian",
 | 
					        "os": "debian",
 | 
				
			||||||
        "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -31,5 +31,10 @@
 | 
				
			|||||||
    "username": null,
 | 
					    "username": null,
 | 
				
			||||||
    "password": null
 | 
					    "password": null
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "notes": []
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Included option to install VictoriaLogs.",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
  "documentation": "https://github.com/wavelog/wavelog/wiki",
 | 
					  "documentation": "https://github.com/wavelog/wavelog/wiki",
 | 
				
			||||||
  "website": "https://www.wavelog.org/",
 | 
					  "website": "https://www.wavelog.org/",
 | 
				
			||||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wavelog.webp",
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wavelog.webp",
 | 
				
			||||||
  "config_path": "",
 | 
					  "config_path": "/opt/wavelog/application/config/config.php",
 | 
				
			||||||
  "description": "Wavelog is a self-hosted PHP application that allows you to log your amateur radio contacts anywhere. All you need is a web browser and active internet connection.",
 | 
					  "description": "Wavelog is a self-hosted PHP application that allows you to log your amateur radio contacts anywhere. All you need is a web browser and active internet connection.",
 | 
				
			||||||
  "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,35 +1,35 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "name": "Wiki.js",
 | 
					  "name": "Wiki.js",
 | 
				
			||||||
    "slug": "wikijs",
 | 
					  "slug": "wikijs",
 | 
				
			||||||
    "categories": [
 | 
					  "categories": [
 | 
				
			||||||
        12
 | 
					    12
 | 
				
			||||||
    ],
 | 
					  ],
 | 
				
			||||||
    "date_created": "2024-05-02",
 | 
					  "date_created": "2024-05-02",
 | 
				
			||||||
    "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
    "updateable": true,
 | 
					  "updateable": true,
 | 
				
			||||||
    "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
    "interface_port": 3000,
 | 
					  "interface_port": 3000,
 | 
				
			||||||
    "documentation": null,
 | 
					  "documentation": "https://docs.requarks.io/",
 | 
				
			||||||
    "website": "https://js.wiki/",
 | 
					  "website": "https://js.wiki/",
 | 
				
			||||||
    "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wiki-js.webp",
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/wiki-js.webp",
 | 
				
			||||||
    "config_path": "/opt/wikijs/config.yml",
 | 
					  "config_path": "/opt/wikijs/config.yml",
 | 
				
			||||||
    "description": "Wiki.js is a free, open-source, and modern wiki application built using Node.js. It is designed to be fast, easy to use, and flexible, with a range of features for collaboration, knowledge management, and content creation. Wiki.js supports Markdown syntax for editing pages, and includes features such as version control, page history, and access control, making it easy to manage content and collaborate with others. The software is fully customizable, with a range of themes and extensions available, and can be deployed on a local server or in the cloud, making it an ideal choice for small teams and organizations looking to create and manage a wiki. Wiki.js provides a modern, user-friendly interface, and supports a range of data sources, including local file systems, databases, and cloud storage services.",
 | 
					  "description": "Wiki.js is a free, open-source, and modern wiki application built using Node.js. It is designed to be fast, easy to use, and flexible, with a range of features for collaboration, knowledge management, and content creation. Wiki.js supports Markdown syntax for editing pages, and includes features such as version control, page history, and access control, making it easy to manage content and collaborate with others. The software is fully customizable, with a range of themes and extensions available, and can be deployed on a local server or in the cloud, making it an ideal choice for small teams and organizations looking to create and manage a wiki. Wiki.js provides a modern, user-friendly interface, and supports a range of data sources, including local file systems, databases, and cloud storage services.",
 | 
				
			||||||
    "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
        {
 | 
					    {
 | 
				
			||||||
            "type": "default",
 | 
					      "type": "default",
 | 
				
			||||||
            "script": "ct/wikijs.sh",
 | 
					      "script": "ct/wikijs.sh",
 | 
				
			||||||
            "resources": {
 | 
					      "resources": {
 | 
				
			||||||
                "cpu": 2,
 | 
					        "cpu": 2,
 | 
				
			||||||
                "ram": 2048,
 | 
					        "ram": 2048,
 | 
				
			||||||
                "hdd": 7,
 | 
					        "hdd": 7,
 | 
				
			||||||
                "os": "debian",
 | 
					        "os": "debian",
 | 
				
			||||||
                "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
            }
 | 
					      }
 | 
				
			||||||
        }
 | 
					    }
 | 
				
			||||||
    ],
 | 
					  ],
 | 
				
			||||||
    "default_credentials": {
 | 
					  "default_credentials": {
 | 
				
			||||||
        "username": null,
 | 
					    "username": null,
 | 
				
			||||||
        "password": null
 | 
					    "password": null
 | 
				
			||||||
    },
 | 
					  },
 | 
				
			||||||
    "notes": []
 | 
					  "notes": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,6 +46,10 @@
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
      "text": "Wireguard and WGDashboard are not the same. More info: `https://docs.wgdashboard.dev/what-is-wireguard-what-is-wgdashboard.html`",
 | 
					      "text": "Wireguard and WGDashboard are not the same. More info: `https://docs.wgdashboard.dev/what-is-wireguard-what-is-wgdashboard.html`",
 | 
				
			||||||
      "type": "info"
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "WGDashboard installation is optional.`",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@
 | 
				
			|||||||
  "updateable": true,
 | 
					  "updateable": true,
 | 
				
			||||||
  "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
  "interface_port": 3000,
 | 
					  "interface_port": 3000,
 | 
				
			||||||
  "documentation": null,
 | 
					  "documentation": "https://zipline.diced.sh/docs/get-started",
 | 
				
			||||||
  "website": "https://zipline.diced.sh/",
 | 
					  "website": "https://zipline.diced.sh/",
 | 
				
			||||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zipline.webp",
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zipline.webp",
 | 
				
			||||||
  "config_path": "/opt/zipline/.env",
 | 
					  "config_path": "/opt/zipline/.env",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,35 +1,35 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "name": "Zoraxy",
 | 
					  "name": "Zoraxy",
 | 
				
			||||||
    "slug": "zoraxy",
 | 
					  "slug": "zoraxy",
 | 
				
			||||||
    "categories": [
 | 
					  "categories": [
 | 
				
			||||||
        4
 | 
					    4
 | 
				
			||||||
    ],
 | 
					  ],
 | 
				
			||||||
    "date_created": "2024-05-02",
 | 
					  "date_created": "2024-05-02",
 | 
				
			||||||
    "type": "ct",
 | 
					  "type": "ct",
 | 
				
			||||||
    "updateable": true,
 | 
					  "updateable": true,
 | 
				
			||||||
    "privileged": false,
 | 
					  "privileged": false,
 | 
				
			||||||
    "interface_port": 8000,
 | 
					  "interface_port": 8000,
 | 
				
			||||||
    "documentation": null,
 | 
					  "documentation": "https://github.com/tobychui/zoraxy/wiki",
 | 
				
			||||||
    "website": "https://zoraxy.aroz.org/",
 | 
					  "website": "https://zoraxy.aroz.org/",
 | 
				
			||||||
    "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zoraxy.webp",
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/zoraxy.webp",
 | 
				
			||||||
    "config_path": "",
 | 
					  "config_path": "",
 | 
				
			||||||
    "description": "Zoraxy is an all in one homelab network routing solution.",
 | 
					  "description": "Zoraxy is an all in one homelab network routing solution.",
 | 
				
			||||||
    "install_methods": [
 | 
					  "install_methods": [
 | 
				
			||||||
        {
 | 
					    {
 | 
				
			||||||
            "type": "default",
 | 
					      "type": "default",
 | 
				
			||||||
            "script": "ct/zoraxy.sh",
 | 
					      "script": "ct/zoraxy.sh",
 | 
				
			||||||
            "resources": {
 | 
					      "resources": {
 | 
				
			||||||
                "cpu": 2,
 | 
					        "cpu": 2,
 | 
				
			||||||
                "ram": 2048,
 | 
					        "ram": 2048,
 | 
				
			||||||
                "hdd": 6,
 | 
					        "hdd": 6,
 | 
				
			||||||
                "os": "debian",
 | 
					        "os": "debian",
 | 
				
			||||||
                "version": "12"
 | 
					        "version": "12"
 | 
				
			||||||
            }
 | 
					      }
 | 
				
			||||||
        }
 | 
					    }
 | 
				
			||||||
    ],
 | 
					  ],
 | 
				
			||||||
    "default_credentials": {
 | 
					  "default_credentials": {
 | 
				
			||||||
        "username": null,
 | 
					    "username": null,
 | 
				
			||||||
        "password": null
 | 
					    "password": null
 | 
				
			||||||
    },
 | 
					  },
 | 
				
			||||||
    "notes": []
 | 
					  "notes": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,7 @@ cd /opt/agentdvr/agent
 | 
				
			|||||||
curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
 | 
					curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
 | 
				
			||||||
$STD unzip Agent_Linux64*.zip
 | 
					$STD unzip Agent_Linux64*.zip
 | 
				
			||||||
chmod +x ./Agent
 | 
					chmod +x ./Agent
 | 
				
			||||||
 | 
					echo $RELEASE > ~/.agentdvr
 | 
				
			||||||
msg_ok "Installed AgentDVR"
 | 
					msg_ok "Installed AgentDVR"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Creating Service"
 | 
					msg_info "Creating Service"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,17 +14,17 @@ network_check
 | 
				
			|||||||
update_os
 | 
					update_os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Installing Dependencies"
 | 
					msg_info "Installing Dependencies"
 | 
				
			||||||
$STD apk add nginx
 | 
					$STD apk add --no-cache \
 | 
				
			||||||
 | 
					  nginx \
 | 
				
			||||||
 | 
					  python3
 | 
				
			||||||
msg_ok "Installed Dependencies"
 | 
					msg_ok "Installed Dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Installing IT-Tools"
 | 
					msg_info "Installing IT-Tools"
 | 
				
			||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
 | 
					RELEASE=$(curl -fsSL https://api.github.com/repos/sharevb/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
 | 
				
			||||||
DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
 | 
					curl -fsSL "https://github.com/sharevb/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" -o it-tools.zip
 | 
				
			||||||
 | 
					 | 
				
			||||||
curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
					 | 
				
			||||||
mkdir -p /usr/share/nginx/html
 | 
					mkdir -p /usr/share/nginx/html
 | 
				
			||||||
$STD unzip it-tools.zip -d /tmp/it-tools
 | 
					$STD unzip it-tools.zip -d /tmp/
 | 
				
			||||||
cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
					mv /tmp/dist/* /usr/share/nginx/html
 | 
				
			||||||
cat <<'EOF' >/etc/nginx/http.d/default.conf
 | 
					cat <<'EOF' >/etc/nginx/http.d/default.conf
 | 
				
			||||||
server {
 | 
					server {
 | 
				
			||||||
  listen 80;
 | 
					  listen 80;
 | 
				
			||||||
@@ -39,14 +39,14 @@ server {
 | 
				
			|||||||
EOF
 | 
					EOF
 | 
				
			||||||
$STD rc-update add nginx default
 | 
					$STD rc-update add nginx default
 | 
				
			||||||
$STD rc-service nginx start
 | 
					$STD rc-service nginx start
 | 
				
			||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
					echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
 | 
				
			||||||
msg_ok "Installed IT-Tools"
 | 
					msg_ok "Installed IT-Tools"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
motd_ssh
 | 
					motd_ssh
 | 
				
			||||||
customize
 | 
					customize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Cleaning up"
 | 
					msg_info "Cleaning up"
 | 
				
			||||||
rm -rf /tmp/it-tools
 | 
					rm -rf /tmp/dist
 | 
				
			||||||
rm -f it-tools.zip
 | 
					rm -f it-tools.zip
 | 
				
			||||||
$STD apk cache clean
 | 
					$STD apk cache clean
 | 
				
			||||||
msg_ok "Cleaned"
 | 
					msg_ok "Cleaned"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,9 @@ update_os
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
msg_info "Setup Syncthing"
 | 
					msg_info "Setup Syncthing"
 | 
				
			||||||
$STD apk add --no-cache syncthing
 | 
					$STD apk add --no-cache syncthing
 | 
				
			||||||
 | 
					rc-service syncthing start
 | 
				
			||||||
 | 
					sleep 3
 | 
				
			||||||
 | 
					rc-service syncthing stop
 | 
				
			||||||
sed -i "{s/127.0.0.1:8384/0.0.0.0:8384/g}" /var/lib/syncthing/.local/state/syncthing/config.xml
 | 
					sed -i "{s/127.0.0.1:8384/0.0.0.0:8384/g}" /var/lib/syncthing/.local/state/syncthing/config.xml
 | 
				
			||||||
msg_ok "Setup Syncthing"
 | 
					msg_ok "Setup Syncthing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,16 +27,16 @@ msg_ok "Installed Dependencies"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
msg_info "Installing Python Dependencies"
 | 
					msg_info "Installing Python Dependencies"
 | 
				
			||||||
$STD apt-get install -y \
 | 
					$STD apt-get install -y \
 | 
				
			||||||
  python3-pip \
 | 
					 | 
				
			||||||
  python3-ldap \
 | 
					  python3-ldap \
 | 
				
			||||||
  python3-msgpack \
 | 
					  python3-msgpack \
 | 
				
			||||||
  python3-regex
 | 
					  python3-regex
 | 
				
			||||||
msg_ok "Installed Python Dependencies"
 | 
					msg_ok "Installed Python Dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NODE_VERSION="22" setup_nodejs
 | 
					NODE_VERSION="22" setup_nodejs
 | 
				
			||||||
 | 
					PYTHON_VERSION="3.13" setup_uv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Installing Playwright"
 | 
					msg_info "Installing Playwright"
 | 
				
			||||||
$STD pip install playwright
 | 
					$STD uv pip install playwright --system
 | 
				
			||||||
$STD playwright install-deps chromium
 | 
					$STD playwright install-deps chromium
 | 
				
			||||||
msg_ok "Installed Playwright"
 | 
					msg_ok "Installed Playwright"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -45,7 +45,7 @@ mkdir -p /opt/archivebox/{data,.npm,.cache,.local}
 | 
				
			|||||||
$STD adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password --home /home/archivebox archivebox
 | 
					$STD adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password --home /home/archivebox archivebox
 | 
				
			||||||
chown -R archivebox:archivebox /opt/archivebox/{data,.npm,.cache,.local}
 | 
					chown -R archivebox:archivebox /opt/archivebox/{data,.npm,.cache,.local}
 | 
				
			||||||
chmod -R 755 /opt/archivebox/data
 | 
					chmod -R 755 /opt/archivebox/data
 | 
				
			||||||
$STD pip install archivebox
 | 
					$STD uv pip install archivebox --system
 | 
				
			||||||
cd /opt/archivebox/data
 | 
					cd /opt/archivebox/data
 | 
				
			||||||
expect <<EOF
 | 
					expect <<EOF
 | 
				
			||||||
set timeout -1
 | 
					set timeout -1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,17 +16,17 @@ update_os
 | 
				
			|||||||
msg_info "Setup Python3"
 | 
					msg_info "Setup Python3"
 | 
				
			||||||
$STD apt-get install -y \
 | 
					$STD apt-get install -y \
 | 
				
			||||||
  python3 \
 | 
					  python3 \
 | 
				
			||||||
  python3-dev \
 | 
					  python3-dev
 | 
				
			||||||
  python3-pip
 | 
					 | 
				
			||||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
 | 
					 | 
				
			||||||
msg_ok "Setup Python3"
 | 
					msg_ok "Setup Python3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PYTHON_VERSION="3.13" setup_uv
 | 
				
			||||||
 | 
					fetch_and_deploy_gh_release "bazarr" "morpheus65535/bazarr" "prebuild" "latest" "/opt/bazarr" "bazarr.zip"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Installing Bazarr"
 | 
					msg_info "Installing Bazarr"
 | 
				
			||||||
mkdir -p /var/lib/bazarr/
 | 
					mkdir -p /var/lib/bazarr/
 | 
				
			||||||
curl -fsSL "https://github.com/morpheus65535/bazarr/releases/latest/download/bazarr.zip" -o "bazarr.zip"
 | 
					 | 
				
			||||||
$STD unzip bazarr -d /opt/bazarr
 | 
					 | 
				
			||||||
chmod 775 /opt/bazarr /var/lib/bazarr/
 | 
					chmod 775 /opt/bazarr /var/lib/bazarr/
 | 
				
			||||||
$STD python3 -m pip install -q -r /opt/bazarr/requirements.txt
 | 
					sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
 | 
				
			||||||
 | 
					$STD uv pip install -r /opt/bazarr/requirements.txt --system
 | 
				
			||||||
msg_ok "Installed Bazarr"
 | 
					msg_ok "Installed Bazarr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Creating Service"
 | 
					msg_info "Creating Service"
 | 
				
			||||||
@@ -56,7 +56,6 @@ motd_ssh
 | 
				
			|||||||
customize
 | 
					customize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
msg_info "Cleaning up"
 | 
					msg_info "Cleaning up"
 | 
				
			||||||
rm -rf bazarr.zip
 | 
					 | 
				
			||||||
$STD apt-get -y autoremove
 | 
					$STD apt-get -y autoremove
 | 
				
			||||||
$STD apt-get -y autoclean
 | 
					$STD apt-get -y autoclean
 | 
				
			||||||
msg_ok "Cleaned"
 | 
					msg_ok "Cleaned"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
# Author: MickLesk (CanbiZ)
 | 
					# Author: MickLesk (CanbiZ)
 | 
				
			||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
# Source: https://github.com/adityachandelgit/BookLore
 | 
					# Source: https://github.com/booklore-app/BookLore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
					source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
				
			||||||
color
 | 
					color
 | 
				
			||||||
@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
 | 
				
			|||||||
$STD apt-get install -y nginx
 | 
					$STD apt-get install -y nginx
 | 
				
			||||||
msg_ok "Installed Dependencies"
 | 
					msg_ok "Installed Dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fetch_and_deploy_gh_release "booklore" "adityachandelgit/BookLore"
 | 
					fetch_and_deploy_gh_release "booklore" "booklore-app/BookLore"
 | 
				
			||||||
JAVA_VERSION="21" setup_java
 | 
					JAVA_VERSION="21" setup_java
 | 
				
			||||||
NODE_VERSION="22" setup_nodejs
 | 
					NODE_VERSION="22" setup_nodejs
 | 
				
			||||||
setup_mariadb
 | 
					setup_mariadb
 | 
				
			||||||
@@ -59,7 +59,7 @@ msg_ok "Created Environment"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
msg_info "Building Backend"
 | 
					msg_info "Building Backend"
 | 
				
			||||||
cd /opt/booklore/booklore-api
 | 
					cd /opt/booklore/booklore-api
 | 
				
			||||||
APP_VERSION=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
 | 
					APP_VERSION=$(curl -fsSL https://api.github.com/repos/booklore-app/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
 | 
				
			||||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
 | 
					yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
 | 
				
			||||||
$STD ./gradlew clean build --no-daemon
 | 
					$STD ./gradlew clean build --no-daemon
 | 
				
			||||||
mkdir -p /opt/booklore/dist
 | 
					mkdir -p /opt/booklore/dist
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,6 @@ sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z
 | 
				
			|||||||
  /opt/docmost/.env
 | 
					  /opt/docmost/.env
 | 
				
			||||||
export NODE_OPTIONS="--max-old-space-size=2048"
 | 
					export NODE_OPTIONS="--max-old-space-size=2048"
 | 
				
			||||||
$STD pnpm install
 | 
					$STD pnpm install
 | 
				
			||||||
$STD pnpm nx run server:build # Dirty fix https://github.com/community-scripts/ProxmoxVE/issues/6377
 | 
					 | 
				
			||||||
$STD pnpm build
 | 
					$STD pnpm build
 | 
				
			||||||
msg_ok "Configured Docmost"
 | 
					msg_ok "Configured Docmost"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user