mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			530 Commits
		
	
	
		
			2025-05-29
			...
			2025-07-01
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					8a91b87f4c | ||
| 
						 | 
					020a4b3597 | ||
| 
						 | 
					f93c568758 | ||
| 
						 | 
					d9d4444f08 | ||
| 
						 | 
					400a82e2cc | ||
| 
						 | 
					35a0d14110 | ||
| 
						 | 
					a78dd20a2e | ||
| 
						 | 
					4af08a5c45 | ||
| 
						 | 
					2959d37b65 | ||
| 
						 | 
					3275136db7 | ||
| 
						 | 
					c4c974a01d | ||
| 
						 | 
					4fe05d09a2 | ||
| 
						 | 
					7b5dd6cd69 | ||
| 
						 | 
					28c779ef86 | ||
| 
						 | 
					8c1dac0583 | ||
| 
						 | 
					2db514f666 | ||
| 
						 | 
					0232dbd89d | ||
| 
						 | 
					70f43cb904 | ||
| 
						 | 
					05e06d0782 | ||
| 
						 | 
					89c39783b4 | ||
| 
						 | 
					3f3278b022 | ||
| 
						 | 
					bda9f482c1 | ||
| 
						 | 
					7292dbb8c6 | ||
| 
						 | 
					2bdf85db39 | ||
| 
						 | 
					546bff56fa | ||
| 
						 | 
					1896f2db0f | ||
| 
						 | 
					e47828f0a4 | ||
| 
						 | 
					c511f7d9e5 | ||
| 
						 | 
					a106e7e358 | ||
| 
						 | 
					254f2b894d | ||
| 
						 | 
					733251a0a2 | ||
| 
						 | 
					bcfa05db47 | ||
| 
						 | 
					5313f00edb | ||
| 
						 | 
					f83bfd1598 | ||
| 
						 | 
					fd27524479 | ||
| 
						 | 
					8155fea034 | ||
| 
						 | 
					c853054067 | ||
| 
						 | 
					a80ec39740 | ||
| 
						 | 
					bb33d00829 | ||
| 
						 | 
					be64a6700d | ||
| 
						 | 
					247bc549e8 | ||
| 
						 | 
					b26c5c9354 | ||
| 
						 | 
					5e5c79ef29 | ||
| 
						 | 
					4db81b8c41 | ||
| 
						 | 
					0b97f26b13 | ||
| 
						 | 
					f2a21617f7 | ||
| 
						 | 
					ed618b7144 | ||
| 
						 | 
					1ec71332bf | ||
| 
						 | 
					5696dffd02 | ||
| 
						 | 
					1e93f131d2 | ||
| 
						 | 
					022f88c30a | ||
| 
						 | 
					b661f3cbcc | ||
| 
						 | 
					9b97e4974a | ||
| 
						 | 
					e2b36b540f | ||
| 
						 | 
					983a09c5db | ||
| 
						 | 
					f605085021 | ||
| 
						 | 
					4a3b15ae0e | ||
| 
						 | 
					0fd5f366b3 | ||
| 
						 | 
					dd5b3cd1b9 | ||
| 
						 | 
					2b55f82aab | ||
| 
						 | 
					87c6f87faf | ||
| 
						 | 
					caad96f25a | ||
| 
						 | 
					8e7978713f | ||
| 
						 | 
					1e05867b4c | ||
| 
						 | 
					43dfe6dc33 | ||
| 
						 | 
					179812e55f | ||
| 
						 | 
					d09cf45a3c | ||
| 
						 | 
					e609868619 | ||
| 
						 | 
					692ac62add | ||
| 
						 | 
					216cc7e5c3 | ||
| 
						 | 
					bcc113406a | ||
| 
						 | 
					0067075ed1 | ||
| 
						 | 
					d60911a063 | ||
| 
						 | 
					abad754f61 | ||
| 
						 | 
					a632d315ab | ||
| 
						 | 
					520bae01d6 | ||
| 
						 | 
					7057fba151 | ||
| 
						 | 
					e24ca6472c | ||
| 
						 | 
					028feb363f | ||
| 
						 | 
					491b341fdf | ||
| 
						 | 
					db77e42a50 | ||
| 
						 | 
					cf3f790f03 | ||
| 
						 | 
					a0da56997c | ||
| 
						 | 
					c000235d81 | ||
| 
						 | 
					578d8067dc | ||
| 
						 | 
					03d2a76ff1 | ||
| 
						 | 
					650a5f5df5 | ||
| 
						 | 
					5130cc6bc9 | ||
| 
						 | 
					7ebe0139c2 | ||
| 
						 | 
					08da826302 | ||
| 
						 | 
					d94c7b846c | ||
| 
						 | 
					97a1c64fad | ||
| 
						 | 
					4b8e1e9015 | ||
| 
						 | 
					c2b5747718 | ||
| 
						 | 
					d31fd08d69 | ||
| 
						 | 
					e6230de022 | ||
| 
						 | 
					db7aaa3158 | ||
| 
						 | 
					af1f22a4d6 | ||
| 
						 | 
					4cc3a87b0e | ||
| 
						 | 
					db2671ed95 | ||
| 
						 | 
					0a72c81ea5 | ||
| 
						 | 
					dfd612480c | ||
| 
						 | 
					64397b16c5 | ||
| 
						 | 
					bd49471ebc | ||
| 
						 | 
					7289c68399 | ||
| 
						 | 
					4a5ddc8410 | ||
| 
						 | 
					93808fbd75 | ||
| 
						 | 
					24394a0947 | ||
| 
						 | 
					4676eb616c | ||
| 
						 | 
					e9ae558c25 | ||
| 
						 | 
					afee37794b | ||
| 
						 | 
					72e7bda418 | ||
| 
						 | 
					69e14c8fca | ||
| 
						 | 
					6394c0cf17 | ||
| 
						 | 
					d1deffb235 | ||
| 
						 | 
					ac885f8adb | ||
| 
						 | 
					8d91a5df5f | ||
| 
						 | 
					5ad9323944 | ||
| 
						 | 
					559bf61c31 | ||
| 
						 | 
					3a391c34fc | ||
| 
						 | 
					332a96ea03 | ||
| 
						 | 
					454c574d38 | ||
| 
						 | 
					2512c828e7 | ||
| 
						 | 
					a99ecb60ef | ||
| 
						 | 
					24f22dfecc | ||
| 
						 | 
					8521e2389b | ||
| 
						 | 
					ea60b9b5e4 | ||
| 
						 | 
					c5cb6b2ade | ||
| 
						 | 
					81eb020430 | ||
| 
						 | 
					73f1816e49 | ||
| 
						 | 
					d0f0efca37 | ||
| 
						 | 
					1697ffa752 | ||
| 
						 | 
					8130b83328 | ||
| 
						 | 
					b384a387c3 | ||
| 
						 | 
					8fd491460a | ||
| 
						 | 
					f86f90b2e0 | ||
| 
						 | 
					00575130f5 | ||
| 
						 | 
					2a873d974c | ||
| 
						 | 
					439fdbf071 | ||
| 
						 | 
					8ccf3de8f7 | ||
| 
						 | 
					5fc126b61c | ||
| 
						 | 
					c75af3a750 | ||
| 
						 | 
					5c768b54c0 | ||
| 
						 | 
					e8848c1641 | ||
| 
						 | 
					24c90699e6 | ||
| 
						 | 
					e6ab47f341 | ||
| 
						 | 
					f63a1d89a3 | ||
| 
						 | 
					0c1aaedf6b | ||
| 
						 | 
					5b35d537a8 | ||
| 
						 | 
					1d06016ae1 | ||
| 
						 | 
					15b36b4d16 | ||
| 
						 | 
					6a285e1e19 | ||
| 
						 | 
					f60d132b20 | ||
| 
						 | 
					d73bc95d4a | ||
| 
						 | 
					2faeb5255c | ||
| 
						 | 
					b4c6f28e4e | ||
| 
						 | 
					d95bfdb7dc | ||
| 
						 | 
					99a0fb727b | ||
| 
						 | 
					0efa83ff48 | ||
| 
						 | 
					66ab254fb2 | ||
| 
						 | 
					daad486c5e | ||
| 
						 | 
					e11fb287f1 | ||
| 
						 | 
					b889909d65 | ||
| 
						 | 
					454a272cad | ||
| 
						 | 
					7e7d610182 | ||
| 
						 | 
					7302d43e7e | ||
| 
						 | 
					3d4bcb8081 | ||
| 
						 | 
					a0f18fd0f7 | ||
| 
						 | 
					dc3113c57b | ||
| 
						 | 
					c09606db69 | ||
| 
						 | 
					7b90b0624e | ||
| 
						 | 
					342722b10a | ||
| 
						 | 
					22964f4898 | ||
| 
						 | 
					a8b3244f92 | ||
| 
						 | 
					a1aee90f72 | ||
| 
						 | 
					09dbc22728 | ||
| 
						 | 
					9559a1b3f7 | ||
| 
						 | 
					2f0bff4e42 | ||
| 
						 | 
					ea8586d4b5 | ||
| 
						 | 
					33bb4fd9e0 | ||
| 
						 | 
					5cf8765d9a | ||
| 
						 | 
					b6a98288cc | ||
| 
						 | 
					89cfb38459 | ||
| 
						 | 
					82179752ee | ||
| 
						 | 
					d495095d21 | ||
| 
						 | 
					6cc901eba6 | ||
| 
						 | 
					75b6aa9dac | ||
| 
						 | 
					aab85ab654 | ||
| 
						 | 
					5e87af5e8f | ||
| 
						 | 
					8bd6d89bff | ||
| 
						 | 
					ddf3019021 | ||
| 
						 | 
					ef871c44ff | ||
| 
						 | 
					5fcc97142f | ||
| 
						 | 
					c6cbb495d2 | ||
| 
						 | 
					cd84cf974c | ||
| 
						 | 
					a2b8a87cc4 | ||
| 
						 | 
					c684472cb4 | ||
| 
						 | 
					930e4bd556 | ||
| 
						 | 
					c6c03d4728 | ||
| 
						 | 
					e024099beb | ||
| 
						 | 
					08648aca15 | ||
| 
						 | 
					70a1cfbe28 | ||
| 
						 | 
					3d99d74685 | ||
| 
						 | 
					6cc090b693 | ||
| 
						 | 
					a8deff54d8 | ||
| 
						 | 
					e33cf652a1 | ||
| 
						 | 
					b35eadfc36 | ||
| 
						 | 
					74a073e8bd | ||
| 
						 | 
					ce9c1e63a8 | ||
| 
						 | 
					25f6245d31 | ||
| 
						 | 
					074d6fa31b | ||
| 
						 | 
					8dfacb9e7d | ||
| 
						 | 
					12a6055ea3 | ||
| 
						 | 
					637f9a1f44 | ||
| 
						 | 
					a7ed02160b | ||
| 
						 | 
					03551e23e4 | ||
| 
						 | 
					1f7d85ac60 | ||
| 
						 | 
					4e46fd739d | ||
| 
						 | 
					ea5eca83fe | ||
| 
						 | 
					b49b902d64 | ||
| 
						 | 
					f81f7fb1c0 | ||
| 
						 | 
					bcdeeaafb3 | ||
| 
						 | 
					92f631b628 | ||
| 
						 | 
					9133782289 | ||
| 
						 | 
					e343c7b5aa | ||
| 
						 | 
					3e47e39633 | ||
| 
						 | 
					43a90bf9e6 | ||
| 
						 | 
					cd45ccfb70 | ||
| 
						 | 
					b52cba817f | ||
| 
						 | 
					ac203f4e79 | ||
| 
						 | 
					b019991ee6 | ||
| 
						 | 
					6bc17a0031 | ||
| 
						 | 
					69d9394840 | ||
| 
						 | 
					ad8462bc10 | ||
| 
						 | 
					39b18ea011 | ||
| 
						 | 
					76c99518b1 | ||
| 
						 | 
					8fb0a16568 | ||
| 
						 | 
					9bbc0c90e3 | ||
| 
						 | 
					b5012c4225 | ||
| 
						 | 
					204ec64f14 | ||
| 
						 | 
					451608b445 | ||
| 
						 | 
					94ad4f2e40 | ||
| 
						 | 
					5db3d92286 | ||
| 
						 | 
					796aaaa1d4 | ||
| 
						 | 
					5042f6edb0 | ||
| 
						 | 
					0c1fad54b6 | ||
| 
						 | 
					fe1df0b344 | ||
| 
						 | 
					3ca014b757 | ||
| 
						 | 
					db7a13fced | ||
| 
						 | 
					ab1f4c1196 | ||
| 
						 | 
					14ffff4c6a | ||
| 
						 | 
					bada204f64 | ||
| 
						 | 
					1c42a2016e | ||
| 
						 | 
					0cd347d3b6 | ||
| 
						 | 
					63713c6489 | ||
| 
						 | 
					49153887dc | ||
| 
						 | 
					c46d543c43 | ||
| 
						 | 
					dbd2af91b5 | ||
| 
						 | 
					86183c638d | ||
| 
						 | 
					aec9af49a0 | ||
| 
						 | 
					791eca99b9 | ||
| 
						 | 
					4190582659 | ||
| 
						 | 
					601e1853e9 | ||
| 
						 | 
					14077eddcd | ||
| 
						 | 
					2255600c3b | ||
| 
						 | 
					badd63d4a7 | ||
| 
						 | 
					6c345af691 | ||
| 
						 | 
					2f326ffb97 | ||
| 
						 | 
					e7bb270c34 | ||
| 
						 | 
					fc4a46b72d | ||
| 
						 | 
					a402b45b17 | ||
| 
						 | 
					9ab2089d01 | ||
| 
						 | 
					0dc533cb82 | ||
| 
						 | 
					4351218f8b | ||
| 
						 | 
					3ee4ece04d | ||
| 
						 | 
					a377640d16 | ||
| 
						 | 
					bece1c574f | ||
| 
						 | 
					e9afe958b1 | ||
| 
						 | 
					93f9291d7c | ||
| 
						 | 
					8f0751442d | ||
| 
						 | 
					003422934a | ||
| 
						 | 
					c11636562c | ||
| 
						 | 
					654508eb94 | ||
| 
						 | 
					acfb9d6ea1 | ||
| 
						 | 
					0d56db2d3d | ||
| 
						 | 
					4a1ae51446 | ||
| 
						 | 
					6520b7f4d4 | ||
| 
						 | 
					48da94f77a | ||
| 
						 | 
					2ea372f034 | ||
| 
						 | 
					5773459a39 | ||
| 
						 | 
					40f083ea40 | ||
| 
						 | 
					219a7853e1 | ||
| 
						 | 
					6d1d903345 | ||
| 
						 | 
					ef9ca48477 | ||
| 
						 | 
					8ac24981a6 | ||
| 
						 | 
					7e046d830d | ||
| 
						 | 
					1691fafcc1 | ||
| 
						 | 
					4400cd2b97 | ||
| 
						 | 
					795fe72768 | ||
| 
						 | 
					6d7d15ce46 | ||
| 
						 | 
					a648b9abc4 | ||
| 
						 | 
					4057fadfe0 | ||
| 
						 | 
					9b700195e4 | ||
| 
						 | 
					906a0a0fbc | ||
| 
						 | 
					8df55a03f4 | ||
| 
						 | 
					8241ed932d | ||
| 
						 | 
					0b3c645ffb | ||
| 
						 | 
					0c17402efc | ||
| 
						 | 
					ccad7a2cd8 | ||
| 
						 | 
					15772d8802 | ||
| 
						 | 
					c7e0faa33b | ||
| 
						 | 
					13b1c684ee | ||
| 
						 | 
					5e649d7cb1 | ||
| 
						 | 
					ec8a8b1908 | ||
| 
						 | 
					d850dde4ef | ||
| 
						 | 
					fb4075ac12 | ||
| 
						 | 
					8576463522 | ||
| 
						 | 
					2a4353fa13 | ||
| 
						 | 
					d21cbf1d40 | ||
| 
						 | 
					e97c96d0bb | ||
| 
						 | 
					04dab68e17 | ||
| 
						 | 
					b001687f5c | ||
| 
						 | 
					9f26e25126 | ||
| 
						 | 
					5671d8e957 | ||
| 
						 | 
					0bf641f02c | ||
| 
						 | 
					7fc39a442b | ||
| 
						 | 
					6e1ee7d16e | ||
| 
						 | 
					5ee48aba1e | ||
| 
						 | 
					e6c21811bb | ||
| 
						 | 
					142fea21bd | ||
| 
						 | 
					df43101b4e | ||
| 
						 | 
					3044a774c2 | ||
| 
						 | 
					65e4c027b8 | ||
| 
						 | 
					dabfb57173 | ||
| 
						 | 
					63dfc2bd7b | ||
| 
						 | 
					89399ef421 | ||
| 
						 | 
					d9474c3dd6 | ||
| 
						 | 
					f5a5e4854c | ||
| 
						 | 
					632e823749 | ||
| 
						 | 
					a128f3c43d | ||
| 
						 | 
					9c90699ca2 | ||
| 
						 | 
					f6f6ca6bac | ||
| 
						 | 
					b6d0b1ae6a | ||
| 
						 | 
					93906db2d1 | ||
| 
						 | 
					4ab71ccf00 | ||
| 
						 | 
					e058badee6 | ||
| 
						 | 
					74c6df5aa6 | ||
| 
						 | 
					c2484b7c60 | ||
| 
						 | 
					b064127323 | ||
| 
						 | 
					138f90f09c | ||
| 
						 | 
					84469e2b5b | ||
| 
						 | 
					a164d259e0 | ||
| 
						 | 
					34aa360920 | ||
| 
						 | 
					f0dde5a42d | ||
| 
						 | 
					e0ccc1a0af | ||
| 
						 | 
					4fa7483d8b | ||
| 
						 | 
					cd835c6791 | ||
| 
						 | 
					abf233c94f | ||
| 
						 | 
					edd4fb3cc2 | ||
| 
						 | 
					d97620a390 | ||
| 
						 | 
					c2c5159a2d | ||
| 
						 | 
					46d9f85f5e | ||
| 
						 | 
					ba7ec5aa68 | ||
| 
						 | 
					dd4c556959 | ||
| 
						 | 
					0e63437154 | ||
| 
						 | 
					0769320146 | ||
| 
						 | 
					d6da26c640 | ||
| 
						 | 
					d9facc0e62 | ||
| 
						 | 
					31e0b5fae3 | ||
| 
						 | 
					b0bd2f4804 | ||
| 
						 | 
					3aefe199f7 | ||
| 
						 | 
					677008c779 | ||
| 
						 | 
					b8ba409e5c | ||
| 
						 | 
					7cf8300b47 | ||
| 
						 | 
					77fb5ea516 | ||
| 
						 | 
					e92dfe1b2b | ||
| 
						 | 
					61bfa16645 | ||
| 
						 | 
					84c295a10b | ||
| 
						 | 
					ed834bf424 | ||
| 
						 | 
					b1f8992933 | ||
| 
						 | 
					201f7c4651 | ||
| 
						 | 
					2574e41ee8 | ||
| 
						 | 
					2aeb7cf79a | ||
| 
						 | 
					98c277f471 | ||
| 
						 | 
					78a2201a93 | ||
| 
						 | 
					2de03f5734 | ||
| 
						 | 
					c59f9f421c | ||
| 
						 | 
					598acc2048 | ||
| 
						 | 
					6e6b279b88 | ||
| 
						 | 
					943a5f4d8f | ||
| 
						 | 
					4efa882558 | ||
| 
						 | 
					eff985ca02 | ||
| 
						 | 
					ff239ff3cd | ||
| 
						 | 
					45bb824101 | ||
| 
						 | 
					1956c8740b | ||
| 
						 | 
					f6638b095d | ||
| 
						 | 
					6a1738c52a | ||
| 
						 | 
					a9e3520df1 | ||
| 
						 | 
					08230e9089 | ||
| 
						 | 
					a5c6984087 | ||
| 
						 | 
					99174cb9c2 | ||
| 
						 | 
					336e70f059 | ||
| 
						 | 
					ce8b9aa5b4 | ||
| 
						 | 
					70d6815d91 | ||
| 
						 | 
					75273e86b6 | ||
| 
						 | 
					37a2f6a715 | ||
| 
						 | 
					4b7c734b9a | ||
| 
						 | 
					590db0d148 | ||
| 
						 | 
					50ad6410d5 | ||
| 
						 | 
					85b80bfb22 | ||
| 
						 | 
					33e49b7556 | ||
| 
						 | 
					0a6f7e6426 | ||
| 
						 | 
					5fd5d78a2a | ||
| 
						 | 
					ab32878b63 | ||
| 
						 | 
					ee7090f271 | ||
| 
						 | 
					df6bd2a68a | ||
| 
						 | 
					e46e9a3372 | ||
| 
						 | 
					6c08814cc5 | ||
| 
						 | 
					4cca5062af | ||
| 
						 | 
					dc2b585e6b | ||
| 
						 | 
					cc4f5c4478 | ||
| 
						 | 
					01ced07bff | ||
| 
						 | 
					85e13c9ac5 | ||
| 
						 | 
					1ac4b0c10f | ||
| 
						 | 
					781471f37a | ||
| 
						 | 
					e2790814b8 | ||
| 
						 | 
					f5705621b2 | ||
| 
						 | 
					a28a4fd752 | ||
| 
						 | 
					b890fae808 | ||
| 
						 | 
					8e88379c1b | ||
| 
						 | 
					b2307f1bb9 | ||
| 
						 | 
					db9ffe3105 | ||
| 
						 | 
					2c1e101135 | ||
| 
						 | 
					a991908a37 | ||
| 
						 | 
					f0206a6252 | ||
