mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 02:12:49 +00:00 
			
		
		
		
	Compare commits
	
		
			345 Commits
		
	
	
		
			2025-05-23
			...
			2025-06-16
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					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 | ||
| 
						 | 
					2dd7ebda2c | ||
| 
						 | 
					e388ce82a1 | ||
| 
						 | 
					ac902f2098 | ||
| 
						 | 
					a23b83dfc5 | ||
| 
						 | 
					85975fbe15 | ||
| 
						 | 
					23e33c5cb6 | ||
| 
						 | 
					e39e5d5b7d | ||
| 
						 | 
					1619d6a093 | ||
| 
						 | 
					f23b688d55 | ||
| 
						 | 
					b6319b5dd3 | ||
| 
						 | 
					030e6344d2 | ||
| 
						 | 
					85837d8099 | ||
| 
						 | 
					5295ed8cf2 | ||
| 
						 | 
					85ae0e2f74 | ||
| 
						 | 
					b406921c1a | ||
| 
						 | 
					5a16b5995d | ||
| 
						 | 
					fd637c8819 | ||
| 
						 | 
					6d40ca9cd6 | ||
| 
						 | 
					48979104d7 | ||
| 
						 | 
					964950c82c | ||
| 
						 | 
					0677af31c4 | ||
| 
						 | 
					4495ffee6a | ||
| 
						 | 
					6745dad963 | ||
| 
						 | 
					e9470ab1af | ||
| 
						 | 
					5abcb47051 | ||
| 
						 | 
					709a899f8f | ||
| 
						 | 
					b9ff7513a4 | ||
| 
						 | 
					7a963a76b7 | ||
| 
						 | 
					13506d92fb | ||
| 
						 | 
					36f859c062 | ||
| 
						 | 
					adc8225ed2 | ||
| 
						 | 
					640dca8d8b | ||
| 
						 | 
					3b0713b812 | ||
| 
						 | 
					d20165f25c | ||
| 
						 | 
					c79d05ca5f | ||
| 
						 | 
					f0dd1c264d | ||
| 
						 | 
					951782d8f2 | ||
| 
						 | 
					5e8ee6baa8 | ||
| 
						 | 
					7bb9fb09ba | ||
| 
						 | 
					eb04327aa9 | ||
| 
						 | 
					ce39e7c87e | ||
| 
						 | 
					0e75a57582 | ||
| 
						 | 
					8765b7ac1d | ||
| 
						 | 
					56e316b849 | ||
| 
						 | 
					79a5624905 | ||
| 
						 | 
					a4dee03140 | ||
| 
						 | 
					8787ef57b5 | ||
| 
						 | 
					86674ef376 | ||
| 
						 | 
					1e195cac1e | ||
| 
						 | 
					8e8e09668b | ||
| 
						 | 
					6ef1c99f65 | ||
| 
						 | 
					e2a8b8b799 | ||
| 
						 | 
					c356f77efe | ||
| 
						 | 
					dcfe80e069 | ||
| 
						 | 
					010928fee2 | ||
| 
						 | 
					aed2c0e5bf | ||
| 
						 | 
					9e2d66266a | ||
| 
						 | 
					da406b5ce8 | ||
| 
						 | 
					a7bf2679de | ||
| 
						 | 
					7079f428ca | ||
| 
						 | 
					121bd8e557 | ||
| 
						 | 
					d9c4ff9867 | ||
| 
						 | 
					7db94ad73a | ||
| 
						 | 
					56c2682601 | ||
| 
						 | 
					11a7c2e410 | ||
| 
						 | 
					ed9d8e995d | ||
| 
						 | 
					3b67e8dcc1 | ||
| 
						 | 
					f09e57c200 | ||
| 
						 | 
					72c24d5147 | ||
| 
						 | 
					93a179c201 | ||
| 
						 | 
					ac2f0e66ae | ||
| 
						 | 
					5ccf8a7cd6 | ||
| 
						 | 
					db82285b95 | ||
| 
						 | 
					58586cbfc8 | ||
| 
						 | 
					8708980786 | ||
| 
						 | 
					943fa7b7aa | ||
| 
						 | 
					5085547f39 | ||
| 
						 | 
					5685e7e088 | ||
| 
						 | 
					72db97b226 | ||
| 
						 | 
					e6805db9f5 | ||
| 
						 | 
					97073be5e2 | ||
| 
						 | 
					82228189a7 | ||
| 
						 | 
					53bdedfc08 | ||
| 
						 | 
					92ff5a9881 | ||
| 
						 | 
					0bb4509cd7 | ||
| 
						 | 
					f339b7df10 | ||
| 
						 | 
					a23a6a3da1 | ||
| 
						 | 
					3c12773956 | ||
| 
						 | 
					d79ac98a31 | ||
| 
						 | 
					17654c2006 | ||
| 
						 | 
					575443fac5 | ||
| 
						 | 
					f38225d52f | ||
| 
						 | 
					cef451c42c | ||
| 
						 | 
					2a5856db03 | ||
| 
						 | 
					47abe248d0 | ||
| 
						 | 
					98c64ffae9 | ||
| 
						 | 
					c136133b7c | ||
| 
						 | 
					1e5395d21b | ||
| 
						 | 
					dfb98698f3 | ||
| 
						 | 
					ff5b793e1e | ||
| 
						 | 
					4044790e5e | ||
| 
						 | 
					e64b10bf99 | ||
| 
						 | 
					bf2b36f095 | ||
| 
						 | 
					15b606c019 | ||
| 
						 | 
					16740ece38 | ||
| 
						 | 
					d2d9a59e35 | ||
| 
						 | 
					7d7664f12a | ||
| 
						 | 
					98c1136d8e | ||
| 
						 | 
					2f1f0393b6 | ||
| 
						 | 
					0cdde92556 | ||
| 
						 | 
					85b638169d | ||
| 
						 | 
					1c186b5087 | ||
| 
						 | 
					21efb1a2ec | 
							
								
								
									
										396
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										396
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -14,6 +14,402 @@ 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-06-17
 | 
			
		||||
 | 
			
		||||
