mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			373 Commits
		
	
	
		
			2025-04-26
			...
			2025-05-25
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					4044790e5e | ||
| 
						 | 
					e64b10bf99 | ||
| 
						 | 
					bf2b36f095 | ||
| 
						 | 
					15b606c019 | ||
| 
						 | 
					16740ece38 | ||
| 
						 | 
					d2d9a59e35 | ||
| 
						 | 
					7d7664f12a | ||
| 
						 | 
					98c1136d8e | ||
| 
						 | 
					2f1f0393b6 | ||
| 
						 | 
					0cdde92556 | ||
| 
						 | 
					85b638169d | ||
| 
						 | 
					1c186b5087 | ||
| 
						 | 
					21efb1a2ec | ||
| 
						 | 
					9de702c301 | ||
| 
						 | 
					a47d6efe41 | ||
| 
						 | 
					36253b0045 | ||
| 
						 | 
					34e7c33e05 | ||
| 
						 | 
					e0a47f0aa3 | ||
| 
						 | 
					bce10d447e | ||
| 
						 | 
					0d9804fcfe | ||
| 
						 | 
					3b7c63183b | ||
| 
						 | 
					2d323d94ec | ||
| 
						 | 
					ab0ed91c4f | ||
| 
						 | 
					31e99bc49b | ||
| 
						 | 
					5b27942981 | ||
| 
						 | 
					161bafa818 | ||
| 
						 | 
					a5241ef1c5 | ||
| 
						 | 
					bf3f7dc3b1 | ||
| 
						 | 
					7264934136 | ||
| 
						 | 
					a0745de096 | ||
| 
						 | 
					4f4ec7d477 | ||
| 
						 | 
					ba3de8d080 | ||
| 
						 | 
					0f8932b125 | ||
| 
						 | 
					348354079b | ||
| 
						 | 
					48db08192a | ||
| 
						 | 
					b6f410e895 | ||
| 
						 | 
					1221fec5ab | ||
| 
						 | 
					faa805547c | ||
| 
						 | 
					fe0ac37ff1 | ||
| 
						 | 
					eed391917c | ||
| 
						 | 
					76da24386d | ||
| 
						 | 
					8e7caf4cd9 | ||
| 
						 | 
					7d3040ab76 | ||
| 
						 | 
					6a3bf770fb | ||
| 
						 | 
					6805b01df2 | ||
| 
						 | 
					7520917dcc | ||
| 
						 | 
					ec186b0288 | ||
| 
						 | 
					c7afd9c427 | ||
| 
						 | 
					bd3b022b08 | ||
| 
						 | 
					49fcd68f42 | ||
| 
						 | 
					1382742c26 | ||
| 
						 | 
					9e2441ff53 | ||
| 
						 | 
					490dbc725e | ||
| 
						 | 
					d9201e2cac | ||
| 
						 | 
					52c09646b2 | ||
| 
						 | 
					b5d70d5201 | ||
| 
						 | 
					7089b9ef7b | ||
| 
						 | 
					034d7df9cd | ||
| 
						 | 
					f41ac673a3 | ||
| 
						 | 
					a7382f9273 | ||
| 
						 | 
					cb1465544d | ||
| 
						 | 
					796c31eae4 | ||
| 
						 | 
					047c2c44d6 | ||
| 
						 | 
					1baa841963 | ||
| 
						 | 
					7d40ee4aa9 | ||
| 
						 | 
					f9a8925f64 | ||
| 
						 | 
					c62a0b149d | ||
| 
						 | 
					513402b099 | ||
| 
						 | 
					a39354f8f3 | ||
| 
						 | 
					3814e51d3f | ||
| 
						 | 
					326f5e9151 | ||
| 
						 | 
					1e2fda29b7 | ||
| 
						 | 
					222db46cac | ||
| 
						 | 
					9e8841ea7a | ||
| 
						 | 
					24d612c9e7 | ||
| 
						 | 
					3cfe253a3d | ||
| 
						 | 
					b7e951fc1a | ||
| 
						 | 
					f735e37b15 | ||
| 
						 | 
					2c2e602eb1 | ||
| 
						 | 
					37cd6a6620 | ||
| 
						 | 
					a386765e33 | ||
| 
						 | 
					d252e33e5c | ||
| 
						 | 
					08992599a0 | ||
| 
						 | 
					2a10eca156 | ||
| 
						 | 
					b4be96ff45 | ||
| 
						 | 
					06156a5a20 | ||
| 
						 | 
					5ccff37e3b | ||
| 
						 | 
					c5ca62ec38 | ||
| 
						 | 
					bc5fc031e7 | ||
| 
						 | 
					4ead65f948 | ||
| 
						 | 
					b602416a7e | ||
| 
						 | 
					cb431da23b | ||
| 
						 | 
					19ddb4b2b1 | ||
| 
						 | 
					1378d55fae | ||
| 
						 | 
					8f647b9abe | ||
| 
						 | 
					8a481e1423 | ||
| 
						 | 
					42ee79ac30 | ||
| 
						 | 
					5a6dc35fe0 | ||
| 
						 | 
					73c08a8c5e | ||
| 
						 | 
					67feae778e | ||
| 
						 | 
					7dd49d634e | ||
| 
						 | 
					06191ca260 | ||
| 
						 | 
					0118974ba7 | ||
| 
						 | 
					22e5a54941 | ||
| 
						 | 
					ce7442bab7 | ||
| 
						 | 
					54c522e39b | ||
| 
						 | 
					dfa08625e3 | ||
| 
						 | 
					f6d411b992 | ||
| 
						 | 
					9359f6d883 | ||
| 
						 | 
					b021a2c139 | ||
| 
						 | 
					4de228d41b | ||
| 
						 | 
					7d2e8eaaad | ||
| 
						 | 
					ce69a571bc | ||
| 
						 | 
					1fdda378ac | ||
| 
						 | 
					7b62fd4866 | ||
| 
						 | 
					0da24e2651 | ||
| 
						 | 
					fd689e94ed | ||
| 
						 | 
					47155ac280 | ||
| 
						 | 
					aa57bac96d | ||
| 
						 | 
					24d730c120 | ||
| 
						 | 
					de9ae6eaa9 | ||
| 
						 | 
					4fd065a4bd | ||
| 
						 | 
					e26aac187b | ||
| 
						 | 
					5e63b70e83 | ||
| 
						 | 
					292ab6e54b | ||
| 
						 | 
					7d924fac27 | ||
| 
						 | 
					4b31957617 | ||
| 
						 | 
					35c99ae503 | ||
| 
						 | 
					62189321cc | ||
| 
						 | 
					59dfdc9af6 | ||
| 
						 | 
					19cf4d3dc2 | ||
| 
						 | 
					369265a6d5 | ||
| 
						 | 
					56f8306960 | ||
| 
						 | 
					3daf3c3325 | ||
| 
						 | 
					c36000a6aa | ||
| 
						 | 
					12265b92e7 | ||
| 
						 | 
					4e31445038 | ||
| 
						 | 
					c30f96912d | ||
| 
						 | 
					e3860c065e | ||
| 
						 | 
					110b64df85 | ||
| 
						 | 
					e17f7aa6f1 | ||
| 
						 | 
					b4d98b1dd2 | ||
| 
						 | 
					e24636133d | ||
| 
						 | 
					7d0a964918 | ||
| 
						 | 
					38c7e747bc | ||
| 
						 | 
					180e003978 | ||
| 
						 | 
					4762ea8fae | ||
| 
						 | 
					4ec3af8e45 | ||
| 
						 | 
					b816ca6788 | ||
| 
						 | 
					d703a8abb2 | ||
| 
						 | 
					4a1f87727b | ||
| 
						 | 
					16c0d09d6b | ||
| 
						 | 
					7740ab68f7 | ||
| 
						 | 
					cd61025295 | ||
| 
						 | 
					2695e2de1a | ||
| 
						 | 
					7aea03034a | ||
| 
						 | 
					e9960347bf | ||
| 
						 | 
					3808d4d0b8 | ||
| 
						 | 
					14c5bf5f75 | ||
| 
						 | 
					fcc16ae8e1 | ||
| 
						 | 
					aaf8bdb893 | ||
| 
						 | 
					db81851db4 | ||
| 
						 | 
					a2d92155a5 | ||
| 
						 | 
					0bd18cc91b | ||
| 
						 | 
					1e7981dbb7 | ||
| 
						 | 
					704073cd69 | ||
| 
						 | 
					22e1518951 | ||
| 
						 | 
					57bd730233 | ||
| 
						 | 
					cf1b13e5fb | ||
| 
						 | 
					9a3b2c076d | ||
| 
						 | 
					3981cc90c4 | ||
| 
						 | 
					592d9d03aa | ||
| 
						 | 
					59b00890f9 | ||
| 
						 | 
					7ee57e7416 | ||
| 
						 | 
					82a30df0c9 | ||
| 
						 | 
					10e1d7e741 | ||
| 
						 | 
					f85cddadcf | ||
| 
						 | 
					1700291af7 | ||
| 
						 | 
					e126e48439 | ||
| 
						 | 
					b3bda56498 | ||
| 
						 | 
					e59f868966 | ||
| 
						 | 
					a9b53afcc5 | ||
| 
						 | 
					38cf296a4c | ||
| 
						 | 
					35c0d269ac | ||
| 
						 | 
					d7211e856e | ||
| 
						 | 
					dfbb1a8035 | ||
| 
						 | 
					61b09e926a | ||
| 
						 | 
					9140fd52ac | ||
| 
						 | 
					4a3ee4db67 | ||
| 
						 | 
					b333d8c3f9 | ||
| 
						 | 
					245b35d01e | ||
| 
						 | 
					37d20ba0dd | ||
| 
						 | 
					b5062c51af | ||
| 
						 | 
					1ea830c955 | ||
| 
						 | 
					be31ecf432 | ||
| 
						 | 
					c586dfe87f | ||
| 
						 | 
					7f65be34ff | ||
| 
						 | 
					c158dbb3ea | ||
| 
						 | 
					95acf8c018 | ||
| 
						 | 
					6c5aa6677a | ||
| 
						 | 
					43ff379ed4 | ||
| 
						 | 
					2c2849179a | ||
| 
						 | 
					d116505ff2 | ||
| 
						 | 
					42535e14ab | ||
| 
						 | 
					990ce16a7d | ||
| 
						 | 
					af1cf0bc71 | ||
| 
						 | 
					e166115745 | ||
| 
						 | 
					bdef92cc71 | ||
| 
						 | 
					1e59c934ec | ||
| 
						 | 
					456b00882d | ||
| 
						 | 
					9b8a30c84f | ||
| 
						 | 
					3b90e3fe15 | ||
| 
						 | 
					5e3a5bb24c | ||
| 
						 | 
					7413a03009 | ||
| 
						 | 
					bb1c9d73c4 | ||
| 
						 | 
					3b5a901832 | ||
| 
						 | 
					a62a4876ec | ||
| 
						 | 
					9d21ceacc3 | ||
| 
						 | 
					c604aeb064 | ||
| 
						 | 
					9b9ed2f6e1 | ||
| 
						 | 
					1ddc74d2b5 | ||
| 
						 | 
					ee9f6dd818 | ||
| 
						 | 
					a1754dff4e | ||
| 
						 | 
					4827a17ba3 | ||
| 
						 | 
					b5ed7b9f4e | ||
| 
						 | 
					ab9760194d | ||
| 
						 | 
					abb5b6d5ac | ||
| 
						 | 
					4656fe21f9 | ||
| 
						 | 
					93e503eb87 | ||
| 
						 | 
					6ab80dc5e3 | ||
| 
						 | 
					ceaff9006a | ||
| 
						 | 
					c749fe6fb0 | ||
| 
						 | 
					402586756f | ||
| 
						 | 
					19800da808 | ||
| 
						 | 
					d62da0c982 | ||
| 
						 | 
					41df1d5a76 | ||
| 
						 | 
					bcdf8f15e7 | ||
| 
						 | 
					326cbc3bec | ||
| 
						 | 
					607d966322 | ||
| 
						 | 
					69298090ce | ||
| 
						 | 
					9c7d50fdff | ||
| 
						 | 
					fabbe8fe59 | ||
| 
						 | 
					6abb55ba86 | ||
| 
						 | 
					9cddbbd986 | ||
| 
						 | 
					31c7c9301c | ||
| 
						 | 
					c9aad3a54d | ||
| 
						 | 
					ebc17e120e | ||
| 
						 | 
					1ebb1782fa | ||
| 
						 | 
					cce3ca1996 | ||
| 
						 | 
					eb6018ac01 | ||
| 
						 | 
					3b54371d5c | ||
| 
						 | 
					67cd29e9f2 | ||
| 
						 | 
					0f4c14ff41 | ||
| 
						 | 
					5d9795139e | ||
| 
						 | 
					0bbbd5de10 | ||
| 
						 | 
					8963d8dec9 | ||
| 
						 | 
					eeb7766f36 | ||
| 
						 | 
					e7d4630fa5 | ||
| 
						 | 
					0f19440864 | ||
| 
						 | 
					d0a3510b96 | ||
| 
						 | 
					0946b5220f | ||
| 
						 | 
					d5a64ee41c | ||
| 
						 | 
					067d60978c | ||
| 
						 | 
					4b89174542 | ||
| 
						 | 
					0a2a1b4692 | ||
| 
						 | 
					4d99838209 | ||
| 
						 | 
					27ac2633c7 | ||
| 
						 | 
					1bff7fe861 | ||
| 
						 | 
					a9c36a9417 | ||
| 
						 | 
					8e26cd4d9d | ||
| 
						 | 
					237c920893 | ||
| 
						 | 
					354d95eb2d | ||
| 
						 | 
					e7f0f09dee | ||
| 
						 | 
					093a1aacf6 | ||
| 
						 | 
					afbac8e2f0 | ||
| 
						 | 
					17c3163a2a | ||
| 
						 | 
					f0a96b9a7b | ||
| 
						 | 
					e5766da56d | ||
| 
						 | 
					0239abb126 | ||
| 
						 | 
					06960d3023 | ||
| 
						 | 
					fd813b8936 | ||
| 
						 | 
					fa9c39f212 | ||
| 
						 | 
					536c3d113d | ||
| 
						 | 
					23281bdc0c | ||
| 
						 | 
					cc5d8e162b | ||
| 
						 | 
					5c43513295 | ||
| 
						 | 
					6c648f4b89 | ||
| 
						 | 
					9f88b1b1fb | ||
| 
						 | 
					0ea0f56e1b | ||
| 
						 | 
					bff0ab3d3d | ||
| 
						 | 
					1f56a8cc6d | ||
| 
						 | 
					eaebc184b1 | ||
| 
						 | 
					b9594538ca | ||
| 
						 | 
					8e56da691a | ||
| 
						 | 
					c9f739ae3b | ||
| 
						 | 
					2ba1aaa383 | ||
| 
						 | 
					4510e7b4d8 | ||
| 
						 | 
					9f1bf85b42 | ||
| 
						 | 
					a2a528c294 | ||
| 
						 | 
					15ec09d71c | ||
| 
						 | 
					57a18aec76 | ||
| 
						 | 
					8fa1743dd6 | ||
| 
						 | 
					78bb1ee195 | ||
| 
						 | 
					130031e4f9 | ||
| 
						 | 
					ea9f91036e | ||
| 
						 | 
					783e7518f8 | ||
| 
						 | 
					64595b08ce | ||
| 
						 | 
					43d67cff58 | ||
| 
						 | 
					4ae2eb2bfa | ||
| 
						 | 
					6220e272af | ||
| 
						 | 
					dc36ba409c | ||
| 
						 | 
					15deb9c658 | ||
| 
						 | 
					07d87334d5 | ||
| 
						 | 
					39300b2b6e | ||
| 
						 | 
					3b2aa30d48 | ||
| 
						 | 
					0c7052ae58 | ||
| 
						 | 
					fa7aead863 | ||
| 
						 | 
					b5dc4bdf59 | ||
| 
						 | 
					9905012cd7 | ||
| 
						 | 
					abfe9114c7 | ||
| 
						 | 
					f65409be75 | ||
| 
						 | 
					3fd0bdbf40 | ||
| 
						 | 
					8d7ce2e84e | ||
| 
						 | 
					0d5a697e99 | ||
| 
						 | 
					fdc59fd418 | ||
| 
						 | 
					7cfc8ce601 | ||
| 
						 | 
					5c35dbfcdf | ||
| 
						 | 
					885b22898c | ||
| 
						 | 
					c842943b1b | ||
| 
						 | 
					92b170267b | ||
| 
						 | 
					53ebd3ceac | ||
| 
						 | 
					ca35365e42 | ||
| 
						 | 
					8e83943498 | ||
| 
						 | 
					86706bbb4c | ||
| 
						 | 
					c66fb807c8 | ||
| 
						 | 
					0356697d5f | ||
| 
						 | 
					dd4f291bf5 | ||
| 
						 | 
					8089cc9b3e | ||
| 
						 | 
					42a341a30c | ||
| 
						 | 
					e09b216beb | ||
| 
						 | 
					5825dfae88 | ||
| 
						 | 
					7fb0c8e276 | ||
| 
						 | 
					2ffac1d229 | ||
| 
						 | 
					759e9598fb | ||
| 
						 | 
					6b93a3fa18 | ||
| 
						 | 
					aada00ce61 | ||
| 
						 | 
					a2fdb4e236 | ||
| 
						 | 
					57e5f23c72 | ||