| 
						 | 
					e8061a9f6e | ||
| 
						 | 
					64c47bd335 | ||
| 
						 | 
					ec573be7e0 | ||
| 
						 | 
					4e53abbd48 | ||
| 
						 | 
					338d351c29 | ||
| 
						 | 
					835893e589 | ||
| 
						 | 
					1e81c11e74 | ||
| 
						 | 
					27384ad89a | ||
| 
						 | 
					27d3909df5 | ||
| 
						 | 
					2e3f416242 | ||
| 
						 | 
					b91cbbcbe9 | ||
| 
						 | 
					3f43cd5575 | ||
| 
						 | 
					1564d4d6d3 | ||
| 
						 | 
					077db6c52f | ||
| 
						 | 
					a0d2bece1d | ||
| 
						 | 
					0178742308 | ||
| 
						 | 
					d2482e5c82 | ||
| 
						 | 
					2400f98f75 | ||
| 
						 | 
					176946bd45 | ||
| 
						 | 
					a25009bdb1 | ||
| 
						 | 
					03eff3a2e1 | ||
| 
						 | 
					ff12d802cc | ||
| 
						 | 
					02b753eb12 | ||
| 
						 | 
					c9eaaee0c0 | ||
| 
						 | 
					f154249dde | ||
| 
						 | 
					9ef7274199 | ||
| 
						 | 
					e9477e7a07 | ||
| 
						 | 
					1fcf9f9520 | ||
| 
						 | 
					bbe226218c | ||
| 
						 | 
					8d38c1d724 | ||
| 
						 | 
					1cac2afc41 | ||
| 
						 | 
					644a365c69 | ||
| 
						 | 
					9bd4f5bb1b | ||
| 
						 | 
					b2a80b6971 | ||
| 
						 | 
					1e3d0e501b | ||
| 
						 | 
					3aa1f05343 | ||
| 
						 | 
					05c008241e | ||
| 
						 | 
					91d8efcde0 | ||
| 
						 | 
					16ac1adf75 | ||
| 
						 | 
					805bbc5ee3 | ||
| 
						 | 
					43697716ae | ||
| 
						 | 
					623c8d993d | ||
| 
						 | 
					bf2545ce40 | ||
| 
						 | 
					dd9e285962 | ||
| 
						 | 
					7f513afcf2 | ||
| 
						 | 
					912c92d6f3 | ||
| 
						 | 
					a4904fdd7e | ||
| 
						 | 
					b4a58b907f | ||
| 
						 | 
					824fd22aae | ||
| 
						 | 
					feacacc368 | ||
| 
						 | 
					a307f9086b | ||
| 
						 | 
					d97ce713ac | ||
| 
						 | 
					807870e739 | ||
| 
						 | 
					53c40775ee | ||
| 
						 | 
					bf9f5d62e2 | ||
| 
						 | 
					6650e0bdd8 | ||
| 
						 | 
					f2bf6c9a6f | ||
| 
						 | 
					8d50a5d8a9 | ||
| 
						 | 
					4e3286f11b | ||
| 
						 | 
					e08a587439 | ||
| 
						 | 
					6ee8349d28 | ||
| 
						 | 
					87f6c9ebde | ||
| 
						 | 
					6239075c2d | ||
| 
						 | 
					04ee11aab7 | ||
| 
						 | 
					60ae9bba5d | ||
| 
						 | 
					85dd171b48 | ||
| 
						 | 
					a174177357 | ||
| 
						 | 
					7afae35553 | ||
| 
						 | 
					1a49970ae2 | ||
| 
						 | 
					a413750562 | ||
| 
						 | 
					82707e1def | ||
| 
						 | 
					ac3d8c6b54 | ||
| 
						 | 
					1fd24bd60d | ||
| 
						 | 
					fc780646d2 | ||
| 
						 | 
					5f175b4f7b | ||
| 
						 | 
					afaeadd77e | ||
| 
						 | 
					72c7abeb69 | ||
| 
						 | 
					12723c33d0 | ||
| 
						 | 
					7af6bf3fe7 | ||
| 
						 | 
					e56436d3f2 | ||
| 
						 | 
					25de119cad | ||
| 
						 | 
					c8308da95e | ||
| 
						 | 
					9923094a54 | ||
| 
						 | 
					463cc62443 | ||
| 
						 | 
					92227fb9bf | ||
| 
						 | 
					18a9c524ae | ||
| 
						 | 
					d925ae0f04 | ||
| 
						 | 
					cb0d0bd83e | ||
| 
						 | 
					9fcfb2fe49 | ||
| 
						 | 
					d23aa3fda0 | ||
| 
						 | 
					131f83505c | ||
| 
						 | 
					5a95a745ff | ||
| 
						 | 
					809bc6c302 | ||
| 
						 | 
					4fba20d80b | ||
| 
						 | 
					42a7614d15 | 
							
								
								
									
										
											BIN
										
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										4
									
								
								.github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -5,10 +5,10 @@
 | 
			
		||||
 | 
			
		||||
1) [adguard.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/adguard.sh): This script collects system parameters. (Also holds the function to update the application.)
 | 
			
		||||
2) [build.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/build.func): Adds user settings and integrates collected information.
 | 
			
		||||
3) [create_lxc.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/create_lxc.sh): Constructs the LXC container.
 | 
			
		||||
3) [create_lxc.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/create_lxc.sh): Constructs the LXC container.
 | 
			
		||||
4) [adguard-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/install/adguard-install.sh): Executes functions from [install.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/install.func), and installs the application.
 | 
			
		||||
5) [adguard.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/adguard.sh) (again): To display the completion message.
 | 
			
		||||
 | 
			
		||||
The installation process uses reusable scripts: [build.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/build.func), [create_lxc.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/create_lxc.sh), and [install.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/install.func), which are not specific to any particular application.
 | 
			
		||||
The installation process uses reusable scripts: [build.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/build.func), [create_lxc.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/create_lxc.sh), and [install.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/install.func), which are not specific to any particular application.
 | 
			
		||||
 | 
			
		||||