## 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
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - SearXNG fix limiter [@CrazyWolf13](https://github.com/CrazyWolf13) ([#4834](https://github.com/community-scripts/ProxmoxVE/pull/4834))
 | 
			
		||||
    - Docmost: add jq before nodejs install [@MickLesk](https://github.com/MickLesk) ([#4831](https://github.com/community-scripts/ProxmoxVE/pull/4831))
 | 
			
		||||
    - Alpine Traefik: Fix Dashboard not beign accessible [@tremor021](https://github.com/tremor021) ([#4828](https://github.com/community-scripts/ProxmoxVE/pull/4828))
 | 
			
		||||
    - MySQL: Fix Wrong Command [@MickLesk](https://github.com/MickLesk) ([#4820](https://github.com/community-scripts/ProxmoxVE/pull/4820))
 | 
			
		||||
    - docs: fix casing of OpenWrt [@GoetzGoerisch](https://github.com/GoetzGoerisch) ([#4805](https://github.com/community-scripts/ProxmoxVE/pull/4805))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Docker-VM: set individual Hostname / Disk-Space formatting [@MickLesk](https://github.com/MickLesk) ([#4821](https://github.com/community-scripts/ProxmoxVE/pull/4821))
 | 
			
		||||
 | 
			
		||||
## 2025-05-28
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Umbrel-OS [@MickLesk](https://github.com/MickLesk) ([#4788](https://github.com/community-scripts/ProxmoxVE/pull/4788))
 | 
			
		||||
- oauth2-proxy ([#4784](https://github.com/community-scripts/ProxmoxVE/pull/4784))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Habitica: Use Node20 [@MickLesk](https://github.com/MickLesk) ([#4796](https://github.com/community-scripts/ProxmoxVE/pull/4796))
 | 
			
		||||
    - Alpine-Node-RED: add service to rc [@MickLesk](https://github.com/MickLesk) ([#4783](https://github.com/community-scripts/ProxmoxVE/pull/4783))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Pulse: use prebuild tarball file / remove unneeded npm actions [@MickLesk](https://github.com/MickLesk) ([#4776](https://github.com/community-scripts/ProxmoxVE/pull/4776))
 | 
			
		||||
 | 
			
		||||
  - #### 💥 Breaking Changes
 | 
			
		||||
 | 
			
		||||
    - Refactor: Linkwarden + OS Upgrade [@MickLesk](https://github.com/MickLesk) ([#4756](https://github.com/community-scripts/ProxmoxVE/pull/4756))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - refactor: use binary and randomize credentials in tinyauth [@steveiliop56](https://github.com/steveiliop56) ([#4632](https://github.com/community-scripts/ProxmoxVE/pull/4632))
 | 
			
		||||
    - MariaDB CLI Update, Go Install Helper & Minor Cleanup [@MickLesk](https://github.com/MickLesk) ([#4793](https://github.com/community-scripts/ProxmoxVE/pull/4793))
 | 
			
		||||
    - Refactor: Remove redundant dependencies & unify unzip usage [@MickLesk](https://github.com/MickLesk) ([#4780](https://github.com/community-scripts/ProxmoxVE/pull/4780))
 | 
			
		||||
    - Refactor: Remove gpg / gnupg from script base [@MickLesk](https://github.com/MickLesk) ([#4775](https://github.com/community-scripts/ProxmoxVE/pull/4775))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - pulse: correct url in note [@xb00tt](https://github.com/xb00tt) ([#4809](https://github.com/community-scripts/ProxmoxVE/pull/4809))
 | 
			
		||||
 | 
			
		||||
## 2025-05-27
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Backrest ([#4766](https://github.com/community-scripts/ProxmoxVE/pull/4766))
 | 
			
		||||
- Pulse ([#4728](https://github.com/community-scripts/ProxmoxVE/pull/4728))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Alpine-Vaultwarden: Increase min disk requirements to 1GB [@neyzm](https://github.com/neyzm) ([#4764](https://github.com/community-scripts/ProxmoxVE/pull/4764))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - lldap: fix update-check [@MickLesk](https://github.com/MickLesk) ([#4742](https://github.com/community-scripts/ProxmoxVE/pull/4742))
 | 
			
		||||
 | 
			
		||||
  - #### ✨ New Features
 | 
			
		||||
 | 
			
		||||
    - Big NodeJS Update: Use Helper Function on all Install-Scripts [@MickLesk](https://github.com/MickLesk) ([#4744](https://github.com/community-scripts/ProxmoxVE/pull/4744))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - merge MariaDB to tools.func Installer [@MickLesk](https://github.com/MickLesk) ([#4753](https://github.com/community-scripts/ProxmoxVE/pull/4753))
 | 
			
		||||
    - merge PostgreSQL to tools.func Installer [@MickLesk](https://github.com/MickLesk) ([#4752](https://github.com/community-scripts/ProxmoxVE/pull/4752))
 | 
			
		||||
 | 
			
		||||
### 🌐 Website
 | 
			
		||||
 | 
			
		||||
  - #### 📝 Script Information
 | 
			
		||||
 | 
			
		||||
    - Increase default RAM allocation for BunkerWeb to 8192MB [@TheophileDiot](https://github.com/TheophileDiot) ([#4762](https://github.com/community-scripts/ProxmoxVE/pull/4762))
 | 
			
		||||
 | 
			
		||||
## 2025-05-26
 | 
			
		||||
 | 
			
		||||
### 🆕 New Scripts
 | 
			
		||||
 | 
			
		||||
  - Argus ([#4717](https://github.com/community-scripts/ProxmoxVE/pull/4717))
 | 
			
		||||
- Kasm ([#4716](https://github.com/community-scripts/ProxmoxVE/pull/4716))
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - Excalidraw: increase HDD to 10GB [@MickLesk](https://github.com/MickLesk) ([#4718](https://github.com/community-scripts/ProxmoxVE/pull/4718))
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - BREAKING CHANGE: Fix PocketID for v1.0.0 [@vhsdream](https://github.com/vhsdream) ([#4711](https://github.com/community-scripts/ProxmoxVE/pull/4711))
 | 
			
		||||
    - InspIRCd: Fix release name in release url [@tremor021](https://github.com/tremor021) ([#4720](https://github.com/community-scripts/ProxmoxVE/pull/4720))
 | 
			
		||||
 | 
			
		||||
## 2025-05-25
 | 
			
		||||
 | 
			
		||||
### 🚀 Updated Scripts
 | 
			
		||||
 | 
			
		||||
  - #### 🐞 Bug Fixes
 | 
			
		||||
 | 
			
		||||
    - Pelican-panel: back-up database if using sqlite [@bvdberg01](https://github.com/bvdberg01) ([#4700](https://github.com/community-scripts/ProxmoxVE/pull/4700))
 | 
			
		||||
 | 
			
		||||
  - #### 🔧 Refactor
 | 
			
		||||
 | 
			
		||||
    - Pterodactyl panel read typo [@bvdberg01](https://github.com/bvdberg01) ([#4701](https://github.com/community-scripts/ProxmoxVE/pull/4701))
 | 
			
		||||
 | 
			
		||||
## 2025-05-24
 | 
			
		||||
 | 
			
		||||
## 2025-05-23
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										125
									
								
								ct/2fauth.sh
									
									
									
									
									
								
							
							
						
						
									
										125
									
								
								ct/2fauth.sh
									
									
									
									
									
								
							@@ -20,79 +20,60 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
    # Check if installation is present | -f for file, -d for folder
 | 
			
		||||
    if [[ ! -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
 | 
			
		||||
        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
 | 
			
		||||
            cp /etc/nginx/conf.d/2fauth.conf /etc/nginx/conf.d/2fauth.conf.bak
 | 
			
		||||
        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}
 | 
			
		||||
            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"
 | 
			
		||||
        unzip -q "${RELEASE}.zip"
 | 
			
		||||
        mv "2FAuth-${RELEASE//v/}/" "/opt/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
 | 
			
		||||
            $STD apt-get remove --purge -y php8.2*
 | 
			
		||||
        fi
 | 
			
		||||
        $STD apt-get -y autoremove
 | 
			
		||||
        $STD apt-get -y autoclean
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        # Last Action
 | 
			
		||||
        echo "${RELEASE}" >/opt/2fauth_version.txt
 | 
			
		||||
        msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
  if [[ ! -d "/opt/2fauth" ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  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
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
 | 
			
		||||
    msg_info "Creating Backup"
 | 
			
		||||
    mv "/opt/2fauth" "/opt/2fauth-backup"
 | 
			
		||||
    if ! dpkg -l | grep -q 'php8.3'; then
 | 
			
		||||
      cp /etc/nginx/conf.d/2fauth.conf /etc/nginx/conf.d/2fauth.conf.bak
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Backup Created"
 | 
			
		||||
 | 
			
		||||
    if ! dpkg -l | grep -q 'php8.3'; then
 | 
			
		||||
      $STD apt-get install -y \
 | 
			
		||||
        lsb-release \
 | 
			
		||||
        gnupg2
 | 
			
		||||
      PHP_VERSION="8.3" PHP_MODULE="common,ctype,fileinfo,fpm,mysql,cli" install_php
 | 
			
		||||
      sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
 | 
			
		||||
    fi
 | 
			
		||||
    fetch_and_deploy_gh_release "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
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf "v${RELEASE}.zip"
 | 
			
		||||
    if dpkg -l | grep -q 'php8.2'; then
 | 
			
		||||
      $STD apt-get remove --purge -y php8.2*
 | 
			
		||||
    fi
 | 
			
		||||
    $STD apt-get -y autoremove
 | 
			
		||||
    $STD apt-get -y autoclean
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
    echo "${RELEASE}" >/opt/2fauth_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -102,4 +83,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ 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
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    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"
 | 
			
		||||
    unzip -q /opt/v${RELEASE}.zip -d /opt/
 | 
			
		||||
    $STD unzip /opt/v${RELEASE}.zip -d /opt/
 | 
			
		||||
    mv /opt/AdventureLog-${RELEASE} /opt/adventurelog
 | 
			
		||||
 | 
			
		||||
    mv /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
 | 
			
		||||
@@ -78,4 +78,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -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!"
 | 
			
		||||
@@ -36,7 +34,7 @@ function update_script() {
 | 
			
		||||
    curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
 | 
			
		||||
    mkdir -p /usr/share/nginx/html
 | 
			
		||||
    rm -rf /usr/share/nginx/html/*
 | 
			
		||||
    unzip -q it-tools.zip -d /tmp/it-tools
 | 
			
		||||
    $STD unzip it-tools.zip -d /tmp/it-tools
 | 
			
		||||
    cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
 | 
			
		||||
    rm -rf /tmp/it-tools
 | 
			
		||||
    rm -f it-tools.zip
 | 
			
		||||
 
 | 
			
		||||
@@ -32,10 +32,6 @@ function update_script() {
 | 
			
		||||
  $STD npm install -g --unsafe-perm node-red
 | 
			
		||||
  msg_ok "Updated Node-RED"
 | 
			
		||||
 | 
			
		||||
  msg_info "Restarting Node-RED"
 | 
			
		||||
  $STD rc-service nodered restart
 | 
			
		||||
  msg_ok "Restarted Node-RED"
 | 
			
		||||
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@ var_disk="${var_disk:-1}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,15 @@
 | 
			
		||||
#!/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)
 | 
			
		||||
# Author: Slaviša Arežina (tremor021) | Co-Author: Stavros (steveiliop56)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/steveiliop56/tinyauth
 | 
			
		||||
 | 
			
		||||
APP="Alpine-tinyauth"
 | 
			
		||||
APP="Alpine-Tinyauth"
 | 
			
		||||
var_tags="${var_tags:-alpine;auth}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-3}"
 | 
			
		||||
var_ram="${var_ram:-256}"
 | 
			
		||||
var_disk="${var_disk:-2}"
 | 
			
		||||
var_os="${var_os:-alpine}"
 | 
			
		||||
var_version="${var_version:-3.21}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -25,34 +25,23 @@ function update_script() {
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating Alpine Packages"
 | 
			
		||||
  msg_info "Updating packages"
 | 
			
		||||
  $STD apk -U upgrade
 | 
			
		||||
  msg_ok "Updated Alpine Packages"
 | 
			
		||||
  msg_ok "Updated packages"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating tinyauth"
 | 
			
		||||
  msg_info "Updating Tinyauth"
 | 
			
		||||
  RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  
 | 
			
		||||
  if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
 | 
			
		||||
    $STD service tinyauth stop
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    cp /opt/tinyauth/.env /opt
 | 
			
		||||
    rm -rf /opt/tinyauth
 | 
			
		||||
    mkdir -p /opt/tinyauth
 | 
			
		||||
    curl -fsSL "https://github.com/steveiliop56/tinyauth/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar -xzf "$temp_file" -C /opt/tinyauth --strip-components=1
 | 
			
		||||
    cd /opt/tinyauth/frontend
 | 
			
		||||
    $STD bun install
 | 
			
		||||
    $STD bun run build
 | 
			
		||||
    mv dist /opt/tinyauth/internal/assets/
 | 
			
		||||
    cd /opt/tinyauth
 | 
			
		||||
    $STD go mod download
 | 
			
		||||
    CGO_ENABLED=0 go build -ldflags "-s -w"
 | 
			
		||||
    cp /opt/.env /opt/tinyauth
 | 
			
		||||
    echo "${RELEASE}" >/opt/tinyauth_version.txt
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    msg_info "Restarting tinyauth"
 | 
			
		||||
    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
 | 
			
		||||
    msg_info "Restarting Tinyauth"
 | 
			
		||||
    $STD service tinyauth start
 | 
			
		||||
    msg_ok "Restarted tinyauth"
 | 
			
		||||
    msg_ok "Updated tinyauth"
 | 
			
		||||
    msg_ok "Restarted Tinyauth"
 | 
			
		||||
    msg_ok "Updated Tinyauth"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="Alpine-Vaultwarden"
 | 
			
		||||
var_tags="${var_tags:-alpine;vault}"
 | 
			
		||||
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_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -66,4 +66,4 @@ description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${APP} should be reachable by going to the following URL.
 | 
			
		||||
         ${BL}http://${IP}:8000${CL} \n"
 | 
			
		||||
         ${BL}https://${IP}:8000${CL} \n"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										53
									
								
								ct/argus.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								ct/argus.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
#!/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://release-argus.io/
 | 
			
		||||
 | 
			
		||||
APP="Argus"
 | 
			
		||||
var_tags="${var_tags:-watcher}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-3}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/argus ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/release-argus/Argus/releases/latest | jq -r .tag_name | sed 's/^v//')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    rm -f /opt/argus/Argus
 | 
			
		||||
    curl -fsSL "https://github.com/release-argus/Argus/releases/download/${RELEASE}/Argus-${RELEASE}.linux-amd64" -o /opt/argus/Argus
 | 
			
		||||
    chmod +x /opt/argus/Argus
 | 
			
		||||
    systemctl restart argus
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
  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 it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
 | 
			
		||||
@@ -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}"
 | 
			
		||||
							
								
								
									
										66
									
								
								ct/backrest.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								ct/backrest.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: ksad (enirys31)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://garethgeorge.github.io/backrest/
 | 
			
		||||
 | 
			
		||||
APP="Backrest"
 | 
			
		||||
var_tags="${var_tags:-backup}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
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/backrest ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/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 backrest
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    rm -f /opt/backrest/bin/backrest
 | 
			
		||||
    curl -fsSL "https://github.com/garethgeorge/backrest/releases/download/v${RELEASE}/backrest_Linux_x86_64.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar xzf $temp_file -C /opt/backrest/bin
 | 
			
		||||
    chmod +x /opt/backrest/bin/backrest
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start backrest
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -f "$temp_file"
 | 
			
		||||
    msg_ok "Cleaned up"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9898${CL}"
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip" -o $(basename "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip")
 | 
			
		||||
    mv /opt/baikal /opt/baikal-backup
 | 
			
		||||
    unzip -o -q "baikal-${RELEASE}.zip"
 | 
			
		||||
    $STD unzip -o "baikal-${RELEASE}.zip"
 | 
			
		||||
    cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
 | 
			
		||||
    cp -r /opt/baikal-backup/Specific/ /opt/baikal/
 | 
			
		||||
    chown -R www-data:www-data /opt/baikal/
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
 | 
			
		||||
    curl -fsSL "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q "v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "v${RELEASE}.zip"
 | 
			
		||||
    mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
 | 
			
		||||
    cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
 | 
			
		||||
    chown -R www-data:www-data /opt/barcodebuddy/data
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    mv /opt/bookstack /opt/bookstack-backup
 | 
			
		||||
    curl -fsSL "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" -o "/opt/BookStack-${RELEASE}.zip"
 | 
			
		||||
    unzip -q "/opt/BookStack-${RELEASE}.zip" -d /opt
 | 
			
		||||
    $STD unzip "/opt/BookStack-${RELEASE}.zip" -d /opt
 | 
			
		||||
    mv "/opt/BookStack-${RELEASE}" /opt/bookstack
 | 
			
		||||
    cp /opt/bookstack-backup/.env /opt/bookstack/.env
 | 
			
		||||
    [[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
 | 
			
		||||
APP="BunkerWeb"
 | 
			
		||||
var_tags="${var_tags:-webserver}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_ram="${var_ram:-8192}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
@@ -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}/setup${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/setup${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    curl -fsSL "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip" -o $(basename "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip")
 | 
			
		||||
    unzip -q commafeed-"${RELEASE}"-h2-jvm.zip
 | 
			
		||||
    $STD unzip commafeed-"${RELEASE}"-h2-jvm.zip
 | 
			
		||||
    rsync -a --exclude 'data/' commafeed-"${RELEASE}"-h2/ /opt/commafeed/
 | 
			
		||||
    rm -rf commafeed-"${RELEASE}"-h2 commafeed-"${RELEASE}"-h2-jvm.zip
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Crafty-Controller to v${RELEASE}"
 | 
			
		||||
    curl -fsSL "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip" -o $(basename "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip")
 | 
			
		||||
    unzip -q crafty-4-v${RELEASE}.zip
 | 
			
		||||
    $STD unzip crafty-4-v${RELEASE}.zip
 | 
			
		||||
    cp -a crafty-4-v${RELEASE}/. /opt/crafty-controller/crafty/crafty-4/
 | 
			
		||||
    rm -rf crafty-4-v${RELEASE}
 | 
			
		||||
    cd /opt/crafty-controller/crafty/crafty-4
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/documenso
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    mv documenso-${RELEASE} /opt/documenso
 | 
			
		||||
    cd /opt/documenso
 | 
			
		||||
    mv /opt/.env /opt/documenso/.env
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ APP="Excalidraw"
 | 
			
		||||
TAGS="diagrams"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-3072}"
 | 
			
		||||
var_disk="${var_disk:-6}"
 | 
			
		||||
var_disk="${var_disk:-10}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
@@ -20,46 +20,46 @@ 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/excalidraw ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/excalidraw_version.txt)" ]] || [[ ! -f /opt/excalidraw_version.txt ]]; then
 | 
			
		||||
        msg_info "Stopping $APP"
 | 
			
		||||
        systemctl stop excalidraw
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
        cd /tmp
 | 
			
		||||
        temp_file=$(mktemp)
 | 
			
		||||
curl -fsSL "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
        tar xzf $temp_file
 | 
			
		||||
        rm -rf /opt/excalidraw
 | 
			
		||||
        mv excalidraw-${RELEASE} /opt/excalidraw
 | 
			
		||||
        cd /opt/excalidraw
 | 
			
		||||
        $STD yarn
 | 
			
		||||
        msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start excalidraw
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -rf $temp_file
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        echo "${RELEASE}" >/opt/excalidraw_version.txt
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
  if [[ ! -d /opt/excalidraw ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/excalidraw_version.txt)" ]] || [[ ! -f /opt/excalidraw_version.txt ]]; then
 | 
			
		||||
    msg_info "Stopping $APP"
 | 
			
		||||
    systemctl stop excalidraw
 | 
			
		||||
    msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    cd /tmp
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
 | 
			
		||||
    tar xzf $temp_file
 | 
			
		||||
    rm -rf /opt/excalidraw
 | 
			
		||||
    mv excalidraw-${RELEASE} /opt/excalidraw
 | 
			
		||||
    cd /opt/excalidraw
 | 
			
		||||
    $STD yarn
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start excalidraw
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf $temp_file
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
    echo "${RELEASE}" >/opt/excalidraw_version.txt
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -69,4 +69,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating $APP to latest version"
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
 | 
			
		||||
    unzip -oq -d /opt/fileflows "$temp_file"
 | 
			
		||||
    $STD unzip -o -d /opt/fileflows "$temp_file"
 | 
			
		||||
    msg_ok "Updated $APP to latest version"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
 
 | 
			
		||||
@@ -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/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -39,8 +39,8 @@ function update_script() {
 | 
			
		||||
        cp /opt/fluid-calendar/.env /opt/fluid.env
 | 
			
		||||
        rm -rf /opt/fluid-calendar
 | 
			
		||||
        tmp_file=$(mktemp)
 | 
			
		||||
curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
 | 
			
		||||
        unzip -q $tmp_file
 | 
			
		||||
        curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
 | 
			
		||||
        $STD unzip $tmp_file
 | 
			
		||||
        mv ${APP}-${RELEASE}/ /opt/fluid-calendar
 | 
			
		||||
        mv /opt/fluid.env /opt/fluid-calendar/.env
 | 
			
		||||
        cd /opt/fluid-calendar
 | 
			
		||||
@@ -74,4 +74,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-5}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/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 [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; 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 "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}"
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    cd /opt/gotify
 | 
			
		||||
    curl -fsSL "https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip" -o $(basename "https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip")
 | 
			
		||||
    unzip -oq gotify-linux-amd64.zip
 | 
			
		||||
    $STD unzip -o gotify-linux-amd64.zip
 | 
			
		||||
    rm -rf gotify-linux-amd64.zip
 | 
			
		||||
    chmod +x gotify-linux-amd64
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    rm -rf grist_bak
 | 
			
		||||
    mv grist grist_bak
 | 
			
		||||
    curl -fsSL "https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v$RELEASE.zip
 | 
			
		||||
    $STD unzip v$RELEASE.zip
 | 
			
		||||
    mv grist-core-${RELEASE} grist
 | 
			
		||||
 | 
			
		||||
    mkdir -p grist/docs
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
    ___    __      _                  __  _                         __  __  
 | 
			
		||||
   /   |  / /___  (_)___  ___        / /_(_)___  __  ______ ___  __/ /_/ /_ 
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ __/ / __ \/ / / / __ `/ / / / __/ __ \
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ /_/ / / / / /_/ / /_/ / /_/ / /_/ / / /
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/      \__/_/_/ /_/\__, /\__,_/\__,_/\__/_/ /_/ 
 | 
			
		||||
    ___    __      _                _______                         __  __  
 | 
			
		||||
   /   |  / /___  (_)___  ___      /_  __(_)___  __  ______ ___  __/ /_/ /_ 
 | 
			
		||||
  / /| | / / __ \/ / __ \/ _ \______/ / / / __ \/ / / / __ `/ / / / __/ __ \
 | 
			
		||||
 / ___ |/ / /_/ / / / / /  __/_____/ / / / / / / /_/ / /_/ / /_/ / /_/ / / /
 | 
			
		||||
/_/  |_/_/ .___/_/_/ /_/\___/     /_/ /_/_/ /_/\__, /\__,_/\__,_/\__/_/ /_/ 
 | 
			
		||||
        /_/                                   /____/                        
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/argus
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/argus
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ___                         
 | 
			
		||||
   /   |  _________ ___  _______
 | 
			
		||||
  / /| | / ___/ __ `/ / / / ___/
 | 
			
		||||
 / ___ |/ /  / /_/ / /_/ (__  ) 
 | 
			
		||||
/_/  |_/_/   \__, /\__,_/____/  
 | 
			
		||||
            /____/              
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
    ___         __  __               __  _ __  
 | 
			
		||||
   /   | __  __/ /_/ /_  ___  ____  / /_(_) /__
 | 
			
		||||
  / /| |/ / / / __/ __ \/ _ \/ __ \/ __/ / //_/
 | 
			
		||||
 / ___ / /_/ / /_/ / / /  __/ / / / /_/ / ,<   
 | 
			
		||||
/_/  |_\__,_/\__/_/ /_/\___/_/ /_/\__/_/_/|_|  
 | 
			
		||||
                                               
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/backrest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/backrest
									
									
									
									
									
										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/immich
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/immich
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    _                     _      __  
 | 
			
		||||
   (_)___ ___  ____ ___  (_)____/ /_ 
 | 
			
		||||
  / / __ `__ \/ __ `__ \/ / ___/ __ \
 | 
			
		||||
 / / / / / / / / / / / / / /__/ / / /
 | 
			
		||||
/_/_/ /_/ /_/_/ /_/ /_/_/\___/_/ /_/ 
 | 
			
		||||
                                     
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/kasm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/kasm
									
									
									
									
									
										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/oauth2-proxy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/oauth2-proxy
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
                     __  __   ___                                   
 | 
			
		||||
  ____  ____ ___  __/ /_/ /_ |__ \      ____  _________  _  ____  __
 | 
			
		||||
 / __ \/ __ `/ / / / __/ __ \__/ /_____/ __ \/ ___/ __ \| |/_/ / / /
 | 
			
		||||
/ /_/ / /_/ / /_/ / /_/ / / / __/_____/ /_/ / /  / /_/ />  </ /_/ / 
 | 
			
		||||
\____/\__,_/\__,_/\__/_/ /_/____/    / .___/_/   \____/_/|_|\__, /  
 | 
			
		||||
                                    /_/                    /____/   
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/pulse
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/pulse
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
    ____        __        
 | 
			
		||||
   / __ \__  __/ /_______ 
 | 
			
		||||
  / /_/ / / / / / ___/ _ \
 | 
			
		||||
 / ____/ /_/ / (__  )  __/
 | 
			
		||||
/_/    \__,_/_/____/\___/ 
 | 
			
		||||
                          
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
   __  __          __              __
 | 
			
		||||
  / / / /___ ___  / /_  ________  / /
 | 
			
		||||
 / / / / __ `__ \/ __ \/ ___/ _ \/ / 
 | 
			
		||||
/ /_/ / / / / / / /_/ / /  /  __/ /  
 | 
			
		||||
\____/_/ /_/ /_/_.___/_/   \___/_/   
 | 
			
		||||
                                     
 | 
			
		||||
							
								
								
									
										6
									
								
								ct/headers/zot-registry
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/zot-registry
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
 _____         __        ____             _      __            
 | 
			
		||||
/__  /  ____  / /_      / __ \___  ____ _(_)____/ /________  __
 | 
			
		||||
  / /  / __ \/ __/_____/ /_/ / _ \/ __ `/ / ___/ __/ ___/ / / /
 | 
			
		||||
 / /__/ /_/ / /_/_____/ _, _/  __/ /_/ / (__  ) /_/ /  / /_/ / 
 | 
			
		||||
/____/\____/\__/     /_/ |_|\___/\__, /_/____/\__/_/   \__, /  
 | 
			
		||||
                                /____/                /____/   
 | 
			
		||||
@@ -47,7 +47,7 @@ function update_script() {
 | 
			
		||||
    fi
 | 
			
		||||
    rm -rf /opt/hoarder
 | 
			
		||||
    curl -fsSL "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
 | 
			
		||||
    unzip -q v"${RELEASE}".zip
 | 
			
		||||
    $STD unzip v"${RELEASE}".zip
 | 
			
		||||
    mv karakeep-"${RELEASE}" /opt/hoarder
 | 
			
		||||
    cd /opt/hoarder/apps/web
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								ct/homarr.sh
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								ct/homarr.sh
									
									
									
									
									
								
							@@ -92,6 +92,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]')"
 | 
			
		||||
    install_node_and_modules
 | 
			
		||||
    
 | 
			
		||||
    rm -rf /opt/homarr
 | 
			
		||||
    fetch_and_deploy_gh_release "homarr-labs/homarr"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating and rebuilding ${APP} to v${RELEASE} (Patience)"
 | 
			
		||||
    rm /opt/run_homarr.sh
 | 
			
		||||
    cat <<'EOF' >/opt/run_homarr.sh
 | 
			
		||||
@@ -117,12 +130,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
 | 
			
		||||
 
 | 
			
		||||
@@ -104,7 +104,6 @@ function update_script() {
 | 
			
		||||
  if [ "$UPD" == "2" ]; then
 | 
			
		||||
    msg_info "Installing Home Assistant Community Store (HACS)"
 | 
			
		||||
    $STD apt update
 | 
			
		||||
    $STD apt install -y unzip
 | 
			
		||||
    cd /root/.homeassistant
 | 
			
		||||
    $STD bash <(curl -fsSL https://get.hacs.xyz)
 | 
			
		||||
    msg_ok "Installed Home Assistant Community Store (HACS)"
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,6 @@ function update_script() {
 | 
			
		||||
  if [ "$UPD" == "3" ]; then
 | 
			
		||||
    msg_info "Installing Home Assistant Community Store (HACS)"
 | 
			
		||||
    $STD apt update
 | 
			
		||||
    $STD apt install unzip
 | 
			
		||||
    cd /var/lib/docker/volumes/hass_config/_data
 | 
			
		||||
    $STD bash <(curl -fsSL https://get.hacs.xyz)
 | 
			
		||||
    msg_ok "Installed Home Assistant Community Store (HACS)"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										319
									
								
								ct/immich.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										319
									
								
								ct/immich.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,319 @@
 | 
			
		||||
#!/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
 | 
			
		||||
  STAGING_DIR=/opt/staging
 | 
			
		||||
  BASE_DIR=${STAGING_DIR}/base-images
 | 
			
		||||
  SOURCE_DIR=${STAGING_DIR}/image-source
 | 
			
		||||
  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 dpkg -i ./*.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 -s https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP} services"
 | 
			
		||||
    systemctl stop immich-web
 | 
			
		||||
    systemctl stop immich-ml
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
    if [[ "$(cat /opt/${APP}_version.txt)" < "1.133.0" ]]; then
 | 
			
		||||
      msg_info "Upgrading to the VectorChord PostgreSQL extension"
 | 
			
		||||
      NUMBER="$(
 | 
			
		||||
        sed -n '2p' <(
 | 
			
		||||
          sudo -u postgres psql -A -d immich <<EOF
 | 
			
		||||
        SELECT atttypmod as dimsize
 | 
			
		||||
          FROM pg_attribute f
 | 
			
		||||
          JOIN pg_class c ON c.oid = f.attrelid
 | 
			
		||||
          WHERE c.relkind = 'r'::char
 | 
			
		||||
          AND f.attnum > 0
 | 
			
		||||
          AND c.relname = 'smart_search'::text
 | 
			
		||||
          AND f.attname = 'embedding'::text;
 | 
			
		||||
EOF
 | 
			
		||||
        )
 | 
			
		||||
      )"
 | 
			
		||||
      $STD sudo -u postgres psql -d immich <<EOF
 | 
			
		||||
      DROP INDEX IF EXISTS clip_index;
 | 
			
		||||
      DROP INDEX IF EXISTS face_index;
 | 
			
		||||
      ALTER TABLE smart_search ALTER COLUMN embedding SET DATA TYPE real[];
 | 
			
		||||
      ALTER TABLE face_search ALTER COLUMN embedding SET DATA TYPE real[];
 | 
			
		||||
EOF
 | 
			
		||||
      $STD apt-get update
 | 
			
		||||
      $STD apt-get install postgresql-16-pgvector -y
 | 
			
		||||
      curl -fsSL https://github.com/tensorchord/VectorChord/releases/download/0.3.0/postgresql-16-vchord_0.3.0-1_amd64.deb -o vchord.deb
 | 
			
		||||
      $STD dpkg -i vchord.deb
 | 
			
		||||
      rm vchord.deb
 | 
			
		||||
      sed -i "s|vectors.so|vchord.so|" /etc/postgresql/16/main/postgresql.conf
 | 
			
		||||
      systemctl restart postgresql.service
 | 
			
		||||
      $STD sudo -u postgres psql -d immich <<EOF
 | 
			
		||||
      CREATE EXTENSION IF NOT EXISTS vchord CASCADE;
 | 
			
		||||
      ALTER TABLE smart_search ALTER COLUMN embedding SET DATA TYPE vector($NUMBER);
 | 
			
		||||
      ALTER TABLE face_search ALTER COLUMN embedding SET DATA TYPE vector(512);
 | 
			
		||||
EOF
 | 
			
		||||
      $STD apt purge vectors-pg16 -y
 | 
			
		||||
      msg_ok "Database upgrade complete"
 | 
			
		||||
    fi
 | 
			
		||||
    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"
 | 
			
		||||
    cp "$ML_DIR"/ml_start.sh "$INSTALL_DIR"
 | 
			
		||||
    rm -rf "${APP_DIR:?}"/*
 | 
			
		||||
    rm -rf "$SRC_DIR"
 | 
			
		||||
    immich_zip=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/immich-app/immich/archive/refs/tags/v${RELEASE}.zip" -o "$immich_zip"
 | 
			
		||||
    msg_info "Updating ${APP} web and microservices"
 | 
			
		||||
    unzip -q "$immich_zip"
 | 
			
		||||
    mv "$APP-$RELEASE"/ "$SRC_DIR"
 | 
			
		||||
    mkdir -p "$ML_DIR"
 | 
			
		||||
    cd "$SRC_DIR"/server
 | 
			
		||||
    $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
 | 
			
		||||
    $STD python3 -m venv "$ML_DIR"/ml-venv
 | 
			
		||||
    if [[ -f ~/.openvino ]]; then
 | 
			
		||||
      msg_info "Updating HW-accelerated machine-learning"
 | 
			
		||||
      (
 | 
			
		||||
        source "$ML_DIR"/ml-venv/bin/activate
 | 
			
		||||
        $STD pip3 install -U uv
 | 
			
		||||
        uv -q sync --extra openvino --no-cache --active
 | 
			
		||||
      )
 | 
			
		||||
      patchelf --clear-execstack "$ML_DIR"/ml-venv/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"
 | 
			
		||||
      (
 | 
			
		||||
        source "$ML_DIR"/ml-venv/bin/activate
 | 
			
		||||
        $STD pip3 install -U uv
 | 
			
		||||
        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"
 | 
			
		||||
    cp "$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"
 | 
			
		||||
 | 
			
		||||
    sed -i "s|pgvecto.rs|vectorchord|" /opt/"${APP}"/.env
 | 
			
		||||
 | 
			
		||||
    chown -R immich:immich "$INSTALL_DIR"
 | 
			
		||||
    echo "$RELEASE" >/opt/"${APP}"_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -f "$immich_zip"
 | 
			
		||||
    $STD apt-get -y autoremove
 | 
			
		||||
    $STD apt-get -y autoclean
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  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}"
 | 
			
		||||
@@ -35,8 +35,8 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/inspircd/inspircd/releases/download/v${RELEASE}/inspircd_${RELEASE}.deb12u1_amd64.deb" -o $(basename "https://github.com/inspircd/inspircd/releases/download/v${RELEASE}/inspircd_${RELEASE}.deb12u1_amd64.deb")
 | 
			
		||||
    $STD apt-get install "./inspircd_${RELEASE}.deb12u1_amd64.deb" -y
 | 
			
		||||
    curl -fsSL "https://github.com/inspircd/inspircd/releases/download/v${RELEASE}/inspircd_${RELEASE}.deb12u2_amd64.deb" -o $(basename "https://github.com/inspircd/inspircd/releases/download/v${RELEASE}/inspircd_${RELEASE}.deb12u2_amd64.deb")
 | 
			
		||||
    $STD apt-get install "./inspircd_${RELEASE}.deb12u2_amd64.deb" -y
 | 
			
		||||
    echo "${RELEASE}" >"/opt/${APP}_version.txt"
 | 
			
		||||
    msg_ok "Updated ${APP} to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
@@ -45,7 +45,7 @@ function update_script() {
 | 
			
		||||
    msg_ok "Started Service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf /opt/inspircd_${RELEASE}.deb12u1_amd64.deb
 | 
			
		||||
    rm -rf /opt/inspircd_${RELEASE}.deb12u2_amd64.deb
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,7 @@ function update_script() {
 | 
			
		||||
    fi
 | 
			
		||||
    rm -rf /opt/karakeep
 | 
			
		||||
    curl -fsSL "https://github.com/karakeep-app/karakeep/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
 | 
			
		||||
    unzip -q "v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "v${RELEASE}.zip"
 | 
			
		||||
    mv karakeep-"${RELEASE}" /opt/karakeep
 | 
			
		||||
    cd /opt/karakeep/apps/web
 | 
			
		||||
    $STD pnpm install --frozen-lockfile
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										46
									
								
								ct/kasm.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								ct/kasm.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
#!/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://www.kasmweb.com/docs/latest/index.html
 | 
			
		||||
 | 
			
		||||
APP="Kasm"
 | 
			
		||||
var_tags="${var_tags:-os}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-8192}"
 | 
			
		||||
var_disk="${var_disk:-30}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-0}"
 | 
			
		||||
var_fuse="${var_fuse:-yes}"
 | 
			
		||||
var_tun="${var_tun:-yes}"
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
  msg_info "Updating $APP LXC"
 | 
			
		||||
  $STD apt-get update
 | 
			
		||||
  $STD apt-get -y upgrade
 | 
			
		||||
  msg_ok "Updated $APP LXC"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}${CL}"
 | 
			
		||||
@@ -64,7 +64,7 @@ function update_script() {
 | 
			
		||||
    trap "echo Unable to download release file for version ${RELEASE}; try again later" ERR
 | 
			
		||||
    set -e
 | 
			
		||||
    curl -fsSL "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q "${RELEASE}".zip
 | 
			
		||||
    $STD unzip "${RELEASE}".zip
 | 
			
		||||
    set +e
 | 
			
		||||
    trap - ERR
 | 
			
		||||
    rm -rf /opt/kimai
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/koillection/ /opt/koillection-backup
 | 
			
		||||
    curl -fsSL "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q "${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "${RELEASE}.zip"
 | 
			
		||||
    mv "/opt/koillection-${RELEASE}" /opt/koillection
 | 
			
		||||
    cd /opt/koillection
 | 
			
		||||
    cp -r /opt/koillection-backup/.env.local /opt/koillection
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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}"
 | 
			
		||||
@@ -1,17 +1,17 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: MickLesk (CanbiZ)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://linkwarden.app/
 | 
			
		||||
 | 
			
		||||
APP="Linkwarden"
 | 
			
		||||
var_tags="${var_tags:-bookmark}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_ram="${var_ram:-4096}"
 | 
			
		||||
var_disk="${var_disk:-12}"
 | 
			
		||||
var_os="${var_os:-ubuntu}"
 | 
			
		||||
var_version="${var_version:-22.04}"
 | 
			
		||||
var_version="${var_version:-24.04}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
@@ -27,48 +27,36 @@ function update_script() {
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    NODE_VERSION="22"
 | 
			
		||||
    NODE_MODULE="yarn@latest"
 | 
			
		||||
    install_node_and_modules
 | 
			
		||||
    
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/linkwarden_version.txt)" ]] || [[ ! -f /opt/linkwarden_version.txt ]]; then
 | 
			
		||||
    NODE_VERSION="22" NODE_MODULE="yarn@latest" install_node_and_modules
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop linkwarden
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Rust"
 | 
			
		||||
    $STD apt-get install -y build-essential
 | 
			
		||||
    $STD curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
 | 
			
		||||
    source $HOME/.cargo/env
 | 
			
		||||
    echo 'export PATH=/usr/local/cargo/bin:$PATH' >>/etc/profile
 | 
			
		||||
    source /etc/profile
 | 
			
		||||
    $STD cargo install monolith
 | 
			
		||||
    msg_ok "Updated Rust"
 | 
			
		||||
    RUST_CRATES="monolith" install_rust_and_crates
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/linkwarden/.env /opt/.env
 | 
			
		||||
    rm -rf /opt/linkwarden
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    curl -fsSL "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" -o ${RELEASE}.zip
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    mv linkwarden-${RELEASE:1} /opt/linkwarden
 | 
			
		||||
    fetch_and_deploy_gh_release "linkwarden/linkwarden"
 | 
			
		||||
    cd /opt/linkwarden
 | 
			
		||||
    $STD yarn
 | 
			
		||||
    $STD npx playwright install-deps
 | 
			
		||||
    $STD yarn playwright install
 | 
			
		||||
    cp /opt/.env /opt/linkwarden/.env
 | 
			
		||||
    mv /opt/.env /opt/linkwarden/.env
 | 
			
		||||
    $STD yarn prisma:generate
 | 
			
		||||
    $STD yarn web:build
 | 
			
		||||
    $STD yarn prisma:deploy
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start linkwarden
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -rf /opt/${RELEASE}.zip
 | 
			
		||||
    rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache ~/.rustup
 | 
			
		||||
    rm -rf /root/.cache/yarn
 | 
			
		||||
    rm -rf /opt/linkwarden/.next/cache
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@ function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -f /etc/systemd/system/lldap.service ]]; then
 | 
			
		||||
    if [[ ! -f /lib/systemd/system/lldap.service ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
@@ -41,4 +41,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:17170${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:17170${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,7 @@ function update_script() {
 | 
			
		||||
    [[ -e /opt/lubelogger/wwwroot/temp ]] && cp -r /opt/lubelogger/wwwroot/temp /tmp/lubeloggerData/data/
 | 
			
		||||
    [[ -e /opt/lubelogger/log ]] && cp -r /opt/lubelogger/log /tmp/lubeloggerData/
 | 
			
		||||
    rm -rf /opt/lubelogger
 | 
			
		||||
    unzip -qq LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip -d lubelogger
 | 
			
		||||
    $STD unzip LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip -d lubelogger
 | 
			
		||||
    chmod 700 /opt/lubelogger/CarCareTracker
 | 
			
		||||
    cp -rf /tmp/lubeloggerData/* /opt/lubelogger/
 | 
			
		||||
    echo "${RELEASE}" >"/opt/${APP}_version.txt"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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}"
 | 
			
		||||
@@ -69,7 +69,7 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/meilisearch-ui
 | 
			
		||||
    mkdir -p /opt/meilisearch-ui
 | 
			
		||||
    curl -fsSL "https://github.com/riccox/meilisearch-ui/archive/refs/tags/${RELEASE_UI}.zip" -o $tmp_file
 | 
			
		||||
    unzip -q "$tmp_file" -d "$tmp_dir"
 | 
			
		||||
    $STD unzip "$tmp_file" -d "$tmp_dir"
 | 
			
		||||
    mv "$tmp_dir"/*/* /opt/meilisearch-ui/
 | 
			
		||||
    cd /opt/meilisearch-ui
 | 
			
		||||
    sed -i 's|const hash = execSync("git rev-parse HEAD").toString().trim();|const hash = "unknown";|' /opt/meilisearch-ui/vite.config.ts
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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}"
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    rm -rf myspeed_bak
 | 
			
		||||
    mv myspeed myspeed_bak
 | 
			
		||||
    curl -fsSL "https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip" -o $(basename "https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip")
 | 
			
		||||
    unzip -q MySpeed-$RELEASE.zip -d myspeed
 | 
			
		||||
    $STD unzip MySpeed-$RELEASE.zip -d myspeed
 | 
			
		||||
    cd myspeed
 | 
			
		||||
    $STD npm install
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    mv /opt/netbox/ /opt/netbox-backup
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q "v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "v${RELEASE}.zip"
 | 
			
		||||
    mv /opt/netbox-${RELEASE}/ /opt/netbox/
 | 
			
		||||
 | 
			
		||||
    cp -r /opt/netbox-backup/netbox/netbox/configuration.py /opt/netbox/netbox/netbox/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										64
									
								
								ct/oauth2-proxy.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								ct/oauth2-proxy.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: bvdberg01
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/oauth2-proxy/oauth2-proxy/
 | 
			
		||||
 | 
			
		||||
APP="oauth2-proxy"
 | 
			
		||||
var_tags="${var_tags:-os}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-512}"
 | 
			
		||||
var_disk="${var_disk:-3}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -d /opt/oauth2-proxy ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/oauth2-proxy/oauth2-proxy/releases/latest | jq -r .tag_name | sed 's/^v//')
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping ${APP} services"
 | 
			
		||||
    systemctl stop oauth2-proxy
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating $APP to ${RELEASE}"
 | 
			
		||||
    rm -f /opt/oauth2-proxy/oauth2-proxy
 | 
			
		||||
    curl -fsSL "https://github.com/oauth2-proxy/oauth2-proxy/releases/download/v${RELEASE}/oauth2-proxy-v${RELEASE}.linux-amd64.tar.gz" -o /opt/oauth2-proxy.tar.gz
 | 
			
		||||
    tar -xzf /opt/oauth2-proxy.tar.gz
 | 
			
		||||
    mv /opt/oauth2-proxy-v${RELEASE}.linux-amd64/oauth2-proxy /opt/oauth2-proxy
 | 
			
		||||
    systemctl start oauth2-proxy
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated ${APP} to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning up"
 | 
			
		||||
    rm -f "/opt/oauth2-proxy.tar.gz"
 | 
			
		||||
    rm -rf "/opt/oauth2-proxy-v${RELEASE}.linux-amd64"
 | 
			
		||||
    $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} Now you can modify /opt/oauth2-proxy/config.toml with your needed config.${CL}"
 | 
			
		||||
@@ -40,7 +40,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/paperless-ai /opt/paperless-ai_bak
 | 
			
		||||
    curl -fsSL "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    mv paperless-ai-${RELEASE} /opt/paperless-ai
 | 
			
		||||
    mkdir -p /opt/paperless-ai/data
 | 
			
		||||
    cp -a /opt/paperless-ai_bak/data/. /opt/paperless-ai/data/
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/partdb/ /opt/partdb-backup
 | 
			
		||||
    curl -fsSL "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q "v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "v${RELEASE}.zip"
 | 
			
		||||
    mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb
 | 
			
		||||
 | 
			
		||||
    cd /opt/partdb/
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,6 @@ function update_script() {
 | 
			
		||||
      php8.4 \
 | 
			
		||||
      php8.4-{gd,mysql,mbstring,bcmath,xml,curl,zip,intl,fpm} \
 | 
			
		||||
      libapache2-mod-php8.4
 | 
			
		||||
 | 
			
		||||
    msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
@@ -53,10 +52,13 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cp -r /opt/pelican-panel/.env /opt/
 | 
			
		||||
    SQLITE_INSTALL=$(ls /opt/pelican-panel/database/*.sqlite 1> /dev/null 2>&1 && echo "true" || echo "false")
 | 
			
		||||
    $SQLITE_INSTALL && cp -r /opt/pelican-panel/database/*.sqlite /opt/
 | 
			
		||||
    rm -rf * .*
 | 
			
		||||
    curl -fsSL "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz" -o $(basename "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz")
 | 
			
		||||
    tar -xzf "panel.tar.gz"
 | 
			
		||||
    mv /opt/.env /opt/pelican-panel/
 | 
			
		||||
    $SQLITE_INSTALL && mv /opt/*.sqlite /opt/pelican-panel/database/
 | 
			
		||||
    $STD composer install --no-dev --optimize-autoloader --no-interaction
 | 
			
		||||
    $STD php artisan p:environment:setup
 | 
			
		||||
    $STD php artisan view:clear
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								ct/petio.sh
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								ct/petio.sh
									
									
									
									
									
								
							@@ -19,20 +19,20 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/Petio ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Updating $APP"
 | 
			
		||||
    systemctl stop petio.service
 | 
			
		||||
    curl -fsSL https://petio.tv/releases/latest -o petio-latest.zip
 | 
			
		||||
    unzip petio-latest.zip -d /opt/Petio
 | 
			
		||||
    systemctl start petio.service
 | 
			
		||||
    msg_ok "Updated $APP"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/Petio ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Updating $APP"
 | 
			
		||||
  systemctl stop petio.service
 | 
			
		||||
  curl -fsSL https://petio.tv/releases/latest -o petio-latest.zip
 | 
			
		||||
  $STD unzip petio-latest.zip -d /opt/Petio
 | 
			
		||||
  systemctl start petio.service
 | 
			
		||||
  msg_ok "Updated $APP"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    $STD unzip ${RELEASE}.zip
 | 
			
		||||
    rm -rf "/opt/${APP}"
 | 
			
		||||
    mv ${APP}-${RELEASE:1} /opt/${APP}
 | 
			
		||||
    cd /opt/Pf2eTools
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/phpipam/ /opt/phpipam-backup
 | 
			
		||||
    curl -fsSL "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip" -o $(basename "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip")
 | 
			
		||||
    unzip -q "phpipam-v${RELEASE}.zip"
 | 
			
		||||
    $STD unzip "phpipam-v${RELEASE}.zip"
 | 
			
		||||
    cp /opt/phpipam-backup/config.php /opt/phpipam
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating Pingvin Share to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    cp -rf pingvin-share-${RELEASE}/* /opt/pingvin-share
 | 
			
		||||
    cd /opt/pingvin-share
 | 
			
		||||
    cd backend
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										111
									
								
								ct/pocketid.sh
									
									
									
									
									
								
							
							
						
						
									
										111
									
								
								ct/pocketid.sh
									
									
									
									
									
								
							@@ -20,63 +20,62 @@ 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/pocket-id ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/pocket-id/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
        msg_info "Updating $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Stopping $APP"
 | 
			
		||||
        systemctl stop pocketid-backend.service
 | 
			
		||||
        systemctl stop pocketid-frontend.service
 | 
			
		||||
        systemctl stop caddy.service
 | 
			
		||||
        msg_ok "Stopped $APP"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
        cd /opt
 | 
			
		||||
        cp -r /opt/pocket-id/backend/data /opt/data
 | 
			
		||||
        cp /opt/pocket-id/backend/.env /opt/backend.env
 | 
			
		||||
        cp /opt/pocket-id/frontend/.env /opt/frontend.env
 | 
			
		||||
        rm -r /opt/pocket-id
 | 
			
		||||
        curl -fsSL "https://github.com/pocket-id/pocket-id/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/pocket-id/pocket-id/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
        unzip -q v${RELEASE}.zip
 | 
			
		||||
        mv pocket-id-${RELEASE} /opt/pocket-id
 | 
			
		||||
        mv /opt/data /opt/pocket-id/backend/data
 | 
			
		||||
        mv /opt/backend.env /opt/pocket-id/backend/.env
 | 
			
		||||
        mv /opt/frontend.env /opt/pocket-id/frontend/.env
 | 
			
		||||
 | 
			
		||||
        cd /opt/pocket-id/backend/cmd
 | 
			
		||||
        go build -o ../pocket-id-backend
 | 
			
		||||
        cd ../../frontend
 | 
			
		||||
        npm install
 | 
			
		||||
        npm run build
 | 
			
		||||
        msg_ok "Updated $APP to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting $APP"
 | 
			
		||||
        systemctl start pocketid-backend.service
 | 
			
		||||
        systemctl start pocketid-frontend.service
 | 
			
		||||
        systemctl start caddy.service
 | 
			
		||||
        sleep 2
 | 
			
		||||
        msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
        # Cleaning up
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -f /opt/v${RELEASE}.zip
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Update Successful"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
  if [[ ! -d /opt/pocket-id ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/pocket-id/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
  if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    if [[ "$(cat /opt/${APP}_version.txt)" < "1.0.0" ]]; then
 | 
			
		||||
      msg_info "Migrating ${APP} to v${RELEASE}"
 | 
			
		||||
      systemctl -q disable --now pocketid-backend pocketid-frontend caddy
 | 
			
		||||
      mv /etc/caddy/Caddyfile ~/Caddyfile.bak
 | 
			
		||||
      $STD apt remove --purge caddy nodejs -y
 | 
			
		||||
      $STD apt autoremove -y
 | 
			
		||||
      rm /etc/apt/{keyrings/nodesource.gpg,sources.list.d/nodesource.list}
 | 
			
		||||
      rm -r /usr/local/go
 | 
			
		||||
      cp -r /opt/pocket-id/backend/data /opt/data
 | 
			
		||||
      cp /opt/pocket-id/backend/.env /opt/env
 | 
			
		||||
      sed -i -e 's/PUBLIC_//g' \
 | 
			
		||||
        -e '/^SQLITE_DB_PATH/d' \
 | 
			
		||||
        -e '/^POSTGRES/s/^/# /' \
 | 
			
		||||
        -e '/^UPLOAD_PATH/d' \
 | 
			
		||||
        -e 's/8080/1411/' /opt/env
 | 
			
		||||
      rm -r /opt/pocket-id
 | 
			
		||||
      rm /etc/systemd/system/pocketid-frontend.service
 | 
			
		||||
      BACKEND="/etc/systemd/system/pocketid-backend.service"
 | 
			
		||||
      sed -i -e 's/Backend/Service/' \
 | 
			
		||||
        -e 's/\/backend\|-backend//g' "$BACKEND"
 | 
			
		||||
      mv "$BACKEND" ${BACKEND//-backend/}
 | 
			
		||||
      systemctl daemon-reload
 | 
			
		||||
      systemctl -q enable pocketid
 | 
			
		||||
      mkdir /opt/pocket-id
 | 
			
		||||
      mv /opt/data /opt/pocket-id
 | 
			
		||||
      msg_ok "Migration complete. The reverse proxy port has been changed to 1411."
 | 
			
		||||
    else
 | 
			
		||||
      msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
      systemctl stop pocketid
 | 
			
		||||
      cp /opt/pocket-id/.env /opt/env
 | 
			
		||||
    fi
 | 
			
		||||
    curl -fsSL "https://github.com/pocket-id/pocket-id/releases/download/v${RELEASE}/pocket-id-linux-amd64" -o /opt/pocket-id/pocket-id
 | 
			
		||||
    chmod u+x /opt/pocket-id/pocket-id
 | 
			
		||||
    mv /opt/env /opt/pocket-id/.env
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting $APP"
 | 
			
		||||
    systemctl start pocketid
 | 
			
		||||
    msg_ok "Started $APP"
 | 
			
		||||
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Update Successful"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -85,6 +84,6 @@ description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Configure your reverse proxy to point to:${BGN} ${IP}:80${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Configure your reverse proxy to point to:${BGN} ${IP}:1411${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}https://{PUBLIC_URL}/login/setup${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -58,7 +58,6 @@ function update_script() {
 | 
			
		||||
  if [ "$UPD" == "2" ]; then
 | 
			
		||||
    msg_info "Installing Home Assistant Community Store (HACS)"
 | 
			
		||||
    $STD apt update
 | 
			
		||||
    $STD apt install unzip
 | 
			
		||||
    cd /var/lib/containers/storage/volumes/hass_config/_data
 | 
			
		||||
    $STD bash <(curl -fsSL https://get.hacs.xyz)
 | 
			
		||||
    msg_ok "Installed Home Assistant Community Store (HACS)"
 | 
			
		||||
@@ -110,4 +109,4 @@ description
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ function update_script() {
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    cp -f /opt/privatebin/cfg/conf.php /tmp/privatebin_conf.bak
 | 
			
		||||
    curl -fsSL "https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    $STD unzip ${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/privatebin/*
 | 
			
		||||
    mv PrivateBin-${RELEASE}/* /opt/privatebin/
 | 
			
		||||
    mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/projectsend/projectsend/releases/download/r${RELEASE}/projectsend-r${RELEASE}.zip" -o $(basename "https://github.com/projectsend/projectsend/releases/download/r${RELEASE}/projectsend-r${RELEASE}.zip")
 | 
			
		||||
    unzip -o -q "projectsend-r${RELEASE}.zip" -d projectsend
 | 
			
		||||
    $STD unzip -o "projectsend-r${RELEASE}.zip" -d projectsend
 | 
			
		||||
    chown -R www-data:www-data /opt/projectsend
 | 
			
		||||
    chmod -R 775 /opt/projectsend
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										70
									
								
								ct/pulse.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								ct/pulse.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: rcourtman
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://github.com/rcourtman/Pulse
 | 
			
		||||
 | 
			
		||||
APP="Pulse"
 | 
			
		||||
var_tags="${var_tags:-monitoring,proxmox}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-1024}"
 | 
			
		||||
var_disk="${var_disk:-4}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ -d /opt/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
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Pulse"
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    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
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Pulse to ${RELEASE}"
 | 
			
		||||
 | 
			
		||||
    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
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at ${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 it using the following URL:${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
 | 
			
		||||
 
 | 
			
		||||
@@ -20,38 +20,38 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/rdtc/ ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    msg_info "Stopping ${APP}"
 | 
			
		||||
    systemctl stop rdtc
 | 
			
		||||
    msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP}"
 | 
			
		||||
    if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then
 | 
			
		||||
        $STD apt-get remove --purge -y dotnet-sdk-8.0
 | 
			
		||||
        $STD apt-get install -y dotnet-sdk-9.0
 | 
			
		||||
    fi
 | 
			
		||||
    mkdir -p rdtc-backup
 | 
			
		||||
    cp -R /opt/rdtc/appsettings.json rdtc-backup/
 | 
			
		||||
    curl -fsSL "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip" -o $(basename "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip")
 | 
			
		||||
    unzip -oqq RealDebridClient.zip -d /opt/rdtc
 | 
			
		||||
    cp -R rdtc-backup/appsettings.json /opt/rdtc/
 | 
			
		||||
    msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting ${APP}"
 | 
			
		||||
    systemctl start rdtc
 | 
			
		||||
    msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -rf rdtc-backup RealDebridClient.zip
 | 
			
		||||
    msg_ok "Cleaned"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/rdtc/ ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  msg_info "Stopping ${APP}"
 | 
			
		||||
  systemctl stop rdtc
 | 
			
		||||
  msg_ok "Stopped ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Updating ${APP}"
 | 
			
		||||
  if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then
 | 
			
		||||
    $STD apt-get remove --purge -y dotnet-sdk-8.0
 | 
			
		||||
    $STD apt-get install -y dotnet-sdk-9.0
 | 
			
		||||
  fi
 | 
			
		||||
  mkdir -p rdtc-backup
 | 
			
		||||
  cp -R /opt/rdtc/appsettings.json rdtc-backup/
 | 
			
		||||
  curl -fsSL "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip" -o $(basename "https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip")
 | 
			
		||||
  $STD unzip -o RealDebridClient.zip -d /opt/rdtc
 | 
			
		||||
  cp -R rdtc-backup/appsettings.json /opt/rdtc/
 | 
			
		||||
  msg_ok "Updated ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Starting ${APP}"
 | 
			
		||||
  systemctl start rdtc
 | 
			
		||||
  msg_ok "Started ${APP}"
 | 
			
		||||
 | 
			
		||||
  msg_info "Cleaning Up"
 | 
			
		||||
  rm -rf rdtc-backup RealDebridClient.zip
 | 
			
		||||
  msg_ok "Cleaned"
 | 
			
		||||
  msg_ok "Updated Successfully"
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
        res_tmp=$(mktemp)
 | 
			
		||||
        rm -rf /opt/${APP}
 | 
			
		||||
        curl -fsSL "https://github.com/AmruthPillai/Reactive-Resume/archive/refs/tags/v${RELEASE}.zip" -O $res_tmp
 | 
			
		||||
        unzip -q $res_tmp
 | 
			
		||||
        $STD unzip $res_tmp
 | 
			
		||||
        mv ${APP}-${RELEASE}/ /opt/${APP}
 | 
			
		||||
        cd /opt/${APP}
 | 
			
		||||
        export PUPPETEER_SKIP_DOWNLOAD="true"
 | 
			
		||||
@@ -66,7 +66,7 @@ function update_script() {
 | 
			
		||||
        brwsr_tmp=$(mktemp)
 | 
			
		||||
        TAG=$(curl -fsSL https://api.github.com/repos/browserless/browserless/tags?per_page=1 | grep "name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
        curl -fsSL https://github.com/browserless/browserless/archive/refs/tags/v${TAG}.zip -O $brwsr_tmp
 | 
			
		||||
        unzip -q $brwsr_tmp
 | 
			
		||||
        $STD unzip $brwsr_tmp
 | 
			
		||||
        mv browserless-${TAG}/ /opt/browserless
 | 
			
		||||
        cd /opt/browserless
 | 
			
		||||
        $STD npm install
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,7 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  sed -i 's/^\([[:space:]]*limiter:\)[[:space:]]*true/\1 false/' /etc/searxng/settings.yml
 | 
			
		||||
  if cd /usr/local/searxng/searxng-src && git pull | grep -q 'Already up to date'; then
 | 
			
		||||
    msg_ok "There is currently no update available."
 | 
			
		||||
  fi
 | 
			
		||||
@@ -39,4 +40,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/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 "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
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ function update_script() {
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    curl -fsSL "https://github.com/silverbulletmd/silverbullet/releases/download/${RELEASE}/silverbullet-server-linux-x86_64.zip" -o $(basename "https://github.com/silverbulletmd/silverbullet/releases/download/${RELEASE}/silverbullet-server-linux-x86_64.zip")
 | 
			
		||||
    unzip -q silverbullet-server-linux-x86_64.zip
 | 
			
		||||
    $STD unzip silverbullet-server-linux-x86_64.zip
 | 
			
		||||
    mv silverbullet /opt/silverbullet/bin/
 | 
			
		||||
    chmod +x /opt/silverbullet/bin/silverbullet
 | 
			
		||||
    echo "${RELEASE}" >/opt/silverbullet/${APP}_version.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating $APP to v${RELEASE}"
 | 
			
		||||
    tmp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/slskd/slskd/releases/download/${RELEASE}/slskd-${RELEASE}-linux-x64.zip" -o $tmp_file
 | 
			
		||||
    unzip -q -oj $tmp_file slskd -d /opt/${APP}
 | 
			
		||||
    $STD unzip -oj $tmp_file slskd -d /opt/${APP}
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated $APP to v${RELEASE}"
 | 
			
		||||
 | 
			
		||||
@@ -55,7 +55,7 @@ function update_script() {
 | 
			
		||||
  cd /tmp
 | 
			
		||||
  rm -rf /opt/soularr
 | 
			
		||||
  curl -fsSL -o main.zip https://github.com/mrusse/soularr/archive/refs/heads/main.zip
 | 
			
		||||
  unzip -q main.zip
 | 
			
		||||
  $STD unzip main.zip
 | 
			
		||||
  mv soularr-main /opt/soularr
 | 
			
		||||
  cd /opt/soularr
 | 
			
		||||
  $STD pip install -r requirements.txt
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ function update_script() {
 | 
			
		||||
    rm -rf spoolman_bak
 | 
			
		||||
    mv spoolman spoolman_bak
 | 
			
		||||
    curl -fsSL "https://github.com/Donkie/Spoolman/releases/download/${RELEASE}/spoolman.zip" -o $(basename "https://github.com/Donkie/Spoolman/releases/download/${RELEASE}/spoolman.zip")
 | 
			
		||||
    unzip -q spoolman.zip -d spoolman
 | 
			
		||||
    $STD unzip spoolman.zip -d spoolman
 | 
			
		||||
    cd spoolman
 | 
			
		||||
    $STD pip3 install -r requirements.txt
 | 
			
		||||
    curl -fsSL "https://raw.githubusercontent.com/Donkie/Spoolman/master/.env.example" -o ".env"
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    cd /opt
 | 
			
		||||
    mv /opt/teddycloud /opt/teddycloud_bak
 | 
			
		||||
    curl -fsSL "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip" -o $(basename "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip")
 | 
			
		||||
    unzip -q -d /opt/teddycloud teddycloud.amd64.release_v${VERSION}.zip
 | 
			
		||||
    $STD unzip -d /opt/teddycloud teddycloud.amd64.release_v${VERSION}.zip
 | 
			
		||||
    cp -R /opt/teddycloud_bak/certs /opt/teddycloud_bak/config /opt/teddycloud_bak/data /opt/teddycloud
 | 
			
		||||
    echo "${VERSION}" >"/opt/${APP}_version.txt"
 | 
			
		||||
    msg_ok "Updated ${APP} to v${VERSION}"
 | 
			
		||||
 
 | 
			
		||||
@@ -26,6 +26,9 @@ function update_script() {
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v jq &>/dev/null; then
 | 
			
		||||
    $STD apt-get install -y jq
 | 
			
		||||
  fi
 | 
			
		||||
  if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
 | 
			
		||||
    msg_info "Installing Node.js 22"
 | 
			
		||||
    $STD apt-get purge -y nodejs
 | 
			
		||||
@@ -50,7 +53,7 @@ function update_script() {
 | 
			
		||||
    cp /opt/tianji/src/server/.env /opt/.env
 | 
			
		||||
    mv /opt/tianji /opt/tianji_bak
 | 
			
		||||
    curl -fsSL "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    mv tianji-${RELEASE} /opt/tianji
 | 
			
		||||
    cd tianji
 | 
			
		||||
    export NODE_OPTIONS="--max_old_space_size=4096"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								ct/umbrel.sh
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								ct/umbrel.sh
									
									
									
									
									
								
							@@ -1,40 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
 | 
			
		||||
# Copyright (c) 2021-2025 tteck
 | 
			
		||||
# Author: tteck (tteckster)
 | 
			
		||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
			
		||||
# Source: https://umbrel.com/
 | 
			
		||||
 | 
			
		||||
APP="Umbrel"
 | 
			
		||||
var_tags="${var_tags:-os}"
 | 
			
		||||
var_cpu="${var_cpu:-2}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-8}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    msg_info "Updating ${APP} LXC"
 | 
			
		||||
    $STD apt-get update
 | 
			
		||||
    $STD apt-get -y upgrade
 | 
			
		||||
    msg_ok "Updated ${APP} LXC"
 | 
			
		||||
    exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
build_container
 | 
			
		||||
description
 | 
			
		||||
 | 
			
		||||
msg_ok "Completed Successfully!\n"
 | 
			
		||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized! (manual reboot is required!)${CL}"
 | 
			
		||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 | 
			
		||||
@@ -35,7 +35,7 @@ function update_script() {
 | 
			
		||||
    mkdir -p /opt/logos
 | 
			
		||||
    mv /opt/wallos/db/wallos.db /opt/wallos.db
 | 
			
		||||
    mv /opt/wallos/images/uploads/logos /opt/logos/
 | 
			
		||||
    unzip -q v${RELEASE}.zip
 | 
			
		||||
    $STD unzip v${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/wallos
 | 
			
		||||
    mv Wallos-${RELEASE} /opt/wallos
 | 
			
		||||
    rm -rf /opt/wallos/db/wallos.empty.db
 | 
			
		||||
 
 | 
			
		||||
@@ -20,28 +20,28 @@ color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
    header_info
 | 
			
		||||
    check_container_storage
 | 
			
		||||
    check_container_resources
 | 
			
		||||
    if [[ ! -d /opt/wastebin ]]; then
 | 
			
		||||
        msg_error "No ${APP} Installation Found!"
 | 
			
		||||
        exit
 | 
			
		||||
    fi
 | 
			
		||||
    RELEASE=$(curl -fsSL https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
    # Dirty-Fix 03/2025 for missing APP_version.txt on old installations, set to pre-latest release
 | 
			
		||||
    msg_info "Running Migration"
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
        echo "2.7.1" >/opt/${APP}_version.txt
 | 
			
		||||
        mkdir -p /opt/wastebin-data
 | 
			
		||||
        cat <<EOF >/opt/wastebin-data/.env
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
  if [[ ! -d /opt/wastebin ]]; then
 | 
			
		||||
    msg_error "No ${APP} Installation Found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
 | 
			
		||||
  # Dirty-Fix 03/2025 for missing APP_version.txt on old installations, set to pre-latest release
 | 
			
		||||
  msg_info "Running Migration"
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]]; then
 | 
			
		||||
    echo "2.7.1" >/opt/${APP}_version.txt
 | 
			
		||||
    mkdir -p /opt/wastebin-data
 | 
			
		||||
    cat <<EOF >/opt/wastebin-data/.env
 | 
			
		||||
WASTEBIN_DATABASE_PATH=/opt/wastebin-data/wastebin.db
 | 
			
		||||
WASTEBIN_CACHE_SIZE=1024
 | 
			
		||||
WASTEBIN_HTTP_TIMEOUT=30
 | 
			
		||||
WASTEBIN_SIGNING_KEY=$(openssl rand -hex 32)
 | 
			
		||||
WASTEBIN_PASTE_EXPIRATIONS=0,600,3600=d,86400,604800,2419200,29030400
 | 
			
		||||
EOF
 | 
			
		||||
        systemctl stop wastebin
 | 
			
		||||
        cat <<EOF >/etc/systemd/system/wastebin.service
 | 
			
		||||
    systemctl stop wastebin
 | 
			
		||||
    cat <<EOF >/etc/systemd/system/wastebin.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Wastebin Service
 | 
			
		||||
After=network.target
 | 
			
		||||
@@ -54,35 +54,35 @@ EnvironmentFile=/opt/wastebin-data/.env
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
        systemctl daemon-reload
 | 
			
		||||
    fi
 | 
			
		||||
    msg_ok "Migration Done"
 | 
			
		||||
    if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
        msg_info "Stopping Wastebin"
 | 
			
		||||
        systemctl stop wastebin
 | 
			
		||||
        msg_ok "Wastebin Stopped"
 | 
			
		||||
    systemctl daemon-reload
 | 
			
		||||
  fi
 | 
			
		||||
  msg_ok "Migration Done"
 | 
			
		||||
  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
 | 
			
		||||
    msg_info "Stopping Wastebin"
 | 
			
		||||
    systemctl stop wastebin
 | 
			
		||||
    msg_ok "Wastebin Stopped"
 | 
			
		||||
 | 
			
		||||
        msg_info "Updating Wastebin"
 | 
			
		||||
        temp_file=$(mktemp)
 | 
			
		||||
curl -fsSL "https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.zip" -o "$temp_file"
 | 
			
		||||
        unzip -o -q $temp_file
 | 
			
		||||
        cp -f wastebin /opt/wastebin/
 | 
			
		||||
        chmod +x /opt/wastebin/wastebin
 | 
			
		||||
        echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
        msg_ok "Updated Wastebin"
 | 
			
		||||
    msg_info "Updating Wastebin"
 | 
			
		||||
    temp_file=$(mktemp)
 | 
			
		||||
    curl -fsSL "https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst" -o "$temp_file"
 | 
			
		||||
    tar -xf $temp_file
 | 
			
		||||
    cp -f wastebin /opt/wastebin/
 | 
			
		||||
    chmod +x /opt/wastebin/wastebin
 | 
			
		||||
    echo "${RELEASE}" >/opt/${APP}_version.txt
 | 
			
		||||
    msg_ok "Updated Wastebin"
 | 
			
		||||
 | 
			
		||||
        msg_info "Starting Wastebin"
 | 
			
		||||
        systemctl start wastebin
 | 
			
		||||
        msg_ok "Started Wastebin"
 | 
			
		||||
    msg_info "Starting Wastebin"
 | 
			
		||||
    systemctl start wastebin
 | 
			
		||||
    msg_ok "Started Wastebin"
 | 
			
		||||
 | 
			
		||||
        msg_info "Cleaning Up"
 | 
			
		||||
        rm -f $temp_file
 | 
			
		||||
        msg_ok "Cleanup Completed"
 | 
			
		||||
        msg_ok "Updated Successfully"
 | 
			
		||||
    else
 | 
			
		||||
        msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
    fi
 | 
			
		||||
    exit
 | 
			
		||||
    msg_info "Cleaning Up"
 | 
			
		||||
    rm -f $temp_file
 | 
			
		||||
    msg_ok "Cleanup Completed"
 | 
			
		||||
    msg_ok "Updated Successfully"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "No update required. ${APP} is already at v${RELEASE}"
 | 
			
		||||
  fi
 | 
			
		||||
  exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start
 | 
			
		||||
@@ -92,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}:8088${CL}"
 | 
			
		||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8088${CL}"
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ function update_script() {
 | 
			
		||||
      cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js
 | 
			
		||||
    fi
 | 
			
		||||
    curl -fsSL "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    $STD unzip ${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/wavelog
 | 
			
		||||
    mv wavelog-${RELEASE}/ /opt/wavelog
 | 
			
		||||
    rm -rf /opt/wavelog/install
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to v${RELEASE}"
 | 
			
		||||
    cd /opt
 | 
			
		||||
    curl -fsSL "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip" -o $(basename "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip")
 | 
			
		||||
    unzip -q ${RELEASE}.zip
 | 
			
		||||
    $STD unzip ${RELEASE}.zip
 | 
			
		||||
    rm -rf /opt/zigbee2mqtt
 | 
			
		||||
    mv zigbee2mqtt-${RELEASE} /opt/zigbee2mqtt
 | 
			
		||||
    rm -rf /opt/zigbee2mqtt/data
 | 
			
		||||
 
 | 
			
		||||
@@ -41,9 +41,11 @@ function update_script() {
 | 
			
		||||
    msg_info "Updating ${APP} to ${RELEASE}"
 | 
			
		||||
    cp /opt/zipline/.env /opt/
 | 
			
		||||
    mkdir -p /opt/zipline-upload
 | 
			
		||||
    cp -R /opt/zipline/upload/* /opt/zipline-upload/
 | 
			
		||||
    if [ -d /opt/zipline/upload ] && [ "$(ls -A /opt/zipline/upload)" ]; then
 | 
			
		||||
      cp -R /opt/zipline/upload/* /opt/zipline-upload/
 | 
			
		||||
    fi
 | 
			
		||||
    curl -fsSL "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip")
 | 
			
		||||
    unzip -q v"${RELEASE}".zip
 | 
			
		||||
    $STD unzip v"${RELEASE}".zip
 | 
			
		||||
    rm -R /opt/zipline
 | 
			
		||||
    mv zipline-"${RELEASE}" /opt/zipline
 | 
			
		||||
    cd /opt/zipline
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										59
									
								
								ct/zot-registry.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								ct/zot-registry.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
#!/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://zotregistry.dev/
 | 
			
		||||
 | 
			
		||||
APP="Zot-Registry"
 | 
			
		||||
var_tags="${var_tags:-registry;oci}"
 | 
			
		||||
var_cpu="${var_cpu:-1}"
 | 
			
		||||
var_ram="${var_ram:-2048}"
 | 
			
		||||
var_disk="${var_disk:-5}"
 | 
			
		||||
var_os="${var_os:-debian}"
 | 
			
		||||
var_version="${var_version:-12}"
 | 
			
		||||
var_unprivileged="${var_unprivileged:-1}"
 | 
			
		||||
 | 
			
		||||
header_info "$APP"
 | 
			
		||||
variables
 | 
			
		||||
color
 | 
			
		||||
catch_errors
 | 
			
		||||
 | 
			
		||||
function update_script() {
 | 
			
		||||
  header_info
 | 
			
		||||
  check_container_storage
 | 
			
		||||
  check_container_resources
 | 
			
		||||
 | 
			
		||||
  if [[ ! -f /usr/bin/zot ]]; then
 | 
			
		||||
    msg_error "No ${APP} installation found!"
 | 
			
		||||
    exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  RELEASE=$(curl -fsSL https://api.github.com/repos/project-zot/zot/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}')
 | 
			
		||||
  if [[ ! -f ~/.${APP} ]] || [[ "${RELEASE}" != "$(cat ~/.${APP})" ]]; then
 | 
			
		||||
    msg_info "Stopping Zot service"
 | 
			
		||||
    systemctl stop zot
 | 
			
		||||
    msg_ok "Stopped Zot service"
 | 
			
		||||
 | 
			
		||||
    msg_info "Updating Zot to ${RELEASE}"
 | 
			
		||||
    curl -fsSL "https://github.com/project-zot/zot/releases/download/${RELEASE}/zot-linux-amd64" -o /usr/bin/zot
 | 
			
		||||
    chmod +x /usr/bin/zot
 | 
			
		||||
    chown root:root /usr/bin/zot
 | 
			
		||||
    echo "${RELEASE}" >~/.${APP}
 | 
			
		||||
    systemctl restart zot
 | 
			
		||||
    msg_ok "Updated Zot to ${RELEASE}"
 | 
			
		||||
  else
 | 
			
		||||
    msg_ok "Zot is already up to date (${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}"
 | 
			
		||||
@@ -37,7 +37,7 @@ function update_script() {
 | 
			
		||||
    rm -rf /opt/zwave-js-ui/*
 | 
			
		||||
    cd /opt/zwave-js-ui
 | 
			
		||||
    curl -fsSL "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip" -o $(basename "https://github.com/zwave-js/zwave-js-ui/releases/download/${RELEASE}/zwave-js-ui-${RELEASE}-linux.zip")
 | 
			
		||||
    unzip -q zwave-js-ui-${RELEASE}-linux.zip
 | 
			
		||||
    $STD unzip zwave-js-ui-${RELEASE}-linux.zip
 | 
			
		||||
    msg_ok "Updated Z-Wave JS UI"
 | 
			
		||||
 | 
			
		||||
    msg_info "Starting Service"
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 120 KiB  | 
@@ -1,23 +1,23 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Proxmox VE LXC IP-Tag",
 | 
			
		||||
  "slug": "add-lxc-iptag",
 | 
			
		||||
  "slug": "add-iptag",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    1
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2024-12-16",
 | 
			
		||||
  "date_created": "2025-06-16",
 | 
			
		||||
  "type": "pve",
 | 
			
		||||
  "updateable": false,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": null,
 | 
			
		||||
  "documentation": null,
 | 
			
		||||
  "website": null,
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
 | 
			
		||||
  "config_path": "/opt/lxc-iptag/iptag.conf",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/proxmox.svg",
 | 
			
		||||
  "config_path": "",
 | 
			
		||||
  "description": "This script automatically adds IP address as tags to LXC containers using a Systemd service. The service also updates the tags if a LXC IP address is changed.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "tools/pve/add-lxc-iptag.sh",
 | 
			
		||||
      "script": "tools/pve/add-iptag.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": null,
 | 
			
		||||
        "ram": null,
 | 
			
		||||
@@ -36,6 +36,10 @@
 | 
			
		||||
      "text": "Execute within the Proxmox shell",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Configuration: `nano /opt/iptag/iptag.conf`. iptag.service must be restarted after change.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`",
 | 
			
		||||
      "type": "warning"
 | 
			
		||||
@@ -35,6 +35,10 @@
 | 
			
		||||
    {
 | 
			
		||||
      "text": "AdventureLog uses an initial local IP, if you change your LXC-IP, you need to change the IP here: `/opt/adventurelog/backend/server/.env` and here: `/opt/adventurelog/frontend/.env`",
 | 
			
		||||
      "type": "warning"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "text": "Use `cat ~/adventurelog.creds` to see login credentials.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Alpine-tinyauth",
 | 
			
		||||
  "name": "Alpine-Tinyauth",
 | 
			
		||||
  "slug": "alpine-tinyauth",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    6
 | 
			
		||||
@@ -9,11 +9,11 @@
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": "https://tinyauth.app/docs/getting-started.html",
 | 
			
		||||
  "website": "https://tinyauth.app/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tinyauth.webp",
 | 
			
		||||
  "documentation": "https://tinyauth.app",
 | 
			
		||||
  "config_path": "/opt/tinyauth/.env",
 | 
			
		||||
  "description": "Tinyauth is a simple authentication middleware that adds simple username/password login or OAuth with Google, Github and any generic provider to all of your docker apps. It is designed for traefik but it can be extended to work with all reverse proxies like caddy and nginx.",
 | 
			
		||||
  "website": "https://tinyauth.app",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tinyauth.webp",
 | 
			
		||||
  "description": "Tinyauth is a simple authentication middleware that adds simple username/password login or OAuth with Google, Github and any generic provider to all of your docker apps.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 256,
 | 
			
		||||
        "hdd": 3,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "alpine",
 | 
			
		||||
        "version": "3.21"
 | 
			
		||||
      }
 | 
			
		||||
@@ -32,7 +32,7 @@
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 256,
 | 
			
		||||
        "hdd": 3,
 | 
			
		||||
        "hdd": 2,
 | 
			
		||||
        "os": "alpine",
 | 
			
		||||
        "version": "3.21"
 | 
			
		||||
      }
 | 
			
		||||
@@ -44,8 +44,8 @@
 | 
			
		||||
  },
 | 
			
		||||
  "notes": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "info",
 | 
			
		||||
      "text": "`cat ~/tinyauth.creds` to view login credentials"
 | 
			
		||||
      "text": "The default credentials are located in `/opt/tinyauth/credentials.txt`.",
 | 
			
		||||
      "type": "info"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								frontend/public/json/argus.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								frontend/public/json/argus.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Argus",
 | 
			
		||||
  "slug": "argus",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    11
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-05-26",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 3000,
 | 
			
		||||
  "documentation": "https://release-argus.io/docs/overview/",
 | 
			
		||||
  "website": "https://release-argus.io/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/argus.webp",
 | 
			
		||||
  "config_path": "/opt/argus/config.yml",
 | 
			
		||||
  "description": "Argus will query websites at a user defined interval for new software releases and then trigger Gotify/Slack/Other notification(s) and/or WebHook(s) when one has been found. For example, you could set it to monitor the Argus repo (release-argus/argus). This will query the GitHub API and track the tag_name variable. When this variable changes from what it was on a previous query, a GitHub-style WebHook could be sent that triggers something (like AWX) to update Argus on your server.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/argus.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 1,
 | 
			
		||||
        "ram": 256,
 | 
			
		||||
        "hdd": 3,
 | 
			
		||||
        "os": "debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 9091,
 | 
			
		||||
  "interface_port": 443,
 | 
			
		||||
  "documentation": "https://www.authelia.com/integration/deployment/bare-metal/",
 | 
			
		||||
  "website": "https://www.authelia.com/",
 | 
			
		||||
  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/authelia.webp",
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user