| 
						 | 
					c3b69f40fc | ||
| 
						 | 
					592b310a81 | ||
| 
						 | 
					e10a062de1 | ||
| 
						 | 
					74a736dc9f | ||
| 
						 | 
					b5fdb94246 | ||
| 
						 | 
					129698dd3d | ||
| 
						 | 
					77997d558c | ||
| 
						 | 
					d65d4edea5 | ||
| 
						 | 
					60c480042c | ||
| 
						 | 
					956c13fa89 | ||
| 
						 | 
					3aee31007a | ||
| 
						 | 
					b82e988837 | ||
| 
						 | 
					5cf162a3c9 | ||
| 
						 | 
					ce76ebc68f | ||
| 
						 | 
					cbe8e2f1b7 | ||
| 
						 | 
					50c9a0e8f1 | ||
| 
						 | 
					246c6e950d | ||
| 
						 | 
					04d6171cba | ||
| 
						 | 
					9556d63890 | ||
| 
						 | 
					b26fbd0d70 | ||
| 
						 | 
					50aa00109a | ||
| 
						 | 
					c0398ef3b8 | ||
| 
						 | 
					2676a48985 | ||
| 
						 | 
					e8ff2fed45 | ||
| 
						 | 
					65c674b4c1 | 
							
								
								
									
										14
									
								
								.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md
									
									
									
									
										vendored
									
									
								
							@@ -108,13 +108,13 @@ Example:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
APP="SnipeIT"
 | 
			
		||||
var_tags="asset-management;foss"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
var_tags="${var_tags:-asset-management;foss}"
 | 
			
		||||
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}"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## 2.2 **📋 App output & base settings**
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										104
									
								
								.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										104
									
								
								.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh
									
									
									
									
										vendored
									
									
								
							@@ -6,22 +6,22 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
# Source: [SOURCE_URL]
 | 
			
		||||
 | 
			
		||||
# App Default Values
 | 
			
		||||
APP="[APP_NAME]"
 | 
			
		||||
# Name of the app (e.g. Google, Adventurelog, Apache-Guacamole"
 | 
			
		||||
var_tags="[TAGS]"
 | 
			
		||||
APP="[APP_NAME]"
 | 
			
		||||
# Tags for Proxmox VE, maximum 2 pcs., no spaces allowed, separated by a semicolon ; (e.g. database | adblock;dhcp)
 | 
			
		||||
var_cpu="[CPU]"
 | 
			
		||||
var_tags="${var_tags:-[TAGS]}"
 | 
			
		||||
# Number of cores (1-X) (e.g. 4) - default are 2
 | 
			
		||||
var_ram="[RAM]"
 | 
			
		||||
var_cpu="${var_cpu:-[CPU]}"
 | 
			
		||||
# Amount of used RAM in MB (e.g. 2048 or 4096)
 | 
			
		||||
var_disk="[DISK]"
 | 
			
		||||
var_ram="${var_ram:-[RAM]}"
 | 
			
		||||
# Amount of used disk space in GB (e.g. 4 or 10)
 | 
			
		||||
var_os="[OS]"
 | 
			
		||||
var_disk="${var_disk:-[DISK]}"
 | 
			
		||||
# Default OS (e.g. debian, ubuntu, alpine)
 | 
			
		||||
var_version="[VERSION]"
 | 
			
		||||
var_os="${var_os:-[OS]}"
 | 
			
		||||
# Default OS version (e.g. 12 for debian, 24.04 for ubuntu, 3.20 for alpine)
 | 
			
		||||
var_unprivileged="[UNPRIVILEGED]"
 | 
			
		||||
var_version="${var_version:-[VERSION]}"
 | 
			
		||||
# 1 = unprivileged container, 0 = privileged container
 | 
			
		||||