To gain a better understanding, focus on reviewing [adguard-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/install/adguard-install.sh). This script contains the commands and configurations for installing and configuring AdGuard Home within the LXC container.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										61
									
								
								.github/autolabeler-config.json
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										61
									
								
								.github/autolabeler-config.json
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,21 +2,43 @@
 | 
			
		||||
  "new script": [
 | 
			
		||||
    {
 | 
			
		||||
      "fileStatus": "added",
 | 
			
		||||
      "includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"],
 | 
			
		||||
      "includeGlobs": [
 | 
			
		||||
        "ct/**",
 | 
			
		||||
        "install/**",
 | 
			
		||||
        "misc/**",
 | 
			
		||||
        "turnkey/**",
 | 
			
		||||
        "vm/**"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": []
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "update script": [
 | 
			
		||||
    {
 | 
			
		||||
      "fileStatus": "modified",
 | 
			
		||||
      "includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"],
 | 
			
		||||
      "excludeGlobs": ["misc/build.func", "misc/install.func", "misc/api.func"]
 | 
			
		||||
      "includeGlobs": [
 | 
			
		||||
        "ct/**",
 | 
			
		||||
        "install/**",
 | 
			
		||||
        "misc/**",
 | 
			
		||||
        "turnkey/**",
 | 
			
		||||
        "vm/**"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": [
 | 
			
		||||
        "misc/build.func",
 | 
			
		||||
        "misc/install.func",
 | 
			
		||||
        "misc/api.func"
 | 
			
		||||
      ]
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "delete script": [
 | 
			
		||||
    {
 | 
			
		||||
      "fileStatus": "removed",
 | 
			
		||||
      "includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"],
 | 
			
		||||
      "includeGlobs": [
 | 
			
		||||
        "ct/**",
 | 
			
		||||
        "install/**",
 | 
			
		||||
        "misc/**",
 | 
			
		||||
        "turnkey/**",
 | 
			
		||||
        "vm/**"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": []
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
@@ -27,7 +49,7 @@
 | 
			
		||||
        "*.md",
 | 
			
		||||
        ".github/**",
 | 
			
		||||
        "misc/*.func",
 | 
			
		||||
        "ct/create_lxc.sh",
 | 
			
		||||
        "misc/create_lxc.sh",
 | 
			
		||||
        "api/**"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": []
 | 
			
		||||
@@ -36,46 +58,57 @@
 | 
			
		||||
  "core": [
 | 
			
		||||
    {
 | 
			
		||||
      "fileStatus": null,
 | 
			
		||||
      "includeGlobs": ["misc/*.func", "ct/create_lxc.sh"],
 | 
			
		||||
      "includeGlobs": [
 | 
			
		||||
        "misc/*.func",
 | 
			
		||||
        "misc/create_lxc.sh"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": []
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "website": [
 | 
			
		||||
    {
 | 
			
		||||
      "fileStatus": null,
 | 
			
		||||
      "includeGlobs": ["frontend/**"],
 | 
			
		||||
      "includeGlobs": [
 | 
			
		||||
        "frontend/**"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": []
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "api": [
 | 
			
		||||
    {
 | 
			
		||||
      "fileStatus": null,
 | 
			
		||||
      "includeGlobs": ["api/**", "misc/api.func"],
 | 
			
		||||
      "includeGlobs": [
 | 
			
		||||
        "api/**",
 | 
			
		||||
        "misc/api.func"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": []
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "github": [
 | 
			
		||||
    {
 | 
			
		||||
      "fileStatus": null,
 | 
			
		||||
      "includeGlobs": [".github/**"],
 | 
			
		||||
      "includeGlobs": [
 | 
			
		||||
        ".github/**"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": []
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "json": [
 | 
			
		||||
    {
 | 
			
		||||
      "fileStatus": "modified",
 | 
			
		||||
      "includeGlobs": ["frontend/public/json/**"],
 | 
			
		||||
      "includeGlobs": [
 | 
			
		||||
        "frontend/public/json/**"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": []
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 | 
			
		||||
  "high risk": [
 | 
			
		||||
    {
 | 
			
		||||
      "fileStatus": null,
 | 
			
		||||
      "includeGlobs": [
 | 
			
		||||
        "misc/build.func",
 | 
			
		||||
        "misc/install.func",
 | 
			
		||||
        "ct/create_lxc.sh"
 | 
			
		||||
        "misc/create_lxc.sh"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": []
 | 
			
		||||
    }
 | 
			
		||||
@@ -83,7 +116,9 @@
 | 
			
		||||
  "documentation": [
 | 
			
		||||
    {
 | 
			
		||||
      "fileStatus": null,
 | 
			
		||||
      "includeGlobs": ["*.md"],
 | 
			
		||||
      "includeGlobs": [
 | 
			
		||||
        "*.md"
 | 
			
		||||
      ],
 | 
			
		||||
      "excludeGlobs": []
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								.github/workflows/frontend-cicd.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/frontend-cicd.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -44,9 +44,6 @@ jobs:
 | 
			
		||||
      - name: Install dependencies
 | 
			
		||||
        run: npm ci --prefer-offline --legacy-peer-deps
 | 
			
		||||
 | 
			
		||||
      - name: Run tests
 | 
			
		||||
        run: npm run test
 | 
			
		||||
 | 
			
		||||
      - name: Configure Next.js for pages
 | 
			
		||||
        uses: actions/configure-pages@v5
 | 
			
		||||
        with:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										48
									
								
								.github/workflows/push-to-gitea.yaml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								.github/workflows/push-to-gitea.yaml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
name: Sync to Gitea
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  sync:
 | 
			
		||||
    if: github.repository == 'community-scripts/ProxmoxVE'
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout source repo
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 0
 | 
			
		||||
 | 
			
		||||
      - name: Change all links to git.community-scripts.org
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "Searching for files containing raw.githubusercontent.com URLs..."
 | 
			
		||||
 | 
			
		||||
          # Find all files containing GitHub raw URLs, excluding certain directories
 | 
			
		||||
          files_with_github_urls=$(grep -r "https://raw.githubusercontent.com/community-scripts/ProxmoxVE" . --exclude-dir=.git --exclude-dir=node_modules --exclude-dir=.github/workflows --files-with-matches || true)
 | 
			
		||||
 | 
			
		||||
          if [ -n "$files_with_github_urls" ]; then
 | 
			
		||||
            echo "$files_with_github_urls" | while read file; do
 | 
			
		||||
              if [ -f "$file" ]; then
 | 
			
		||||
                sed -i 's|https://raw\.githubusercontent\.com/community-scripts/ProxmoxVE/|https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/|g' "$file"
 | 
			
		||||
              fi
 | 
			
		||||
            done         
 | 
			
		||||
          else
 | 
			
		||||
            echo "No files found containing GitHub raw URLs"
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
          
 | 
			
		||||
 | 
			
		||||
      - name: Push to Gitea
 | 
			
		||||
        run: |
 | 
			
		||||
          git config --global user.name "Push From Github"
 | 
			
		||||
          git config --global user.email "actions@github.com"
 | 
			
		||||
          git remote add gitea https://$GITEA_USER:$GITEA_TOKEN@git.community-scripts.org/community-scripts/ProxmoxVE.git
 | 
			
		||||
          git add .
 | 
			
		||||
          git commit -m "Sync to Gitea"
 | 
			
		||||
          git push gitea --all --force
 | 
			
		||||
        env:
 | 
			
		||||
          GITEA_USER: ${{ secrets.GITEA_USERNAME }}
 | 
			
		||||
          GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
 | 
			
		||||
							
								
								
									
										4
									
								
								.github/workflows/validate-filenames.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/validate-filenames.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -51,8 +51,8 @@ jobs:
 | 
			
		||||
 | 
			
		||||
          NON_COMPLIANT_FILES=""
 | 
			
		||||
          for FILE in $CHANGED_FILES; do
 | 
			
		||||
            # Datei "ct/create_lxc.sh" explizit überspringen
 | 
			
		||||
            if [[ "$FILE" == "ct/create_lxc.sh" ]]; then
 | 
			
		||||
            # Skip File "misc/create_lxc.sh"
 | 
			
		||||
            if [[ "$FILE" == "misc/create_lxc.sh" ]]; then
 | 
			
		||||
              continue
 | 
			
		||||
            fi
 | 
			
		||||
            BASENAME=$(echo "$(basename "${FILE%.*}")")
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										609
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										609
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -14,8 +14,617 @@ 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-07-02
 | 
			
		||||
 | 
			
		||||
## 2025-07-01
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Librespeed Rust ([#5614](https://github.com/community-scripts/ProxmoxVE/pull/5614))
 | 
			
		||||
- ITSM-NG ([#5615](https://github.com/community-scripts/ProxmoxVE/pull/5615))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Open WebUI: Fix Ollama update procedure [@tremor021](https://github.com/tremor021) ([#5601](https://github.com/community-scripts/ProxmoxVE/pull/5601))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - [tools]: increase fetch_and_deploy with dns pre check [@MickLesk](https://github.com/MickLesk) ([#5608](https://github.com/community-scripts/ProxmoxVE/pull/5608))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Jellyfin GPU Passthrough NVIDIA Note [@austinpilz](https://github.com/austinpilz) ([#5625](https://github.com/community-scripts/ProxmoxVE/pull/5625))
 | 
			
		||||
 | 
			
		||||
## 2025-06-30
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Alpine Syncthing [@MickLesk](https://github.com/MickLesk) ([#5586](https://github.com/community-scripts/ProxmoxVE/pull/5586))
 | 
			
		||||
- Kapowarr ([#5584](https://github.com/community-scripts/ProxmoxVE/pull/5584))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Fixing Cloudflare DDNS - lack of resources [@meszolym](https://github.com/meszolym) ([#5600](https://github.com/community-scripts/ProxmoxVE/pull/5600))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Immich: make changes to automatically enable QuickSync [@vhsdream](https://github.com/vhsdream) ([#5560](https://github.com/community-scripts/ProxmoxVE/pull/5560))
 | 
			
		||||
    - Apache Guacamole: Install auth-jdbc component that matches release version [@tremor021](https://github.com/tremor021) ([#5563](https://github.com/community-scripts/ProxmoxVE/pull/5563))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - tools.func: optimize binary installs with fetch_and_deploy helper [@MickLesk](https://github.com/MickLesk) ([#5588](https://github.com/community-scripts/ProxmoxVE/pull/5588))
 | 
			
		||||
    - [core]: add ipv6 configuration support [@MickLesk](https://github.com/MickLesk) ([#5575](https://github.com/community-scripts/ProxmoxVE/pull/5575))
 | 
			
		||||
 | 
			
		||||
## 2025-06-29
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Linkwarden: Add backing up of data folder to the update function [@tremor021](https://github.com/tremor021) ([#5548](https://github.com/community-scripts/ProxmoxVE/pull/5548))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Add cron-job api-key env variable to homarr script [@Meierschlumpf](https://github.com/Meierschlumpf) ([#5204](https://github.com/community-scripts/ProxmoxVE/pull/5204))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Documentation
 | 
			
		||||
 | 
			
		||||
    - update readme with valid discord link. other one expired [@BramSuurdje](https://github.com/BramSuurdje) ([#5567](https://github.com/community-scripts/ProxmoxVE/pull/5567))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Update script-item.tsx [@ape364](https://github.com/ape364) ([#5549](https://github.com/community-scripts/ProxmoxVE/pull/5549))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - fix bug in tooltip that would always render 'updateable' [@BramSuurdje](https://github.com/BramSuurdje) ([#5552](https://github.com/community-scripts/ProxmoxVE/pull/5552))
 | 
			
		||||
 | 
			
		||||
## 2025-06-28
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Ollama: Clean up old Ollama files before running update [@tremor021](https://github.com/tremor021) ([#5534](https://github.com/community-scripts/ProxmoxVE/pull/5534))
 | 
			
		||||
    - ONLYOFFICE: Update install script to manually create RabbitMQ user [@tremor021](https://github.com/tremor021) ([#5535](https://github.com/community-scripts/ProxmoxVE/pull/5535))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Booklore: Correct documentation and website  [@pieman3000](https://github.com/pieman3000) ([#5528](https://github.com/community-scripts/ProxmoxVE/pull/5528))
 | 
			
		||||
 | 
			
		||||
## 2025-06-27
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - BookLore ([#5524](https://github.com/community-scripts/ProxmoxVE/pull/5524))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - wizarr: remove unneeded tmp file [@MickLesk](https://github.com/MickLesk) ([#5517](https://github.com/community-scripts/ProxmoxVE/pull/5517))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Remove npm legacy errors, created single source of truth for ESlint. updated analytics url. updated script background [@BramSuurdje](https://github.com/BramSuurdje) ([#5498](https://github.com/community-scripts/ProxmoxVE/pull/5498))
 | 
			
		||||
 | 
			
		||||
  - #### 📂 Github
 | 
			
		||||
 | 
			
		||||
    - New workflow to push to gitea and change links to gitea [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5510](https://github.com/community-scripts/ProxmoxVE/pull/5510))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Wireguard, Update Link to Documentation. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5514](https://github.com/community-scripts/ProxmoxVE/pull/5514))
 | 
			
		||||
 | 
			
		||||
## 2025-06-26
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - ConvertX ([#5484](https://github.com/community-scripts/ProxmoxVE/pull/5484))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - [tools] Update setup_nodejs function [@tremor021](https://github.com/tremor021) ([#5488](https://github.com/community-scripts/ProxmoxVE/pull/5488))
 | 
			
		||||
- [tools] Fix setup_mongodb function [@tremor021](https://github.com/tremor021) ([#5486](https://github.com/community-scripts/ProxmoxVE/pull/5486))
 | 
			
		||||
 | 
			
		||||
## 2025-06-25
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Docmost: Increase resources [@tremor021](https://github.com/tremor021) ([#5458](https://github.com/community-scripts/ProxmoxVE/pull/5458))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - tools.func: new helper for imagemagick [@MickLesk](https://github.com/MickLesk) ([#5452](https://github.com/community-scripts/ProxmoxVE/pull/5452))
 | 
			
		||||
    - YunoHost: add Update-Function [@MickLesk](https://github.com/MickLesk) ([#5450](https://github.com/community-scripts/ProxmoxVE/pull/5450))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor: Tailscale  [@MickLesk](https://github.com/MickLesk) ([#5454](https://github.com/community-scripts/ProxmoxVE/pull/5454))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Update Tooltips component to conditionally display updateable status based on item type [@BramSuurdje](https://github.com/BramSuurdje) ([#5461](https://github.com/community-scripts/ProxmoxVE/pull/5461))
 | 
			
		||||
    - Refactor CommandMenu to prevent duplicate scripts across categories [@BramSuurdje](https://github.com/BramSuurdje) ([#5463](https://github.com/community-scripts/ProxmoxVE/pull/5463))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Enhance InstallCommand component to support Gitea as an alternative source for installation scripts. [@BramSuurdje](https://github.com/BramSuurdje) ([#5464](https://github.com/community-scripts/ProxmoxVE/pull/5464))
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Website: mark VM's and "OS"-LXC's as updatable [@MickLesk](https://github.com/MickLesk) ([#5453](https://github.com/community-scripts/ProxmoxVE/pull/5453))
 | 
			
		||||
 | 
			
		||||
## 2025-06-24
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - ONLYOFFICE Docs ([#5420](https://github.com/community-scripts/ProxmoxVE/pull/5420))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - GoMFT: tmpl bugfix to work with current version until a new release pushed [@MickLesk](https://github.com/MickLesk) ([#5435](https://github.com/community-scripts/ProxmoxVE/pull/5435))
 | 
			
		||||
    - Update all Alpine Scripts to atleast 1GB HDD [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5418](https://github.com/community-scripts/ProxmoxVE/pull/5418))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - general: update all alpine scripts to version 3.22 [@MickLesk](https://github.com/MickLesk) ([#5428](https://github.com/community-scripts/ProxmoxVE/pull/5428))
 | 
			
		||||
    - Minio: use latest version or latest feature rich version [@MickLesk](https://github.com/MickLesk) ([#5423](https://github.com/community-scripts/ProxmoxVE/pull/5423))
 | 
			
		||||
    - [core]: Improve GitHub release fetch robustness with split timeouts and retry logic [@MickLesk](https://github.com/MickLesk) ([#5422](https://github.com/community-scripts/ProxmoxVE/pull/5422))
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - bump scripts (Installer) from Ubuntu 22.04 to Ubuntu 24.04 (agentdvr, emby, jellyfin, plex, shinobi) [@MickLesk](https://github.com/MickLesk) ([#5434](https://github.com/community-scripts/ProxmoxVE/pull/5434))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor: MeTube to uv based install [@MickLesk](https://github.com/MickLesk) ([#5411](https://github.com/community-scripts/ProxmoxVE/pull/5411))
 | 
			
		||||
    - Refactor: Prometheus PVE Exporter to uv based install [@MickLesk](https://github.com/MickLesk) ([#5412](https://github.com/community-scripts/ProxmoxVE/pull/5412))
 | 
			
		||||
    - Refactor: ESPHome to uv based install [@MickLesk](https://github.com/MickLesk) ([#5413](https://github.com/community-scripts/ProxmoxVE/pull/5413))
 | 
			
		||||
 | 
			
		||||
## 2025-06-23
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Alpine-Forgejo by @Johann3s-H [@MickLesk](https://github.com/MickLesk) ([#5396](https://github.com/community-scripts/ProxmoxVE/pull/5396))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - [core]: tools.func -> autoupdate npm to newest version on install [@MickLesk](https://github.com/MickLesk) ([#5397](https://github.com/community-scripts/ProxmoxVE/pull/5397))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - PLANKA: Fix the update procedure [@tremor021](https://github.com/tremor021) ([#5391](https://github.com/community-scripts/ProxmoxVE/pull/5391))
 | 
			
		||||
    - changed trilium github repo [@miggi92](https://github.com/miggi92) ([#5390](https://github.com/community-scripts/ProxmoxVE/pull/5390))
 | 
			
		||||
    - changedetection: fix: hermetic msedge [@CrazyWolf13](https://github.com/CrazyWolf13) ([#5388](https://github.com/community-scripts/ProxmoxVE/pull/5388))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - MariaDB: Add information about Adminer on website [@tremor021](https://github.com/tremor021) ([#5400](https://github.com/community-scripts/ProxmoxVE/pull/5400))
 | 
			
		||||
 | 
			
		||||
## 2025-06-22
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - [core]: fix timing issues while template update & timezone setup at create new LXC [@MickLesk](https://github.com/MickLesk) ([#5358](https://github.com/community-scripts/ProxmoxVE/pull/5358))
 | 
			
		||||
- alpine: increase hdd to 1gb [@MickLesk](https://github.com/MickLesk) ([#5377](https://github.com/community-scripts/ProxmoxVE/pull/5377))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - fix: casing and naming error after #5254 [@GoetzGoerisch](https://github.com/GoetzGoerisch) ([#5380](https://github.com/community-scripts/ProxmoxVE/pull/5380))
 | 
			
		||||
    - fix: install_adminer > setup_adminer [@MickLesk](https://github.com/MickLesk) ([#5356](https://github.com/community-scripts/ProxmoxVE/pull/5356))
 | 
			
		||||
    - gitea: Update gitea.sh to stop update failures [@tystuyfzand](https://github.com/tystuyfzand) ([#5361](https://github.com/community-scripts/ProxmoxVE/pull/5361))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Immich: unpin release; use fetch & deploy function for update [@vhsdream](https://github.com/vhsdream) ([#5355](https://github.com/community-scripts/ProxmoxVE/pull/5355))
 | 
			
		||||
 | 
			
		||||
## 2025-06-21
 | 
			
		||||
 | 
			
		||||
## 2025-06-20
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Immich: remove unneeded tmp_file [@MickLesk](https://github.com/MickLesk) ([#5332](https://github.com/community-scripts/ProxmoxVE/pull/5332))
 | 
			
		||||
    - Huntarr: Fix duplicate update status messages [@tremor021](https://github.com/tremor021) ([#5336](https://github.com/community-scripts/ProxmoxVE/pull/5336))
 | 
			
		||||
    - fix planka Tags [@CrazyWolf13](https://github.com/CrazyWolf13) ([#5311](https://github.com/community-scripts/ProxmoxVE/pull/5311))
 | 
			
		||||
    - PLANKA: Better DB password generate [@tremor021](https://github.com/tremor021) ([#5313](https://github.com/community-scripts/ProxmoxVE/pull/5313))
 | 
			
		||||
    - Immich: Hotfix for #5299 [@vhsdream](https://github.com/vhsdream) ([#5300](https://github.com/community-scripts/ProxmoxVE/pull/5300))
 | 
			
		||||
    - changedetection: add msedge as Browser dependency [@Niklas04](https://github.com/Niklas04) ([#5301](https://github.com/community-scripts/ProxmoxVE/pull/5301))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - (turnkey) Add OpenLDAP as a TurnKey option [@mhaligowski](https://github.com/mhaligowski) ([#5305](https://github.com/community-scripts/ProxmoxVE/pull/5305))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - [core]: unify misc/*.func scripts with centralized logic from core.func [@MickLesk](https://github.com/MickLesk) ([#5316](https://github.com/community-scripts/ProxmoxVE/pull/5316))
 | 
			
		||||
    - Refactor: migrate AdventureLog update to uv and GitHub release logic [@MickLesk](https://github.com/MickLesk) ([#5318](https://github.com/community-scripts/ProxmoxVE/pull/5318))
 | 
			
		||||
    - Refactor: migrate Jupyter Notebook to uv-based installation with update support [@MickLesk](https://github.com/MickLesk) ([#5320](https://github.com/community-scripts/ProxmoxVE/pull/5320))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Argus: fix wrong port on website [@MickLesk](https://github.com/MickLesk) ([#5322](https://github.com/community-scripts/ProxmoxVE/pull/5322))
 | 
			
		||||
 | 
			
		||||
## 2025-06-19
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Ubuntu 25.04 VM [@MickLesk](https://github.com/MickLesk) ([#5284](https://github.com/community-scripts/ProxmoxVE/pull/5284))
 | 
			
		||||
- PLANKA ([#5277](https://github.com/community-scripts/ProxmoxVE/pull/5277))
 | 
			
		||||
- Wizarr ([#5273](https://github.com/community-scripts/ProxmoxVE/pull/5273))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - immich-install.sh: restore pgvector module install [@vhsdream](https://github.com/vhsdream) ([#5286](https://github.com/community-scripts/ProxmoxVE/pull/5286))
 | 
			
		||||
    - Immich: prepare for v1.135.0 [@vhsdream](https://github.com/vhsdream) ([#5025](https://github.com/community-scripts/ProxmoxVE/pull/5025))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - [core]: Feature - Check Quorum Status in create_lxc to prevent issues [@MickLesk](https://github.com/MickLesk) ([#5278](https://github.com/community-scripts/ProxmoxVE/pull/5278))
 | 
			
		||||
    - [core]: add validation and replace recursion for invalid inputs in adv. settings [@MickLesk](https://github.com/MickLesk) ([#5291](https://github.com/community-scripts/ProxmoxVE/pull/5291))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - cloudflare-ddns: fix typo in info-text [@LukaZagar](https://github.com/LukaZagar) ([#5263](https://github.com/community-scripts/ProxmoxVE/pull/5263))
 | 
			
		||||
 | 
			
		||||
## 2025-06-18
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - FileBrowser Quantum [@MickLesk](https://github.com/MickLesk) ([#5248](https://github.com/community-scripts/ProxmoxVE/pull/5248))
 | 
			
		||||
- Huntarr ([#5249](https://github.com/community-scripts/ProxmoxVE/pull/5249))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - tools.func: Standardized and Renamed Setup Functions [@MickLesk](https://github.com/MickLesk) ([#5241](https://github.com/community-scripts/ProxmoxVE/pull/5241))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Immich: fix prompt clobber issue [@vhsdream](https://github.com/vhsdream) ([#5231](https://github.com/community-scripts/ProxmoxVE/pull/5231))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor all VM's to same logic & functions [@MickLesk](https://github.com/MickLesk) ([#5254](https://github.com/community-scripts/ProxmoxVE/pull/5254))
 | 
			
		||||
    - upgrade old Scriptcalls to new tools.func calls [@MickLesk](https://github.com/MickLesk) ([#5242](https://github.com/community-scripts/ProxmoxVE/pull/5242))
 | 
			
		||||
 | 
			
		||||
## 2025-06-17
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - gitea-mirror: increase build ressources  [@CrazyWolf13](https://github.com/CrazyWolf13) ([#5235](https://github.com/community-scripts/ProxmoxVE/pull/5235))
 | 
			
		||||
    - Immich: ensure in proper working dir when updating [@vhsdream](https://github.com/vhsdream) ([#5227](https://github.com/community-scripts/ProxmoxVE/pull/5227))
 | 
			
		||||
    - Update IP-Tag [@DesertGamer](https://github.com/DesertGamer) ([#5226](https://github.com/community-scripts/ProxmoxVE/pull/5226))
 | 
			
		||||
    - trilium: fix update function after db changes folder [@tjcomserv](https://github.com/tjcomserv) ([#5207](https://github.com/community-scripts/ProxmoxVE/pull/5207))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - LibreTranslate: Add .env for easier configuration [@tremor021](https://github.com/tremor021) ([#5216](https://github.com/community-scripts/ProxmoxVE/pull/5216))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - IPTag: Better explanation [@MickLesk](https://github.com/MickLesk) ([#5213](https://github.com/community-scripts/ProxmoxVE/pull/5213))
 | 
			
		||||
 | 
			
		||||
## 2025-06-16
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Intel NIC offload Fix by @rcastley [@MickLesk](https://github.com/MickLesk) ([#5155](https://github.com/community-scripts/ProxmoxVE/pull/5155))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - [core] Move install_php() from VED to main [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5182](https://github.com/community-scripts/ProxmoxVE/pull/5182))
 | 
			
		||||
- Firefly: Add Data Importer to LXC [@tremor021](https://github.com/tremor021) ([#5159](https://github.com/community-scripts/ProxmoxVE/pull/5159))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Wastebin: Fix missing dependencies [@tremor021](https://github.com/tremor021) ([#5185](https://github.com/community-scripts/ProxmoxVE/pull/5185))
 | 
			
		||||
    - Kasm: Storing Creds Fix [@omiinaya](https://github.com/omiinaya) ([#5162](https://github.com/community-scripts/ProxmoxVE/pull/5162))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - add optional Cloud-init support to Debian VM script  [@koendiender](https://github.com/koendiender) ([#5137](https://github.com/community-scripts/ProxmoxVE/pull/5137))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Refactor: 2FAuth [@tremor021](https://github.com/tremor021) ([#5184](https://github.com/community-scripts/ProxmoxVE/pull/5184))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - Refactor layout and component styles for improved responsiveness [@BramSuurdje](https://github.com/BramSuurdje) ([#5195](https://github.com/community-scripts/ProxmoxVE/pull/5195))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Refactor ScriptItem and ConfigFile components to conditionally render config file location. Update ConfigFile to accept configPath prop instead of item. [@BramSuurdje](https://github.com/BramSuurdje) ([#5197](https://github.com/community-scripts/ProxmoxVE/pull/5197))
 | 
			
		||||
    - Update default image asset in the public directory and update api route to only search for files that end with .json [@BramSuurdje](https://github.com/BramSuurdje) ([#5179](https://github.com/community-scripts/ProxmoxVE/pull/5179))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Update default image asset in the public directory [@BramSuurdje](https://github.com/BramSuurdje) ([#5189](https://github.com/community-scripts/ProxmoxVE/pull/5189))
 | 
			
		||||
 | 
			
		||||
## 2025-06-15
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - LibreTranslate ([#5154](https://github.com/community-scripts/ProxmoxVE/pull/5154))
 | 
			
		||||
 | 
			
		||||
## 2025-06-14
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - [core] Update install_mariadb func [@tremor021](https://github.com/tremor021) ([#5138](https://github.com/community-scripts/ProxmoxVE/pull/5138))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - flowiseai: set NodeJS to Version 20 [@MickLesk](https://github.com/MickLesk) ([#5130](https://github.com/community-scripts/ProxmoxVE/pull/5130))
 | 
			
		||||
    - Update dolibarr-install.sh - Get largest version number [@tjcomserv](https://github.com/tjcomserv) ([#5127](https://github.com/community-scripts/ProxmoxVE/pull/5127))
 | 
			
		||||
 | 
			
		||||
## 2025-06-13
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Zigbee2MQTT: Fix missing directory [@tremor021](https://github.com/tremor021) ([#5120](https://github.com/community-scripts/ProxmoxVE/pull/5120))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Umbrel OS: Fix bad disk size shown on website [@tremor021](https://github.com/tremor021) ([#5125](https://github.com/community-scripts/ProxmoxVE/pull/5125))
 | 
			
		||||
 | 
			
		||||
## 2025-06-12
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Manage my Damn Life ([#5100](https://github.com/community-scripts/ProxmoxVE/pull/5100))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Kasm: Increase Ressources & Hint for Fuse / Swap [@MickLesk](https://github.com/MickLesk) ([#5112](https://github.com/community-scripts/ProxmoxVE/pull/5112))
 | 
			
		||||
 | 
			
		||||
## 2025-06-11
 | 
			
		||||
 | 
			
		||||
## 2025-06-10
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Element Synapse: switched from development to production mode and fixed update [@Frankmaaan](https://github.com/Frankmaaan) ([#5066](https://github.com/community-scripts/ProxmoxVE/pull/5066))
 | 
			
		||||
    - Tinyauth: Fix creation of service file [@tremor021](https://github.com/tremor021) ([#5090](https://github.com/community-scripts/ProxmoxVE/pull/5090))
 | 
			
		||||
    - Dolibarr: Fix typo in SQL command [@tremor021](https://github.com/tremor021) ([#5091](https://github.com/community-scripts/ProxmoxVE/pull/5091))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 📡 API
 | 
			
		||||
 | 
			
		||||
    - [core] Prevent API form sending Data when disabled [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5080](https://github.com/community-scripts/ProxmoxVE/pull/5080))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Immich: Update JSON [@vhsdream](https://github.com/vhsdream) ([#5085](https://github.com/community-scripts/ProxmoxVE/pull/5085))
 | 
			
		||||
 | 
			
		||||
## 2025-06-09
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Authelia: Fix the URL of the container [@tremor021](https://github.com/tremor021) ([#5064](https://github.com/community-scripts/ProxmoxVE/pull/5064))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - GoMFT: Remove from website temporarily [@tremor021](https://github.com/tremor021) ([#5065](https://github.com/community-scripts/ProxmoxVE/pull/5065))
 | 
			
		||||
 | 
			
		||||
## 2025-06-08
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Minarca ([#5058](https://github.com/community-scripts/ProxmoxVE/pull/5058))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - zot: fix missing var (Dev -> Main) [@MickLesk](https://github.com/MickLesk) ([#5056](https://github.com/community-scripts/ProxmoxVE/pull/5056))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - karakeep: Add more configuration defaults [@vhsdream](https://github.com/vhsdream) ([#5054](https://github.com/community-scripts/ProxmoxVE/pull/5054))
 | 
			
		||||
 | 
			
		||||
## 2025-06-07
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - alpine-it-tools fix update [@CrazyWolf13](https://github.com/CrazyWolf13) ([#5039](https://github.com/community-scripts/ProxmoxVE/pull/5039))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - Fix typo in build.func [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5041](https://github.com/community-scripts/ProxmoxVE/pull/5041))
 | 
			
		||||
 | 
			
		||||
## 2025-06-06
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Zot-Registry ([#5016](https://github.com/community-scripts/ProxmoxVE/pull/5016))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - zipline: fix old upload copy from v3 to v4 [@MickLesk](https://github.com/MickLesk) ([#5015](https://github.com/community-scripts/ProxmoxVE/pull/5015))
 | 
			
		||||
 | 
			
		||||
## 2025-06-05
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Lyrion Music Server ([#4992](https://github.com/community-scripts/ProxmoxVE/pull/4992))
 | 
			
		||||
- gitea-mirror ([#4967](https://github.com/community-scripts/ProxmoxVE/pull/4967))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Zipline: Fix PostgreSQL install [@tremor021](https://github.com/tremor021) ([#4989](https://github.com/community-scripts/ProxmoxVE/pull/4989))
 | 
			
		||||
    - Homarr: add nodejs upgrade [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4974](https://github.com/community-scripts/ProxmoxVE/pull/4974))
 | 
			
		||||
    - add FUSE to rclone [@Frankmaaan](https://github.com/Frankmaaan) ([#4972](https://github.com/community-scripts/ProxmoxVE/pull/4972))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Zitadel: Upgrade Install to PSQL 17 [@MickLesk](https://github.com/MickLesk) ([#5000](https://github.com/community-scripts/ProxmoxVE/pull/5000))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Fix clean-lxcs.sh type categorization [@bitspill](https://github.com/bitspill) ([#4980](https://github.com/community-scripts/ProxmoxVE/pull/4980))
 | 
			
		||||
 | 
			
		||||
## 2025-06-04
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Pulse: add polkit for sudoless web updates [@rcourtman](https://github.com/rcourtman) ([#4970](https://github.com/community-scripts/ProxmoxVE/pull/4970))
 | 
			
		||||
- Pulse: add correct Port for URL output  [@rcourtman](https://github.com/rcourtman) ([#4951](https://github.com/community-scripts/ProxmoxVE/pull/4951))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - [refactor] Seelf [@tremor021](https://github.com/tremor021) ([#4954](https://github.com/community-scripts/ProxmoxVE/pull/4954))
 | 
			
		||||
 | 
			
		||||
## 2025-06-03
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Kasm: Swap fix [@omiinaya](https://github.com/omiinaya) ([#4937](https://github.com/community-scripts/ProxmoxVE/pull/4937))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - netbox: correct website URL  [@theincrediblenoone](https://github.com/theincrediblenoone) ([#4952](https://github.com/community-scripts/ProxmoxVE/pull/4952))
 | 
			
		||||
 | 
			
		||||
## 2025-06-02
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - PVE-Privilege-Converter [@MickLesk](https://github.com/MickLesk) ([#4906](https://github.com/community-scripts/ProxmoxVE/pull/4906))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - fix(wastebin): use tar asset [@dbeg](https://github.com/dbeg) ([#4934](https://github.com/community-scripts/ProxmoxVE/pull/4934))
 | 
			
		||||
    - MySQL/MariaDB: fix create user with password [@MickLesk](https://github.com/MickLesk) ([#4918](https://github.com/community-scripts/ProxmoxVE/pull/4918))
 | 
			
		||||
    - Fix alpine-tinyauth env configuration parsing logic [@gokussjx](https://github.com/gokussjx) ([#4901](https://github.com/community-scripts/ProxmoxVE/pull/4901))
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - make Pulse installation non-interactive [@rcourtman](https://github.com/rcourtman) ([#4848](https://github.com/community-scripts/ProxmoxVE/pull/4848))
 | 
			
		||||
 | 
			
		||||
### 🧰 Maintenance
 | 
			
		||||
 | 
			
		||||
  - #### 💾 Core
 | 
			
		||||
 | 
			
		||||
    - [core] add hw-accelerated for immich, openwebui / remove scrypted [@MickLesk](https://github.com/MickLesk) ([#4927](https://github.com/community-scripts/ProxmoxVE/pull/4927))
 | 
			
		||||
    - [core] tools.func: Bugfix old gpg key for mysql & little improvements [@MickLesk](https://github.com/MickLesk) ([#4916](https://github.com/community-scripts/ProxmoxVE/pull/4916))
 | 
			
		||||
    - [core] Varius fixes to Config file feature [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#4924](https://github.com/community-scripts/ProxmoxVE/pull/4924))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Display default password even if there isn't a default username [@0risc](https://github.com/0risc) ([#4900](https://github.com/community-scripts/ProxmoxVE/pull/4900))
 | 
			
		||||
 | 
			
		||||
## 2025-06-01
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - immich ([#4886](https://github.com/community-scripts/ProxmoxVE/pull/4886))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - AdventureLog: add login credentials info [@tremor021](https://github.com/tremor021) ([#4887](https://github.com/community-scripts/ProxmoxVE/pull/4887))
 | 
			
		||||
 | 
			
		||||
## 2025-05-31
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Silverbullet: Fix Installation (wrong path) [@MickLesk](https://github.com/MickLesk) ([#4873](https://github.com/community-scripts/ProxmoxVE/pull/4873))
 | 
			
		||||
    - ActualBudget: fix update check (file instead of folder check) [@MickLesk](https://github.com/MickLesk) ([#4874](https://github.com/community-scripts/ProxmoxVE/pull/4874))
 | 
			
		||||
    - Omada Controller: Fix libssl url [@tremor021](https://github.com/tremor021) ([#4868](https://github.com/community-scripts/ProxmoxVE/pull/4868))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Revert "Update package dependencies in package.json and package-lock.json (#4845) [@BramSuurdje](https://github.com/BramSuurdje) ([#4869](https://github.com/community-scripts/ProxmoxVE/pull/4869))
 | 
			
		||||
 | 
			
		||||
### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
  - Remove Authentik script [@tremor021](https://github.com/tremor021) ([#4867](https://github.com/community-scripts/ProxmoxVE/pull/4867))
 | 
			
		||||
 | 
			
		||||
## 2025-05-30
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - slskd: add space in sed command [@vhsdream](https://github.com/vhsdream) ([#4853](https://github.com/community-scripts/ProxmoxVE/pull/4853))
 | 
			
		||||
    - Alpine Traefik: Fix working directory and plugins [@tremor021](https://github.com/tremor021) ([#4838](https://github.com/community-scripts/ProxmoxVE/pull/4838))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Update package dependencies in package.json and package-lock.json [@enough-jainil](https://github.com/enough-jainil) ([#4845](https://github.com/community-scripts/ProxmoxVE/pull/4845))
 | 
			
		||||
 | 
			
		||||
## 2025-05-29
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
    <a href="https://helper-scripts.com">
 | 
			
		||||
      <img src="https://img.shields.io/badge/Website-4c9b3f?style=for-the-badge&logo=github&logoColor=white" alt="Website" />
 | 
			
		||||
    </a>
 | 
			
		||||
    <a href="https://discord.gg/jsYVk5JBxq">
 | 
			
		||||
    <a href="https://discord.gg/3AnUqsXnmK">
 | 
			
		||||
      <img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
 | 
			
		||||
    </a> 
 | 
			
		||||
    <a href="https://ko-fi.com/community_scripts">
 | 
			
		||||
@@ -82,7 +82,7 @@ We appreciate any contributions to the project—whether it's bug reports, featu
 | 
			
		||||
 | 
			
		||||
Join our community for support:
 | 
			
		||||
 | 
			
		||||
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/jsYVk5JBxq) for real-time support.
 | 
			
		||||
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/3AnUqsXnmK) for real-time support.
 | 
			
		||||
- **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions).
 | 
			
		||||
 | 
			
		||||
## 🤝 Report a Bug or Feature Request
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								ct/2fauth.sh
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								ct/2fauth.sh
									
									
									
									
									
								
							@@ -24,21 +24,16 @@ function update_script() {
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  # Check if installation is present | -f for file, -d for folder
 | 
			
		||||
  if [[ ! -d "/opt/2fauth" ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Crawling the new version and checking whether an update is required
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/2fauth_version.txt)" ]] || [[ ! -f /opt/2fauth_version.txt ]]; then
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.2fauth 2>/dev/null || cat /opt/2fauth_version.txt 2>/dev/null)" ]]; then
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
 | 
			
		||||
    # Creating Backup
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    mv "/opt/2fauth" "/opt/2fauth-backup"
 | 
			
		||||
    if ! dpkg -l | grep -q 'php8.3'; then
 | 
			
		||||
@@ -46,37 +41,24 @@ function update_script() {
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    # Upgrade PHP
 | 
			
		||||
    if ! dpkg -l | grep -q 'php8.3'; then
 | 
			
		||||
      $STD apt-get install -y \
 | 
			
		||||
        lsb-release \
 | 
			
		||||
        gpg
 | 
			
		||||
      curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/deb.sury.org-php.gpg
 | 
			
		||||
      echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" >/etc/apt/sources.list.d/php.list
 | 
			
		||||
      $STD apt-get update
 | 
			
		||||
      $STD apt-get install -y php8.3-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli,intl}
 | 
			
		||||
        gnupg2
 | 
			
		||||
      PHP_VERSION="8.3" PHP_MODULE="common,ctype,fileinfo,fpm,mysql,cli" setup_php
 | 
			
		||||
      sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Execute Update
 | 
			
		||||
    curl -fsSL -o "${RELEASE}.zip" "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "${RELEASE}.zip"
 | 
			
		||||
    mv "2FAuth-${RELEASE//v/}/" "/opt/2fauth"
 | 
			
		||||
    fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth"
 | 
			
		||||
    mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
 | 
			
		||||
    mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
 | 
			
		||||
    cd "/opt/2fauth" || return
 | 
			
		||||
 | 
			
		||||
    chown -R www-data: "/opt/2fauth"
 | 
			
		||||
    chmod -R 755 "/opt/2fauth"
 | 
			
		||||
 | 
			
		||||
    export COMPOSER_ALLOW_SUPERUSER=1
 | 
			
		||||
    $STD composer install --no-dev --prefer-source
 | 
			
		||||
 | 
			
		||||
    php artisan 2fauth:install
 | 
			
		||||
 | 
			
		||||
    $STD systemctl restart nginx
 | 
			
		||||
 | 
			
		||||
    # Cleaning up
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf "v${RELEASE}.zip"
 | 
			
		||||
    if dpkg -l | grep -q 'php8.2'; then
 | 
			
		||||
@@ -86,7 +68,6 @@ function update_script() {
 | 
			
		||||
    $STD apt-get -y autoclean
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
    # Last Action
 | 
			
		||||
    echo "${RELEASE}" >/opt/2fauth_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
  else
 | 
			
		||||
 
 | 
			
		||||
@@ -24,12 +24,12 @@ function update_script() {
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/actualbudget ]]; then
 | 
			
		||||
  if [[ ! -f /opt/actualbudget_version.txt ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  NODE_VERSION="22"
 | 
			
		||||
  install_node_and_modules
 | 
			
		||||
  setup_nodejs
 | 
			
		||||
  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
 | 
			
		||||
 
 | 
			
		||||
@@ -27,43 +27,51 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.adventurelog 2>/dev/null)" ]] || [[ ! -f ~/.adventurelog ]]; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop adventurelog-backend
 | 
			
		||||
    systemctl stop adventurelog-frontend
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    mv /opt/adventurelog/ /opt/adventurelog-backup/
 | 
			
		||||
    curl -fsSL -o /opt/v${RELEASE}.zip "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip /opt/v${RELEASE}.zip -d /opt/
 | 
			
		||||
    mv /opt/AdventureLog-${RELEASE} /opt/adventurelog
 | 
			
		||||
    fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
 | 
			
		||||
    PYTHON_VERSION="3.12" setup_uv
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    # Backend Migration
 | 
			
		||||
    cp /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
 | 
			
		||||
    cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
 | 
			
		||||
 | 
			
		||||
    mv /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
 | 
			
		||||
    mv /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
 | 
			
		||||
    cd /opt/adventurelog/backend/server
 | 
			
		||||
    $STD pip install --upgrade pip
 | 
			
		||||
    $STD pip install -r requirements.txt
 | 
			
		||||
    $STD python3 manage.py collectstatic --noinput
 | 
			
		||||
    $STD python3 manage.py migrate
 | 
			
		||||
    if [[ ! -x .venv/bin/python ]]; then
 | 
			
		||||
      $STD uv venv .venv
 | 
			
		||||
      $STD .venv/bin/python -m ensurepip --upgrade
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    mv /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env
 | 
			
		||||
    $STD .venv/bin/python -m pip install --upgrade pip
 | 
			
		||||
    $STD .venv/bin/python -m pip install -r requirements.txt
 | 
			
		||||
    $STD .venv/bin/python -m manage collectstatic --noinput
 | 
			
		||||
    $STD .venv/bin/python -m manage migrate
 | 
			
		||||
 | 
			
		||||
    # Frontend Migration
 | 
			
		||||
    cp /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env
 | 
			
		||||
    cd /opt/adventurelog/frontend
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
    $STD pnpm run build
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    $STD pnpm i
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Services"
 | 
			
		||||
    systemctl daemon-reexec
 | 
			
		||||
    systemctl start adventurelog-backend
 | 
			
		||||
    systemctl start adventurelog-frontend
 | 
			
		||||
    msg_ok "Started Services"
 | 
			
		||||
    msg_ok "Services Started"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf /opt/v${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/adventurelog-backup
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-ubuntu}"
 | 
			
		||||
var_version="${var_version:-22.04}"
 | 
			
		||||
var_version="${var_version:-24.04}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-0}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -20,15 +20,15 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/agentdvr ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_error "Currently we don't provide an update function for this ${APP}."
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/agentdvr ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_error "Currently we don't provide an update function for this ${APP}."
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -38,4 +38,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}:8090${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								ct/alpine-forgejo.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ct/alpine-forgejo.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
#!/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: Johann3s-H (An!ma)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://forgejo.org/
 | 
			
		||||
 | 
			
		||||
APP="Alpine-Forgejo"
 | 
			
		||||
var_tags="${var_tags:-alpine;git}"
 | 
			
		||||
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.22}"
 | 
			
		||||
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 Forgejo"
 | 
			
		||||
  $STD apk upgrade forgejo
 | 
			
		||||
  msg_ok "Updated Forgejo"
 | 
			
		||||
 | 
			
		||||
  msg_info "Restarting Forgejo"
 | 
			
		||||
  $STD rc-service forgejo restart
 | 
			
		||||
  msg_ok "Restarted Forgejo"
 | 
			
		||||
 | 
			
		||||
  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}"
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -9,9 +9,9 @@ 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.5}"
 | 
			
		||||
var_disk="${var_disk:-1}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -21,8 +21,6 @@ catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [ ! -d /usr/share/nginx/html ]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -58,4 +58,4 @@ description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${APP} should be reachable by going to the following URL.
 | 
			
		||||
         ${BL}https://${IP}${CL} \n"
 | 
			
		||||
         ${BL}https://${IP}${CL} \n"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,8 +11,9 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
var_fuse="${var_fuse:-yes}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
@@ -21,9 +22,6 @@ 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
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -69,4 +69,4 @@ description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${APP} should be reachable on port 6379.
 | 
			
		||||
         ${BL}redis-cli -h ${IP} -p 6379${CL} \n"
 | 
			
		||||
         ${BL}redis-cli -h ${IP} -p 6379${CL} \n"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								ct/alpine-syncthing.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ct/alpine-syncthing.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
#!/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://syncthing.net/
 | 
			
		||||
 | 
			
		||||
APP="Alpine-Syncthing"
 | 
			
		||||
var_tags="${var_tags:-alpine;networking}"
 | 
			
		||||
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.22}"
 | 
			
		||||
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 Syncthing"
 | 
			
		||||
  $STD apk upgrade syncthing
 | 
			
		||||
  msg_ok "Updated Syncthing"
 | 
			
		||||
 | 
			
		||||
  msg_info "Restarting Syncthing"
 | 
			
		||||
  $STD rc-service syncthing restart
 | 
			
		||||
  msg_ok "Restarted Syncthing"
 | 
			
		||||
 | 
			
		||||
  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}:8384${CL}"
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -31,13 +31,13 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
    rm -f /opt/tinyauth/tinyauth
 | 
			
		||||
    curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
 | 
			
		||||
    chmod +x /opt/tinyauth/tinyauth
 | 
			
		||||
    echo "${RELEASE}" > /opt/tinyauth_version.txt
 | 
			
		||||
    echo "${RELEASE}" >/opt/tinyauth_version.txt
 | 
			
		||||
    msg_info "Restarting Tinyauth"
 | 
			
		||||
    $STD service tinyauth start
 | 
			
		||||
    msg_ok "Restarted Tinyauth"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,11 +7,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
 | 
			
		||||
APP="Alpine-Zigbee2MQTT"
 | 
			
		||||
var_tags="${var_tags:-alpine;zigbee;mqtt;smarthome}"
 | 
			
		||||
var_disk="${var_disk:-0.3}"
 | 
			
		||||
var_disk="${var_disk:-1}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-0}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -9,9 +9,9 @@ APP="Alpine"
 | 
			
		||||
var_tags="${var_tags:-os;alpine}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-0.5}"
 | 
			
		||||
var_disk="${var_disk:-1}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -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 URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9091${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}https://YOUR_AUTHELIA_URL${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,91 +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: remz1337
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://goauthentik.io/
 | 
			
		||||
 | 
			
		||||
APP="Authentik"
 | 
			
		||||
var_tags="${var_tags:-identity-provider}"
 | 
			
		||||
var_disk="${var_disk:-12}"
 | 
			
		||||
var_cpu="${var_cpu:-6}"
 | 
			
		||||
var_ram="${var_ram:-10240}"
 | 
			
		||||
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/authentik-server.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  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
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building ${APP} website"
 | 
			
		||||
    mkdir -p /opt/authentik
 | 
			
		||||
    curl -fsSL "${RELEASE}" -o "authentik.tar.gz"
 | 
			
		||||
    tar -xzf authentik.tar.gz -C /opt/authentik --strip-components 1 --overwrite
 | 
			
		||||
    rm -rf authentik.tar.gz
 | 
			
		||||
    cd /opt/authentik/website
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run build-bundled
 | 
			
		||||
    cd /opt/authentik/web
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    msg_ok "Built ${APP} website"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building ${APP} server"
 | 
			
		||||
    cd /opt/authentik
 | 
			
		||||
    go mod download
 | 
			
		||||
    go build -o /go/authentik ./cmd/server
 | 
			
		||||
    go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/
 | 
			
		||||
    msg_ok "Built ${APP} server"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building Authentik"
 | 
			
		||||
    cd /opt/authentik
 | 
			
		||||
    $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"
 | 
			
		||||
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start authentik-server
 | 
			
		||||
    systemctl start authentik-worker
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
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}:9000/if/flow/initial-setup/${CL}"
 | 
			
		||||
							
								
								
									
										79
									
								
								ct/booklore.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								ct/booklore.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,79 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/adityachandelgit/BookLore
 | 
			
		||||
 | 
			
		||||
APP="BookLore"
 | 
			
		||||
var_tags="${var_tags:-books;library}"
 | 
			
		||||
var_cpu="${var_cpu:-3}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-7}"
 | 
			
		||||
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/booklore ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.booklore 2>/dev/null)" ]] || [[ ! -f ~/.booklore ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop booklore
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "booklore" "adityachandelgit/BookLore"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building Frontend"
 | 
			
		||||
    cd /opt/booklore/booklore-ui
 | 
			
		||||
    $STD npm install --force
 | 
			
		||||
    $STD npm run build --configuration=production
 | 
			
		||||
    msg_ok "Built Frontend"
 | 
			
		||||
 | 
			
		||||
    msg_info "Building Backend"
 | 
			
		||||
    cd /opt/booklore/booklore-api
 | 
			
		||||
    APP_VERSION=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
 | 
			
		||||
    yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
 | 
			
		||||
    $STD ./gradlew clean build --no-daemon
 | 
			
		||||
    mkdir -p /opt/booklore/dist
 | 
			
		||||
    JAR_PATH=$(find /opt/booklore/booklore-api/build/libs -maxdepth 1 -type f -name "booklore-api-*.jar" ! -name "*plain*" | head -n1)
 | 
			
		||||
    if [[ -z "$JAR_PATH" ]]; then
 | 
			
		||||
      msg_error "Backend JAR not found"
 | 
			
		||||
      exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    cp "$JAR_PATH" /opt/booklore/dist/app.jar
 | 
			
		||||
    msg_ok "Built Backend"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start booklore
 | 
			
		||||
    systemctl reload nginx
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6060${CL}"
 | 
			
		||||
@@ -52,6 +52,7 @@ function update_script() {
 | 
			
		||||
    $STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps
 | 
			
		||||
    # Update Chrome separately, as it has to be done with the force option. Otherwise the installation of other browsers will not be done if Chrome is already installed.
 | 
			
		||||
    $STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome
 | 
			
		||||
    $STD /opt/browserless/node_modules/playwright-core/cli.js install --force msedge
 | 
			
		||||
    $STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit
 | 
			
		||||
    $STD npm run build --prefix /opt/browserless
 | 
			
		||||
    $STD npm run build:function --prefix /opt/browserless
 | 
			
		||||
@@ -74,4 +75,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}:5000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,8 +7,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
 | 
			
		||||
APP="Cloudflare-DDNS"
 | 
			
		||||
var_tags="${var_tags:-network}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-3}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ function update_script() {
 | 
			
		||||
    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
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.configarr 2>/dev/null || cat /opt/configarr_version.txt 2>/dev/null)" ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop configarr-task.timer
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    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"
 | 
			
		||||
    fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr"
 | 
			
		||||
    mv /opt/backup/* /opt/configarr/
 | 
			
		||||
    cd /opt/configarr
 | 
			
		||||
    $STD pnpm install
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										70
									
								
								ct/convertx.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								ct/convertx.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
#!/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: Omar Minaya | MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/C4illin/ConvertX
 | 
			
		||||
 | 
			
		||||
APP="ConvertX"
 | 
			
		||||
var_tags="${var_tags:-converter}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-20}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /var ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/C4illin/ConvertX/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.convertx 2>/dev/null)" ]] || [[ ! -f ~/.convertx ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop convertx
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Move data-Folder"
 | 
			
		||||
    if [[ -d /opt/convertx/data ]]; then
 | 
			
		||||
      mv /opt/convertx/data /opt/data
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Moved data-Folder"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "ConvertX" "C4illin/ConvertX" "tarball" "latest" "/opt/convertx"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    if [[ -d /opt/data ]]; then
 | 
			
		||||
      mv /opt/data /opt/convertx/data
 | 
			
		||||
    fi
 | 
			
		||||
    cd /opt/convertx
 | 
			
		||||
    $STD bun install
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start convertx
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  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}"
 | 
			
		||||
							
								
								
									
										282
									
								
								ct/create_lxc.sh
									
									
									
									
									
								
							
							
						
						
									
										282
									
								
								ct/create_lxc.sh
									
									
									
									
									
								
							@@ -1,282 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Co-Author: MickLesk
 | 
			
		||||
# License: MIT
 | 
			
		||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
 | 
			
		||||
# This sets verbose mode if the global variable is set to "yes"
 | 
			
		||||
# if [ "$VERBOSE" == "yes" ]; then set -x; fi
 | 
			
		||||
 | 
			
		||||
# This function sets color variables for formatting output in the terminal
 | 
			
		||||
# Colors
 | 
			
		||||
YW=$(echo "\033[33m")
 | 
			
		||||
YWB=$(echo "\033[93m")
 | 
			
		||||
BL=$(echo "\033[36m")
 | 
			
		||||
RD=$(echo "\033[01;31m")
 | 
			
		||||
GN=$(echo "\033[1;92m")
 | 
			
		||||
 | 
			
		||||
# Formatting
 | 
			
		||||
CL=$(echo "\033[m")
 | 
			
		||||
UL=$(echo "\033[4m")
 | 
			
		||||
BOLD=$(echo "\033[1m")
 | 
			
		||||
BFR="\\r\\033[K"
 | 
			
		||||
HOLD=" "
 | 
			
		||||
TAB="  "
 | 
			
		||||
 | 
			
		||||
# Icons
 | 
			
		||||
CM="${TAB}✔️${TAB}${CL}"
 | 
			
		||||
CROSS="${TAB}✖️${TAB}${CL}"
 | 
			
		||||
INFO="${TAB}💡${TAB}${CL}"
 | 
			
		||||
 | 
			
		||||
# This sets error handling options and defines the error_handler function to handle errors
 | 
			
		||||
set -Eeuo pipefail
 | 
			
		||||
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 | 
			
		||||
 | 
			
		||||
# This function handles errors
 | 
			
		||||
function error_handler() {
 | 
			
		||||
  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
 | 
			
		||||
  printf "\e[?25h"
 | 
			
		||||
  local exit_code="$?"
 | 
			
		||||
  local line_number="$1"
 | 
			
		||||
  local command="$2"
 | 
			
		||||
  local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
 | 
			
		||||
  echo -e "\n$error_message\n"
 | 
			
		||||
  exit 200
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# This function displays a spinner.
 | 
			
		||||
function spinner() {
 | 
			
		||||
  local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
 | 
			
		||||
  local spin_i=0
 | 
			
		||||
  local interval=0.1
 | 
			
		||||
  printf "\e[?25l"
 | 
			
		||||
 | 
			
		||||
  local color="${YWB}"
 | 
			
		||||
 | 
			
		||||
  while true; do
 | 
			
		||||
    printf "\r ${color}%s${CL}" "${frames[spin_i]}"
 | 
			
		||||
    spin_i=$(((spin_i + 1) % ${#frames[@]}))
 | 
			
		||||
    sleep "$interval"
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# This function displays an informational message with a yellow color.
 | 
			
		||||
function msg_info() {
 | 
			
		||||
  local msg="$1"
 | 
			
		||||
  echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
 | 
			
		||||
  spinner &
 | 
			
		||||
  SPINNER_PID=$!
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function msg_warn() {
 | 
			
		||||
  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
 | 
			
		||||
  printf "\e[?25h"
 | 
			
		||||
  local msg="$1"
 | 
			
		||||
  echo -e "${BFR}${INFO}${YWB}${msg}${CL}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# This function displays a success message with a green color.
 | 
			
		||||
function msg_ok() {
 | 
			
		||||
  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
 | 
			
		||||
  printf "\e[?25h"
 | 
			
		||||
  local msg="$1"
 | 
			
		||||
  echo -e "${BFR}${CM}${GN}${msg}${CL}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# This function displays a error message with a red color.
 | 
			
		||||
function msg_error() {
 | 
			
		||||
  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
 | 
			
		||||
  printf "\e[?25h"
 | 
			
		||||
  local msg="$1"
 | 
			
		||||
  echo -e "${BFR}${CROSS}${RD}${msg}${CL}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# This checks for the presence of valid Container Storage and Template Storage locations
 | 
			
		||||
msg_info "Validating Storage"
 | 
			
		||||
VALIDCT=$(pvesm status -content rootdir | awk 'NR>1')
 | 
			
		||||
if [ -z "$VALIDCT" ]; then
 | 
			
		||||
  msg_error "Unable to detect a valid Container Storage location."
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
VALIDTMP=$(pvesm status -content vztmpl | awk 'NR>1')
 | 
			
		||||
if [ -z "$VALIDTMP" ]; then
 | 
			
		||||
  msg_error "Unable to detect a valid Template Storage location."
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# This function is used to select the storage class and determine the corresponding storage content type and label.
 | 
			
		||||
function select_storage() {
 | 
			
		||||
  local CLASS=$1
 | 
			
		||||
  local CONTENT
 | 
			
		||||
  local CONTENT_LABEL
 | 
			
		||||
  case $CLASS in
 | 
			
		||||
  container)
 | 
			
		||||
    CONTENT='rootdir'
 | 
			
		||||
    CONTENT_LABEL='Container'
 | 
			
		||||
    ;;
 | 
			
		||||
  template)
 | 
			
		||||
    CONTENT='vztmpl'
 | 
			
		||||
    CONTENT_LABEL='Container template'
 | 
			
		||||
    ;;
 | 
			
		||||
  *) false || {
 | 
			
		||||
    msg_error "Invalid storage class."
 | 
			
		||||
    exit 201
 | 
			
		||||
  } ;;
 | 
			
		||||
  esac
 | 
			
		||||
 | 
			
		||||
  # This Queries all storage locations
 | 
			
		||||
  local -a MENU
 | 
			
		||||
  while read -r line; do
 | 
			
		||||
    local TAG=$(echo $line | awk '{print $1}')
 | 
			
		||||
    local TYPE=$(echo $line | awk '{printf "%-10s", $2}')
 | 
			
		||||
    local FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}')
 | 
			
		||||
    local ITEM="Type: $TYPE Free: $FREE "
 | 
			
		||||
    local OFFSET=2
 | 
			
		||||
    if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then
 | 
			
		||||
      local MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET))
 | 
			
		||||
    fi
 | 
			
		||||
    MENU+=("$TAG" "$ITEM" "OFF")
 | 
			
		||||
  done < <(pvesm status -content $CONTENT | awk 'NR>1')
 | 
			
		||||
 | 
			
		||||
  # Select storage location
 | 
			
		||||
  if [ $((${#MENU[@]} / 3)) -eq 1 ]; then
 | 
			
		||||
    printf ${MENU[0]}
 | 
			
		||||
  else
 | 
			
		||||
    local STORAGE
 | 
			
		||||
    while [ -z "${STORAGE:+x}" ]; do
 | 
			
		||||
      STORAGE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Storage Pools" --radiolist \
 | 
			
		||||
        "Which storage pool would you like to use for the ${CONTENT_LABEL,,}?\nTo make a selection, use the Spacebar.\n" \
 | 
			
		||||
        16 $(($MSG_MAX_LENGTH + 23)) 6 \
 | 
			
		||||
        "${MENU[@]}" 3>&1 1>&2 2>&3) || {
 | 
			
		||||
        msg_error "Menu aborted."
 | 
			
		||||
        exit 202
 | 
			
		||||
      }
 | 
			
		||||
      if [ $? -ne 0 ]; then
 | 
			
		||||
        echo -e "${CROSS}${RD} Menu aborted by user.${CL}"
 | 
			
		||||
        exit 0
 | 
			
		||||
      fi
 | 
			
		||||
    done
 | 
			
		||||
    printf "%s" "$STORAGE"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
# Test if required variables are set
 | 
			
		||||
[[ "${CTID:-}" ]] || {
 | 
			
		||||
  msg_error "You need to set 'CTID' variable."
 | 
			
		||||
  exit 203
 | 
			
		||||
}
 | 
			
		||||
[[ "${PCT_OSTYPE:-}" ]] || {
 | 
			
		||||
  msg_error "You need to set 'PCT_OSTYPE' variable."
 | 
			
		||||
  exit 204
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Test if ID is valid
 | 
			
		||||
[ "$CTID" -ge "100" ] || {
 | 
			
		||||
  msg_error "ID cannot be less than 100."
 | 
			
		||||
  exit 205
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Check for network connectivity (IPv4 & IPv6)
 | 
			
		||||
#function check_network() {
 | 
			
		||||
#  local CHECK_URLS=("8.8.8.8" "1.1.1.1" "9.9.9.9" "2606:4700:4700::1111" "2001:4860:4860::8888" "2620:fe::fe")
 | 
			
		||||
#
 | 
			
		||||
#  for url in "${CHECK_URLS[@]}"; do
 | 
			
		||||
#    if ping -c 1 -W 2 "$url" &>/dev/null; then
 | 
			
		||||
#      return 0 # Success: At least one connection works
 | 
			
		||||
#    fi
 | 
			
		||||
#  done
 | 
			
		||||
#
 | 
			
		||||
#  msg_error "No network connection detected. Check your internet connection."
 | 
			
		||||
#  exit 101
 | 
			
		||||
#}
 | 
			
		||||
 | 
			
		||||
# Test if ID is in use
 | 
			
		||||
if qm status "$CTID" &>/dev/null || pct status "$CTID" &>/dev/null; then
 | 
			
		||||
  echo -e "ID '$CTID' is already in use."
 | 
			
		||||
  unset CTID
 | 
			
		||||
  msg_error "Cannot use ID that is already in use."
 | 
			
		||||
  exit 206
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Get template storage
 | 
			
		||||
TEMPLATE_STORAGE=$(select_storage template)
 | 
			
		||||
msg_ok "Using ${BL}$TEMPLATE_STORAGE${CL} ${GN}for Template Storage."
 | 
			
		||||
 | 
			
		||||
# Get container storage
 | 
			
		||||
CONTAINER_STORAGE=$(select_storage container)
 | 
			
		||||
msg_ok "Using ${BL}$CONTAINER_STORAGE${CL} ${GN}for Container Storage."
 | 
			
		||||
 | 
			
		||||
# Update LXC template list
 | 
			
		||||
msg_info "Updating LXC Template List"
 | 
			
		||||
#check_network
 | 
			
		||||
pveam update >/dev/null
 | 
			
		||||
msg_ok "Updated LXC Template List"
 | 
			
		||||
 | 
			
		||||
# Get LXC template string
 | 
			
		||||
TEMPLATE_SEARCH=${PCT_OSTYPE}-${PCT_OSVERSION:-}
 | 
			
		||||
mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLATE_SEARCH.*\)/\1/p" | sort -t - -k 2 -V)
 | 
			
		||||
[ ${#TEMPLATES[@]} -gt 0 ] || {
 | 
			
		||||
  msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."
 | 
			
		||||
  exit 207
 | 
			
		||||
}
 | 
			
		||||
TEMPLATE="${TEMPLATES[-1]}"
 | 
			
		||||
TEMPLATE_PATH="$(pvesm path $TEMPLATE_STORAGE:vztmpl/$TEMPLATE)"
 | 
			
		||||
# Without NAS/Mount: TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE"
 | 
			
		||||
# Check if template exists, if corrupt remove and redownload
 | 
			
		||||
if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE" || ! zstdcat "$TEMPLATE_PATH" | tar -tf - >/dev/null 2>&1; then
 | 
			
		||||
  msg_warn "Template $TEMPLATE not found in storage or seems to be corrupted. Redownloading."
 | 
			
		||||
  [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
 | 
			
		||||
 | 
			
		||||
  # Download with 3 attempts
 | 
			
		||||
  for attempt in {1..3}; do
 | 
			
		||||
    msg_info "Attempt $attempt: Downloading LXC template..."
 | 
			
		||||
 | 
			
		||||
    if timeout 120 pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null; then
 | 
			
		||||
      msg_ok "Template download successful."
 | 
			
		||||
      break
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [ $attempt -eq 3 ]; then
 | 
			
		||||
      msg_error "Three failed attempts. Aborting."
 | 
			
		||||
      exit 208
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    sleep $((attempt * 5))
 | 
			
		||||
  done
 | 
			
		||||
fi
 | 
			
		||||
msg_ok "LXC Template is ready to use."
 | 
			
		||||
 | 
			
		||||
# Check and fix subuid/subgid
 | 
			
		||||
grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >>/etc/subuid
 | 
			
		||||
grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >>/etc/subgid
 | 
			
		||||
 | 
			
		||||
# Combine all options
 | 
			
		||||
PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}})
 | 
			
		||||
[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs "$CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}")
 | 
			
		||||
 | 
			
		||||
msg_info "Creating LXC Container"
 | 
			
		||||
if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
 | 
			
		||||
  msg_error "Container creation failed. Checking if template is corrupted."
 | 
			
		||||
 | 
			
		||||
  if ! zstdcat "$TEMPLATE_PATH" | tar -tf - >/dev/null 2>&1; then
 | 
			
		||||
    msg_error "Template appears to be corrupted. Removing and re-downloading."
 | 
			
		||||
    rm -f "$TEMPLATE_PATH"
 | 
			
		||||
 | 
			
		||||
    if ! timeout 120 pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null; then
 | 
			
		||||
      msg_error "Failed to re-download template."
 | 
			
		||||
      exit 208
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    msg_ok "Re-downloaded LXC Template"
 | 
			
		||||
 | 
			
		||||
    if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
 | 
			
		||||
      msg_error "Container creation failed after re-downloading template."
 | 
			
		||||
      exit 200
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    msg_error "Container creation failed, but template is not corrupted."
 | 
			
		||||
    exit 209
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
msg_ok "LXC Container ${BL}$CTID${CL} ${GN}was successfully created."
 | 
			
		||||
@@ -8,8 +8,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
APP="Docmost"
 | 
			
		||||
var_tags="${var_tags:-documents}"
 | 
			
		||||
var_cpu="${var_cpu:-3}"
 | 
			
		||||
var_ram="${var_ram:-3072}"
 | 
			
		||||
var_disk="${var_disk:-7}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ function update_script() {
 | 
			
		||||
  $STD apt-get -y upgrade
 | 
			
		||||
  msg_ok "Updated $APP LXC"
 | 
			
		||||
 | 
			
		||||
  if [[ -f /systemd/system/synapse-admin.service ]]; then
 | 
			
		||||
  if [[ -f /etc/systemd/system/synapse-admin.service ]]; then
 | 
			
		||||
    msg_info "Updating Synapse-Admin"
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/etkecc/synapse-admin/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
 | 
			
		||||
@@ -58,7 +58,16 @@ function update_script() {
 | 
			
		||||
      curl -fsSL "https://github.com/etkecc/synapse-admin/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
      tar xzf "$temp_file" -C /opt/synapse-admin --strip-components=1
 | 
			
		||||
      cd /opt/synapse-admin
 | 
			
		||||
      $STD yarn global add serve
 | 
			
		||||
      $STD yarn install --ignore-engines
 | 
			
		||||
      $STD yarn build
 | 
			
		||||
      mv ./dist ../ && \
 | 
			
		||||
        rm -rf * && \
 | 
			
		||||
        mv ../dist ./
 | 
			
		||||
      if [[ -z $(grep "ExecStart=/usr/local/bin/serve" /etc/systemd/system/synapse-admin.service) ]]; then
 | 
			
		||||
        sed -i 's|^ExecStart=.*|ExecStart=/usr/local/bin/serve -s dist -l 5173|' /etc/systemd/system/synapse-admin.service
 | 
			
		||||
        systemctl reenable synapse-admin
 | 
			
		||||
      fi
 | 
			
		||||
      systemctl start synapse-admin
 | 
			
		||||
      echo "${RELEASE}" >/opt/"${APP}"_version.txt
 | 
			
		||||
      rm -f "$temp_file"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-ubuntu}"
 | 
			
		||||
var_version="${var_version:-22.04}"
 | 
			
		||||
var_version="${var_version:-24.04}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -25,22 +25,57 @@ function update_script() {
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /etc/systemd/system/esphomeDashboard.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping ESPHome"
 | 
			
		||||
 | 
			
		||||
  msg_info "Stopping ${APP}"
 | 
			
		||||
  systemctl stop esphomeDashboard
 | 
			
		||||
  msg_ok "Stopped ESPHome"
 | 
			
		||||
  msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ESPHome"
 | 
			
		||||
  if [[ -d /srv/esphome ]]; then
 | 
			
		||||
    $STD source /srv/esphome/bin/activate
 | 
			
		||||
  VENV_PATH="/opt/esphome/.venv"
 | 
			
		||||
  ESPHOME_BIN="${VENV_PATH}/bin/esphome"
 | 
			
		||||
  export PYTHON_VERSION="3.12"
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d "$VENV_PATH" || ! -x "$ESPHOME_BIN" ]]; then
 | 
			
		||||
    PYTHON_VERSION="3.12" setup_uv
 | 
			
		||||
    msg_info "Migrating to uv/venv"
 | 
			
		||||
    rm -rf "$VENV_PATH"
 | 
			
		||||
    mkdir -p /opt/esphome
 | 
			
		||||
    cd /opt/esphome
 | 
			
		||||
    $STD uv venv "$VENV_PATH"
 | 
			
		||||
    $STD "$VENV_PATH/bin/python" -m ensurepip --upgrade
 | 
			
		||||
    $STD "$VENV_PATH/bin/python" -m pip install --upgrade pip
 | 
			
		||||
    $STD "$VENV_PATH/bin/python" -m pip install esphome tornado esptool
 | 
			
		||||
    msg_ok "Migrated to uv/venv"
 | 
			
		||||
  else
 | 
			
		||||
    msg_info "Updating ESPHome"
 | 
			
		||||
    PYTHON_VERSION="3.12" setup_uv
 | 
			
		||||
    $STD "$VENV_PATH/bin/python" -m pip install --upgrade esphome tornado esptool
 | 
			
		||||
    msg_ok "Updated ESPHome"
 | 
			
		||||
  fi
 | 
			
		||||
  $STD pip3 install -U esphome
 | 
			
		||||
  msg_ok "Updated ESPHome"
 | 
			
		||||
  SERVICE_FILE="/etc/systemd/system/esphomeDashboard.service"
 | 
			
		||||
  if ! grep -q "${VENV_PATH}/bin/esphome" "$SERVICE_FILE"; then
 | 
			
		||||
    msg_info "Updating systemd service"
 | 
			
		||||
    cat <<EOF >"$SERVICE_FILE"
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=ESPHome Dashboard
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ESPHome"
 | 
			
		||||
[Service]
 | 
			
		||||
ExecStart=${VENV_PATH}/bin/esphome dashboard /root/config/
 | 
			
		||||
Restart=always
 | 
			
		||||
User=root
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
    $STD systemctl daemon-reload
 | 
			
		||||
    msg_ok "Updated systemd service"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP}"
 | 
			
		||||
  systemctl start esphomeDashboard
 | 
			
		||||
  msg_ok "Started ESPHome"
 | 
			
		||||
  msg_ok "Started ${APP}"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
@@ -52,4 +87,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}:6052${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6052${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -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 community-scripts ORG
 | 
			
		||||
# Author: quantumryuu
 | 
			
		||||
# Author: quantumryuu | Co-Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://firefly-iii.org/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ function update_script() {
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="pnpm@latest" install_node_and_modules
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
 | 
			
		||||
  PROJECT_NAME=$(</opt/fumadocs/.projectname)
 | 
			
		||||
  PROJECT_DIR="/opt/fumadocs/${PROJECT_NAME}"
 | 
			
		||||
  SERVICE_NAME="fumadocs_${PROJECT_NAME}.service"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										83
									
								
								ct/gitea-mirror.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								ct/gitea-mirror.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: CrazyWolf13
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/arunavo4/gitea-mirror
 | 
			
		||||
 | 
			
		||||
APP="gitea-mirror"
 | 
			
		||||
var_tags="${var_tags:-mirror;gitea}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/gitea-mirror ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/arunavo4/gitea-mirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then
 | 
			
		||||
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop gitea-mirror
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
 | 
			
		||||
    msg_info "Backup Data"
 | 
			
		||||
    mkdir -p /opt/gitea-mirror-backup/data
 | 
			
		||||
    cp /opt/gitea-mirror/data/* /opt/gitea-mirror-backup/data/
 | 
			
		||||
    msg_ok "Backup Data"
 | 
			
		||||
 | 
			
		||||
    msg_info "Installing Bun"
 | 
			
		||||
    export BUN_INSTALL=/opt/bun
 | 
			
		||||
    curl -fsSL https://bun.sh/install | $STD bash
 | 
			
		||||
    ln -sf /opt/bun/bin/bun /usr/local/bin/bun
 | 
			
		||||
    ln -sf /opt/bun/bin/bun /usr/local/bin/bunx
 | 
			
		||||
    msg_ok "Installed Bun"
 | 
			
		||||
 | 
			
		||||
    rm -rf /opt/gitea-mirror
 | 
			
		||||
    fetch_and_deploy_gh_release "gitea-mirror" "arunavo4/gitea-mirror"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating and rebuilding ${APP} to v${RELEASE}"
 | 
			
		||||
    cd /opt/gitea-mirror
 | 
			
		||||
    $STD bun run setup
 | 
			
		||||
    $STD bun run build
 | 
			
		||||
    APP_VERSION=$(grep -o '"version": *"[^"]*"' package.json | cut -d'"' -f4)
 | 
			
		||||
    sudo sed -i.bak "s|^Environment=npm_package_version=.*|Environment=npm_package_version=${APP_VERSION}|" /etc/systemd/system/gitea-mirror.service
 | 
			
		||||
    msg_ok "Updated and rebuilt ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Restoring Data"
 | 
			
		||||
    cp /opt/gitea-mirror-backup/data/* /opt/gitea-mirror/data
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Restored Data"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl daemon-reload
 | 
			
		||||
    systemctl start gitea-mirror
 | 
			
		||||
    msg_ok "Service Started"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  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}:4321${CL}"
 | 
			
		||||
@@ -29,10 +29,11 @@ function update_script() {
 | 
			
		||||
   fi
 | 
			
		||||
   RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
 | 
			
		||||
   msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
   curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o $(basename "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64")
 | 
			
		||||
   FILENAME="gitea-$RELEASE-linux-amd64"
 | 
			
		||||
   curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o $FILENAME
 | 
			
		||||
   systemctl stop gitea
 | 
			
		||||
   rm -rf /usr/local/bin/gitea
 | 
			
		||||
   mv gitea* /usr/local/bin/gitea
 | 
			
		||||
   mv $FILENAME /usr/local/bin/gitea
 | 
			
		||||
   chmod +x /usr/local/bin/gitea
 | 
			
		||||
   systemctl start gitea
 | 
			
		||||
   msg_ok "Updated $APP Successfully"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								ct/gomft.sh
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								ct/gomft.sh
									
									
									
									
									
								
							@@ -45,6 +45,9 @@ function update_script() {
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    if ! command -v git >/dev/null 2>&1; then
 | 
			
		||||
      $STD apt-get install -y git
 | 
			
		||||
    fi
 | 
			
		||||
    rm -f /opt/gomft/gomft
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
@@ -53,6 +56,43 @@ function update_script() {
 | 
			
		||||
    cd /opt/gomft
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
 | 
			
		||||
    $STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
 | 
			
		||||
    # dirty hack to fix templ
 | 
			
		||||
    cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
 | 
			
		||||
package search
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
    "context"
 | 
			
		||||
    "github.com/starfleetcptn/gomft/components/file_metadata"
 | 
			
		||||
    "github.com/starfleetcptn/gomft/components/file_metadata/list"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
 | 
			
		||||
    <!-- Search Results -->
 | 
			
		||||
    <div id="search-results">
 | 
			
		||||
        if len(data.Files) > 0 {
 | 
			
		||||
            @list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
 | 
			
		||||
                Files:      data.Files,
 | 
			
		||||
                Page:       data.Page,
 | 
			
		||||
                Limit:      data.Limit,
 | 
			
		||||
                TotalCount: data.TotalCount,
 | 
			
		||||
                TotalPages: data.TotalPages,
 | 
			
		||||
                Filter:     data.Filter,
 | 
			
		||||
                SortBy:     data.SortBy,
 | 
			
		||||
                SortDir:    data.SortDir,
 | 
			
		||||
            }, "/files/search/partial", "#search-results-container")
 | 
			
		||||
        } else {
 | 
			
		||||
            <div class="p-6 text-center text-gray-500 dark:text-gray-400">
 | 
			
		||||
                <svg class="mx-auto mb-4 w-12 h-12 text-gray-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
 | 
			
		||||
                    <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" />
 | 
			
		||||
                </svg>
 | 
			
		||||
                <p>No files found matching your search criteria.</p>
 | 
			
		||||
            </div>
 | 
			
		||||
        }
 | 
			
		||||
    </div>
 | 
			
		||||
}
 | 
			
		||||
EOF
 | 
			
		||||
    $STD "$HOME"/go/bin/templ generate
 | 
			
		||||
    export CGO_ENABLED=1
 | 
			
		||||
    export GOOS=linux
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-forgejo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-forgejo
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                  ______                        _     
 | 
			
		||||
   /   |  / /___  (_)___  ___        / ____/___  _________ ____    (_)___ 
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ /_  / __ \/ ___/ __ `/ _ \  / / __ \
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ __/ / /_/ / /  / /_/ /  __/ / / /_/ /
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/     /_/    \____/_/   \__, /\___/_/ /\____/ 
 | 
			
		||||
        /_/                                        /____/    /___/        
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/alpine-syncthing
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/alpine-syncthing
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___    __      _                 _____                  __  __    _            
 | 
			
		||||
   /   |  / /___  (_)___  ___       / ___/__  ______  _____/ /_/ /_  (_)___  ____ _
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______\__ \/ / / / __ \/ ___/ __/ __ \/ / __ \/ __ `/
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/__/ / /_/ / / / / /__/ /_/ / / / / / / / /_/ / 
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/     /____/\__, /_/ /_/\___/\__/_/ /_/_/_/ /_/\__, /  
 | 
			
		||||
        /_/                            /____/                             /____/   
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
    ___         __  __               __  _ __  
 | 
			
		||||
   /   | __  __/ /_/ /_  ___  ____  / /_(_) /__
 | 
			
		||||
  / /| |/ / / / __/ __ \/ _ \/ __ \/ __/ / //_/
 | 
			
		||||
 / ___ / /_/ / /_/ / / /  __/ / / / /_/ / ,<   
 | 
			
		||||
/_/  |_\__,_/\__/_/ /_/\___/_/ /_/\__/_/_/|_|  
 | 
			
		||||
                                               
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/booklore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/booklore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____              __   __                  
 | 
			
		||||
   / __ )____  ____  / /__/ /   ____  ________ 
 | 
			
		||||
  / __  / __ \/ __ \/ //_/ /   / __ \/ ___/ _ \
 | 
			
		||||
 / /_/ / /_/ / /_/ / ,< / /___/ /_/ / /  /  __/
 | 
			
		||||
/_____/\____/\____/_/|_/_____/\____/_/   \___/ 
 | 
			
		||||
                                               
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/convertx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/convertx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   ______                           __ _  __
 | 
			
		||||
  / ____/___  ____ _   _____  _____/ /| |/ /
 | 
			
		||||
 / /   / __ \/ __ \ | / / _ \/ ___/ __/   / 
 | 
			
		||||
/ /___/ /_/ / / / / |/ /  __/ /  / /_/   |  
 | 
			
		||||
\____/\____/_/ /_/|___/\___/_/   \__/_/|_|  
 | 
			
		||||
                                            
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/gitea-mirror
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/gitea-mirror
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
          _ __                             _                     
 | 
			
		||||
   ____ _(_) /____  ____ _      ____ ___  (_)_____________  _____
 | 
			
		||||
  / __ `/ / __/ _ \/ __ `/_____/ __ `__ \/ / ___/ ___/ __ \/ ___/
 | 
			
		||||
 / /_/ / / /_/  __/ /_/ /_____/ / / / / / / /  / /  / /_/ / /    
 | 
			
		||||
 \__, /_/\__/\___/\__,_/     /_/ /_/ /_/_/_/  /_/   \____/_/     
 | 
			
		||||
/____/                                                           
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/huntarr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/huntarr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __                __                 
 | 
			
		||||
   / /_  __  ______  / /_____ ___________
 | 
			
		||||
  / __ \/ / / / __ \/ __/ __ `/ ___/ ___/
 | 
			
		||||
 / / / / /_/ / / / / /_/ /_/ / /  / /    
 | 
			
		||||
/_/ /_/\__,_/_/ /_/\__/\__,_/_/  /_/     
 | 
			
		||||
                                         
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/immich
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/immich
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    _                     _      __  
 | 
			
		||||
   (_)___ ___  ____ ___  (_)____/ /_ 
 | 
			
		||||
  / / __ `__ \/ __ `__ \/ / ___/ __ \
 | 
			
		||||
 / / / / / / / / / / / / / /__/ / / /
 | 
			
		||||
/_/_/ /_/ /_/_/ /_/ /_/_/\___/_/ /_/ 
 | 
			
		||||
                                     
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/itsm-ng
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/itsm-ng
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    _______________ __  ___      _   ________
 | 
			
		||||
   /  _/_  __/ ___//  |/  /     / | / / ____/
 | 
			
		||||
   / /  / /  \__ \/ /|_/ /_____/  |/ / / __  
 | 
			
		||||
 _/ /  / /  ___/ / /  / /_____/ /|  / /_/ /  
 | 
			
		||||
/___/ /_/  /____/_/  /_/     /_/ |_/\____/   
 | 
			
		||||
                                             
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/kapowarr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/kapowarr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __ __                                         
 | 
			
		||||
   / //_/___ _____  ____ _      ______ ___________
 | 
			
		||||
  / ,< / __ `/ __ \/ __ \ | /| / / __ `/ ___/ ___/
 | 
			
		||||
 / /| / /_/ / /_/ / /_/ / |/ |/ / /_/ / /  / /    
 | 
			
		||||
/_/ |_\__,_/ .___/\____/|__/|__/\__,_/_/  /_/     
 | 
			
		||||
          /_/                                     
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/librespeed-rust
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/librespeed-rust
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __    _ __                                       __      ____             __ 
 | 
			
		||||
   / /   (_) /_  ________  _________  ___  ___  ____/ /     / __ \__  _______/ /_
 | 
			
		||||
  / /   / / __ \/ ___/ _ \/ ___/ __ \/ _ \/ _ \/ __  /_____/ /_/ / / / / ___/ __/
 | 
			
		||||
 / /___/ / /_/ / /  /  __(__  ) /_/ /  __/  __/ /_/ /_____/ _, _/ /_/ (__  ) /_  
 | 
			
		||||
/_____/_/_.___/_/   \___/____/ .___/\___/\___/\__,_/     /_/ |_|\__,_/____/\__/  
 | 
			
		||||
                            /_/                                                  
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/libretranslate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/libretranslate
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __    _ __            ______                      __      __     
 | 
			
		||||
   / /   (_) /_  ________/_  __/________ _____  _____/ /___ _/ /____ 
 | 
			
		||||
  / /   / / __ \/ ___/ _ \/ / / ___/ __ `/ __ \/ ___/ / __ `/ __/ _ \
 | 
			
		||||
 / /___/ / /_/ / /  /  __/ / / /  / /_/ / / / (__  ) / /_/ / /_/  __/
 | 
			
		||||
/_____/_/_.___/_/   \___/_/ /_/   \__,_/_/ /_/____/_/\__,_/\__/\___/ 
 | 
			
		||||
                                                                     
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/lyrionmusicserver
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/lyrionmusicserver
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __               _                __  ___           _         _____                          
 | 
			
		||||
   / /   __  _______(_)___  ____     /  |/  /_  _______(_)____   / ___/___  ______   _____  _____
 | 
			
		||||
  / /   / / / / ___/ / __ \/ __ \   / /|_/ / / / / ___/ / ___/   \__ \/ _ \/ ___/ | / / _ \/ ___/
 | 
			
		||||
 / /___/ /_/ / /  / / /_/ / / / /  / /  / / /_/ (__  ) / /__    ___/ /  __/ /   | |/ /  __/ /    
 | 
			
		||||
/_____/\__, /_/  /_/\____/_/ /_/  /_/  /_/\__,_/____/_/\___/   /____/\___/_/    |___/\___/_/     
 | 
			
		||||
      /____/                                                                                     
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/managemydamnlife
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/managemydamnlife
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __  ___                                __  ___         ____                           __    _ ____   
 | 
			
		||||
   /  |/  /___ _____  ____ _____ ____     /  |/  /_  __   / __ \____ _____ ___  ____     / /   (_) __/__ 
 | 
			
		||||
  / /|_/ / __ `/ __ \/ __ `/ __ `/ _ \   / /|_/ / / / /  / / / / __ `/ __ `__ \/ __ \   / /   / / /_/ _ \
 | 
			
		||||
 / /  / / /_/ / / / / /_/ / /_/ /  __/  / /  / / /_/ /  / /_/ / /_/ / / / / / / / / /  / /___/ / __/  __/
 | 
			
		||||
/_/  /_/\__,_/_/ /_/\__,_/\__, /\___/  /_/  /_/\__, /  /_____/\__,_/_/ /_/ /_/_/ /_/  /_____/_/_/  \___/ 
 | 
			
		||||
                         /____/               /____/                                                     
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/minarca
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/minarca
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    __  ____                            
 | 
			
		||||
   /  |/  (_)___  ____ _______________ _
 | 
			
		||||
  / /|_/ / / __ \/ __ `/ ___/ ___/ __ `/
 | 
			
		||||
 / /  / / / / / / /_/ / /  / /__/ /_/ / 
 | 
			
		||||
/_/  /_/_/_/ /_/\__,_/_/   \___/\__,_/  
 | 
			
		||||
                                        
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/onlyoffice
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/onlyoffice
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
   ____  _   ______  ______  ____________________________
 | 
			
		||||
  / __ \/ | / / /\ \/ / __ \/ ____/ ____/  _/ ____/ ____/
 | 
			
		||||
 / / / /  |/ / /  \  / / / / /_  / /_   / // /   / __/   
 | 
			
		||||
/ /_/ / /|  / /___/ / /_/ / __/ / __/ _/ // /___/ /___   
 | 
			
		||||
\____/_/ |_/_____/_/\____/_/   /_/   /___/\____/_____/   
 | 
			
		||||
                                                         
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/planka
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/planka
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____  __    ___    _   ____ __ ___ 
 | 
			
		||||
   / __ \/ /   /   |  / | / / //_//   |
 | 
			
		||||
  / /_/ / /   / /| | /  |/ / ,<  / /| |
 | 
			
		||||
 / ____/ /___/ ___ |/ /|  / /| |/ ___ |
 | 
			
		||||
/_/   /_____/_/  |_/_/ |_/_/ |_/_/  |_|
 | 
			
		||||
                                       
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/wizarr
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/wizarr
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
 _       ___                      
 | 
			
		||||
| |     / (_)___  ____ ___________
 | 
			
		||||
| | /| / / /_  / / __ `/ ___/ ___/
 | 
			
		||||
| |/ |/ / / / /_/ /_/ / /  / /    
 | 
			
		||||
|__/|__/_/ /___/\__,_/_/  /_/     
 | 
			
		||||
                                  
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/zot-registry
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/zot-registry
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
 _____         __        ____             _      __            
 | 
			
		||||
/__  /  ____  / /_      / __ \___  ____ _(_)____/ /________  __
 | 
			
		||||
  / /  / __ \/ __/_____/ /_/ / _ \/ __ `/ / ___/ __/ ___/ / / /
 | 
			
		||||
 / /__/ /_/ / /_/_____/ _, _/  __/ /_/ / (__  ) /_/ /  / /_/ / 
 | 
			
		||||
/____/\____/\__/     /_/ |_|\___/\__, /_/____/\__/_/   \__, /  
 | 
			
		||||
                                /____/                /____/   
 | 
			
		||||
							
								
								
									
										23
									
								
								ct/homarr.sh
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								ct/homarr.sh
									
									
									
									
									
								
							@@ -48,6 +48,7 @@ source /opt/homarr/.env
 | 
			
		||||
set +a
 | 
			
		||||
export DB_DIALECT='sqlite'
 | 
			
		||||
export AUTH_SECRET=$(openssl rand -base64 32)
 | 
			
		||||
export CRON_JOB_API_KEY=$(openssl rand -base64 32)
 | 
			
		||||
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
 | 
			
		||||
for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do
 | 
			
		||||
  dirname=$(basename "$dir")
 | 
			
		||||
@@ -81,7 +82,7 @@ EOF
 | 
			
		||||
    systemctl daemon-reload
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/homarr-labs/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then
 | 
			
		||||
 | 
			
		||||
    msg_info "Stopping Services (Patience)"
 | 
			
		||||
    systemctl stop homarr
 | 
			
		||||
@@ -92,6 +93,19 @@ EOF
 | 
			
		||||
    cp /opt/homarr/.env /opt/homarr-data-backup/.env
 | 
			
		||||
    msg_ok "Backup Data"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Nodejs"
 | 
			
		||||
    $STD apt update
 | 
			
		||||
    $STD apt upgrade nodejs -y
 | 
			
		||||
    msg_ok "Updated Nodejs"
 | 
			
		||||
 | 
			
		||||
    $STD command -v jq || $STD apt-get update && $STD apt-get install -y jq
 | 
			
		||||
    NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
 | 
			
		||||
    NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.packageManager | split("@")[1]')"
 | 
			
		||||
    setup_nodejs
 | 
			
		||||
 | 
			
		||||
    rm -rf /opt/homarr
 | 
			
		||||
    fetch_and_deploy_gh_release "homarr" "homarr-labs/homarr"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating and rebuilding ${APP} to v${RELEASE} (Patience)"
 | 
			
		||||
    rm /opt/run_homarr.sh
 | 
			
		||||
    cat <<'EOF' >/opt/run_homarr.sh
 | 
			
		||||
@@ -101,6 +115,7 @@ source /opt/homarr/.env
 | 
			
		||||
set +a
 | 
			
		||||
export DB_DIALECT='sqlite'
 | 
			
		||||
export AUTH_SECRET=$(openssl rand -base64 32)
 | 
			
		||||
export CRON_JOB_API_KEY=$(openssl rand -base64 32)
 | 
			
		||||
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
 | 
			
		||||
for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do
 | 
			
		||||
  dirname=$(basename "$dir")
 | 
			
		||||
@@ -117,12 +132,6 @@ node apps/nextjs/server.js & PID=$!
 | 
			
		||||
wait $PID
 | 
			
		||||
EOF
 | 
			
		||||
    chmod +x /opt/run_homarr.sh
 | 
			
		||||
    $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
 | 
			
		||||
    fetch_and_deploy_gh_release "homarr-labs/homarr"
 | 
			
		||||
    mv /opt/homarr-data-backup/.env /opt/homarr/.env
 | 
			
		||||
    cd /opt/homarr
 | 
			
		||||
    $STD pnpm install --recursive --frozen-lockfile --shamefully-hoist
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										63
									
								
								ct/huntarr.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								ct/huntarr.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
			
		||||
#!/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: BiluliB
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/plexguide/Huntarr.io
 | 
			
		||||
 | 
			
		||||
APP="huntarr"
 | 
			
		||||
var_tags="${var_tags:-arr}"
 | 
			
		||||
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 [[ ! -f /opt/huntarr/main.py ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  setup_uv
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/plexguide/Huntarr.io/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
 | 
			
		||||
  if [[ -f ~/.huntarr && "${RELEASE}" == "$(cat ~/.huntarr)" ]]; then
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping huntarr service"
 | 
			
		||||
  systemctl stop huntarr
 | 
			
		||||
  msg_ok "Stopped huntarr service"
 | 
			
		||||
 | 
			
		||||
  fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io"
 | 
			
		||||
  msg_info "Configuring $APP"
 | 
			
		||||
  cd /opt/huntarr
 | 
			
		||||
  $STD uv pip install -r requirements.txt --python /opt/huntarr/.venv/bin/python
 | 
			
		||||
  msg_ok "Configured $APP"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting $APP"
 | 
			
		||||
  systemctl start huntarr
 | 
			
		||||
  msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
  msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
  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}:9705${CL}"
 | 
			
		||||
							
								
								
									
										303
									
								
								ct/immich.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										303
									
								
								ct/immich.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,303 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://immich.app
 | 
			
		||||
 | 
			
		||||
APP="immich"
 | 
			
		||||
var_tags="${var_tags:-photos}"
 | 
			
		||||
var_disk="${var_disk:-20}"
 | 
			
		||||
var_cpu="${var_cpu:-4}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
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/immich ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  setup_uv
 | 
			
		||||
 | 
			
		||||
  STAGING_DIR=/opt/staging
 | 
			
		||||
  BASE_DIR=${STAGING_DIR}/base-images
 | 
			
		||||
  SOURCE_DIR=${STAGING_DIR}/image-source
 | 
			
		||||
  cd /root
 | 
			
		||||
  if [[ -f ~/.intel_version ]]; then
 | 
			
		||||
    curl -fsSLO https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/machine-learning/Dockerfile
 | 
			
		||||
    readarray -t INTEL_URLS < <(sed -n "/intel/p" ./Dockerfile | awk '{print $3}')
 | 
			
		||||
    INTEL_RELEASE="$(grep "intel-opencl-icd" ./Dockerfile | awk -F '_' '{print $2}')"
 | 
			
		||||
    if [[ "$INTEL_RELEASE" != "$(cat ~/.intel_version)" ]]; then
 | 
			
		||||
      msg_info "Updating Intel iGPU dependencies"
 | 
			
		||||
      for url in "${INTEL_URLS[@]}"; do
 | 
			
		||||
        curl -fsSLO "$url"
 | 
			
		||||
      done
 | 
			
		||||
      $STD apt install -y ./*.deb
 | 
			
		||||
      rm ./*.deb
 | 
			
		||||
      msg_ok "Intel iGPU dependencies updated"
 | 
			
		||||
    fi
 | 
			
		||||
    rm ~/Dockerfile
 | 
			
		||||
  fi
 | 
			
		||||
  if [[ -f ~/.immich_library_revisions ]]; then
 | 
			
		||||
    libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips")
 | 
			
		||||
    readarray -d '' NEW_REVISIONS < <(for library in "${libraries[@]}"; do
 | 
			
		||||
      echo "$library: $(curl -fsSL https://raw.githubusercontent.com/immich-app/base-images/refs/heads/main/server/sources/"$library".json | jq -cr '.revision' -)"
 | 
			
		||||
    done)
 | 
			
		||||
    UPDATED_REVISIONS="$(comm -13 <(sort ~/.immich_library_revisions) <(echo -n "${NEW_REVISIONS[@]}" | sort))"
 | 
			
		||||
    if [[ "$UPDATED_REVISIONS" ]]; then
 | 
			
		||||
      readarray -t NAMES < <(echo "$UPDATED_REVISIONS" | awk -F ':' '{print $1}')
 | 
			
		||||
      rm -rf "$SOURCE_DIR"
 | 
			
		||||
      mkdir -p "$SOURCE_DIR"
 | 
			
		||||
      cd "$BASE_DIR"
 | 
			
		||||
      $STD git pull
 | 
			
		||||
      cd "$STAGING_DIR"
 | 
			
		||||
      for name in "${NAMES[@]}"; do
 | 
			
		||||
        if [[ "$name" == "libjxl" ]]; then
 | 
			
		||||
          msg_info "Recompiling libjxl"
 | 
			
		||||
          SOURCE=${SOURCE_DIR}/libjxl
 | 
			
		||||
          JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
 | 
			
		||||
          JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
 | 
			
		||||
          : "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}"
 | 
			
		||||
          $STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
 | 
			
		||||
          cd "$SOURCE"
 | 
			
		||||
          $STD git reset --hard "$LIBJXL_REVISION"
 | 
			
		||||
          $STD git submodule update --init --recursive --depth 1 --recommend-shallow
 | 
			
		||||
          $STD git apply "$BASE_DIR"/server/sources/libjxl-patches/jpegli-empty-dht-marker.patch
 | 
			
		||||
          $STD git apply "$BASE_DIR"/server/sources/libjxl-patches/jpegli-icc-warning.patch
 | 
			
		||||
          mkdir build
 | 
			
		||||
          cd build
 | 
			
		||||
          $STD cmake \
 | 
			
		||||
            -DCMAKE_BUILD_TYPE=Release \
 | 
			
		||||
            -DBUILD_TESTING=OFF \
 | 
			
		||||
            -DJPEGXL_ENABLE_DOXYGEN=OFF \
 | 
			
		||||
            -DJPEGXL_ENABLE_MANPAGES=OFF \
 | 
			
		||||
            -DJPEGXL_ENABLE_PLUGIN_GIMP210=OFF \
 | 
			
		||||
            -DJPEGXL_ENABLE_BENCHMARK=OFF \
 | 
			
		||||
            -DJPEGXL_ENABLE_EXAMPLES=OFF \
 | 
			
		||||
            -DJPEGXL_FORCE_SYSTEM_BROTLI=ON \
 | 
			
		||||
            -DJPEGXL_FORCE_SYSTEM_HWY=ON \
 | 
			
		||||
            -DJPEGXL_ENABLE_JPEGLI=ON \
 | 
			
		||||
            -DJPEGXL_ENABLE_JPEGLI_LIBJPEG=ON \
 | 
			
		||||
            -DJPEGXL_INSTALL_JPEGLI_LIBJPEG=ON \
 | 
			
		||||
            -DJPEGXL_ENABLE_PLUGINS=ON \
 | 
			
		||||
            -DJPEGLI_LIBJPEG_LIBRARY_SOVERSION="$JPEGLI_LIBJPEG_LIBRARY_SOVERSION" \
 | 
			
		||||
            -DJPEGLI_LIBJPEG_LIBRARY_VERSION="$JPEGLI_LIBJPEG_LIBRARY_VERSION" \
 | 
			
		||||
            -DLIBJPEG_TURBO_VERSION_NUMBER=2001005 \
 | 
			
		||||
            ..
 | 
			
		||||
          $STD cmake --build . -- -j"$(nproc)"
 | 
			
		||||
          $STD cmake --install .
 | 
			
		||||
          ldconfig /usr/local/lib
 | 
			
		||||
          $STD make clean
 | 
			
		||||
          cd "$STAGING_DIR"
 | 
			
		||||
          rm -rf "$SOURCE"/{build,third_party}
 | 
			
		||||
          msg_ok "Recompiled libjxl"
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ "$name" == "libheif" ]]; then
 | 
			
		||||
          msg_info "Recompiling libheif"
 | 
			
		||||
          SOURCE=${SOURCE_DIR}/libheif
 | 
			
		||||
          : "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}"
 | 
			
		||||
          $STD git clone https://github.com/strukturag/libheif.git "$SOURCE"
 | 
			
		||||
          cd "$SOURCE"
 | 
			
		||||
          $STD git reset --hard "$LIBHEIF_REVISION"
 | 
			
		||||
          mkdir build
 | 
			
		||||
          cd build
 | 
			
		||||
          $STD cmake --preset=release-noplugins \
 | 
			
		||||
            -DWITH_DAV1D=ON \
 | 
			
		||||
            -DENABLE_PARALLEL_TILE_DECODING=ON \
 | 
			
		||||
            -DWITH_LIBSHARPYUV=ON \
 | 
			
		||||
            -DWITH_LIBDE265=ON \
 | 
			
		||||
            -DWITH_AOM_DECODER=OFF \
 | 
			
		||||
            -DWITH_AOM_ENCODER=OFF \
 | 
			
		||||
            -DWITH_X265=OFF \
 | 
			
		||||
            -DWITH_EXAMPLES=OFF \
 | 
			
		||||
            ..
 | 
			
		||||
          $STD make install -j "$(nproc)"
 | 
			
		||||
          ldconfig /usr/local/lib
 | 
			
		||||
          $STD make clean
 | 
			
		||||
          cd "$STAGING_DIR"
 | 
			
		||||
          rm -rf "$SOURCE"/build
 | 
			
		||||
          msg_ok "Recompiled libheif"
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ "$name" == "libraw" ]]; then
 | 
			
		||||
          msg_info "Recompiling libraw"
 | 
			
		||||
          SOURCE=${SOURCE_DIR}/libraw
 | 
			
		||||
          : "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}"
 | 
			
		||||
          $STD git clone https://github.com/libraw/libraw.git "$SOURCE"
 | 
			
		||||
          cd "$SOURCE"
 | 
			
		||||
          $STD git reset --hard "$LIBRAW_REVISION"
 | 
			
		||||
          $STD autoreconf --install
 | 
			
		||||
          $STD ./configure
 | 
			
		||||
          $STD make -j"$(nproc)"
 | 
			
		||||
          $STD make install
 | 
			
		||||
          ldconfig /usr/local/lib
 | 
			
		||||
          $STD make clean
 | 
			
		||||
          cd "$STAGING_DIR"
 | 
			
		||||
          msg_ok "Recompiled libraw"
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ "$name" == "imagemagick" ]]; then
 | 
			
		||||
          msg_info "Recompiling ImageMagick"
 | 
			
		||||
          SOURCE=$SOURCE_DIR/imagemagick
 | 
			
		||||
          : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}"
 | 
			
		||||
          $STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
 | 
			
		||||
          cd "$SOURCE"
 | 
			
		||||
          $STD git reset --hard "$IMAGEMAGICK_REVISION"
 | 
			
		||||
          $STD ./configure --with-modules
 | 
			
		||||
          $STD make -j"$(nproc)"
 | 
			
		||||
          $STD make install
 | 
			
		||||
          ldconfig /usr/local/lib
 | 
			
		||||
          $STD make clean
 | 
			
		||||
          cd "$STAGING_DIR"
 | 
			
		||||
          msg_ok "Recompiled ImageMagick"
 | 
			
		||||
        fi
 | 
			
		||||
        if [[ "$name" == "libvips" ]]; then
 | 
			
		||||
          msg_info "Recompiling libvips"
 | 
			
		||||
          SOURCE=$SOURCE_DIR/libvips
 | 
			
		||||
          : "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
 | 
			
		||||
          $STD git clone https://github.com/libvips/libvips.git "$SOURCE"
 | 
			
		||||
          cd "$SOURCE"
 | 
			
		||||
          $STD git reset --hard "$LIBVIPS_REVISION"
 | 
			
		||||
          $STD meson setup build --buildtype=release --libdir=lib -Dintrospection=disabled -Dtiff=disabled
 | 
			
		||||
          cd build
 | 
			
		||||
          $STD ninja install
 | 
			
		||||
          ldconfig /usr/local/lib
 | 
			
		||||
          cd "$STAGING_DIR"
 | 
			
		||||
          rm -rf "$SOURCE"/build
 | 
			
		||||
          msg_ok "Recompiled libvips"
 | 
			
		||||
        fi
 | 
			
		||||
      done
 | 
			
		||||
      echo -n "${NEW_REVISIONS[@]}" >~/.immich_library_revisions
 | 
			
		||||
      msg_ok "Image-processing libraries compiled"
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping ${APP} services"
 | 
			
		||||
  systemctl stop immich-web
 | 
			
		||||
  systemctl stop immich-ml
 | 
			
		||||
  msg_ok "Stopped ${APP}"
 | 
			
		||||
  INSTALL_DIR="/opt/${APP}"
 | 
			
		||||
  UPLOAD_DIR="$(sed -n '/^IMMICH_MEDIA_LOCATION/s/[^=]*=//p' /opt/immich/.env)"
 | 
			
		||||
  SRC_DIR="${INSTALL_DIR}/source"
 | 
			
		||||
  APP_DIR="${INSTALL_DIR}/app"
 | 
			
		||||
  ML_DIR="${APP_DIR}/machine-learning"
 | 
			
		||||
  GEO_DIR="${INSTALL_DIR}/geodata"
 | 
			
		||||
  VCHORD_RELEASE="$(curl -fsSL https://api.github.com/repos/tensorchord/vectorchord/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')"
 | 
			
		||||
 | 
			
		||||
  if [[ ! -f ~/.vchord_version ]] || [[ "$VCHORD_RELEASE" != "$(cat ~/.vchord_version)" ]]; then
 | 
			
		||||
    msg_info "Updating VectorChord"
 | 
			
		||||
    if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then
 | 
			
		||||
      $STD sudo -u postgres pg_dumpall --clean --if-exists --username=postgres | gzip >/etc/postgresql/immich-db-vchord0.3.0.sql.gz
 | 
			
		||||
      chown postgres /etc/postgresql/immich-db-vchord0.3.0.sql.gz
 | 
			
		||||
      $STD sudo -u postgres gunzip --stdout /etc/postgresql/immich-db-vchord0.3.0.sql.gz |
 | 
			
		||||
        sed -e "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
 | 
			
		||||
          -e "/vchordrq.prewarm_dim/d" |
 | 
			
		||||
        sudo -u postgres psql
 | 
			
		||||
    fi
 | 
			
		||||
    curl -fsSL "https://github.com/tensorchord/vectorchord/releases/download/${VCHORD_RELEASE}/postgresql-16-vchord_${VCHORD_RELEASE}-1_amd64.deb" -o vchord.deb
 | 
			
		||||
    $STD apt install -y ./vchord.deb
 | 
			
		||||
    $STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;"
 | 
			
		||||
    systemctl restart postgresql
 | 
			
		||||
    if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then
 | 
			
		||||
      $STD sudo -u postgres psql -d immich -c "REINDEX DATABASE;"
 | 
			
		||||
    fi
 | 
			
		||||
    echo "$VCHORD_RELEASE" >~/.vchord_version
 | 
			
		||||
    rm ./vchord.deb
 | 
			
		||||
    msg_ok "Updated VectorChord to v${VCHORD_RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  cp "$ML_DIR"/ml_start.sh "$INSTALL_DIR"
 | 
			
		||||
  rm -rf "${APP_DIR:?}"/*
 | 
			
		||||
  mkdir -p "$ML_DIR"
 | 
			
		||||
  rm -rf "$SRC_DIR"
 | 
			
		||||
 | 
			
		||||
  fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "latest" "$SRC_DIR"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ${APP} web and microservices"
 | 
			
		||||
  cd "$SRC_DIR"/server
 | 
			
		||||
  if [[ "$RELEASE" == "1.135.1" ]]; then
 | 
			
		||||
    rm ./src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts
 | 
			
		||||
  fi
 | 
			
		||||
  $STD npm install -g node-gyp node-pre-gyp
 | 
			
		||||
  $STD npm ci
 | 
			
		||||
  $STD npm run build
 | 
			
		||||
  $STD npm prune --omit=dev --omit=optional
 | 
			
		||||
  cd "$SRC_DIR"/open-api/typescript-sdk
 | 
			
		||||
  $STD npm ci
 | 
			
		||||
  $STD npm run build
 | 
			
		||||
  cd "$SRC_DIR"/web
 | 
			
		||||
  $STD npm ci
 | 
			
		||||
  $STD npm run build
 | 
			
		||||
  cd "$SRC_DIR"
 | 
			
		||||
  cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/
 | 
			
		||||
  cp -a web/build "$APP_DIR"/www
 | 
			
		||||
  cp LICENSE "$APP_DIR"
 | 
			
		||||
  msg_ok "Updated ${APP} web and microservices"
 | 
			
		||||
 | 
			
		||||
  cd "$SRC_DIR"/machine-learning
 | 
			
		||||
  export VIRTUAL_ENV="${ML_DIR}"/ml-venv
 | 
			
		||||
  $STD /usr/local/bin/uv venv "$VIRTUAL_ENV"
 | 
			
		||||
  if [[ -f ~/.openvino ]]; then
 | 
			
		||||
    msg_info "Updating HW-accelerated machine-learning"
 | 
			
		||||
    /usr/local/bin/uv -q sync --extra openvino --no-cache --active
 | 
			
		||||
    patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
 | 
			
		||||
    msg_ok "Updated HW-accelerated machine-learning"
 | 
			
		||||
  else
 | 
			
		||||
    msg_info "Updating machine-learning"
 | 
			
		||||
    /usr/local/bin/uv -q sync --extra cpu --no-cache --active
 | 
			
		||||
    msg_ok "Updated machine-learning"
 | 
			
		||||
  fi
 | 
			
		||||
  cd "$SRC_DIR"
 | 
			
		||||
  cp -a machine-learning/{ann,immich_ml} "$ML_DIR"
 | 
			
		||||
  mv "$INSTALL_DIR"/ml_start.sh "$ML_DIR"
 | 
			
		||||
  if [[ -f ~/.openvino ]]; then
 | 
			
		||||
    sed -i "/intra_op/s/int = 0/int = os.cpu_count() or 0/" "$ML_DIR"/immich_ml/config.py
 | 
			
		||||
  fi
 | 
			
		||||
  ln -sf "$APP_DIR"/resources "$INSTALL_DIR"
 | 
			
		||||
  cd "$APP_DIR"
 | 
			
		||||
  grep -Rl /usr/src | xargs -n1 sed -i "s|\/usr/src|$INSTALL_DIR|g"
 | 
			
		||||
  grep -RlE "'/build'" | xargs -n1 sed -i "s|'/build'|'$APP_DIR'|g"
 | 
			
		||||
  sed -i "s@\"/cache\"@\"$INSTALL_DIR/cache\"@g" "$ML_DIR"/immich_ml/config.py
 | 
			
		||||
  ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$APP_DIR"/upload
 | 
			
		||||
  ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
 | 
			
		||||
  ln -s "$GEO_DIR" "$APP_DIR"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating Immich CLI"
 | 
			
		||||
  $STD npm install --build-from-source sharp
 | 
			
		||||
  rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
 | 
			
		||||
  $STD npm i -g @immich/cli
 | 
			
		||||
  msg_ok "Updated Immich CLI"
 | 
			
		||||
 | 
			
		||||
  chown -R immich:immich "$INSTALL_DIR"
 | 
			
		||||
  echo "$RELEASE" >/opt/"${APP}"_version.txt
 | 
			
		||||
  msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning up"
 | 
			
		||||
  $STD apt-get -y autoremove
 | 
			
		||||
  $STD apt-get -y autoclean
 | 
			
		||||
  msg_ok "Cleaned"
 | 
			
		||||
  systemctl restart immich-ml immich-web
 | 
			
		||||
  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}:2283${CL}"
 | 
			
		||||
							
								
								
									
										47
									
								
								ct/itsm-ng.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								ct/itsm-ng.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
#!/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: Florianb63
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://itsm-ng.com/
 | 
			
		||||
 | 
			
		||||
APP="ITSM-NG"
 | 
			
		||||
var_tags="${var_tags:-asset-management;foss}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
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/itsm-ng/config_db.php ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ${APP} LXC"
 | 
			
		||||
  $STD apt-get update
 | 
			
		||||
  $STD apt-get -y upgrade
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
 | 
			
		||||
  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}"
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-ubuntu}"
 | 
			
		||||
var_version="${var_version:-22.04}"
 | 
			
		||||
var_version="${var_version:-24.04}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
@@ -20,19 +20,19 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
     header_info
 | 
			
		||||
     check_container_storage
 | 
			
		||||
     check_container_resources
 | 
			
		||||
     if [[ ! -d /usr/lib/jellyfin ]]; then
 | 
			
		||||
          msg_error "No ${APP} Installation Found!"
 | 
			
		||||
          exit
 | 
			
		||||
     fi
 | 
			
		||||
     msg_info "Updating ${APP} LXC"
 | 
			
		||||
     $STD apt-get update
 | 
			
		||||
     $STD apt-get -y upgrade
 | 
			
		||||
     $STD apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server
 | 
			
		||||
     msg_ok "Updated ${APP} LXC"
 | 
			
		||||
     exit
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /usr/lib/jellyfin ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating ${APP} LXC"
 | 
			
		||||
  $STD apt-get update
 | 
			
		||||
  $STD apt-get -y upgrade
 | 
			
		||||
  $STD apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server
 | 
			
		||||
  msg_ok "Updated ${APP} LXC"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -42,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}:8096${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8096${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -53,10 +53,10 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    if [ -z "$pnpm_current" ]; then
 | 
			
		||||
        msg_error "pnpm not found. Installing version $pnpm_desired..."
 | 
			
		||||
        NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" install_node_and_modules
 | 
			
		||||
        NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs
 | 
			
		||||
    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..."
 | 
			
		||||
        NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" install_node_and_modules
 | 
			
		||||
        NODE_VERSION="22" NODE_MODULE="pnpm@$pnpm_desired" setup_nodejs
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "pnpm is already installed and satisfies version $pnpm_desired."
 | 
			
		||||
    fi
 | 
			
		||||
@@ -70,6 +70,7 @@ function update_script() {
 | 
			
		||||
    systemctl stop jellyseerr
 | 
			
		||||
    rm -rf dist .next node_modules
 | 
			
		||||
    export CYPRESS_INSTALL_BINARY=0
 | 
			
		||||
    cd /opt/jellyseerr
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
    export NODE_OPTIONS="--max-old-space-size=3072"
 | 
			
		||||
    $STD pnpm build
 | 
			
		||||
 
 | 
			
		||||
@@ -20,16 +20,53 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} LXC"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get install -y upgrade
 | 
			
		||||
    $STD pip3 install jupyter --upgrade
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
    exit
 | 
			
		||||
  INSTALL_DIR="/opt/jupyter"
 | 
			
		||||
  VENV_PYTHON="${INSTALL_DIR}/.venv/bin/python"
 | 
			
		||||
  VENV_JUPYTER="${INSTALL_DIR}/.venv/bin/jupyter"
 | 
			
		||||
  SERVICE_FILE="/etc/systemd/system/jupyternotebook.service"
 | 
			
		||||
 | 
			
		||||
  if [[ ! -x "$VENV_JUPYTER" ]]; then
 | 
			
		||||
    msg_info "Migrating to uv venv"
 | 
			
		||||
    PYTHON_VERSION="3.12" setup_uv
 | 
			
		||||
    mkdir -p "$INSTALL_DIR"
 | 
			
		||||
    cd "$INSTALL_DIR"
 | 
			
		||||
    $STD uv venv .venv
 | 
			
		||||
    $STD "$VENV_PYTHON" -m ensurepip --upgrade
 | 
			
		||||
    $STD "$VENV_PYTHON" -m pip install --upgrade pip
 | 
			
		||||
    $STD "$VENV_PYTHON" -m pip install jupyter
 | 
			
		||||
    msg_ok "Migrated to uv and installed Jupyter"
 | 
			
		||||
  else
 | 
			
		||||
    msg_info "Updating Jupyter"
 | 
			
		||||
    $STD "$VENV_PYTHON" -m pip install --upgrade pip
 | 
			
		||||
    $STD "$VENV_PYTHON" -m pip install --upgrade jupyter
 | 
			
		||||
    msg_ok "Jupyter updated"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [[ -f "$SERVICE_FILE" && "$(grep ExecStart "$SERVICE_FILE")" != *".venv/bin/jupyter"* ]]; then
 | 
			
		||||
    msg_info "Updating systemd service to use .venv"
 | 
			
		||||
    cat <<EOF >"$SERVICE_FILE"
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Jupyter Notebook Server
 | 
			
		||||
After=network.target
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
WorkingDirectory=${INSTALL_DIR}
 | 
			
		||||
ExecStart=${VENV_JUPYTER} notebook --ip=0.0.0.0 --port=8888 --allow-root
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=10
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
    systemctl daemon-reexec
 | 
			
		||||
    systemctl restart jupyternotebook
 | 
			
		||||
    msg_ok "Service updated and restarted"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -39,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}:8888${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8888${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										66
									
								
								ct/kapowarr.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								ct/kapowarr.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: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/Casvt/Kapowarr
 | 
			
		||||
 | 
			
		||||
APP="Kapowarr"
 | 
			
		||||
var_tags="${var_tags:-Arr}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
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/kapowarr.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/Casvt/Kapowarr/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat $HOME/.kapowarr)" ]] || [[ ! -f $HOME/.kapowarr ]]; then
 | 
			
		||||
    setup_uv 
 | 
			
		||||
    
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop kapowarr
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    mv /opt/kapowarr/db /opt/
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "kapowarr" "Casvt/Kapowarr"
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    mv /opt/db /opt/kapowarr
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start kapowarr
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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}:5656${CL}"
 | 
			
		||||
@@ -8,11 +8,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
APP="Kasm"
 | 
			
		||||
var_tags="${var_tags:-os}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4192}"
 | 
			
		||||
var_ram="${var_ram:-8192}"
 | 
			
		||||
var_disk="${var_disk:-30}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-0}"
 | 
			
		||||
var_fuse="${var_fuse:-yes}"
 | 
			
		||||
var_tun="${var_tun:-yes}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								ct/librespeed-rust.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ct/librespeed-rust.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: Joseph Stubberfield (stubbers)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/librespeed/speedtest-rust
 | 
			
		||||
 | 
			
		||||
APP="Librespeed-Rust"
 | 
			
		||||
var_tags="${var_tags:-network}"
 | 
			
		||||
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 /var/lib/librespeed-rs ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/librespeed/speedtest-rust/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "v([^"]+).*/\1/')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.librespeed 2>/dev/null)" ]] || [[ ! -f ~/.librespeed ]]; then
 | 
			
		||||
    msg_info "Stopping Services"
 | 
			
		||||
    systemctl stop librespeed-rs
 | 
			
		||||
    msg_ok "Services Stopped"
 | 
			
		||||
 | 
			
		||||
    fetch_and_deploy_gh_release "librespeed-rust" "librespeed/speedtest-rust" "binary" "latest" "/opt/librespeed-rust" "librespeed-rs-x86_64-unknown-linux-gnu.deb"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
    systemctl start librespeed-rs
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
  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}"
 | 
			
		||||
							
								
								
									
										61
									
								
								ct/libretranslate.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								ct/libretranslate.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
#!/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/LibreTranslate/LibreTranslate
 | 
			
		||||
 | 
			
		||||
APP="LibreTranslate"
 | 
			
		||||
var_tags="${var_tags:-Arr}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-20}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/libretranslate ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/LibreTranslate/LibreTranslate/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat $HOME/.libretranslate)" ]] || [[ ! -f $HOME/.libretranslate ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop libretranslate
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    cd /opt/libretranslate
 | 
			
		||||
    source .venv/bin/activate
 | 
			
		||||
    $STD pip install -U libretranslate
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start libretranslate
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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}:5000${CL}"
 | 
			
		||||
@@ -28,17 +28,18 @@ 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/linkwarden_version.txt)" ]] || [[ ! -f /opt/linkwarden_version.txt ]]; then
 | 
			
		||||
    NODE_VERSION="22" NODE_MODULE="yarn@latest" install_node_and_modules
 | 
			
		||||
    NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop linkwarden
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    RUST_CRATES="monolith" install_rust_and_crates
 | 
			
		||||
    RUST_CRATES="monolith" setup_rust
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    mv /opt/linkwarden/.env /opt/.env
 | 
			
		||||
    [ -d /opt/linkwarden/data ] && mv /opt/linkwarden/data /opt/data.bak
 | 
			
		||||
    rm -rf /opt/linkwarden
 | 
			
		||||
    fetch_and_deploy_gh_release "linkwarden/linkwarden"
 | 
			
		||||
    fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"
 | 
			
		||||
    cd /opt/linkwarden
 | 
			
		||||
    $STD yarn
 | 
			
		||||
    $STD npx playwright install-deps
 | 
			
		||||
@@ -47,6 +48,7 @@ function update_script() {
 | 
			
		||||
    $STD yarn prisma:generate
 | 
			
		||||
    $STD yarn web:build
 | 
			
		||||
    $STD yarn prisma:deploy
 | 
			
		||||
    [ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										61
									
								
								ct/lyrionmusicserver.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								ct/lyrionmusicserver.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
#!/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: Omar Minaya
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://lyrion.org/getting-started/
 | 
			
		||||
 | 
			
		||||
APP="Lyrion Music Server"
 | 
			
		||||
var_tags="${var_tags:-media}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
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 /lib/systemd/system/lyrionmusicserver.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  DEB_URL=$(curl -s 'https://lyrion.org/getting-started/' | grep -oP '<a\s[^>]*href="\K[^"]*amd64\.deb(?="[^>]*>)' | head -n 1)
 | 
			
		||||
  RELEASE=$(echo "$DEB_URL" | grep -oP 'lyrionmusicserver_\K[0-9.]+(?=_amd64\.deb)')
 | 
			
		||||
  DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_amd64.deb"
 | 
			
		||||
  if [[ ! -f /opt/lyrion_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/lyrion_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    curl -fsSL -o "$DEB_FILE" "$DEB_URL"
 | 
			
		||||
    $STD apt install "$DEB_FILE" -y
 | 
			
		||||
    systemctl restart lyrion
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    $STD rm -f "$DEB_FILE"
 | 
			
		||||
    $STD apt-get -y autoremove
 | 
			
		||||
    $STD apt-get -y autoclean
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "$APP is already up to date (${RELEASE})"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access the web interface at:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000${CL}"
 | 
			
		||||
							
								
								
									
										78
									
								
								ct/managemydamnlife.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								ct/managemydamnlife.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: vhsdream
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/intri-in/manage-my-damn-life-nextjs
 | 
			
		||||
 | 
			
		||||
APP="Manage My Damn Life"
 | 
			
		||||
var_tags="${var_tags:-calendar;tasks}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/mmdl ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/intri-in/manage-my-damn-life-nextjs/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/mmdl_version.txt)" ]] || [[ ! -f /opt/mmdl_version.txt ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop mmdl
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    cp /opt/mmdl/.env /opt/mmdl.env
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    curl -fsSLO "https://github.com/intri-in/manage-my-damn-life-nextjs/archive/refs/tags/v${RELEASE}.zip"
 | 
			
		||||
    rm -r /opt/mmdl
 | 
			
		||||
    unzip -q v"$RELEASE".zip
 | 
			
		||||
    mv manage-my-damn-life-nextjs-"$RELEASE"/ /opt/mmdl
 | 
			
		||||
    mv /opt/mmdl.env /opt/mmdl/.env
 | 
			
		||||
    cd /opt/mmdl
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    $STD npm run migrate
 | 
			
		||||
    $STD npm run build
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start mmdl
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -f ~/v"$RELEASE".zip
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
    # Last Action
 | 
			
		||||
    echo "$RELEASE" >/opt/mmdl_version.txt
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
@@ -20,19 +20,17 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /root/Matterbridge ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get upgrade -y
 | 
			
		||||
    NODE_VERSION="22"
 | 
			
		||||
    NODE_MODULE="matterbridge"
 | 
			
		||||
    install_node_and_modules
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /root/Matterbridge ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  $STD apt-get update
 | 
			
		||||
  $STD apt-get upgrade -y
 | 
			
		||||
  NODE_VERSION="22" NODE_MODULE="matterbridge" setup_nodejs
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										91
									
								
								ct/metube.sh
									
									
									
									
									
								
							
							
						
						
									
										91
									
								
								ct/metube.sh
									
									
									
									
									
								
							@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
APP="MeTube"
 | 
			
		||||
var_tags="${var_tags:-media;youtube}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
@@ -23,40 +23,97 @@ function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/metube ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Stopping ${APP} Service"
 | 
			
		||||
  systemctl stop metube
 | 
			
		||||
  msg_ok "Stopped ${APP} Service"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ${APP} to latest Git"
 | 
			
		||||
  cd /opt
 | 
			
		||||
  if [ -d metube_bak ]; then
 | 
			
		||||
    rm -rf metube_bak
 | 
			
		||||
  msg_info "Backing up Old Installation"
 | 
			
		||||
  if [[ -d /opt/metube_bak ]]; then
 | 
			
		||||
    rm -rf /opt/metube_bak
 | 
			
		||||
  fi
 | 
			
		||||
  mv metube metube_bak
 | 
			
		||||
  mv /opt/metube /opt/metube_bak
 | 
			
		||||
  msg_ok "Backup created"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cloning Latest ${APP} Release"
 | 
			
		||||
  $STD git clone https://github.com/alexta69/metube /opt/metube
 | 
			
		||||
  msg_ok "Cloned ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Building Frontend"
 | 
			
		||||
  cd /opt/metube/ui
 | 
			
		||||
  $STD npm install
 | 
			
		||||
  $STD node_modules/.bin/ng build
 | 
			
		||||
  cd /opt/metube
 | 
			
		||||
  cp /opt/metube_bak/.env /opt/metube/
 | 
			
		||||
  $STD pip3 install pipenv
 | 
			
		||||
  $STD pipenv install
 | 
			
		||||
  msg_ok "Built Frontend"
 | 
			
		||||
 | 
			
		||||
  if [ -d "/opt/metube_bak" ]; then
 | 
			
		||||
    rm -rf /opt/metube_bak
 | 
			
		||||
  PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
 | 
			
		||||
  msg_info "Setting up Python Environment (uv)"
 | 
			
		||||
  $STD uv venv /opt/metube/.venv
 | 
			
		||||
  $STD /opt/metube/.venv/bin/python -m ensurepip --upgrade
 | 
			
		||||
  $STD /opt/metube/.venv/bin/python -m pip install --upgrade pip
 | 
			
		||||
  $STD /opt/metube/.venv/bin/python -m pip install pipenv
 | 
			
		||||
  msg_ok "Python Environment Ready"
 | 
			
		||||
 | 
			
		||||
  msg_info "Installing Backend Requirements"
 | 
			
		||||
  cd /opt/metube
 | 
			
		||||
  $STD /opt/metube/.venv/bin/pipenv install
 | 
			
		||||
  msg_ok "Installed Backend"
 | 
			
		||||
 | 
			
		||||
  msg_info "Restoring Environment File"
 | 
			
		||||
  if [[ -f /opt/metube_bak/.env ]]; then
 | 
			
		||||
    cp /opt/metube_bak/.env /opt/metube/.env
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Updated ${APP} to latest Git"
 | 
			
		||||
  msg_ok "Restored .env"
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/metube/.venv ]]; then
 | 
			
		||||
    msg_info "Migrating to uv-based environment"
 | 
			
		||||
    PYTHON_VERSION="3.13" setup_uv
 | 
			
		||||
    $STD uv venv /opt/metube/.venv
 | 
			
		||||
    $STD /opt/metube/.venv/bin/python -m ensurepip --upgrade
 | 
			
		||||
    $STD /opt/metube/.venv/bin/python -m pip install --upgrade pip
 | 
			
		||||
    $STD /opt/metube/.venv/bin/python -m pip install pipenv
 | 
			
		||||
    $STD /opt/metube/.venv/bin/pipenv install
 | 
			
		||||
    $STD /opt/metube/.venv/bin/pipenv update yt-dlp
 | 
			
		||||
 | 
			
		||||
    msg_info "Patching systemd Service"
 | 
			
		||||
    cat <<EOF >/etc/systemd/system/metube.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Metube - YouTube Downloader
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
WorkingDirectory=/opt/metube
 | 
			
		||||
EnvironmentFile=/opt/metube/.env
 | 
			
		||||
ExecStart=/opt/metube/.venv/bin/pipenv run python3 app/main.py
 | 
			
		||||
Restart=always
 | 
			
		||||
User=root
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
    msg_ok "Patched systemd Service"
 | 
			
		||||
  fi
 | 
			
		||||
  $STD systemctl daemon-reload
 | 
			
		||||
  msg_ok "Service Updated"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning up"
 | 
			
		||||
  rm -rf /opt/metube_bak
 | 
			
		||||
  $STD apt-get -y autoremove
 | 
			
		||||
  $STD apt-get -y autoclean
 | 
			
		||||
  msg_ok "Cleaned Up"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP} Service"
 | 
			
		||||
  systemctl start metube
 | 
			
		||||
  systemctl enable -q --now metube
 | 
			
		||||
  sleep 1
 | 
			
		||||
  msg_ok "Started ${APP} Service"
 | 
			
		||||
  msg_ok "Updated Successfully!\n"
 | 
			
		||||
  exit
 | 
			
		||||
 | 
			
		||||
  msg_ok "Updated Successfully!"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -66,4 +123,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}:8081${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								ct/minarca.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ct/minarca.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://minarca.org/en_CA
 | 
			
		||||
 | 
			
		||||
APP="Minarca"
 | 
			
		||||
var_tags="${var_tags:-backup}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
var_fuse="${var_fuse:-yes}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/minarca-server ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping ${APP}"
 | 
			
		||||
  systemctl stop minarca-server
 | 
			
		||||
  msg_ok "${APP} Stopped"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ${APP} LXC"
 | 
			
		||||
  $STD apt-get update
 | 
			
		||||
  $STD apt-get upgrade -y
 | 
			
		||||
  msg_ok "Updated ${APP} LXC"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP}"
 | 
			
		||||
  systemctl start minarca-server
 | 
			
		||||
  msg_ok "Restarted ${APP}"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
			
		||||
							
								
								
									
										23
									
								
								ct/minio.sh
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								ct/minio.sh
									
									
									
									
									
								
							@@ -27,16 +27,33 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  FEATURE_RICH_VERSION="2025-04-22T22-12-26Z"
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
  CURRENT_VERSION=""
 | 
			
		||||
  [[ -f /opt/${APP}_version.txt ]] && CURRENT_VERSION=$(cat /opt/${APP}_version.txt)
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}')
 | 
			
		||||
 | 
			
		||||
  if [[ "${CURRENT_VERSION}" == "${FEATURE_RICH_VERSION}" && "${RELEASE}" != "${FEATURE_RICH_VERSION}" ]]; then
 | 
			
		||||
    echo
 | 
			
		||||
    echo "You are currently running the last feature-rich community version: ${FEATURE_RICH_VERSION}"
 | 
			
		||||
    echo "WARNING: Updating to the latest version will REMOVE most management features from the Console UI."
 | 
			
		||||
    echo "Do you still want to upgrade to the latest version? [y/N]: "
 | 
			
		||||
    read -n 1 -r
 | 
			
		||||
    echo
 | 
			
		||||
    if [[ ! $REPLY =~ ^[Yy]$ ]]; then
 | 
			
		||||
      msg_ok "No update performed. Staying on the feature-rich version."
 | 
			
		||||
      exit
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [[ "${CURRENT_VERSION}" != "${RELEASE}" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop minio
 | 
			
		||||
    msg_ok "${APP} Stopped"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    mv /usr/local/bin/minio /usr/local/bin/minio_bak
 | 
			
		||||
    curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/minio" -o $(basename "https://dl.min.io/server/minio/release/linux-amd64/minio")
 | 
			
		||||
    mv minio /usr/local/bin/
 | 
			
		||||
    curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/minio" -o /usr/local/bin/minio
 | 
			
		||||
    chmod +x /usr/local/bin/minio
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ 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_version="${var_version:-3.22}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -38,6 +38,8 @@ function update_script() {
 | 
			
		||||
    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}"
 | 
			
		||||
    rm -rf /usr/local/lib/ollama
 | 
			
		||||
    rm -rf /usr/local/bin/ollama
 | 
			
		||||
    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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										52
									
								
								ct/onlyoffice.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								ct/onlyoffice.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
#!/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://www.onlyoffice.com/
 | 
			
		||||
 | 
			
		||||
APP="ONLYOFFICE"
 | 
			
		||||
var_tags="${var_tags:-word;excel;powerpoint;pdf}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
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 /var/www/onlyoffice ]]; then
 | 
			
		||||
    msg_error "No valid ${APP} installation found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating $APP"
 | 
			
		||||
  $STD apt-get update
 | 
			
		||||
  $STD apt-get -y --only-upgrade install onlyoffice-documentserver
 | 
			
		||||
  msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
  if systemctl is-enabled --quiet onlyoffice-documentserver; then
 | 
			
		||||
    msg_info "Restarting $APP"
 | 
			
		||||
    $STD systemctl restart onlyoffice-documentserver
 | 
			
		||||
    msg_ok "$APP restarted"
 | 
			
		||||
  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}"
 | 
			
		||||
@@ -33,6 +33,8 @@ function update_script() {
 | 
			
		||||
    OLLAMA_VERSION=$(ollama -v | awk '{print $NF}')
 | 
			
		||||
    RELEASE=$(curl -s https://api.github.com/repos/ollama/ollama/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
 | 
			
		||||
    if [ "$OLLAMA_VERSION" != "$RELEASE" ]; then
 | 
			
		||||
      rm -rf /usr/lib/ollama
 | 
			
		||||
      rm -rf /usr/bin/ollama
 | 
			
		||||
      curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
 | 
			
		||||
      tar -C /usr -xzf ollama-linux-amd64.tgz
 | 
			
		||||
      rm -rf ollama-linux-amd64.tgz
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										77
									
								
								ct/planka.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								ct/planka.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/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/plankanban/planka
 | 
			
		||||
 | 
			
		||||
APP="PLANKA"
 | 
			
		||||
var_tags="${var_tags:-Todo,kanban}"
 | 
			
		||||
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 [[ ! -f /etc/systemd/system/planka.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/plankanban/planka/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat ~/.planka 2>/dev/null)" ]] || [[ ! -f ~/.planka ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop planka
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    mkdir -p /opt/planka-backup
 | 
			
		||||
    mkdir -p /opt/planka-backup/favicons
 | 
			
		||||
    mkdir -p /opt/planka-backup/user-avatars
 | 
			
		||||
    mkdir -p /opt/planka-backup/background-images
 | 
			
		||||
    mkdir -p /opt/planka-backup/attachments
 | 
			
		||||
    mv /opt/planka/planka/.env /opt/planka-backup
 | 
			
		||||
    [ -n "$(ls -A /opt/planka/planka/public/favicons 2>/dev/null)" ] && mv /opt/planka/planka/public/favicons/* /opt/planka-backup/favicons/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka/planka/public/user-avatars 2>/dev/null)" ] && mv /opt/planka/planka/public/user-avatars/* /opt/planka-backup/user-avatars/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka/planka/public/background-images 2>/dev/null)" ] && mv /opt/planka/planka/public/background-images/* /opt/planka-backup/background-images/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka/planka/private/attachments 2>/dev/null)" ] && mv /opt/planka/planka/private/attachments/* /opt/planka-backup/attachments/
 | 
			
		||||
    rm -rf /opt/planka
 | 
			
		||||
    fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip"
 | 
			
		||||
    cd /opt/planka/planka
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    mv /opt/planka-backup/.env /opt/planka/planka/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka-backup/favicons 2>/dev/null)" ] && mv /opt/planka-backup/favicons/* /opt/planka/planka/public/favicons/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka-backup/user-avatars 2>/dev/null)" ] && mv /opt/planka-backup/user-avatars/* /opt/planka/planka/public/user-avatars/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka-backup/background-images 2>/dev/null)" ] && mv /opt/planka-backup/background-images/* /opt/planka/planka/public/background-images/
 | 
			
		||||
    [ -n "$(ls -A /opt/planka-backup/attachments 2>/dev/null)" ] && mv /opt/planka-backup/attachments/* /opt/planka/planka/private/attachments/
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start planka
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:1337${CL}"
 | 
			
		||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-ubuntu}"
 | 
			
		||||
var_version="${var_version:-22.04}"
 | 
			
		||||
var_version="${var_version:-24.04}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -20,26 +20,69 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -f /etc/systemd/system/prometheus-pve-exporter.service ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop prometheus-pve-exporter
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -f /etc/systemd/system/prometheus-pve-exporter.service ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    $STD pip install prometheus-pve-exporter --default-timeout=300 --upgrade --root-user-action=ignore
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
  msg_info "Stopping ${APP}"
 | 
			
		||||
  systemctl stop prometheus-pve-exporter
 | 
			
		||||
  msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start prometheus-pve-exporter
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
    exit
 | 
			
		||||
  export PVE_VENV_PATH="/opt/prometheus-pve-exporter/.venv"
 | 
			
		||||
  export PVE_EXPORTER_BIN="${PVE_VENV_PATH}/bin/pve_exporter"
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d "$PVE_VENV_PATH" || ! -x "$PVE_EXPORTER_BIN" ]]; then
 | 
			
		||||
    PYTHON_VERSION="3.12" setup_uv
 | 
			
		||||
    msg_info "Migrating to uv/venv"
 | 
			
		||||
    rm -rf "$PVE_VENV_PATH"
 | 
			
		||||
    mkdir -p /opt/prometheus-pve-exporter
 | 
			
		||||
    cd /opt/prometheus-pve-exporter
 | 
			
		||||
    $STD uv venv "$PVE_VENV_PATH"
 | 
			
		||||
    $STD "$PVE_VENV_PATH/bin/python" -m ensurepip --upgrade
 | 
			
		||||
    $STD "$PVE_VENV_PATH/bin/python" -m pip install --upgrade pip
 | 
			
		||||
    $STD "$PVE_VENV_PATH/bin/python" -m pip install prometheus-pve-exporter
 | 
			
		||||
    msg_ok "Migrated to uv/venv"
 | 
			
		||||
  else
 | 
			
		||||
    msg_info "Updating Prometheus Proxmox VE Exporter"
 | 
			
		||||
    PYTHON_VERSION="3.12" setup_uv
 | 
			
		||||
    $STD "$PVE_VENV_PATH/bin/python" -m pip install --upgrade prometheus-pve-exporter
 | 
			
		||||
    msg_ok "Updated Prometheus Proxmox VE Exporter"
 | 
			
		||||
  fi
 | 
			
		||||
  local service_file="/etc/systemd/system/prometheus-pve-exporter.service"
 | 
			
		||||
  if ! grep -q "${PVE_VENV_PATH}/bin/pve_exporter" "$service_file"; then
 | 
			
		||||
    msg_info "Updating systemd service"
 | 
			
		||||
    cat <<EOF >"$service_file"
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Prometheus Proxmox VE Exporter
 | 
			
		||||
Documentation=https://github.com/znerol/prometheus-pve-exporter
 | 
			
		||||
After=syslog.target network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
User=root
 | 
			
		||||
Restart=always
 | 
			
		||||
Type=simple
 | 
			
		||||
ExecStart=${PVE_VENV_PATH}/bin/pve_exporter \\
 | 
			
		||||
    --config.file=/opt/prometheus-pve-exporter/pve.yml \\
 | 
			
		||||
    --web.listen-address=0.0.0.0:9221
 | 
			
		||||
ExecReload=/bin/kill -HUP \$MAINPID
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
    $STD systemctl daemon-reload
 | 
			
		||||
    msg_ok "Updated systemd service"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP}"
 | 
			
		||||
  systemctl start prometheus-pve-exporter
 | 
			
		||||
  msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -49,4 +92,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}:9221${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9221${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								ct/pulse.sh
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								ct/pulse.sh
									
									
									
									
									
								
							@@ -1,5 +1,5 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: rcourtman
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
@@ -23,40 +23,37 @@ function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/pulse-proxmox ]]; then
 | 
			
		||||
  if [[ -d /opt/pulse-monitor ]]; then
 | 
			
		||||
  msg_error "An old installation was detected. Please recreate the LXC from scratch (https://github.com/community-scripts/ProxmoxVE/pull/4848)"
 | 
			
		||||
  exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  if [[ ! -d /opt/pulse ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/rcourtman/Pulse/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop pulse-monitor
 | 
			
		||||
    systemctl stop pulse
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Pulse"
 | 
			
		||||
    if [[ -f /opt/pulse-proxmox/.env ]]; then
 | 
			
		||||
      cp /opt/pulse-proxmox/.env /tmp/.env.backup.pulse
 | 
			
		||||
    fi
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    mkdir -p /opt/pulse-proxmox
 | 
			
		||||
    rm -rf /opt/pulse-proxmox/*
 | 
			
		||||
    mkdir -p /opt/pulse
 | 
			
		||||
    rm -rf /opt/pulse/*
 | 
			
		||||
    curl -fsSL "https://github.com/rcourtman/Pulse/releases/download/v${RELEASE}/pulse-v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar zxf "$temp_file" --strip-components=1 -C /opt/pulse-proxmox
 | 
			
		||||
    if [[ -f /tmp/.env.backup.pulse ]]; then
 | 
			
		||||
      mv /tmp/.env.backup.pulse /opt/pulse-proxmox/.env
 | 
			
		||||
    fi
 | 
			
		||||
    tar zxf "$temp_file" --strip-components=1 -C /opt/pulse
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Pulse to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Setting permissions for /opt/pulse-proxmox..."
 | 
			
		||||
    chown -R pulse:pulse "/opt/pulse-proxmox"
 | 
			
		||||
    find "/opt/pulse-proxmox" -type d -exec chmod 755 {} \;
 | 
			
		||||
    find "/opt/pulse-proxmox" -type f -exec chmod 644 {} \;
 | 
			
		||||
    chmod 600 /opt/pulse-proxmox/.env
 | 
			
		||||
    msg_info "Setting permissions for /opt/pulse..."
 | 
			
		||||
    chown -R pulse:pulse "/opt/pulse"
 | 
			
		||||
    find "/opt/pulse" -type d -exec chmod 755 {} \;
 | 
			
		||||
    find "/opt/pulse" -type f -exec chmod 644 {} \;
 | 
			
		||||
    msg_ok "Set permissions."
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start pulse-monitor
 | 
			
		||||
    systemctl start pulse
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}."
 | 
			
		||||
@@ -70,4 +67,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}(:your_port)${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7655${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@ var_disk="${var_disk:-2}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
var_fuse="${var_fuse:-yes}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										66
									
								
								ct/seelf.sh
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								ct/seelf.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 community-scripts ORG
 | 
			
		||||
# Author: tremor021
 | 
			
		||||
# Author: Slaviša Arežina (tremor021)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/YuukanOO/seelf
 | 
			
		||||
 | 
			
		||||
@@ -20,49 +20,31 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
    if [[ ! -d /opt/seelf ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/YuukanOO/seelf/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 seelf
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}. Patience"
 | 
			
		||||
        export PATH=$PATH:/usr/local/go/bin
 | 
			
		||||
        source ~/.bashrc
 | 
			
		||||
        curl -fsSL "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz")
 | 
			
		||||
        tar -xzf v${RELEASE}.tar.gz
 | 
			
		||||
        cp -r seelf-${RELEASE}/ /opt/seelf
 | 
			
		||||
        cd /opt/seelf
 | 
			
		||||
        $STD make build
 | 
			
		||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start seelf
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        # Cleaning up
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -f ~/*.tar.gz
 | 
			
		||||
        rm -rf ~/seelf-${RELEASE}
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
  if [[ ! -d /opt/seelf ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if fetch_and_deploy_gh_release "seelf" "YuukanOO/seelf"; then
 | 
			
		||||
    msg_ok "$APP already at the latest version. No update required."
 | 
			
		||||
  else
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop seelf
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    cd /opt/seelf
 | 
			
		||||
    $STD make build
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start seelf
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user