var_unprivileged="${var_unprivileged:-[UNPRIVILEGED]}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
@@ -29,51 +29,51 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
    # Check if installation is present | -f for file, -d for folder
 | 
			
		||||
    if [[ ! -f [INSTALLATION_CHECK_PATH] ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Crawling the new version and checking whether an update is required
 | 
			
		||||
    RELEASE=$(curl -fsSL [RELEASE_URL] | [PARSE_RELEASE_COMMAND])
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
        # Stopping Services
 | 
			
		||||
        msg_info "Stopping $APP"
 | 
			
		||||
        systemctl stop [SERVICE_NAME]
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        # Creating Backup
 | 
			
		||||
        msg_info "Creating Backup"
 | 
			
		||||
        tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" [IMPORTANT_PATHS]
 | 
			
		||||
        msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
        # Execute Update
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
        [UPDATE_COMMANDS]
 | 
			
		||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        # Starting Services
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start [SERVICE_NAME]
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        # Cleaning up
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf [TEMP_FILES]
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        # Last Action
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
  # Check if installation is present | -f for file, -d for folder
 | 
			
		||||
  if [[ ! -f [INSTALLATION_CHECK_PATH] ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Crawling the new version and checking whether an update is required
 | 
			
		||||
  RELEASE=$(curl -fsSL [RELEASE_URL] | [PARSE_RELEASE_COMMAND])
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    # Stopping Services
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop [SERVICE_NAME]
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    # Creating Backup
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" [IMPORTANT_PATHS]
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    # Execute Update
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    [UPDATE_COMMANDS]
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    # Starting Services
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start [SERVICE_NAME]
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    # Cleaning up
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf [TEMP_FILES]
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
    # Last Action
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -83,4 +83,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:[PORT]${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:[PORT]${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -152,7 +152,7 @@ Example for a git release:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
curl -fsSL "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 5.2 **Save the version for update checks**
 | 
			
		||||
@@ -163,7 +163,7 @@ wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
Example:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
echo "${RELEASE}" >"/opt/AppName_version.txt"
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
@@ -184,7 +184,7 @@ msg_info "Installing Dependencies"
 | 
			
		||||
$STD apt-get install -y ...
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
read -p "Do you wish to enable HTTPS mode? (y/N): " httpschoice
 | 
			
		||||
read -p "${TAB3}Do you wish to enable HTTPS mode? (y/N): " httpschoice
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### 6.2 **Verbosity**
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
# Source: [SOURCE_URL]
 | 
			
		||||
 | 
			
		||||
# Import Functions und Setup
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
@@ -31,30 +31,28 @@ $STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
 | 
			
		||||
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
 | 
			
		||||
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
 | 
			
		||||
{
 | 
			
		||||
    echo "${APPLICATION} Credentials"
 | 
			
		||||
    echo "Database User: $DB_USER"
 | 
			
		||||
    echo "Database Password: $DB_PASS"
 | 
			
		||||
    echo "Database Name: $DB_NAME"
 | 
			
		||||
} >> ~/$APP_NAME.creds
 | 
			
		||||
  echo "${APPLICATION} Credentials"
 | 
			
		||||
  echo "Database User: $DB_USER"
 | 
			
		||||
  echo "Database Password: $DB_PASS"
 | 
			
		||||
  echo "Database Name: $DB_NAME"
 | 
			
		||||
} >>~/"$APP_NAME".creds
 | 
			
		||||
msg_ok "Set up Database"
 | 
			
		||||
 | 
			
		||||
# Temp
 | 
			
		||||
 | 
			
		||||
# Setup App
 | 
			
		||||
msg_info "Setup ${APPLICATION}"
 | 
			
		||||
RELEASE=$(curl -fsSL https://api.github.com/repos/[REPO]/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
curl -fsSL -o "${RELEASE}.zip" "https://github.com/[REPO]/archive/refs/tags/${RELEASE}.zip"
 | 
			
		||||
unzip -q "${RELEASE}.zip"
 | 
			
		||||
mv "${APPLICATION}-${RELEASE}/" "/opt/${APPLICATION}"
 | 
			
		||||
# 
 | 
			
		||||
# 
 | 
			
		||||
#
 | 
			
		||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
 | 
			
		||||
msg_ok "Setup ${APPLICATION}"
 | 
			
		||||
 | 
			
		||||
# Creating Service (if needed)
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
 | 
			
		||||
cat <<EOF >/etc/systemd/system/"${APPLICATION}".service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=${APPLICATION} Service
 | 
			
		||||
After=network.target
 | 
			
		||||
@@ -66,7 +64,7 @@ Restart=always
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now ${APPLICATION}
 | 
			
		||||
systemctl enable -q --now "${APPLICATION}"
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
@@ -74,7 +72,7 @@ customize
 | 
			
		||||
 | 
			
		||||
# Cleanup
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -f ${RELEASE}.zip
 | 
			
		||||
rm -f "${RELEASE}".zip
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										25
									
								
								.github/workflows/auto-update-app-headers.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								.github/workflows/auto-update-app-headers.yml
									
									
									
									
										vendored
									
									
								
							@@ -5,11 +5,12 @@ on:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    paths:
 | 
			
		||||
      - 'ct/**.sh'
 | 
			
		||||
  workflow_dispatch: 
 | 
			
		||||
      - "ct/**.sh"
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  update-app-files:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
 | 
			
		||||
    permissions:
 | 
			
		||||
@@ -24,6 +25,13 @@ jobs:
 | 
			
		||||
          app-id: ${{ vars.APP_ID }}
 | 
			
		||||
          private-key: ${{ secrets.APP_PRIVATE_KEY }}
 | 
			
		||||
 | 
			
		||||
      - name: Generate a token for PR approval and merge
 | 
			
		||||
        id: generate-token-merge
 | 
			
		||||
        uses: actions/create-github-app-token@v1
 | 
			
		||||
        with:
 | 
			
		||||
          app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
 | 
			
		||||
          private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
 | 
			
		||||
 | 
			
		||||
      # Step 1: Checkout repository
 | 
			
		||||
      - name: Checkout repository
 | 
			
		||||
        uses: actions/checkout@v2
 | 
			
		||||
@@ -79,7 +87,7 @@ jobs:
 | 
			
		||||
                       --label "automated pr"
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
      - name: Approve pull request
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        env:
 | 
			
		||||
@@ -89,15 +97,18 @@ jobs:
 | 
			
		||||
          if [ -n "$PR_NUMBER" ]; then
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
          fi
 | 
			
		||||
          
 | 
			
		||||
      - name: Re-approve pull request after update
 | 
			
		||||
 | 
			
		||||
      - name: Approve pull request and merge
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
          GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
 | 
			
		||||
        run: |
 | 
			
		||||
          PR_NUMBER=$(gh pr list --head "pr-update-app-files" --json number --jq '.[].number')
 | 
			
		||||
          git config --global user.name "github-actions-automege[bot]"
 | 
			
		||||
          git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
 | 
			
		||||
          PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
 | 
			
		||||
          if [ -n "$PR_NUMBER" ]; then
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
            gh pr merge $PR_NUMBER --squash --admin
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      # Step 8: Output success message when no changes
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/autolabeler.yml
									
									
									
									
										vendored
									
									
								
							@@ -7,6 +7,7 @@ on:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  autolabeler:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
    permissions:
 | 
			
		||||
      pull-requests: write
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								.github/workflows/changelog-pr.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								.github/workflows/changelog-pr.yml
									
									
									
									
										vendored
									
									
								
							@@ -7,6 +7,7 @@ on:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  update-changelog-pull-request:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
    env:
 | 
			
		||||
      CONFIG_PATH: .github/changelog-pr-config.json
 | 
			
		||||
@@ -23,6 +24,13 @@ jobs:
 | 
			
		||||
          app-id: ${{ vars.APP_ID }}
 | 
			
		||||
          private-key: ${{ secrets.APP_PRIVATE_KEY }}
 | 
			
		||||
 | 
			
		||||
      - name: Generate a token for PR approval and merge
 | 
			
		||||
        id: generate-token-merge
 | 
			
		||||
        uses: actions/create-github-app-token@v1
 | 
			
		||||
        with:
 | 
			
		||||
          app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
 | 
			
		||||
          private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
 | 
			
		||||
 | 
			
		||||
      - name: Checkout code
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
@@ -176,7 +184,7 @@ jobs:
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return await main();
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
      - name: Update CHANGELOG.md
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
@@ -201,7 +209,7 @@ jobs:
 | 
			
		||||
              if (hasMainNotes || hasSubNotes) {
 | 
			
		||||
                newReleaseNotes += `### ${title}\n\n`;
 | 
			
		||||
              }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
              if (hasMainNotes) {
 | 
			
		||||
                newReleaseNotes += `  ${notes.join("\n")}\n\n`;
 | 
			
		||||
              }
 | 
			
		||||
@@ -263,12 +271,15 @@ jobs:
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Re-approve pull request after update
 | 
			
		||||
      - name: Approve pull request and merge
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
          GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
 | 
			
		||||
        run: |
 | 
			
		||||
          git config --global user.name "github-actions-automege[bot]"
 | 
			
		||||
          git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
 | 
			
		||||
          PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
 | 
			
		||||
          if [ -n "$PR_NUMBER" ]; then
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
          fi
 | 
			
		||||
            gh pr merge $PR_NUMBER --squash --admin
 | 
			
		||||
          fi
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								.github/workflows/close-discussion.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/close-discussion.yml
									
									
									
									
										vendored
									
									
								
							@@ -11,6 +11,7 @@ permissions:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  close-discussion:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								.github/workflows/close-ttek-issues.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/close-ttek-issues.yaml
									
									
									
									
										vendored
									
									
								
							@@ -5,6 +5,7 @@ on:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  close_tteck_issues:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Auto-close if tteck script detected
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/close_issue_in_dev.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/close_issue_in_dev.yaml
									
									
									
									
										vendored
									
									
								
							@@ -5,7 +5,7 @@ on:
 | 
			
		||||
      - closed
 | 
			
		||||
jobs:
 | 
			
		||||
  close_issue:
 | 
			
		||||
    if: github.event.pull_request.merged == true
 | 
			
		||||
    if: github.event.pull_request.merged == true && github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    
 | 
			
		||||
    steps:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								.github/workflows/crawl-versions.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/crawl-versions.yaml
									
									
									
									
										vendored
									
									
								
							@@ -12,6 +12,7 @@ permissions:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  crawl-versions:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
@@ -103,6 +104,17 @@ jobs:
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Approve pull request and merge
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.PAT_AUTOMERGE }}
 | 
			
		||||
        run: |
 | 
			
		||||
          PR_NUMBER=$(gh pr list --head "update_versions" --json number --jq '.[].number')
 | 
			
		||||
          if [ -n "$PR_NUMBER" ]; then
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
            gh pr merge $PR_NUMBER --squash --admin
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Re-approve pull request after update
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        env:
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,7 @@ on:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: ubuntu-latest #To ensure it always builds we use the github runner with all the right tooling
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								.github/workflows/delete-json-branch.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/delete-json-branch.yml
									
									
									
									
										vendored
									
									
								
							@@ -9,6 +9,7 @@ on:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  delete_branch:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout the code
 | 
			
		||||
@@ -25,4 +26,4 @@ jobs:
 | 
			
		||||
            git push origin --delete "$PR_BRANCH"
 | 
			
		||||
          else
 | 
			
		||||
            echo "Skipping deletion of the main branch"
 | 
			
		||||
          fi
 | 
			
		||||
          fi
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								.github/workflows/frontend-cicd.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/frontend-cicd.yml
									
									
									
									
										vendored
									
									
								
							@@ -25,6 +25,7 @@ concurrency:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
    defaults:
 | 
			
		||||
      run:
 | 
			
		||||
@@ -63,7 +64,7 @@ jobs:
 | 
			
		||||
  deploy:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs: build
 | 
			
		||||
    if: github.ref == 'refs/heads/main'
 | 
			
		||||
    if: github.ref == 'refs/heads/main' && github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    permissions:
 | 
			
		||||
      pages: write
 | 
			
		||||
      id-token: write
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								.github/workflows/github-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/github-release.yml
									
									
									
									
										vendored
									
									
								
							@@ -7,6 +7,7 @@ on:
 | 
			
		||||
  
 | 
			
		||||
jobs:
 | 
			
		||||
  create-daily-release:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
    permissions:
 | 
			
		||||
      contents: write
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								.github/workflows/script-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/script-test.yml
									
									
									
									
										vendored
									
									
								
							@@ -11,6 +11,7 @@ on:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  run-install-script:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: pvenode
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout PR branch
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								.github/workflows/script_format.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/script_format.yml
									
									
									
									
										vendored
									
									
								
							@@ -11,6 +11,7 @@ on:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  run-install-script:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: pvenode
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout PR branch (supports forks)
 | 
			
		||||
 
 | 
			
		||||
@@ -72,8 +72,7 @@ network_check() {
 | 
			
		||||
 | 
			
		||||
update_os() {
 | 
			
		||||
  msg_info "Updating Container OS"
 | 
			
		||||
  apk update
 | 
			
		||||
  apk upgrade
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Container OS"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -83,4 +82,4 @@ motd_ssh() {
 | 
			
		||||
 | 
			
		||||
customize() {
 | 
			
		||||
  return
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,34 +1,50 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Base directory for headers
 | 
			
		||||
headers_dir="./ct/headers"
 | 
			
		||||
# Function for generating Figlet headers
 | 
			
		||||
generate_headers() {
 | 
			
		||||
  local base_dir=$1
 | 
			
		||||
  local target_subdir=$2
 | 
			
		||||
  local search_pattern=$3
 | 
			
		||||
 | 
			
		||||
# Ensure the headers directory exists and clear it
 | 
			
		||||
mkdir -p "$headers_dir"
 | 
			
		||||
rm -f "$headers_dir"/*
 | 
			
		||||
  local headers_dir="${base_dir}/headers"
 | 
			
		||||
  mkdir -p "$headers_dir"
 | 
			
		||||
  rm -f "$headers_dir"/*
 | 
			
		||||
 | 
			
		||||
# Find all .sh files in ./ct directory, sorted alphabetically
 | 
			
		||||
find ./ct -type f -name "*.sh" | sort | while read -r script; do
 | 
			
		||||
  # Extract the APP name from the APP line
 | 
			
		||||
  app_name=$(grep -oP '^APP="\K[^"]+' "$script" 2>/dev/null)
 | 
			
		||||
 | 
			
		||||
  if [[ -n "$app_name" ]]; then
 | 
			
		||||
    # Define the output file name in the headers directory
 | 
			
		||||
    output_file="${headers_dir}/$(basename "${script%.*}")"
 | 
			
		||||
 | 
			
		||||
    # Generate figlet output
 | 
			
		||||
    figlet_output=$(figlet -w 500 -f slant "$app_name")
 | 
			
		||||
 | 
			
		||||
    # Check if figlet output is not empty
 | 
			
		||||
    if [[ -n "$figlet_output" ]]; then
 | 
			
		||||
      echo "$figlet_output" > "$output_file"
 | 
			
		||||
      echo "Generated: $output_file"
 | 
			
		||||
    else
 | 
			
		||||
      echo "Figlet failed for $app_name in $script"
 | 
			
		||||
    fi
 | 
			
		||||
  # Recursive or non-recursive search
 | 
			
		||||
  if [[ "$search_pattern" == "**" ]]; then
 | 
			
		||||
    shopt -s globstar nullglob
 | 
			
		||||
    file_list=("${base_dir}"/**/*.sh)
 | 
			
		||||
    shopt -u globstar
 | 
			
		||||
  else
 | 
			
		||||
    echo "No APP name found in $script, skipping."
 | 
			
		||||
    file_list=("${base_dir}"/*.sh)
 | 
			
		||||
  fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
echo "Completed processing .sh files."
 | 
			
		||||
  for script in "${file_list[@]}"; do
 | 
			
		||||
    [[ -f "$script" ]] || continue
 | 
			
		||||
 | 
			
		||||
    app_name=$(grep -oP '^APP="\K[^"]+' "$script" 2>/dev/null)
 | 
			
		||||
    if [[ -n "$app_name" ]]; then
 | 
			
		||||
      output_file="${headers_dir}/$(basename "${script%.*}")"
 | 
			
		||||
      figlet_output=$(figlet -w 500 -f slant "$app_name")
 | 
			
		||||
      if [[ -n "$figlet_output" ]]; then
 | 
			
		||||
        echo "$figlet_output" >"$output_file"
 | 
			
		||||
        echo "Generated: $output_file"
 | 
			
		||||
      else
 | 
			
		||||
        echo "Figlet failed for $app_name in $script"
 | 
			
		||||
      fi
 | 
			
		||||
    else
 | 
			
		||||
      echo "No APP name found in $script, skipping."
 | 
			
		||||
    fi
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# ct
 | 
			
		||||
generate_headers "./ct" "headers" "*"
 | 
			
		||||
 | 
			
		||||
# tools (addon, pve, ...)
 | 
			
		||||
generate_headers "./tools" "headers" "**"
 | 
			
		||||
 | 
			
		||||
# vm
 | 
			
		||||
generate_headers "./vm" "headers" "*"
 | 
			
		||||
 | 
			
		||||
echo "Completed processing all sections."
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										33
									
								
								.github/workflows/update-json-date.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										33
									
								
								.github/workflows/update-json-date.yml
									
									
									
									
										vendored
									
									
								
							@@ -5,11 +5,12 @@ on:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    paths:
 | 
			
		||||
      - 'frontend/public/json/**.json'
 | 
			
		||||
  workflow_dispatch: 
 | 
			
		||||
      - "frontend/public/json/**.json"
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  update-app-files:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
 | 
			
		||||
    permissions:
 | 
			
		||||
@@ -24,10 +25,17 @@ jobs:
 | 
			
		||||
          app-id: ${{ vars.APP_ID }}
 | 
			
		||||
          private-key: ${{ secrets.APP_PRIVATE_KEY }}
 | 
			
		||||
 | 
			
		||||
      - name: Generate a token for PR approval and merge
 | 
			
		||||
        id: generate-token-merge
 | 
			
		||||
        uses: actions/create-github-app-token@v1
 | 
			
		||||
        with:
 | 
			
		||||
          app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
 | 
			
		||||
          private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
 | 
			
		||||
 | 
			
		||||
      - name: Generate dynamic branch name
 | 
			
		||||
        id: timestamp
 | 
			
		||||
        run: echo "BRANCH_NAME=pr-update-json-$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
      - name: Set up GH_TOKEN
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
@@ -37,7 +45,7 @@ jobs:
 | 
			
		||||
      - name: Checkout Repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 2  # Ensure we have the last two commits
 | 
			
		||||
          fetch-depth: 2 # Ensure we have the last two commits
 | 
			
		||||
 | 
			
		||||
      - name: Get Previous Commit
 | 
			
		||||
        id: prev_commit
 | 
			
		||||
@@ -102,8 +110,8 @@ jobs:
 | 
			
		||||
      - name: Commit and create PR if changes exist
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        run: |
 | 
			
		||||
         
 | 
			
		||||
          
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
          git commit -m "Update date in json"
 | 
			
		||||
          git checkout -b ${{ env.BRANCH_NAME }}
 | 
			
		||||
          git push origin ${{ env.BRANCH_NAME }}
 | 
			
		||||
@@ -126,6 +134,19 @@ jobs:
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Approve pull request and merge
 | 
			
		||||
        if: env.changed == 'true'
 | 
			
		||||
        env:
 | 
			
		||||
          GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
 | 
			
		||||
        run: |
 | 
			
		||||
          git config --global user.name "github-actions-automege[bot]"
 | 
			
		||||
          git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
 | 
			
		||||
          PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
 | 
			
		||||
          if [ -n "$PR_NUMBER" ]; then
 | 
			
		||||
            gh pr review $PR_NUMBER --approve
 | 
			
		||||
            gh pr merge $PR_NUMBER --squash --admin
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: No changes detected
 | 
			
		||||
        if: env.changed == 'false'
 | 
			
		||||
        run: echo "No changes to commit. Workflow completed successfully."
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								.github/workflows/validate-filenames.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/validate-filenames.yml
									
									
									
									
										vendored
									
									
								
							@@ -9,6 +9,7 @@ on:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  check-files:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    name: Check changed files
 | 
			
		||||
    runs-on: runner-cluster-htl-set
 | 
			
		||||
    permissions:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										542
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										542
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -14,6 +14,548 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
 | 
			
		||||
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 2025-05-26
 | 
			
		||||
 | 
			
		||||
## 2025-05-25
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Pelican-panel: back-up database if using sqlite [@bvdberg01](https://github.com/bvdberg01) ([#4700](https://github.com/community-scripts/ProxmoxVE/pull/4700))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Pterodactyl panel read typo [@bvdberg01](https://github.com/bvdberg01) ([#4701](https://github.com/community-scripts/ProxmoxVE/pull/4701))
 | 
			
		||||
 | 
			
		||||
## 2025-05-24
 | 
			
		||||
 | 
			
		||||
## 2025-05-23
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - TYPO: Fix nexcloud to nextcloud (VM) [@Stoufiler](https://github.com/Stoufiler) ([#4670](https://github.com/community-scripts/ProxmoxVE/pull/4670))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Update Icons to selfhst/icons (FreePBX & Configarr) [@MickLesk](https://github.com/MickLesk) ([#4680](https://github.com/community-scripts/ProxmoxVE/pull/4680))
 | 
			
		||||
 | 
			
		||||
### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
  - Remove rtsptoweb (deprecated) [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4686](https://github.com/community-scripts/ProxmoxVE/pull/4686))
 | 
			
		||||
 | 
			
		||||
## 2025-05-22
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - FreePBX ([#4648](https://github.com/community-scripts/ProxmoxVE/pull/4648))
 | 
			
		||||
- cloudflare-ddns ([#4647](https://github.com/community-scripts/ProxmoxVE/pull/4647))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - slskd: fix #4649 [@vhsdream](https://github.com/vhsdream) ([#4651](https://github.com/community-scripts/ProxmoxVE/pull/4651))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Paperless-AI: Add RAG chat [@tremor021](https://github.com/tremor021) ([#4635](https://github.com/community-scripts/ProxmoxVE/pull/4635))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - [gh]: Feature: Header-Generation for vm | tools | addon [@MickLesk](https://github.com/MickLesk) ([#4643](https://github.com/community-scripts/ProxmoxVE/pull/4643))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Commafeed: move to Documents category [@diemade](https://github.com/diemade) ([#4665](https://github.com/community-scripts/ProxmoxVE/pull/4665))
 | 
			
		||||
 | 
			
		||||
## 2025-05-21
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - configarr ([#4620](https://github.com/community-scripts/ProxmoxVE/pull/4620))
 | 
			
		||||
- babybuddy ([#4619](https://github.com/community-scripts/ProxmoxVE/pull/4619))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Alpine-Node-RED: Update Service File [@MickLesk](https://github.com/MickLesk) ([#4628](https://github.com/community-scripts/ProxmoxVE/pull/4628))
 | 
			
		||||
    - RustDesk Server: Fix update for older installs [@tremor021](https://github.com/tremor021) ([#4612](https://github.com/community-scripts/ProxmoxVE/pull/4612))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Tandoor Recipes: Capture version information when installing [@jbolla](https://github.com/jbolla) ([#4633](https://github.com/community-scripts/ProxmoxVE/pull/4633))
 | 
			
		||||
 | 
			
		||||
## 2025-05-20
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - [tools.func]: Update fetch_and_deploy_gh_release function [@tremor021](https://github.com/tremor021) ([#4605](https://github.com/community-scripts/ProxmoxVE/pull/4605))
 | 
			
		||||
- [core] New Features for Config File function [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4601](https://github.com/community-scripts/ProxmoxVE/pull/4601))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Website: harmonize all Logos | use jsDelivr CDN links for icons from selfhst/icons repo [@MickLesk](https://github.com/MickLesk) ([#4603](https://github.com/community-scripts/ProxmoxVE/pull/4603))
 | 
			
		||||
 | 
			
		||||
## 2025-05-19
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - rclone ([#4579](https://github.com/community-scripts/ProxmoxVE/pull/4579))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - increase ressources of Homarr (3 vCPU / 6GB RAM) [@MickLesk](https://github.com/MickLesk) ([#4583](https://github.com/community-scripts/ProxmoxVE/pull/4583))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Various unrelated fixes to kimai update script [@jamezpolley](https://github.com/jamezpolley) ([#4549](https://github.com/community-scripts/ProxmoxVE/pull/4549))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - RustDesk Server: Add WebUI [@tremor021](https://github.com/tremor021) ([#4590](https://github.com/community-scripts/ProxmoxVE/pull/4590))
 | 
			
		||||
 | 
			
		||||
## 2025-05-18
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - tools.func - Add function to create self-signed certificates [@tremor021](https://github.com/tremor021) ([#4562](https://github.com/community-scripts/ProxmoxVE/pull/4562))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Homarr: fix the build [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4569](https://github.com/community-scripts/ProxmoxVE/pull/4569))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Fix Dashy Config Path on Frontend [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4570](https://github.com/community-scripts/ProxmoxVE/pull/4570))
 | 
			
		||||
 | 
			
		||||
## 2025-05-17
 | 
			
		||||
 | 
			
		||||
## 2025-05-16
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - [core] Refactor Config File function [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4528](https://github.com/community-scripts/ProxmoxVE/pull/4528))
 | 
			
		||||
    - [core] Fix Bridge detection in Advanced Mode [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4522](https://github.com/community-scripts/ProxmoxVE/pull/4522))
 | 
			
		||||
    - [core] Enable SSH_KEY and SSH without password [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4523](https://github.com/community-scripts/ProxmoxVE/pull/4523))
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - Updates to contributor docs/guide [@tremor021](https://github.com/tremor021) ([#4518](https://github.com/community-scripts/ProxmoxVE/pull/4518))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Remove bolt.diy script [@tremor021](https://github.com/tremor021) ([#4541](https://github.com/community-scripts/ProxmoxVE/pull/4541))
 | 
			
		||||
 | 
			
		||||
## 2025-05-15
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - bitmagnet ([#4493](https://github.com/community-scripts/ProxmoxVE/pull/4493))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - core: Add TAB3 formatting var to core [@tremor021](https://github.com/tremor021) ([#4496](https://github.com/community-scripts/ProxmoxVE/pull/4496))
 | 
			
		||||
- Update scripts that use "read -p" to properly indent text [@tremor021](https://github.com/tremor021) ([#4498](https://github.com/community-scripts/ProxmoxVE/pull/4498))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - tools.func: fix some things & add ruby default function [@MickLesk](https://github.com/MickLesk) ([#4507](https://github.com/community-scripts/ProxmoxVE/pull/4507))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - core: fix bridge detection for OVS  [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4495](https://github.com/community-scripts/ProxmoxVE/pull/4495))
 | 
			
		||||
 | 
			
		||||
## 2025-05-14
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - odoo ([#4477](https://github.com/community-scripts/ProxmoxVE/pull/4477))
 | 
			
		||||
- asterisk ([#4468](https://github.com/community-scripts/ProxmoxVE/pull/4468))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - fix: fetch_release_and_deploy function [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4478](https://github.com/community-scripts/ProxmoxVE/pull/4478))
 | 
			
		||||
- Website: re-add documenso & some little bugfixes [@MickLesk](https://github.com/MickLesk) ([#4456](https://github.com/community-scripts/ProxmoxVE/pull/4456))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Add make installation dependency to Actual Budget script [@maciejmatczak](https://github.com/maciejmatczak) ([#4485](https://github.com/community-scripts/ProxmoxVE/pull/4485))
 | 
			
		||||
    - Bookstack: fix copy of themes/uploads/storage [@MickLesk](https://github.com/MickLesk) ([#4457](https://github.com/community-scripts/ProxmoxVE/pull/4457))
 | 
			
		||||
    - Alpine-Rclone: Fix location of passwords file [@tremor021](https://github.com/tremor021) ([#4465](https://github.com/community-scripts/ProxmoxVE/pull/4465))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - monitor-all: improvements - tag based filtering [@grizmin](https://github.com/grizmin) ([#4437](https://github.com/community-scripts/ProxmoxVE/pull/4437))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - Add Github app for auto PR merge [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4461](https://github.com/community-scripts/ProxmoxVE/pull/4461))
 | 
			
		||||
 | 
			
		||||
## 2025-05-13
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - gatus ([#4443](https://github.com/community-scripts/ProxmoxVE/pull/4443))
 | 
			
		||||
- alpine-gatus ([#4442](https://github.com/community-scripts/ProxmoxVE/pull/4442))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - update some improvements from dev (tools.func) [@MickLesk](https://github.com/MickLesk) ([#4430](https://github.com/community-scripts/ProxmoxVE/pull/4430))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - openhab: use zulu17-jdk [@moodyblue](https://github.com/moodyblue) ([#4438](https://github.com/community-scripts/ProxmoxVE/pull/4438))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - openhab. correct some typos [@moodyblue](https://github.com/moodyblue) ([#4448](https://github.com/community-scripts/ProxmoxVE/pull/4448))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - fix: improve bridge detection in all network interface configuration files [@filippolauria](https://github.com/filippolauria) ([#4413](https://github.com/community-scripts/ProxmoxVE/pull/4413))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Jellyfin Media Server: Update configuration path [@tremor021](https://github.com/tremor021) ([#4434](https://github.com/community-scripts/ProxmoxVE/pull/4434))
 | 
			
		||||
    - Pingvin Share: Added explanation on how to add/edit environment variables [@tremor021](https://github.com/tremor021) ([#4432](https://github.com/community-scripts/ProxmoxVE/pull/4432))
 | 
			
		||||
    - pingvin.json: fix typo [@warmbo](https://github.com/warmbo) ([#4426](https://github.com/community-scripts/ProxmoxVE/pull/4426))
 | 
			
		||||
 | 
			
		||||
## 2025-05-12
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Alpine-Traefik [@MickLesk](https://github.com/MickLesk) ([#4412](https://github.com/community-scripts/ProxmoxVE/pull/4412))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Alpine: Use onliner for updates [@tremor021](https://github.com/tremor021) ([#4414](https://github.com/community-scripts/ProxmoxVE/pull/4414))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - homarr: fetch versions dynamically from source repo [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4409](https://github.com/community-scripts/ProxmoxVE/pull/4409))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Feature: LXC-Delete (pve helper): add "all items" [@MickLesk](https://github.com/MickLesk) ([#4296](https://github.com/community-scripts/ProxmoxVE/pull/4296))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - Config file Function in build.func [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4411](https://github.com/community-scripts/ProxmoxVE/pull/4411))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Navidrome - Fix config path (use /etc/ instead of /var/lib) [@quake1508](https://github.com/quake1508) ([#4406](https://github.com/community-scripts/ProxmoxVE/pull/4406))
 | 
			
		||||
 | 
			
		||||
## 2025-05-11
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Zammad: Enable ElasticSearch service [@tremor021](https://github.com/tremor021) ([#4391](https://github.com/community-scripts/ProxmoxVE/pull/4391))
 | 
			
		||||
 | 
			
		||||
## 2025-05-10
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - (fix) Documenso: fix build failures [@vhsdream](https://github.com/vhsdream) ([#4382](https://github.com/community-scripts/ProxmoxVE/pull/4382))
 | 
			
		||||
    - Jellyseerr: better handling of node and pnpm [@MickLesk](https://github.com/MickLesk) ([#4365](https://github.com/community-scripts/ProxmoxVE/pull/4365))
 | 
			
		||||
 | 
			
		||||
## 2025-05-09
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Authentik: change install to UV & increase resources to 10GB RAM [@MickLesk](https://github.com/MickLesk) ([#4364](https://github.com/community-scripts/ProxmoxVE/pull/4364))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - HomeAssistant-Core: update script for 2025.5+ [@MickLesk](https://github.com/MickLesk) ([#4363](https://github.com/community-scripts/ProxmoxVE/pull/4363))
 | 
			
		||||
    - Feature: autologin for Alpine [@MickLesk](https://github.com/MickLesk) ([#4344](https://github.com/community-scripts/ProxmoxVE/pull/4344))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - fix: detect all bridge types, not just vmbr prefix [@filippolauria](https://github.com/filippolauria) ([#4351](https://github.com/community-scripts/ProxmoxVE/pull/4351))
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - Add a Repo check to all Workflows [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4339](https://github.com/community-scripts/ProxmoxVE/pull/4339))
 | 
			
		||||
    - Auto-Merge Automatic PR [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4343](https://github.com/community-scripts/ProxmoxVE/pull/4343))
 | 
			
		||||
 | 
			
		||||
## 2025-05-08
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - SearXNG: fix to resolve yaml dependency error [@Biendeo](https://github.com/Biendeo) ([#4322](https://github.com/community-scripts/ProxmoxVE/pull/4322))
 | 
			
		||||
    - Bugfix: Mikrotik & Pimox HAOS VM (NEXTID) [@MickLesk](https://github.com/MickLesk) ([#4313](https://github.com/community-scripts/ProxmoxVE/pull/4313))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - build.func Change the menu for Bridge Selection [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4326](https://github.com/community-scripts/ProxmoxVE/pull/4326))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - FAQ: Explanation "updatable" [@tremor021](https://github.com/tremor021) ([#4300](https://github.com/community-scripts/ProxmoxVE/pull/4300))
 | 
			
		||||
 | 
			
		||||
## 2025-05-07
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Alpine scripts: Set minimum disk space to 0.5GB [@tremor021](https://github.com/tremor021) ([#4288](https://github.com/community-scripts/ProxmoxVE/pull/4288))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - SuwayomiServer: Bump Java to v21, code formating [@tremor021](https://github.com/tremor021) ([#3987](https://github.com/community-scripts/ProxmoxVE/pull/3987))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Feature: get correct next VMID [@MickLesk](https://github.com/MickLesk) ([#4292](https://github.com/community-scripts/ProxmoxVE/pull/4292))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - OpenWebUI: Update docs link [@tremor021](https://github.com/tremor021) ([#4298](https://github.com/community-scripts/ProxmoxVE/pull/4298))
 | 
			
		||||
 | 
			
		||||
## 2025-05-06
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - alpine-transmission ([#4277](https://github.com/community-scripts/ProxmoxVE/pull/4277))
 | 
			
		||||
- streamlink-webui ([#4262](https://github.com/community-scripts/ProxmoxVE/pull/4262))
 | 
			
		||||
- Fumadocs ([#4263](https://github.com/community-scripts/ProxmoxVE/pull/4263))
 | 
			
		||||
- alpine-rclone ([#4265](https://github.com/community-scripts/ProxmoxVE/pull/4265))
 | 
			
		||||
- alpine-tinyauth ([#4264](https://github.com/community-scripts/ProxmoxVE/pull/4264))
 | 
			
		||||
- Re-Add: ActualBudget [@MickLesk](https://github.com/MickLesk) ([#4228](https://github.com/community-scripts/ProxmoxVE/pull/4228))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - whiptail menu - cancel button now exists the advanced menu [@MickLesk](https://github.com/MickLesk) ([#4259](https://github.com/community-scripts/ProxmoxVE/pull/4259))
 | 
			
		||||
 | 
			
		||||
## 2025-05-05
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Alpine-Komodo [@MickLesk](https://github.com/MickLesk) ([#4234](https://github.com/community-scripts/ProxmoxVE/pull/4234))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Docker VM: Fix variable doublequoting [@tremor021](https://github.com/tremor021) ([#4245](https://github.com/community-scripts/ProxmoxVE/pull/4245))
 | 
			
		||||
    - Alpine-Vaultwarden: Fix sed and better cert generation [@tremor021](https://github.com/tremor021) ([#4232](https://github.com/community-scripts/ProxmoxVE/pull/4232))
 | 
			
		||||
    - Apache Guacamole: Fix Version Grepping [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4229](https://github.com/community-scripts/ProxmoxVE/pull/4229))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Docker-VM: Add Disk Size choice [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4241](https://github.com/community-scripts/ProxmoxVE/pull/4241))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor: Komodo update logic [@MickLesk](https://github.com/MickLesk) ([#4231](https://github.com/community-scripts/ProxmoxVE/pull/4231))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - tools.func: better function handling + gs as new helper [@MickLesk](https://github.com/MickLesk) ([#4238](https://github.com/community-scripts/ProxmoxVE/pull/4238))
 | 
			
		||||
 | 
			
		||||
## 2025-05-04
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Code Server: Update misleading name, description and icon. [@ArmainAP](https://github.com/ArmainAP) ([#4211](https://github.com/community-scripts/ProxmoxVE/pull/4211))
 | 
			
		||||
 | 
			
		||||
## 2025-05-03
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Vaultwarden: Enable HTTPS by default [@tremor021](https://github.com/tremor021) ([#4197](https://github.com/community-scripts/ProxmoxVE/pull/4197))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Vaultwarden: Fix access URL [@tremor021](https://github.com/tremor021) ([#4199](https://github.com/community-scripts/ProxmoxVE/pull/4199))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - SFTPGo: Switch updatable to true on website [@tremor021](https://github.com/tremor021) ([#4186](https://github.com/community-scripts/ProxmoxVE/pull/4186))
 | 
			
		||||
 | 
			
		||||
## 2025-05-02
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - NetBox: Fix typo in sed command, preventing install [@tremor021](https://github.com/tremor021) ([#4179](https://github.com/community-scripts/ProxmoxVE/pull/4179))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Changed the random script button to be the same as all the other buttons [@BramSuurdje](https://github.com/BramSuurdje) ([#4183](https://github.com/community-scripts/ProxmoxVE/pull/4183))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Habitica: correct config path [@DrDonoso](https://github.com/DrDonoso) ([#4181](https://github.com/community-scripts/ProxmoxVE/pull/4181))
 | 
			
		||||
 | 
			
		||||
## 2025-05-01
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Readeck: Fix release crawling [@tremor021](https://github.com/tremor021) ([#4172](https://github.com/community-scripts/ProxmoxVE/pull/4172))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - homepage: Add build time var [@burgerga](https://github.com/burgerga) ([#4167](https://github.com/community-scripts/ProxmoxVE/pull/4167))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Bump vite from 6.2.6 to 6.3.4 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#4159](https://github.com/community-scripts/ProxmoxVE/pull/4159))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Grafana: add config path & documentation  [@JamborJan](https://github.com/JamborJan) ([#4162](https://github.com/community-scripts/ProxmoxVE/pull/4162))
 | 
			
		||||
 | 
			
		||||
## 2025-04-30
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Refactor: Matterbridge [@MickLesk](https://github.com/MickLesk) ([#4148](https://github.com/community-scripts/ProxmoxVE/pull/4148))
 | 
			
		||||
- Refactor: Ollama & Adding to Website [@MickLesk](https://github.com/MickLesk) ([#4147](https://github.com/community-scripts/ProxmoxVE/pull/4147))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - mark Caddy as updateable [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4154](https://github.com/community-scripts/ProxmoxVE/pull/4154))
 | 
			
		||||
    - Website: Add missing docs and config paths [@tremor021](https://github.com/tremor021) ([#4131](https://github.com/community-scripts/ProxmoxVE/pull/4131))
 | 
			
		||||
 | 
			
		||||
## 2025-04-29
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Umlautadaptarr Service File [@MickLesk](https://github.com/MickLesk) ([#4124](https://github.com/community-scripts/ProxmoxVE/pull/4124))
 | 
			
		||||
    - CheckMK added filter to not install beta versions [@briodan](https://github.com/briodan) ([#4118](https://github.com/community-scripts/ProxmoxVE/pull/4118))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor: sabnzbd [@MickLesk](https://github.com/MickLesk) ([#4127](https://github.com/community-scripts/ProxmoxVE/pull/4127))
 | 
			
		||||
    - Refactor: Navidrome [@MickLesk](https://github.com/MickLesk) ([#4120](https://github.com/community-scripts/ProxmoxVE/pull/4120))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - core: add setup_uv() function to automate installation and updating of uv [@MickLesk](https://github.com/MickLesk) ([#4129](https://github.com/community-scripts/ProxmoxVE/pull/4129))
 | 
			
		||||
    - core: persist /usr/local/bin via profile.d helper [@MickLesk](https://github.com/MickLesk) ([#4133](https://github.com/community-scripts/ProxmoxVE/pull/4133))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Documentation
 | 
			
		||||
 | 
			
		||||
    - SECURITY.md: add pve 8.4 as supported [@MickLesk](https://github.com/MickLesk) ([#4123](https://github.com/community-scripts/ProxmoxVE/pull/4123))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Feat: Random Script picker for Website [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4090](https://github.com/community-scripts/ProxmoxVE/pull/4090))
 | 
			
		||||
 | 
			
		||||
## 2025-04-28
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - umlautadaptarr ([#4093](https://github.com/community-scripts/ProxmoxVE/pull/4093))
 | 
			
		||||
- documenso ([#4080](https://github.com/community-scripts/ProxmoxVE/pull/4080))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Install rsync in ct/commafeed.sh [@mzhaodev](https://github.com/mzhaodev) ([#4086](https://github.com/community-scripts/ProxmoxVE/pull/4086))
 | 
			
		||||
    - fstrim: cancel/no whiptail support [@PonyXplosion](https://github.com/PonyXplosion) ([#4101](https://github.com/community-scripts/ProxmoxVE/pull/4101))
 | 
			
		||||
    - clean-lxc.sh: cancel/no whiptail support [@PonyXplosion](https://github.com/PonyXplosion) ([#4102](https://github.com/community-scripts/ProxmoxVE/pull/4102))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - karakeep: add cli and mcp build commands [@vhsdream](https://github.com/vhsdream) ([#4112](https://github.com/community-scripts/ProxmoxVE/pull/4112))
 | 
			
		||||
    - Make apt-cacher-ng a client of its own server [@pgcudahy](https://github.com/pgcudahy) ([#4092](https://github.com/community-scripts/ProxmoxVE/pull/4092))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Add: tools.func [@MickLesk](https://github.com/MickLesk) ([#4100](https://github.com/community-scripts/ProxmoxVE/pull/4100))
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - core: remove unneeded logging [@MickLesk](https://github.com/MickLesk) ([#4103](https://github.com/community-scripts/ProxmoxVE/pull/4103))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Website: Fix frontend path in footer [@tremor021](https://github.com/tremor021) ([#4108](https://github.com/community-scripts/ProxmoxVE/pull/4108))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - GoMFT: Move configuration info into config_path [@tremor021](https://github.com/tremor021) ([#4106](https://github.com/community-scripts/ProxmoxVE/pull/4106))
 | 
			
		||||
 | 
			
		||||
## 2025-04-27
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Re-Add DeamonSync Package [@MickLesk](https://github.com/MickLesk) ([#4079](https://github.com/community-scripts/ProxmoxVE/pull/4079))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - add default configuration file location for Caddy LXC  [@aly-yvette](https://github.com/aly-yvette) ([#4074](https://github.com/community-scripts/ProxmoxVE/pull/4074))
 | 
			
		||||
 | 
			
		||||
## 2025-04-26
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ This project currently supports the following versions of Proxmox VE:
 | 
			
		||||
 | 
			
		||||
| Version | Supported          |
 | 
			
		||||
| ------- | ------------------ |
 | 
			
		||||
| 8.4.x   | :white_check_mark: |
 | 
			
		||||
| 8.3.x   | :white_check_mark: |
 | 
			
		||||
| 8.2.x   | :white_check_mark: |
 | 
			
		||||
| 8.1.x   | :white_check_mark: |
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										67
									
								
								ct/actualbudget.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								ct/actualbudget.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://actualbudget.org/
 | 
			
		||||
 | 
			
		||||
APP="Actual Budget"
 | 
			
		||||
var_tags="finance"
 | 
			
		||||
var_cpu="2"
 | 
			
		||||
var_ram="2048"
 | 
			
		||||
var_disk="4"
 | 
			
		||||
var_os="debian"
 | 
			
		||||
var_version="12"
 | 
			
		||||
var_unprivileged="1"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/actualbudget ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  NODE_VERSION="22"
 | 
			
		||||
  install_node_and_modules
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ -f /opt/actualbudget-data/config.json ]]; then
 | 
			
		||||
    if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
 | 
			
		||||
      msg_info "Stopping ${APP}"
 | 
			
		||||
      systemctl stop actualbudget
 | 
			
		||||
      msg_ok "${APP} Stopped"
 | 
			
		||||
 | 
			
		||||
      msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
      $STD npm update -g @actual-app/sync-server
 | 
			
		||||
      echo "${RELEASE}" >/opt/actualbudget_version.txt
 | 
			
		||||
      msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
      msg_info "Starting ${APP}"
 | 
			
		||||
      systemctl start actualbudget
 | 
			
		||||
      msg_ok "Restarted ${APP}"
 | 
			
		||||
    else
 | 
			
		||||
      msg_info "${APP} is already up to date"
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    msg_info "Old Installation Found, you need to migrate your data and recreate to a new container"
 | 
			
		||||
    msg_info "Please follow the instructions on the ${APP} website to migrate your data"
 | 
			
		||||
    msg_info "https://actualbudget.org/docs/backup-restore/backup"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:5006${CL}"
 | 
			
		||||
@@ -20,21 +20,20 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    msg_info "Updating Alpine Packages"
 | 
			
		||||
    $STD apk update
 | 
			
		||||
    $STD apk upgrade
 | 
			
		||||
    msg_ok "Updated Alpine Packages"
 | 
			
		||||
  header_info
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating AdGuard Home"
 | 
			
		||||
    $STD /opt/AdGuardHome/AdGuardHome --update
 | 
			
		||||
    msg_ok "Updated AdGuard Home"
 | 
			
		||||
  msg_info "Updating AdGuard Home"
 | 
			
		||||
  $STD /opt/AdGuardHome/AdGuardHome --update
 | 
			
		||||
  msg_ok "Updated AdGuard Home"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restarting AdGuard Home"
 | 
			
		||||
    $STD rc-service adguardhome restart
 | 
			
		||||
    msg_ok "Restarted AdGuard Home"
 | 
			
		||||
  msg_info "Restarting AdGuard Home"
 | 
			
		||||
  $STD rc-service adguardhome restart
 | 
			
		||||
  msg_ok "Restarted AdGuard Home"
 | 
			
		||||
 | 
			
		||||
    exit 0
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										89
									
								
								ct/alpine-bitmagnet.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								ct/alpine-bitmagnet.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/bitmagnet-io/bitmagnet
 | 
			
		||||
 | 
			
		||||
APP="Alpine-bitmagnet"
 | 
			
		||||
var_tags="${var_tags:-alpine;torrent}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-3}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/bitmagnet ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [ "${RELEASE}" != "$(cat /opt/bitmagnet_version.txt)" ] || [ ! -f /opt/bitmagnet_version.txt ]; then
 | 
			
		||||
    msg_info "Backing up database"
 | 
			
		||||
    rm -f /tmp/backup.sql
 | 
			
		||||
    $STD sudo -u postgres pg_dump \
 | 
			
		||||
      --column-inserts \
 | 
			
		||||
      --data-only \
 | 
			
		||||
      --on-conflict-do-nothing \
 | 
			
		||||
      --rows-per-insert=1000 \
 | 
			
		||||
      --table=metadata_sources \
 | 
			
		||||
      --table=content \
 | 
			
		||||
      --table=content_attributes \
 | 
			
		||||
      --table=content_collections \
 | 
			
		||||
      --table=content_collections_content \
 | 
			
		||||
      --table=torrent_sources \
 | 
			
		||||
      --table=torrents \
 | 
			
		||||
      --table=torrent_files \
 | 
			
		||||
      --table=torrent_hints \
 | 
			
		||||
      --table=torrent_contents \
 | 
			
		||||
      --table=torrent_tags \
 | 
			
		||||
      --table=torrents_torrent_sources \
 | 
			
		||||
      --table=key_values \
 | 
			
		||||
      bitmagnet \
 | 
			
		||||
      >/tmp/backup.sql
 | 
			
		||||
    mv /tmp/backup.sql /opt/
 | 
			
		||||
    msg_ok "Database backed up"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} from $(cat /opt/bitmagnet_version.txt) to ${RELEASE}"
 | 
			
		||||
    $STD apk -U upgrade
 | 
			
		||||
    $STD service bitmagnet stop
 | 
			
		||||
    [ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
 | 
			
		||||
    [ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
 | 
			
		||||
    rm -rf /opt/bitmagnet/*
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
 | 
			
		||||
    cd /opt/bitmagnet
 | 
			
		||||
    VREL=v$RELEASE
 | 
			
		||||
    $STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
 | 
			
		||||
    chmod +x bitmagnet
 | 
			
		||||
    [ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
 | 
			
		||||
    [ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    echo "${RELEASE}" >/opt/bitmagnet_version.txt
 | 
			
		||||
    $STD service bitmagnet start
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3333${CL}"
 | 
			
		||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    case $CHOICE in
 | 
			
		||||
    1)
 | 
			
		||||
      apk update && apk upgrade
 | 
			
		||||
      $STD apk -U upgrade
 | 
			
		||||
      exit
 | 
			
		||||
      ;;
 | 
			
		||||
    esac
 | 
			
		||||
@@ -47,4 +47,4 @@ start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										62
									
								
								ct/alpine-gatus.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								ct/alpine-gatus.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/TwiN/gatus
 | 
			
		||||
 | 
			
		||||
APP="Alpine-gatus"
 | 
			
		||||
var_tags="${var_tags:-alpine;monitoring}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-3}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/gatus ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [ "${RELEASE}" != "$(cat /opt/gatus_version.txt)" ] || [ ! -f /opt/gatus_version.txt ]; then
 | 
			
		||||
    msg_info "Updating ${APP} LXC"
 | 
			
		||||
    $STD apk -U upgrade
 | 
			
		||||
    $STD service gatus stop
 | 
			
		||||
    mv /opt/gatus/config/config.yaml /opt
 | 
			
		||||
    rm -rf /opt/gatus/*
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
 | 
			
		||||
    cd /opt/gatus
 | 
			
		||||
    $STD go mod tidy
 | 
			
		||||
    CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
 | 
			
		||||
    setcap CAP_NET_RAW+ep gatus
 | 
			
		||||
    mv /opt/config.yaml config
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    echo "${RELEASE}" >/opt/gatus_version.txt
 | 
			
		||||
    $STD service gatus start
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
			
		||||
@@ -20,19 +20,18 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    msg_info "Updating Alpine Packages"
 | 
			
		||||
    apk update
 | 
			
		||||
    apk upgrade
 | 
			
		||||
    msg_ok "Updated Alpine Packages"
 | 
			
		||||
  header_info
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Gitea"
 | 
			
		||||
    apk upgrade gitea
 | 
			
		||||
    msg_ok "Updated Gitea"
 | 
			
		||||
  msg_info "Updating Gitea"
 | 
			
		||||
  apk upgrade gitea
 | 
			
		||||
  msg_ok "Updated Gitea"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restarting Gitea"
 | 
			
		||||
    rc-service gitea restart
 | 
			
		||||
    msg_ok "Restarted Gitea"
 | 
			
		||||
  msg_info "Restarting Gitea"
 | 
			
		||||
  rc-service gitea restart
 | 
			
		||||
  msg_ok "Restarted Gitea"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -42,4 +41,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    case $CHOICE in
 | 
			
		||||
    1)
 | 
			
		||||
      apk update && apk upgrade
 | 
			
		||||
      $STD apk -U upgrade
 | 
			
		||||
      exit
 | 
			
		||||
      ;;
 | 
			
		||||
    2)
 | 
			
		||||
@@ -62,4 +62,4 @@ description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${APP} should be reachable by going to the following URL.
 | 
			
		||||
         ${BL}http://${IP}:3000${CL} \n"
 | 
			
		||||
         ${BL}http://${IP}:3000${CL} \n"
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="Alpine-IT-Tools"
 | 
			
		||||
var_tags="${var_tags:-alpine;development}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-0.2}"
 | 
			
		||||
var_disk="${var_disk:-0.5}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -20,32 +20,32 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
    if [ ! -d /usr/share/nginx/html ]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
  if [ ! -d /usr/share/nginx/html ]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
 | 
			
		||||
    if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
 | 
			
		||||
        DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
 | 
			
		||||
        msg_info "Updating ${APP} LXC"
 | 
			
		||||
        curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
			
		||||
        mkdir -p /usr/share/nginx/html
 | 
			
		||||
        rm -rf /usr/share/nginx/html/*
 | 
			
		||||
        unzip -q it-tools.zip -d /tmp/it-tools
 | 
			
		||||
        cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
			
		||||
        rm -rf /tmp/it-tools
 | 
			
		||||
        rm -f it-tools.zip
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
 | 
			
		||||
  if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
 | 
			
		||||
    DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
 | 
			
		||||
    msg_info "Updating ${APP} LXC"
 | 
			
		||||
    curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
			
		||||
    mkdir -p /usr/share/nginx/html
 | 
			
		||||
    rm -rf /usr/share/nginx/html/*
 | 
			
		||||
    unzip -q it-tools.zip -d /tmp/it-tools
 | 
			
		||||
    cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
			
		||||
    rm -rf /tmp/it-tools
 | 
			
		||||
    rm -f it-tools.zip
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
    exit 0
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -55,4 +55,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										58
									
								
								ct/alpine-komodo.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								ct/alpine-komodo.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://komo.do
 | 
			
		||||
 | 
			
		||||
APP="Alpine-Komodo"
 | 
			
		||||
var_tags="${var_tags:-docker,alpine}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  [[ -d /opt/komodo ]] || {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ${APP}"
 | 
			
		||||
  COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
 | 
			
		||||
  if [[ -z "$COMPOSE_FILE" ]]; then
 | 
			
		||||
    msg_error "No valid compose file found in /opt/komodo!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
 | 
			
		||||
  BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
 | 
			
		||||
  cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
 | 
			
		||||
    msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  }
 | 
			
		||||
  GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
 | 
			
		||||
  if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
 | 
			
		||||
    msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
 | 
			
		||||
    mv "$BACKUP_FILE" "$COMPOSE_FILE"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  $STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
 | 
			
		||||
  msg_ok "Updated ${APP}"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9120${CL}"
 | 
			
		||||
@@ -20,20 +20,19 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    msg_info "Updating Alpine Packages"
 | 
			
		||||
    $STD apk update
 | 
			
		||||
    $STD apk upgrade
 | 
			
		||||
    msg_ok "Updated Alpine Packages"
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating MariaDB"
 | 
			
		||||
    $STD apk upgrade mariadb mariadb-client
 | 
			
		||||
    msg_ok "Updated MariaDB"
 | 
			
		||||
  msg_info "Updating MariaDB"
 | 
			
		||||
  $STD apk upgrade mariadb mariadb-client
 | 
			
		||||
  msg_ok "Updated MariaDB"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restarting MariaDB"
 | 
			
		||||
    $STD rc-service mariadb restart
 | 
			
		||||
    msg_ok "Restarted MariaDB"
 | 
			
		||||
  msg_info "Restarting MariaDB"
 | 
			
		||||
  $STD rc-service mariadb restart
 | 
			
		||||
  msg_ok "Restarted MariaDB"
 | 
			
		||||
 | 
			
		||||
    exit 0
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -20,24 +20,23 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    msg_info "Updating Alpine Packages"
 | 
			
		||||
    $STD apk update
 | 
			
		||||
    $STD apk upgrade
 | 
			
		||||
    msg_ok "Updated Alpine Packages"
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Node.js and npm"
 | 
			
		||||
    $STD apk upgrade nodejs npm
 | 
			
		||||
    msg_ok "Updated Node.js and npm"
 | 
			
		||||
  msg_info "Updating Node.js and npm"
 | 
			
		||||
  $STD apk upgrade nodejs npm
 | 
			
		||||
  msg_ok "Updated Node.js and npm"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Node-RED"
 | 
			
		||||
    $STD npm install -g --unsafe-perm node-red
 | 
			
		||||
    msg_ok "Updated Node-RED"
 | 
			
		||||
  msg_info "Updating Node-RED"
 | 
			
		||||
  $STD npm install -g --unsafe-perm node-red
 | 
			
		||||
  msg_ok "Updated Node-RED"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restarting Node-RED"
 | 
			
		||||
    $STD rc-service nodered restart
 | 
			
		||||
    msg_ok "Restarted Node-RED"
 | 
			
		||||
  msg_info "Restarting Node-RED"
 | 
			
		||||
  $STD rc-service nodered restart
 | 
			
		||||
  msg_ok "Restarted Node-RED"
 | 
			
		||||
 | 
			
		||||
    exit 0
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -21,8 +21,7 @@ catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk update
 | 
			
		||||
  $STD apk upgrade
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating PostgreSQL"
 | 
			
		||||
 
 | 
			
		||||
@@ -20,20 +20,19 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    msg_info "Updating Alpine Packages"
 | 
			
		||||
    $STD apk update
 | 
			
		||||
    $STD apk upgrade
 | 
			
		||||
    msg_ok "Updated Alpine Packages"
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Prometheus"
 | 
			
		||||
    $STD apk upgrade prometheus
 | 
			
		||||
    msg_ok "Updated Prometheus"
 | 
			
		||||
  msg_info "Updating Prometheus"
 | 
			
		||||
  $STD apk upgrade prometheus
 | 
			
		||||
  msg_ok "Updated Prometheus"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restarting Prometheus"
 | 
			
		||||
    $STD rc-service prometheus restart
 | 
			
		||||
    msg_ok "Restarted Prometheus"
 | 
			
		||||
  msg_info "Restarting Prometheus"
 | 
			
		||||
  $STD rc-service prometheus restart
 | 
			
		||||
  msg_ok "Restarted Prometheus"
 | 
			
		||||
 | 
			
		||||
    exit 0
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								ct/alpine-rclone.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ct/alpine-rclone.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/rclone/rclone
 | 
			
		||||
 | 
			
		||||
APP="Alpine-rclone"
 | 
			
		||||
var_tags="${var_tags:-alpine;backup}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-1}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [ ! -d /opt/rclone ]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [ "${RELEASE}" != "$(cat /opt/rclone_version.txt)" ] || [ ! -f /opt/rclone_version.txt ]; then
 | 
			
		||||
    msg_info "Updating ${APP} LXC"
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file"
 | 
			
		||||
    $STD unzip -o "$temp_file" '*/**' -d /opt/rclone
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    echo "${RELEASE}" >/opt/rclone_version.txt
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
							
								
								
									
										69
									
								
								ct/alpine-tinyauth.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								ct/alpine-tinyauth.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/steveiliop56/tinyauth
 | 
			
		||||
 | 
			
		||||
APP="Alpine-tinyauth"
 | 
			
		||||
var_tags="${var_tags:-alpine;auth}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-3}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  if [[ ! -d /opt/tinyauth ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating tinyauth"
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
 | 
			
		||||
    $STD service tinyauth stop
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    cp /opt/tinyauth/.env /opt
 | 
			
		||||
    rm -rf /opt/tinyauth
 | 
			
		||||
    mkdir -p /opt/tinyauth
 | 
			
		||||
    curl -fsSL "https://github.com/steveiliop56/tinyauth/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar -xzf "$temp_file" -C /opt/tinyauth --strip-components=1
 | 
			
		||||
    cd /opt/tinyauth/frontend
 | 
			
		||||
    $STD bun install
 | 
			
		||||
    $STD bun run build
 | 
			
		||||
    mv dist /opt/tinyauth/internal/assets/
 | 
			
		||||
    cd /opt/tinyauth
 | 
			
		||||
    $STD go mod download
 | 
			
		||||
    CGO_ENABLED=0 go build -ldflags "-s -w"
 | 
			
		||||
    cp /opt/.env /opt/tinyauth
 | 
			
		||||
    echo "${RELEASE}" >/opt/tinyauth_version.txt
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    msg_info "Restarting tinyauth"
 | 
			
		||||
    $STD service tinyauth start
 | 
			
		||||
    msg_ok "Restarted tinyauth"
 | 
			
		||||
    msg_ok "Updated tinyauth"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
							
								
								
									
										41
									
								
								ct/alpine-traefik.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								ct/alpine-traefik.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://alpinelinux.org/
 | 
			
		||||
 | 
			
		||||
APP="Alpine-Traefik"
 | 
			
		||||
var_tags="${var_tags:-os;alpine}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-1}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
  msg_info "Upgrading traefik from edge"
 | 
			
		||||
  $STD apk add traefik --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community
 | 
			
		||||
  msg_ok "Upgraded traefik"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} WebUI Access (if configured) - using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/dashboard${CL}"
 | 
			
		||||
							
								
								
									
										45
									
								
								ct/alpine-transmission.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ct/alpine-transmission.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://transmissionbt.com/
 | 
			
		||||
 | 
			
		||||
APP="Alpine-Transmission"
 | 
			
		||||
var_tags="${var_tags:-alpine;torrent}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-1}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating Transmission"
 | 
			
		||||
  $STD apk upgrade transmission-daemon
 | 
			
		||||
  msg_ok "Updated Transmission"
 | 
			
		||||
 | 
			
		||||
  msg_info "Restarting Transmission"
 | 
			
		||||
  $STD rc-service transmission-daemon restart
 | 
			
		||||
  msg_ok "Restarted Transmission"
 | 
			
		||||
 | 
			
		||||
  exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9091${CL}"
 | 
			
		||||
@@ -37,14 +37,15 @@ function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    case $CHOICE in
 | 
			
		||||
    1)
 | 
			
		||||
      apk update && apk upgrade && rc-service vaultwarden restart -q
 | 
			
		||||
      $STD apk -U upgrade
 | 
			
		||||
      rc-service vaultwarden restart -q
 | 
			
		||||
      exit
 | 
			
		||||
      ;;
 | 
			
		||||
    2)
 | 
			
		||||
      if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Setup your ADMIN_TOKEN (make it strong)" 10 58 3>&1 1>&2 2>&3); then
 | 
			
		||||
        if [[ -z "$NEWTOKEN" ]]; then exit-script; fi
 | 
			
		||||
        if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
 | 
			
		||||
        TOKEN=$(echo -n ${NEWTOKEN} | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
 | 
			
		||||
        TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
 | 
			
		||||
        if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
 | 
			
		||||
          sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
 | 
			
		||||
        else
 | 
			
		||||
@@ -65,4 +66,4 @@ description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${APP} should be reachable by going to the following URL.
 | 
			
		||||
         ${BL}http://${IP}:8000${CL} \n"
 | 
			
		||||
         ${BL}http://${IP}:8000${CL} \n"
 | 
			
		||||
 
 | 
			
		||||
@@ -21,8 +21,7 @@ catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  $STD apk update
 | 
			
		||||
  $STD apk upgrade
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
 | 
			
		||||
  msg_info "update wireguard-tools"
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    case $CHOICE in
 | 
			
		||||
    1)
 | 
			
		||||
      apk update && apk upgrade
 | 
			
		||||
      $STD apk -U upgrade
 | 
			
		||||
      exit
 | 
			
		||||
      ;;
 | 
			
		||||
    esac
 | 
			
		||||
@@ -47,4 +47,4 @@ start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								ct/alpine.sh
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								ct/alpine.sh
									
									
									
									
									
								
							@@ -9,7 +9,7 @@ APP="Alpine"
 | 
			
		||||
var_tags="${var_tags:-os;alpine}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-0.1}"
 | 
			
		||||
var_disk="${var_disk:-0.5}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -20,13 +20,15 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
 | 
			
		||||
    "1" "Check for Alpine Updates" ON \
 | 
			
		||||
    3>&1 1>&2 2>&3)
 | 
			
		||||
  UPD=$(
 | 
			
		||||
    whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
 | 
			
		||||
      "1" "Check for Alpine Updates" ON \
 | 
			
		||||
      3>&1 1>&2 2>&3
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  header_info
 | 
			
		||||
  if [ "$UPD" == "1" ]; then
 | 
			
		||||
    apk update && apk upgrade
 | 
			
		||||
    $STD apk -U upgrade
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
@@ -35,4 +37,4 @@ start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								ct/asterisk.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								ct/asterisk.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: michelroegl-brunner
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://asterisk.org/
 | 
			
		||||
 | 
			
		||||
APP="Asterisk"
 | 
			
		||||
var_tags="${var_tags:-telephone;pbx}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    msg_error "No Update function provided for ${APP} LXC"
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="Authentik"
 | 
			
		||||
var_tags="${var_tags:-identity-provider}"
 | 
			
		||||
var_disk="${var_disk:-12}"
 | 
			
		||||
var_cpu="${var_cpu:-6}"
 | 
			
		||||
var_ram="${var_ram:-8192}"
 | 
			
		||||
var_ram="${var_ram:-10240}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -29,6 +29,13 @@ function update_script() {
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    NODE_VERSION="22"
 | 
			
		||||
    PG_VERSION="16"
 | 
			
		||||
    setup_uv
 | 
			
		||||
    install_postgresql
 | 
			
		||||
    install_node_and_modules
 | 
			
		||||
    install_go
 | 
			
		||||
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop authentik-server
 | 
			
		||||
    systemctl stop authentik-worker
 | 
			
		||||
@@ -54,17 +61,14 @@ function update_script() {
 | 
			
		||||
    go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
 | 
			
		||||
    msg_ok "Built ${APP} server"
 | 
			
		||||
 | 
			
		||||
    msg_info "Installing Python Dependencies"
 | 
			
		||||
    msg_info "Building Authentik"
 | 
			
		||||
    cd /opt/authentik
 | 
			
		||||
    $STD poetry install --only=main --no-ansi --no-interaction --no-root
 | 
			
		||||
    $STD poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt
 | 
			
		||||
    $STD pip install --no-cache-dir -r requirements.txt
 | 
			
		||||
    $STD pip install .
 | 
			
		||||
    msg_ok "Installed Python Dependencies"
 | 
			
		||||
    $STD uv sync --frozen --no-install-project --no-dev
 | 
			
		||||
    uv run python -m lifecycle.migrate
 | 
			
		||||
    ln -s /opt/authentik/.venv/bin/gunicorn /usr/local/bin/gunicorn
 | 
			
		||||
    ln -s /opt/authentik/.venv/bin/celery /usr/local/bin/celery
 | 
			
		||||
    msg_ok "Authentik built"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE} (Patience)"
 | 
			
		||||
    cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints
 | 
			
		||||
    $STD bash /opt/authentik/lifecycle/ak migrate
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										86
									
								
								ct/babybuddy.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								ct/babybuddy.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,86 @@
 | 
			
		||||
#!/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/babybuddy/babybuddy
 | 
			
		||||
 | 
			
		||||
APP="Baby Buddy"
 | 
			
		||||
var_tags="${var_tags:-baby}"
 | 
			
		||||
var_disk="${var_disk:-5}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/babybuddy ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/babybuddy_version.txt)" ]]; then
 | 
			
		||||
    setup_uv
 | 
			
		||||
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop nginx
 | 
			
		||||
    systemctl stop uwsgi
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning old files"
 | 
			
		||||
    cp babybuddy/settings/production.py /tmp/production.py.bak
 | 
			
		||||
    find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} +
 | 
			
		||||
    msg_ok "Cleaned old files"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/babybuddy/babybuddy/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    cd /opt/babybuddy
 | 
			
		||||
    tar zxf "$temp_file" --strip-components=1 -C /opt/babybuddy
 | 
			
		||||
    mv /tmp/production.py.bak babybuddy/settings/production.py
 | 
			
		||||
    cd /opt/babybuddy
 | 
			
		||||
    source .venv/bin/activate
 | 
			
		||||
    $STD uv pip install -r requirements.txt
 | 
			
		||||
    $STD python manage.py migrate
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Fixing permissions"
 | 
			
		||||
    chown -R www-data:www-data /opt/data
 | 
			
		||||
    chmod 640 /opt/data/db.sqlite3
 | 
			
		||||
    chmod 750 /opt/data
 | 
			
		||||
    msg_ok "Permissions fixed"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl start uwsgi
 | 
			
		||||
    systemctl start nginx
 | 
			
		||||
    msg_ok "Services Started"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    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}"
 | 
			
		||||
							
								
								
									
										98
									
								
								ct/bitmagnet.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								ct/bitmagnet.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/bitmagnet/bitmagnet
 | 
			
		||||
 | 
			
		||||
APP="Bitmagnet"
 | 
			
		||||
var_tags="${var_tags:-os}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/bitmagnet ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping Service"
 | 
			
		||||
    systemctl stop bitmagnet-web
 | 
			
		||||
    msg_ok "Stopped Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Backing up database"
 | 
			
		||||
    rm -f /tmp/backup.sql
 | 
			
		||||
    $STD sudo -u postgres pg_dump \
 | 
			
		||||
      --column-inserts \
 | 
			
		||||
      --data-only \
 | 
			
		||||
      --on-conflict-do-nothing \
 | 
			
		||||
      --rows-per-insert=1000 \
 | 
			
		||||
      --table=metadata_sources \
 | 
			
		||||
      --table=content \
 | 
			
		||||
      --table=content_attributes \
 | 
			
		||||
      --table=content_collections \
 | 
			
		||||
      --table=content_collections_content \
 | 
			
		||||
      --table=torrent_sources \
 | 
			
		||||
      --table=torrents \
 | 
			
		||||
      --table=torrent_files \
 | 
			
		||||
      --table=torrent_hints \
 | 
			
		||||
      --table=torrent_contents \
 | 
			
		||||
      --table=torrent_tags \
 | 
			
		||||
      --table=torrents_torrent_sources \
 | 
			
		||||
      --table=key_values \
 | 
			
		||||
      bitmagnet \
 | 
			
		||||
      >/tmp/backup.sql
 | 
			
		||||
    mv /tmp/backup.sql /opt/
 | 
			
		||||
    msg_ok "Database backed up"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    [ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
 | 
			
		||||
    [ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
 | 
			
		||||
    rm -rf /opt/bitmagnet/*
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
 | 
			
		||||
    cd /opt/bitmagnet
 | 
			
		||||
    VREL=v$RELEASE
 | 
			
		||||
    $STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
 | 
			
		||||
    chmod +x bitmagnet
 | 
			
		||||
    [ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
 | 
			
		||||
    [ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start bitmagnet-web
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    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}:3333${CL}"
 | 
			
		||||
@@ -1,71 +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: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/stackblitz-labs/bolt.diy/
 | 
			
		||||
 | 
			
		||||
APP="boltdiy"
 | 
			
		||||
TAGS="code;ai"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-3072}"
 | 
			
		||||
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/bolt.diy ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/stackblitz-labs/bolt.diy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/boltdiy_version.txt)" ]] || [[ ! -f /opt/boltdiy_version.txt ]]; then
 | 
			
		||||
        msg_info "Stopping $APP"
 | 
			
		||||
        systemctl stop boltdiy
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
        temp_dir=$(mktemp -d)
 | 
			
		||||
        temp_file=$(mktemp)
 | 
			
		||||
        cd $temp_dir
 | 
			
		||||
curl -fsSL "https://github.com/stackblitz-labs/bolt.diy/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
        tar xzf $temp_file
 | 
			
		||||
        cp -rf bolt.diy-${RELEASE}/* /opt/bolt.diy
 | 
			
		||||
        cd /opt/bolt.diy
 | 
			
		||||
        $STD pnpm install
 | 
			
		||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start boltdiy
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf $temp_file
 | 
			
		||||
        rm -rf $temp_dir
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        echo "${RELEASE}" >/opt/boltdiy_version.txt
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5173${CL}"
 | 
			
		||||
@@ -39,9 +39,9 @@ function update_script() {
 | 
			
		||||
    unzip -q "/opt/BookStack-${RELEASE}.zip" -d /opt
 | 
			
		||||
    mv "/opt/BookStack-${RELEASE}" /opt/bookstack
 | 
			
		||||
    cp /opt/bookstack-backup/.env /opt/bookstack/.env
 | 
			
		||||
    cp -r /opt/bookstack-backup/public/uploads/* /opt/bookstack/public/uploads/ || true
 | 
			
		||||
    cp -r /opt/bookstack-backup/storage/uploads/* /opt/bookstack/storage/uploads/ || true
 | 
			
		||||
    cp -r /opt/bookstack-backup/themes/* /opt/bookstack/themes/ || true
 | 
			
		||||
    [[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/
 | 
			
		||||
    [[ -d /opt/bookstack-backup/storage/uploads ]] && cp -a /opt/bookstack-backup/storage/uploads/. /opt/bookstack/storage/uploads/
 | 
			
		||||
    [[ -d /opt/bookstack-backup/themes ]] && cp -a /opt/bookstack-backup/themes/. /opt/bookstack/themes/
 | 
			
		||||
    cd /opt/bookstack
 | 
			
		||||
    export COMPOSER_ALLOW_SUPERUSER=1
 | 
			
		||||
    $STD composer install --no-dev
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -v '\-rc' | sort -V | tail -n 1)
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    $STD omd stop monitoring
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								ct/cloudflare-ddns.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								ct/cloudflare-ddns.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
#!/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: edoardop13
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/favonia/cloudflare-ddns
 | 
			
		||||
 | 
			
		||||
APP="Cloudflare-DDNS"
 | 
			
		||||
var_tags="${var_tags:-network}"
 | 
			
		||||
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 [[ ! -f /etc/systemd/system/cloudflare-ddns.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_error "There is no update function for ${APP}."
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
@@ -33,6 +33,13 @@ function update_script() {
 | 
			
		||||
    systemctl stop commafeed
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    if ! [[ $(dpkg -s rsync 2>/dev/null) ]]; then
 | 
			
		||||
      msg_info "Installing Dependencies"
 | 
			
		||||
      $STD apt-get update
 | 
			
		||||
      $STD apt-get install -y rsync
 | 
			
		||||
      msg_ok "Installed Dependencies"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    curl -fsSL "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip" -o $(basename "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip")
 | 
			
		||||
    unzip -q commafeed-"${RELEASE}"-h2-jvm.zip
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										66
									
								
								ct/configarr.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								ct/configarr.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
#!/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: finkerle
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/raydak-labs/configarr
 | 
			
		||||
 | 
			
		||||
APP="Configarr"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
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/configarr ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/raydak-labs/configarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/configarr_version.txt)" ]] || [[ ! -f /opt/configarr_version.txt ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop configarr-task.timer
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    mkdir -p /opt/backup/
 | 
			
		||||
    mv /opt/configarr/{config.yml,secrets.yml,.env} "/opt/backup/"
 | 
			
		||||
    rm -rf /opt/configarr
 | 
			
		||||
    fetch_and_deploy_gh_release "raydak-labs/configarr"
 | 
			
		||||
    mv /opt/backup/* /opt/configarr/
 | 
			
		||||
    cd /opt/configarr
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    $STD pnpm run build
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start configarr-task.timer
 | 
			
		||||
    msg_ok "Started configarr"
 | 
			
		||||
 | 
			
		||||
    rm -rf /opt/backup
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  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 (no web-ui):${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8989${CL}"
 | 
			
		||||
							
								
								
									
										77
									
								
								ct/documenso.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								ct/documenso.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
#!/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/documenso/documenso
 | 
			
		||||
 | 
			
		||||
APP="Documenso"
 | 
			
		||||
var_tags="${var_tags:-document}"
 | 
			
		||||
var_disk="${var_disk:-12}"
 | 
			
		||||
var_cpu="${var_cpu:-6}"
 | 
			
		||||
var_ram="${var_ram:-6144}"
 | 
			
		||||
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/documenso ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/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}"
 | 
			
		||||
    systemctl stop documenso
 | 
			
		||||
    msg_ok "${APP} Stopped"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    cp /opt/documenso/.env /opt/
 | 
			
		||||
    rm -rf /opt/documenso
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    mv documenso-${RELEASE} /opt/documenso
 | 
			
		||||
    cd /opt/documenso
 | 
			
		||||
    mv /opt/.env /opt/documenso/.env
 | 
			
		||||
    export TURBO_CACHE=1
 | 
			
		||||
    export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
    export CYPRESS_INSTALL_BINARY=0
 | 
			
		||||
    export NODE_OPTIONS="--max-old-space-size=4096"
 | 
			
		||||
    $STD npm ci
 | 
			
		||||
    $STD turbo run build --filter=@documenso/remix
 | 
			
		||||
    $STD npm run prisma:migrate-deploy
 | 
			
		||||
    $STD turbo daemon stop
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start documenso
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
@@ -1,15 +1,15 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Arian Nasr (arian-nasr)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/deepch/RTSPtoWeb
 | 
			
		||||
# Source: https://www.freepbx.org/
 | 
			
		||||
 | 
			
		||||
APP="RTSPtoWeb"
 | 
			
		||||
var_tags="${var_tags:-media}"
 | 
			
		||||
APP="FreePBX"
 | 
			
		||||
var_tags="pbx;voip;telephony"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -23,14 +23,12 @@ function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /var ]]; then
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f /lib/systemd/system/freepbx.service ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating $APP LXC"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
    msg_ok "Updated $APP LXC"
 | 
			
		||||
    msg_error "Currently we don't provide an update function for this ${APP}."
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -41,4 +39,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
							
								
								
									
										72
									
								
								ct/fumadocs.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								ct/fumadocs.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,72 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/fuma-nama/fumadoc
 | 
			
		||||
 | 
			
		||||
APP="Fumadocs"
 | 
			
		||||
var_tags="${var_tags:-documentation}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-5}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/fumadocs ]]; then
 | 
			
		||||
    msg_error "No installation found in /opt/fumadocs!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [[ ! -f /opt/fumadocs/.projectname ]]; then
 | 
			
		||||
    msg_error "Project name file not found: /opt/fumadocs/.projectname!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="pnpm@latest" install_node_and_modules
 | 
			
		||||
  PROJECT_NAME=$(</opt/fumadocs/.projectname)
 | 
			
		||||
  PROJECT_DIR="/opt/fumadocs/${PROJECT_NAME}"
 | 
			
		||||
  SERVICE_NAME="fumadocs_${PROJECT_NAME}.service"
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d "$PROJECT_DIR" ]]; then
 | 
			
		||||
    msg_error "Project directory does not exist: $PROJECT_DIR"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Stopping service $SERVICE_NAME"
 | 
			
		||||
  systemctl stop "$SERVICE_NAME"
 | 
			
		||||
  msg_ok "Stopped service $SERVICE_NAME"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating dependencies using pnpm"
 | 
			
		||||
  cd "$PROJECT_DIR"
 | 
			
		||||
  $STD pnpm up --latest
 | 
			
		||||
  $STD pnpm build
 | 
			
		||||
  msg_ok "Updated dependencies using pnpm"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting service $SERVICE_NAME"
 | 
			
		||||
  systemctl start "$SERVICE_NAME"
 | 
			
		||||
  msg_ok "Started service $SERVICE_NAME"
 | 
			
		||||
 | 
			
		||||
  msg_ok "Fumadocs successfully updated"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
							
								
								
									
										75
									
								
								ct/gatus.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								ct/gatus.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,75 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/TwiN/gatus
 | 
			
		||||
 | 
			
		||||
APP="gatus"
 | 
			
		||||
var_tags="${var_tags:-monitoring}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/gatus ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop gatus
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    mv /opt/gatus/config/config.yaml /opt
 | 
			
		||||
    rm -rf /opt/gatus/*
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
 | 
			
		||||
    cd /opt/gatus
 | 
			
		||||
    $STD go mod tidy
 | 
			
		||||
    CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
 | 
			
		||||
    setcap CAP_NET_RAW+ep gatus
 | 
			
		||||
    mv /opt/config.yaml config
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start gatus
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
			
		||||
							
								
								
									
										32
									
								
								ct/go2rtc.sh
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								ct/go2rtc.sh
									
									
									
									
									
								
							@@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
# Source: https://github.com/AlexxIT/go2rtc
 | 
			
		||||
 | 
			
		||||
APP="go2rtc"
 | 
			
		||||
var_tags="${var_tags:-recorder;video}"
 | 
			
		||||
var_tags="${var_tags:-streaming;video}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
@@ -20,22 +20,22 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/go2rtc ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    systemctl stop go2rtc
 | 
			
		||||
    cd /opt/go2rtc
 | 
			
		||||
    rm go2rtc_linux_amd64
 | 
			
		||||
    curl -fsSL "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64" -o $(basename "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64")
 | 
			
		||||
    chmod +x go2rtc_linux_amd64
 | 
			
		||||
    systemctl start go2rtc
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/go2rtc ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating $APP"
 | 
			
		||||
  systemctl stop go2rtc
 | 
			
		||||
  cd /opt/go2rtc
 | 
			
		||||
  rm go2rtc_linux_amd64
 | 
			
		||||
  curl -fsSL "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64" -o $(basename "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64")
 | 
			
		||||
  chmod +x go2rtc_linux_amd64
 | 
			
		||||
  systemctl start go2rtc
 | 
			
		||||
  msg_ok "Updated $APP"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/actualbudget
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/actualbudget
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___        __              __   ____            __           __ 
 | 
			
		||||
   /   | _____/ /___  ______ _/ /  / __ )__  ______/ /___ ____  / /_
 | 
			
		||||
  / /| |/ ___/ __/ / / / __ `/ /  / __  / / / / __  / __ `/ _ \/ __/
 | 
			
		||||
 / ___ / /__/ /_/ /_/ / /_/ / /  / /_/ / /_/ / /_/ / /_/ /  __/ /_  
 | 
			
		||||
/_/  |_\___/\__/\__,_/\__,_/_/  /_____/\__,_/\__,_/\__, /\___/\__/  
 | 
			
		||||
                                                  /____/            
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-bitmagnet
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-bitmagnet
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                  __    _ __                                   __ 
 | 
			
		||||
   /   |  / /___  (_)___  ___        / /_  (_) /_____ ___  ____ _____ _____  ___  / /_
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ __ \/ / __/ __ `__ \/ __ `/ __ `/ __ \/ _ \/ __/
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ /_/ / / /_/ / / / / / /_/ / /_/ / / / /  __/ /_  
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/     /_.___/_/\__/_/ /_/ /_/\__,_/\__, /_/ /_/\___/\__/  
 | 
			
		||||
        /_/                                                   /____/                  
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-gatus
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-gatus
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                              __            
 | 
			
		||||
   /   |  / /___  (_)___  ___        ____ _____ _/ /___  _______
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ __ `/ __ `/ __/ / / / ___/
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ /_/ / /_/ / /_/ /_/ (__  ) 
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/      \__, /\__,_/\__/\__,_/____/  
 | 
			
		||||
        /_/                       /____/                        
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-komodo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-komodo
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                  __ __                          __    
 | 
			
		||||
   /   |  / /___  (_)___  ___        / //_/___  ____ ___  ____  ____/ /___ 
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ ,< / __ \/ __ `__ \/ __ \/ __  / __ \
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ /| / /_/ / / / / / / /_/ / /_/ / /_/ /
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/     /_/ |_\____/_/ /_/ /_/\____/\__,_/\____/ 
 | 
			
		||||
        /_/                                                                
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-rclone
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-rclone
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                            __               
 | 
			
		||||
   /   |  / /___  (_)___  ___        __________/ /___  ____  ___ 
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ ___/ ___/ / __ \/ __ \/ _ \
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ /  / /__/ / /_/ / / / /  __/
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/     /_/   \___/_/\____/_/ /_/\___/ 
 | 
			
		||||
        /_/                                                      
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-tinyauth
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-tinyauth
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                  __  _                         __  __  
 | 
			
		||||
   /   |  / /___  (_)___  ___        / /_(_)___  __  ______ ___  __/ /_/ /_ 
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ __/ / __ \/ / / / __ `/ / / / __/ __ \
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ /_/ / / / / /_/ / /_/ / /_/ / /_/ / / /
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/      \__/_/_/ /_/\__, /\__,_/\__,_/\__/_/ /_/ 
 | 
			
		||||
        /_/                                   /____/                        
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-traefik
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-traefik
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                ______                _____ __  
 | 
			
		||||
   /   |  / /___  (_)___  ___      /_  __/________ ____  / __(_) /__
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ / / ___/ __ `/ _ \/ /_/ / //_/
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ / / /  / /_/ /  __/ __/ / ,<   
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/     /_/ /_/   \__,_/\___/_/ /_/_/|_|  
 | 
			
		||||
        /_/                                                         
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-transmission
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-transmission
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                ______                                _           _           
 | 
			
		||||
   /   |  / /___  (_)___  ___      /_  __/________ _____  _________ ___  (_)_________(_)___  ____ 
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ / / ___/ __ `/ __ \/ ___/ __ `__ \/ / ___/ ___/ / __ \/ __ \
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ / / /  / /_/ / / / (__  ) / / / / / (__  |__  ) / /_/ / / / /
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/     /_/ /_/   \__,_/_/ /_/____/_/ /_/ /_/_/____/____/_/\____/_/ /_/ 
 | 
			
		||||
        /_/                                                                                       
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/asterisk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/asterisk
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___         __            _      __  
 | 
			
		||||
   /   |  _____/ /____  _____(_)____/ /__
 | 
			
		||||
  / /| | / ___/ __/ _ \/ ___/ / ___/ //_/
 | 
			
		||||
 / ___ |(__  ) /_/  __/ /  / (__  ) ,<   
 | 
			
		||||
/_/  |_/____/\__/\___/_/  /_/____/_/|_|  
 | 
			
		||||
                                         
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/babybuddy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/babybuddy
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____        __             ____            __    __     
 | 
			
		||||
   / __ )____ _/ /_  __  __   / __ )__  ______/ /___/ /_  __
 | 
			
		||||
  / __  / __ `/ __ \/ / / /  / __  / / / / __  / __  / / / /
 | 
			
		||||
 / /_/ / /_/ / /_/ / /_/ /  / /_/ / /_/ / /_/ / /_/ / /_/ / 
 | 
			
		||||
/_____/\__,_/_.___/\__, /  /_____/\__,_/\__,_/\__,_/\__, /  
 | 
			
		||||
                  /____/                           /____/   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/bitmagnet
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/bitmagnet
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____  _ __                                   __ 
 | 
			
		||||
   / __ )(_) /_____ ___  ____ _____ _____  ___  / /_
 | 
			
		||||
  / __  / / __/ __ `__ \/ __ `/ __ `/ __ \/ _ \/ __/
 | 
			
		||||
 / /_/ / / /_/ / / / / / /_/ / /_/ / / / /  __/ /_  
 | 
			
		||||
/_____/_/\__/_/ /_/ /_/\__,_/\__, /_/ /_/\___/\__/  
 | 
			
		||||
                            /____/                  
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
    __          ____      ___      
 | 
			
		||||
   / /_  ____  / / /_____/ (_)_  __
 | 
			
		||||
  / __ \/ __ \/ / __/ __  / / / / /
 | 
			
		||||
 / /_/ / /_/ / / /_/ /_/ / / /_/ / 
 | 
			
		||||
/_.___/\____/_/\__/\__,_/_/\__, /  
 | 
			
		||||
                          /____/   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/cloudflare-ddns
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/cloudflare-ddns
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   ________                ________                      ____  ____  _   _______
 | 
			
		||||
  / ____/ /___  __  ______/ / __/ /___ _________        / __ \/ __ \/ | / / ___/
 | 
			
		||||
 / /   / / __ \/ / / / __  / /_/ / __ `/ ___/ _ \______/ / / / / / /  |/ /\__ \ 
 | 
			
		||||
/ /___/ / /_/ / /_/ / /_/ / __/ / /_/ / /  /  __/_____/ /_/ / /_/ / /|  /___/ / 
 | 
			
		||||
\____/_/\____/\__,_/\__,_/_/ /_/\__,_/_/   \___/     /_____/_____/_/ |_//____/  
 | 
			
		||||
                                                                                
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/configarr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/configarr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   ______            _____                      
 | 
			
		||||
  / ____/___  ____  / __(_)___ _____ ___________
 | 
			
		||||
 / /   / __ \/ __ \/ /_/ / __ `/ __ `/ ___/ ___/
 | 
			
		||||
/ /___/ /_/ / / / / __/ / /_/ / /_/ / /  / /    
 | 
			
		||||
\____/\____/_/ /_/_/ /_/\__, /\__,_/_/  /_/     
 | 
			
		||||
                       /____/                   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/documenso
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/documenso
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____                                                 
 | 
			
		||||
   / __ \____  _______  ______ ___  ___  ____  _________ 
 | 
			
		||||
  / / / / __ \/ ___/ / / / __ `__ \/ _ \/ __ \/ ___/ __ \
 | 
			
		||||
 / /_/ / /_/ / /__/ /_/ / / / / / /  __/ / / (__  ) /_/ /
 | 
			
		||||
/_____/\____/\___/\__,_/_/ /_/ /_/\___/_/ /_/____/\____/ 
 | 
			
		||||
                                                         
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/freepbx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/freepbx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ______               ____  ____ _  __
 | 
			
		||||
   / ____/_______  ___  / __ \/ __ ) |/ /
 | 
			
		||||
  / /_  / ___/ _ \/ _ \/ /_/ / __  |   / 
 | 
			
		||||
 / __/ / /  /  __/  __/ ____/ /_/ /   |  
 | 
			
		||||
/_/   /_/   \___/\___/_/   /_____/_/|_|  
 | 
			
		||||
                                         
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/fumadocs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/fumadocs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ______                          __               
 | 
			
		||||
   / ____/_  ______ ___  ____ _____/ /___  __________
 | 
			
		||||
  / /_  / / / / __ `__ \/ __ `/ __  / __ \/ ___/ ___/
 | 
			
		||||
 / __/ / /_/ / / / / / / /_/ / /_/ / /_/ / /__(__  ) 
 | 
			
		||||
/_/    \__,_/_/ /_/ /_/\__,_/\__,_/\____/\___/____/  
 | 
			
		||||
                                                     
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/gatus
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/gatus
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
                __            
 | 
			
		||||
   ____ _____ _/ /___  _______
 | 
			
		||||
  / __ `/ __ `/ __/ / / / ___/
 | 
			
		||||
 / /_/ / /_/ / /_/ /_/ (__  ) 
 | 
			
		||||
 \__, /\__,_/\__/\__,_/____/  
 | 
			
		||||
/____/                        
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
    __  __                               
 | 
			
		||||
   / / / /___  ____ ___  ____ ___________
 | 
			
		||||
  / /_/ / __ \/ __ `__ \/ __ `/ ___/ ___/
 | 
			
		||||
 / __  / /_/ / / / / / / /_/ / /  / /    
 | 
			
		||||
    __                                   
 | 
			
		||||
   / /_  ____  ____ ___  ____ ___________
 | 
			
		||||
  / __ \/ __ \/ __ `__ \/ __ `/ ___/ ___/
 | 
			
		||||
 / / / / /_/ / / / / / / /_/ / /  / /    
 | 
			
		||||
/_/ /_/\____/_/ /_/ /_/\__,_/_/  /_/     
 | 
			
		||||
                                         
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/odoo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/odoo
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   ____      __          
 | 
			
		||||
  / __ \____/ /___  ____ 
 | 
			
		||||
 / / / / __  / __ \/ __ \
 | 
			
		||||
/ /_/ / /_/ / /_/ / /_/ /
 | 
			
		||||
\____/\__,_/\____/\____/ 
 | 
			
		||||
                         
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/rclone
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/rclone
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____       __               
 | 
			
		||||
   / __ \_____/ /___  ____  ___ 
 | 
			
		||||
  / /_/ / ___/ / __ \/ __ \/ _ \
 | 
			
		||||
 / _, _/ /__/ / /_/ / / / /  __/
 | 
			
		||||
/_/ |_|\___/_/\____/_/ /_/\___/ 
 | 
			
		||||
                                
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
    ____  ___________ ____  __      _       __     __  
 | 
			
		||||
   / __ \/_  __/ ___// __ \/ /_____| |     / /__  / /_ 
 | 
			
		||||
  / /_/ / / /  \__ \/ /_/ / __/ __ \ | /| / / _ \/ __ \
 | 
			
		||||
 / _, _/ / /  ___/ / ____/ /_/ /_/ / |/ |/ /  __/ /_/ /
 | 
			
		||||
/_/ |_| /_/  /____/_/    \__/\____/|__/|__/\___/_.___/ 
 | 
			
		||||
                                                       
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/streamlink-webui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/streamlink-webui
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
         __                            ___       __                      __          _ 
 | 
			
		||||
   _____/ /_________  ____ _____ ___  / (_)___  / /__     _      _____  / /_  __  __(_)
 | 
			
		||||
  / ___/ __/ ___/ _ \/ __ `/ __ `__ \/ / / __ \/ //_/____| | /| / / _ \/ __ \/ / / / / 
 | 
			
		||||
 (__  ) /_/ /  /  __/ /_/ / / / / / / / / / / / ,< /_____/ |/ |/ /  __/ /_/ / /_/ / /  
 | 
			
		||||
/____/\__/_/   \___/\__,_/_/ /_/ /_/_/_/_/ /_/_/|_|      |__/|__/\___/_.___/\__,_/_/   
 | 
			
		||||
                                                                                       
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/umlautadaptarr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/umlautadaptarr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   __  __          __            __  ___       __            __                 
 | 
			
		||||
  / / / /___ ___  / /___ ___  __/ /_/   | ____/ /___ _____  / /_____ ___________
 | 
			
		||||
 / / / / __ `__ \/ / __ `/ / / / __/ /| |/ __  / __ `/ __ \/ __/ __ `/ ___/ ___/
 | 
			
		||||
/ /_/ / / / / / / / /_/ / /_/ / /_/ ___ / /_/ / /_/ / /_/ / /_/ /_/ / /  / /    
 | 
			
		||||
\____/_/ /_/ /_/_/\__,_/\__,_/\__/_/  |_\__,_/\__,_/ .___/\__/\__,_/_/  /_/     
 | 
			
		||||
                                                  /_/                           
 | 
			
		||||
							
								
								
									
										25
									
								
								ct/homarr.sh
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								ct/homarr.sh
									
									
									
									
									
								
							@@ -1,14 +1,14 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz) | Co-Author: CrazyWolf13
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: CrazyWolf13
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://homarr.dev/
 | 
			
		||||
 | 
			
		||||
APP="Homarr"
 | 
			
		||||
APP="homarr"
 | 
			
		||||
var_tags="${var_tags:-arr;dashboard}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_cpu="${var_cpu:-3}"
 | 
			
		||||
var_ram="${var_ram:-6144}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
@@ -117,14 +117,15 @@ node apps/nextjs/server.js & PID=$!
 | 
			
		||||
wait $PID
 | 
			
		||||
EOF
 | 
			
		||||
    chmod +x /opt/run_homarr.sh
 | 
			
		||||
curl -fsSL "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    rm -rf v${RELEASE}.zip
 | 
			
		||||
    $STD command -v jq || $STD apt-get update && $STD apt-get install -y jq
 | 
			
		||||
    NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
 | 
			
		||||
    NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.packageManager | split("@")[1]')"
 | 
			
		||||
    install_node_and_modules
 | 
			
		||||
    rm -rf /opt/homarr
 | 
			
		||||
    mv homarr-${RELEASE} /opt/homarr
 | 
			
		||||
    fetch_and_deploy_gh_release "homarr-labs/homarr"
 | 
			
		||||
    mv /opt/homarr-data-backup/.env /opt/homarr/.env
 | 
			
		||||
    cd /opt/homarr
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    $STD pnpm install --recursive --frozen-lockfile --shamefully-hoist
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    cp /opt/homarr/apps/nextjs/next.config.ts .
 | 
			
		||||
    cp /opt/homarr/apps/nextjs/package.json .
 | 
			
		||||
@@ -150,7 +151,7 @@ curl -fsSL "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.
 | 
			
		||||
    systemctl start homarr
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
    read -p "It's recommended to reboot the LXC after an update, would you like to reboot the LXC now ? (y/n): " choice
 | 
			
		||||
    read -p "${TAB3}It's recommended to reboot the LXC after an update, would you like to reboot the LXC now ? (y/n): " choice
 | 
			
		||||
    if [[ "$choice" =~ ^[Yy]$ ]]; then
 | 
			
		||||
      reboot
 | 
			
		||||
    fi
 | 
			
		||||
@@ -167,4 +168,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7575${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7575${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -21,8 +21,6 @@ catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
 | 
			
		||||
  # OS Check
 | 
			
		||||
  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"
 | 
			
		||||
@@ -32,57 +30,91 @@ function update_script() {
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /srv/homeassistant ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  PY=$(ls /srv/homeassistant/lib/)
 | 
			
		||||
  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 "
 | 
			
		||||
      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"
 | 
			
		||||
    source /srv/homeassistant/bin/activate
 | 
			
		||||
    $STD pip install ${BR}--upgrade homeassistant
 | 
			
		||||
    $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 2
 | 
			
		||||
    sleep 5
 | 
			
		||||
    msg_ok "Started Home Assistant"
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
    echo -e "\n  Go to http://${IP}:8123 \n"
 | 
			
		||||
    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
 | 
			
		||||
    $STD apt install -y unzip
 | 
			
		||||
    cd .homeassistant
 | 
			
		||||
    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 "Would you like to use No Authentication? <y/N> " prompt
 | 
			
		||||
    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
 | 
			
		||||
@@ -131,4 +163,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating All Containers"
 | 
			
		||||
    CONTAINER_LIST="${1:-$(docker ps -q)}"
 | 
			
		||||
    for container in ${CONTAINER_LIST}; do
 | 
			
		||||
      CONTAINER_IMAGE="$(docker inspect --format "{{.Config.Image}}" --type container ${container})"
 | 
			
		||||
      CONTAINER_IMAGE="$(docker inspect --format "{{.Config.Image}}" --type container "${container}")"
 | 
			
		||||
      RUNNING_IMAGE="$(docker inspect --format "{{.Image}}" --type container "${container}")"
 | 
			
		||||
      docker pull "${CONTAINER_IMAGE}"
 | 
			
		||||
      LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
 | 
			
		||||
@@ -47,7 +47,7 @@ function update_script() {
 | 
			
		||||
        echo "Updating ${container} image ${CONTAINER_IMAGE}"
 | 
			
		||||
        DOCKER_COMMAND="$(runlike --use-volume-id "${container}")"
 | 
			
		||||
        docker rm --force "${container}"
 | 
			
		||||
        eval ${DOCKER_COMMAND}
 | 
			
		||||
        eval "${DOCKER_COMMAND}"
 | 
			
		||||
      fi
 | 
			
		||||
    done
 | 
			
		||||
    msg_ok "Updated All Containers"
 | 
			
		||||
@@ -109,4 +109,4 @@ msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}HA: http://${IP}:8123${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}Portainer: https://${IP}:9443${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,15 @@ function update_script() {
 | 
			
		||||
      echo "Installed NPM..."
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
  # ensure that jq is installed
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD msg_info "Installing jq..."
 | 
			
		||||
    $STD apt-get update -qq &>/dev/null
 | 
			
		||||
    $STD apt-get install -y jq &>/dev/null || {
 | 
			
		||||
      msg_error "Failed to install jq"
 | 
			
		||||
      exit
 | 
			
		||||
    }
 | 
			
		||||
  fi
 | 
			
		||||
  LOCAL_IP=$(hostname -I | awk '{print $1}')
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
@@ -50,6 +59,7 @@ function update_script() {
 | 
			
		||||
    $STD npx --yes update-browserslist-db@latest
 | 
			
		||||
    export NEXT_PUBLIC_VERSION="v$RELEASE"
 | 
			
		||||
    export NEXT_PUBLIC_REVISION="source"
 | 
			
		||||
    export NEXT_PUBLIC_BUILDTIME=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | jq -r '.published_at')
 | 
			
		||||
    export NEXT_TELEMETRY_DISABLED=1
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    if [[ ! -f /opt/homepage/.env ]]; then
 | 
			
		||||
 
 | 
			
		||||
@@ -53,10 +53,10 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    if [ -z "$pnpm_current" ]; then
 | 
			
		||||
        msg_error "pnpm not found. Installing version $pnpm_desired..."
 | 
			
		||||
        $STD npm install -g pnpm@"$pnpm_desired"
 | 
			
		||||
        NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" install_node_and_modules
 | 
			
		||||
    elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)"; then
 | 
			
		||||
        msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..."
 | 
			
		||||
        $STD npm install -g pnpm@"$pnpm_desired"
 | 
			
		||||
        NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" install_node_and_modules
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "pnpm is already installed and satisfies version $pnpm_desired."
 | 
			
		||||
    fi
 | 
			
		||||
@@ -103,4 +103,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5055${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5055${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -54,10 +54,15 @@ function update_script() {
 | 
			
		||||
    mv karakeep-"${RELEASE}" /opt/karakeep
 | 
			
		||||
    cd /opt/karakeep/apps/web
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    $STD pnpm exec next build --experimental-build-mode compile
 | 
			
		||||
    cp -r /opt/karakeep/apps/web/.next/standalone/apps/web/server.js /opt/karakeep/apps/web
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    cd /opt/karakeep/apps/workers
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    cd /opt/karakeep/apps/cli
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    cd /opt/karakeep/apps/mcp
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    export DATA_DIR=/opt/karakeep_data
 | 
			
		||||
    cd /opt/karakeep/packages/db
 | 
			
		||||
    $STD pnpm migrate
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								ct/kimai.sh
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								ct/kimai.sh
									
									
									
									
									
								
							@@ -23,6 +23,9 @@ function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if ! command -v lsb_release; then
 | 
			
		||||
    apt install -y lsb-release
 | 
			
		||||
  fi
 | 
			
		||||
  if [[ ! -d /opt/kimai ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
@@ -36,8 +39,8 @@ function update_script() {
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get remove -y php"${CURRENT_PHP//./}"*
 | 
			
		||||
    $STD apt-get install -y \
 | 
			
		||||
      php8.4 \
 | 
			
		||||
      php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl} \
 | 
			
		||||
      php8.4 composer \
 | 
			
		||||
      php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm} \
 | 
			
		||||
      libapache2-mod-php8.4
 | 
			
		||||
    msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
 | 
			
		||||
  fi
 | 
			
		||||
@@ -58,9 +61,13 @@ function update_script() {
 | 
			
		||||
    msg_ok "Backup completed"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    rm -rf /opt/kimai
 | 
			
		||||
    trap "echo Unable to download release file for version ${RELEASE}; try again later" ERR
 | 
			
		||||
    set -e
 | 
			
		||||
    curl -fsSL "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q "${RELEASE}".zip
 | 
			
		||||
    set +e
 | 
			
		||||
    trap - ERR
 | 
			
		||||
    rm -rf /opt/kimai
 | 
			
		||||
    mv kimai-"${RELEASE}" /opt/kimai
 | 
			
		||||
    [ -d "$BACKUP_DIR/var" ] && cp -r "$BACKUP_DIR/var" /opt/kimai/
 | 
			
		||||
    [ -f "$BACKUP_DIR/.env" ] && cp "$BACKUP_DIR/.env" /opt/kimai/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										62
									
								
								ct/komodo.sh
									
									
									
									
									
								
							
							
						
						
									
										62
									
								
								ct/komodo.sh
									
									
									
									
									
								
							@@ -20,42 +20,36 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/komodo ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    COMPOSE_FILE=""
 | 
			
		||||
    for file in /opt/komodo/*.compose.yaml; do
 | 
			
		||||
        if [[ "$file" != "compose.env" ]]; then
 | 
			
		||||
            COMPOSE_FILE="${file#/opt/komodo/}"
 | 
			
		||||
            break
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
    if [[ -z "$COMPOSE_FILE" ]]; then
 | 
			
		||||
        msg_error "No valid compose file found in /opt/komodo!"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
  [[ -d /opt/komodo ]] || {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
    BACKUP_FILE="${COMPOSE_FILE}.bak_$(date +%Y%m%d_%H%M%S)"
 | 
			
		||||
    mv "/opt/komodo/$COMPOSE_FILE" "/opt/komodo/$BACKUP_FILE" || {
 | 
			
		||||
        msg_error "Failed to create backup of $COMPOSE_FILE!"
 | 
			
		||||
        exit 1
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_FILE}"
 | 
			
		||||
    if ! curl -fsSL "$GITHUB_URL" -o "/opt/komodo/${COMPOSE_FILE}"; then
 | 
			
		||||
        msg_error "Failed to download ${COMPOSE_FILE} from GitHub!"
 | 
			
		||||
        mv "/opt/komodo/${BACKUP_FILE}" "/opt/komodo/${COMPOSE_FILE}"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    $STD docker compose -p komodo -f "/opt/komodo/$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
  msg_info "Updating ${APP}"
 | 
			
		||||
  COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
 | 
			
		||||
  if [[ -z "$COMPOSE_FILE" ]]; then
 | 
			
		||||
    msg_error "No valid compose file found in /opt/komodo!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
 | 
			
		||||
  BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
 | 
			
		||||
  cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
 | 
			
		||||
    msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  }
 | 
			
		||||
  GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
 | 
			
		||||
  if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
 | 
			
		||||
    msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
 | 
			
		||||
    mv "$BACKUP_FILE" "$COMPOSE_FILE"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  $STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
 | 
			
		||||
  msg_ok "Updated ${APP}"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,10 @@ function update_script() {
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    NODE_VERSION="22"
 | 
			
		||||
    NODE_MODULE="yarn@latest"
 | 
			
		||||
    install_node_and_modules
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop linkwarden
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
@@ -46,7 +50,7 @@ function update_script() {
 | 
			
		||||
    mv /opt/linkwarden/.env /opt/.env
 | 
			
		||||
    rm -rf /opt/linkwarden
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o ${RELEASE}.zip
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    mv linkwarden-${RELEASE:1} /opt/linkwarden
 | 
			
		||||
    cd /opt/linkwarden
 | 
			
		||||
@@ -54,8 +58,9 @@ function update_script() {
 | 
			
		||||
    $STD npx playwright install-deps
 | 
			
		||||
    $STD yarn playwright install
 | 
			
		||||
    cp /opt/.env /opt/linkwarden/.env
 | 
			
		||||
    $STD yarn build
 | 
			
		||||
    $STD yarn prisma migrate deploy
 | 
			
		||||
    $STD yarn prisma:generate
 | 
			
		||||
    $STD yarn web:build
 | 
			
		||||
    $STD yarn prisma:deploy
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,11 @@ function update_script() {
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "Update via the Matterbridge UI"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get upgrade -y
 | 
			
		||||
    NODE_VERSION="22"
 | 
			
		||||
    NODE_MODULE="matterbridge"
 | 
			
		||||
    install_node_and_modules
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -38,4 +42,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8283${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8283${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://www.navidrome.org/
 | 
			
		||||
# Source: https://github.com/navidrome/navidrome
 | 
			
		||||
 | 
			
		||||
APP="Navidrome"
 | 
			
		||||
var_tags="${var_tags:-music}"
 | 
			
		||||
@@ -23,27 +23,35 @@ function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/navidrome ]]; then
 | 
			
		||||
    if [[ ! -d /var/lib/navidrome ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop navidrome
 | 
			
		||||
    msg_ok "Stopped Navidrome"
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk -F '"' '{print $4}')
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping Services"
 | 
			
		||||
        systemctl stop navidrome
 | 
			
		||||
        msg_ok "Services Stopped"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
curl -fsSL "https://github.com/navidrome/navidrome/releases/download/v${RELEASE}/navidrome_${RELEASE}_linux_amd64.tar.gz" -o "Navidrome.tar.gz"
 | 
			
		||||
    $STD tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
 | 
			
		||||
    chmod +x /opt/navidrome/navidrome
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
    rm -rf /opt/Navidrome.tar.gz
 | 
			
		||||
        msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
        TMP_DEB=$(mktemp --suffix=.deb)
 | 
			
		||||
        curl -fsSL -o "${TMP_DEB}" "https://github.com/navidrome/navidrome/releases/download/${RELEASE}/navidrome_${RELEASE#v}_linux_amd64.deb"
 | 
			
		||||
        $STD apt-get install -y "${TMP_DEB}"
 | 
			
		||||
        echo "${RELEASE}" >/opt/"${APP}_version.txt"
 | 
			
		||||
        msg_ok "Updated Navidrome"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start navidrome.service
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
        msg_info "Starting Services"
 | 
			
		||||
        systemctl start navidrome
 | 
			
		||||
        msg_ok "Started Services"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -f "${TMP_DEB}"
 | 
			
		||||
        msg_ok "Cleaned"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -54,4 +62,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4533${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4533${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -20,32 +20,32 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE MODE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 14 60 2 \
 | 
			
		||||
        "1" "Check for Alpine Updates" OFF \
 | 
			
		||||
        "2" "Update NPMplus Docker Container" ON \
 | 
			
		||||
        3>&1 1>&2 2>&3)
 | 
			
		||||
  UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE MODE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 14 60 2 \
 | 
			
		||||
    "1" "Check for Alpine Updates" OFF \
 | 
			
		||||
    "2" "Update NPMplus Docker Container" ON \
 | 
			
		||||
    3>&1 1>&2 2>&3)
 | 
			
		||||
 | 
			
		||||
    header_info "$APP"
 | 
			
		||||
  header_info "$APP"
 | 
			
		||||
 | 
			
		||||
    case "$UPD" in
 | 
			
		||||
    "1")
 | 
			
		||||
        msg_info "Updating Alpine OS"
 | 
			
		||||
        apk update && apk upgrade
 | 
			
		||||
        msg_ok "System updated"
 | 
			
		||||
        exit
 | 
			
		||||
        ;;
 | 
			
		||||
    "2")
 | 
			
		||||
        msg_info "Updating NPMplus Container"
 | 
			
		||||
        cd /opt
 | 
			
		||||
        msg_info "Pulling latest container image"
 | 
			
		||||
        $STD docker compose pull
 | 
			
		||||
        msg_info "Recreating container"
 | 
			
		||||
        $STD docker compose up -d
 | 
			
		||||
        msg_ok "NPMplus container updated"
 | 
			
		||||
        exit
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
    exit 0
 | 
			
		||||
  case "$UPD" in
 | 
			
		||||
  "1")
 | 
			
		||||
    msg_info "Updating Alpine OS"
 | 
			
		||||
    $STD apk -U upgrade
 | 
			
		||||
    msg_ok "System updated"
 | 
			
		||||
    exit
 | 
			
		||||
    ;;
 | 
			
		||||
  "2")
 | 
			
		||||
    msg_info "Updating NPMplus Container"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    msg_info "Pulling latest container image"
 | 
			
		||||
    $STD docker compose pull
 | 
			
		||||
    msg_info "Recreating container"
 | 
			
		||||
    $STD docker compose up -d
 | 
			
		||||
    msg_ok "NPMplus container updated"
 | 
			
		||||
    exit
 | 
			
		||||
    ;;
 | 
			
		||||
  esac
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										71
									
								
								ct/odoo.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								ct/odoo.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/odoo/odoo
 | 
			
		||||
 | 
			
		||||
APP="Odoo"
 | 
			
		||||
var_tags="${var_tags:-erp}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -f /etc/odoo/odoo.conf ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://nightly.odoo.com/ | grep -oE 'href="[0-9]+\.[0-9]+/nightly"' | head -n1 | cut -d'"' -f2 | cut -d/ -f1)
 | 
			
		||||
  LATEST_VERSION=$(curl -fsSL "https://nightly.odoo.com/${RELEASE}/nightly/deb/" |
 | 
			
		||||
    grep -oP "odoo_${RELEASE}\.\d+_all\.deb" |
 | 
			
		||||
    sed -E "s/odoo_(${RELEASE}\.[0-9]+)_all\.deb/\1/" |
 | 
			
		||||
    sort -V |
 | 
			
		||||
    tail -n1)
 | 
			
		||||
 | 
			
		||||
  if [[ "${LATEST_VERSION}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP} service"
 | 
			
		||||
    systemctl stop odoo
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${LATEST_VERSION}"
 | 
			
		||||
    curl -fsSL https://nightly.odoo.com/${RELEASE}/nightly/deb/odoo_${RELEASE}.latest_all.deb -o /opt/odoo.deb
 | 
			
		||||
    $STD apt install -y /opt/odoo.deb
 | 
			
		||||
    echo "$LATEST_VERSION" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${LATEST_VERSION}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP} service"
 | 
			
		||||
    systemctl start odoo
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -f /opt/odoo.deb
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${LATEST_VERSION}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8069${CL}"
 | 
			
		||||
							
								
								
									
										54
									
								
								ct/ollama.sh
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								ct/ollama.sh
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck | Co-Author: havardthom
 | 
			
		||||
# Author: havardthom | Co-Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://ollama.com/
 | 
			
		||||
 | 
			
		||||
@@ -9,9 +9,9 @@ APP="Ollama"
 | 
			
		||||
var_tags="${var_tags:-ai}"
 | 
			
		||||
var_cpu="${var_cpu:-4}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-24}"
 | 
			
		||||
var_disk="${var_disk:-35}"
 | 
			
		||||
var_os="${var_os:-ubuntu}"
 | 
			
		||||
var_version="${var_version:-22.04}"
 | 
			
		||||
var_version="${var_version:-24.04}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
@@ -19,18 +19,42 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/ollama ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /usr/local/lib/ollama ]]; then
 | 
			
		||||
    msg_error "No Ollama Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/ollama/ollama/releases/latest | grep "tag_name" | awk -F '"' '{print $4}')
 | 
			
		||||
  if [[ ! -f /opt/Ollama_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/Ollama_version.txt)" ]]; then
 | 
			
		||||
    if [[ ! -f /opt/Ollama_version.txt ]]; then
 | 
			
		||||
      touch /opt/Ollama_version.txt
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop ollama
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
 | 
			
		||||
    TMP_TAR=$(mktemp --suffix=.tgz)
 | 
			
		||||
    curl -fL# -o "${TMP_TAR}" "https://github.com/ollama/ollama/releases/download/${RELEASE}/ollama-linux-amd64.tgz"
 | 
			
		||||
    msg_info "Updating Ollama to ${RELEASE}"
 | 
			
		||||
    tar -xzf "${TMP_TAR}" -C /usr/local/lib/ollama
 | 
			
		||||
    ln -sf /usr/local/lib/ollama/bin/ollama /usr/local/bin/ollama
 | 
			
		||||
    echo "${RELEASE}" >/opt/Ollama_version.txt
 | 
			
		||||
    msg_ok "Updated Ollama to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl start ollama
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -f "${TMP_TAR}"
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. Ollama is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -40,4 +64,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:14434${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:11434${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
APP="Open WebUI"
 | 
			
		||||
var_tags="${var_tags:-ai;interface}"
 | 
			
		||||
var_cpu="${var_cpu:-4}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-16}"
 | 
			
		||||
var_ram="${var_ram:-8192}"
 | 
			
		||||
var_disk="${var_disk:-25}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -76,4 +76,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="Paperless-AI"
 | 
			
		||||
var_tags="${var_tags:-ai;document}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-5}"
 | 
			
		||||
var_disk="${var_disk:-12}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -27,6 +27,9 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! dpkg -s python3-pip >/dev/null 2>&1; then
 | 
			
		||||
    $STD apt-get install -y python3-pip
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/clusterzx/paperless-ai/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
@@ -42,6 +45,25 @@ function update_script() {
 | 
			
		||||
    mkdir -p /opt/paperless-ai/data
 | 
			
		||||
    cp -a /opt/paperless-ai_bak/data/. /opt/paperless-ai/data/
 | 
			
		||||
    cd /opt/paperless-ai
 | 
			
		||||
    if [[ ! -f /etc/systemd/system/paperless-rag.service ]]; then
 | 
			
		||||
      cat <<EOF >/etc/systemd/system/paperless-rag.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=PaperlessAI-RAG Service
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
WorkingDirectory=/opt/paperless-ai
 | 
			
		||||
ExecStart=/usr/bin/python3 main.py --host 0.0.0.0 --port 8000 --initialize
 | 
			
		||||
Restart=always
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
      echo "RAG_SERVICE_URL=http://localhost:8000" >>/opt/paperless-ai/data/.env
 | 
			
		||||
      echo "RAG_SERVICE_ENABLED=true" >>/opt/paperless-ai/data/.env
 | 
			
		||||
    fi
 | 
			
		||||
    $STD pip install --no-cache-dir -r requirements.txt
 | 
			
		||||
    mkdir -p data/chromadb
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,6 @@ function update_script() {
 | 
			
		||||
      php8.4 \
 | 
			
		||||
      php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm} \
 | 
			
		||||
      libapache2-mod-php8.4
 | 
			
		||||
 | 
			
		||||
    msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
@@ -53,10 +52,13 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cp -r /opt/pelican-panel/.env /opt/
 | 
			
		||||
    SQLITE_INSTALL=$(ls /opt/pelican-panel/database/*.sqlite 1> /dev/null 2>&1 && echo "true" || echo "false")
 | 
			
		||||
    $SQLITE_INSTALL && cp -r /opt/pelican-panel/database/*.sqlite /opt/
 | 
			
		||||
    rm -rf * .*
 | 
			
		||||
    curl -fsSL "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz" -o $(basename "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz")
 | 
			
		||||
    tar -xzf "panel.tar.gz"
 | 
			
		||||
    mv /opt/.env /opt/pelican-panel/
 | 
			
		||||
    $SQLITE_INSTALL && mv /opt/*.sqlite /opt/pelican-panel/database/
 | 
			
		||||
    $STD composer install --no-dev --optimize-autoloader --no-interaction
 | 
			
		||||
    $STD php artisan p:environment:setup
 | 
			
		||||
    $STD php artisan view:clear
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user