mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-12-14 19:23:32 +01:00
Compare commits
1083 Commits
2025-05-03
...
2025-07-08
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b7036ae58 | |||
| 4412b39d21 | |||
| 0faf06f4e2 | |||
| 0b300fb9ab | |||
| 08b89eb285 | |||
| 9cbcf4435a | |||
| e4252a58ee | |||
| 08eb914e3c | |||
| 000b7d4a85 | |||
| bb33002c2a | |||
| 7bafa864d0 | |||
| 396e0c6523 | |||
| 1530e52108 | |||
| 451f6aff8e | |||
| 046acc75db | |||
| f40218aa07 | |||
| c5e831dadc | |||
| 16786a8304 | |||
| fc728bcca7 | |||
| 5516aa493d | |||
| 54f2f98193 | |||
| 137a41f67c | |||
| 26365561dc | |||
| 9dc0fc80b9 | |||
| 722f7e14d7 | |||
| b2a8a9bd00 | |||
| 12bd6754ab | |||
| 74166f97f9 | |||
| b2bccd9501 | |||
| c567b75aa7 | |||
| 2d77790b64 | |||
| 37d466103d | |||
| d59aa0527a | |||
| 9ddf10f82e | |||
| 69d2835c73 | |||
| 59f99a27d2 | |||
| 372b52f64d | |||
| 2586c9f385 | |||
| 5c5d5d52ce | |||
| c2a7e990bd | |||
| 3847442ca5 | |||
| 6996111473 | |||
| 3336f6a6f5 | |||
| be6a63cd03 | |||
| 160846e98b | |||
| e63128625e | |||
| e58ad9237a | |||
| 2ce64b5004 | |||
| 9893379eef | |||
| 9ae95d1eb5 | |||
| 8a178b6f45 | |||
| f0b645c894 | |||
| 2be5d83a6d | |||
| fafb7501c5 | |||
| 4bac3063da | |||
| 29d3015314 | |||
| 4d2fcb2c66 | |||
| ca6b1a95dd | |||
| 14cb9f097d | |||
| 4d4726ccbe | |||
| 3ce5893fe3 | |||
| 993b01fa83 | |||
| 5c4abb6d1d | |||
| 06ec9593da | |||
| ace106051b | |||
| e2396f6667 | |||
| 067b3c2f02 | |||
| 73f1c261ab | |||
| 2cbf0f744f | |||
| a6517f4d7e | |||
| e492a9b5d9 | |||
| 5e7eb4ae3a | |||
| 1a8a34b533 | |||
| c38b4c2ef3 | |||
| 679699e6af | |||
| 32a724ac8a | |||
| 798a7b323e | |||
| f1eda9a270 | |||
| 5eaee5054f | |||
| e140631760 | |||
| ae24b56c61 | |||
| cb7d58b9b0 | |||
| 115b21f729 | |||
| 9072459066 | |||
| c2f9737435 | |||
| e5bea1f49a | |||
| f7e9fbc473 | |||
| 66a5730288 | |||
| 1cefb1b842 | |||
| 16ac51b551 | |||
| 28ed2da95f | |||
| 0c98308b60 | |||
| 9128b9dd12 | |||
| 301a23e5f4 | |||
| 2b848ff1d8 | |||
| 3d69931675 | |||
| 3e504cf48f | |||
| d2cbfcd69a | |||
| ebfb6a4e34 | |||
| 7403470bd7 | |||
| af9475d280 | |||
| 8882a17b6f | |||
| 32d6194ade | |||
| 569089cb73 | |||
| f494e68016 | |||
| 7561e26c0a | |||
| a95be13c95 | |||
| 9ab50d4248 | |||
| f5be1d270a | |||
| 524a2a422d | |||
| 45fbc30cc5 | |||
| f8c1d7bde8 | |||
| 9b8657fbb3 | |||
| f68f19aa3d | |||
| 85758f8b91 | |||
| e981c42517 | |||
| 7d6ac73153 | |||
| aad2dd6232 | |||
| cb24880115 | |||
| 0e87c4fe34 | |||
| 438eddbde1 | |||
| 729895e2ed | |||
| 3371529cce | |||
| 1ac1aadbe3 | |||
| 10127650fa | |||
| 3533c896a3 | |||
| ee6f07b31a | |||
| 5ac4818030 | |||
| c293b058c0 | |||
| cadeee4deb | |||
| f401c7cc4c | |||
| a3ea46701c | |||
| 009178a3dc | |||
| 38e8b70873 | |||
| 31cda26096 | |||
| e16aac7a83 | |||
| 2a52baf57e | |||
| 28d3297d66 | |||
| 4784d76d49 | |||
| 8ef7efaf79 | |||
| 736802af76 | |||
| 8fee28b690 | |||
| c8682d5f81 | |||
| ef571559d6 | |||
| 16c48fa41a | |||
| 710c1fd58c | |||
| 21f7276c4f | |||
| bf05f4be95 | |||
| be01124d1a | |||
| 8a91b87f4c | |||
| 020a4b3597 | |||
| f93c568758 | |||
| d9d4444f08 | |||
| 400a82e2cc | |||
| 35a0d14110 | |||
| a78dd20a2e | |||
| 4af08a5c45 | |||
| 2959d37b65 | |||
| 3275136db7 | |||
| c4c974a01d | |||
| 4fe05d09a2 | |||
| 7b5dd6cd69 | |||
| 28c779ef86 | |||
| 8c1dac0583 | |||
| 2db514f666 | |||
| 0232dbd89d | |||
| 70f43cb904 | |||
| 05e06d0782 | |||
| 89c39783b4 | |||
| 3f3278b022 | |||
| bda9f482c1 | |||
| 7292dbb8c6 | |||
| 2bdf85db39 | |||
| 546bff56fa | |||
| 1896f2db0f | |||
| e47828f0a4 | |||
| c511f7d9e5 | |||
| a106e7e358 | |||
| 254f2b894d | |||
| 733251a0a2 | |||
| bcfa05db47 | |||
| 5313f00edb | |||
| f83bfd1598 | |||
| fd27524479 | |||
| 8155fea034 | |||
| c853054067 | |||
| a80ec39740 | |||
| bb33d00829 | |||
| be64a6700d | |||
| 247bc549e8 | |||
| b26c5c9354 | |||
| 5e5c79ef29 | |||
| 4db81b8c41 | |||
| 0b97f26b13 | |||
| f2a21617f7 | |||
| ed618b7144 | |||
| 1ec71332bf | |||
| 5696dffd02 | |||
| 1e93f131d2 | |||
| 022f88c30a | |||
| b661f3cbcc | |||
| 9b97e4974a | |||
| e2b36b540f | |||
| 983a09c5db | |||
| f605085021 | |||
| 4a3b15ae0e | |||
| 0fd5f366b3 | |||
| dd5b3cd1b9 | |||
| 2b55f82aab | |||
| 87c6f87faf | |||
| caad96f25a | |||
| 8e7978713f | |||
| 1e05867b4c | |||
| 43dfe6dc33 | |||
| 179812e55f | |||
| d09cf45a3c | |||
| e609868619 | |||
| 692ac62add | |||
| 216cc7e5c3 | |||
| bcc113406a | |||
| 0067075ed1 | |||
| d60911a063 | |||
| abad754f61 | |||
| a632d315ab | |||
| 520bae01d6 | |||
| 7057fba151 | |||
| e24ca6472c | |||
| 028feb363f | |||
| 491b341fdf | |||
| db77e42a50 | |||
| cf3f790f03 | |||
| a0da56997c | |||
| c000235d81 | |||
| 578d8067dc | |||
| 03d2a76ff1 | |||
| 650a5f5df5 | |||
| 5130cc6bc9 | |||
| 7ebe0139c2 | |||
| 08da826302 | |||
| d94c7b846c | |||
| 97a1c64fad | |||
| 4b8e1e9015 | |||
| c2b5747718 | |||
| d31fd08d69 | |||
| e6230de022 | |||
| db7aaa3158 | |||
| af1f22a4d6 | |||
| 4cc3a87b0e | |||
| db2671ed95 | |||
| 0a72c81ea5 | |||
| dfd612480c | |||
| 64397b16c5 | |||
| bd49471ebc | |||
| 7289c68399 | |||
| 4a5ddc8410 | |||
| 93808fbd75 | |||
| 24394a0947 | |||
| 4676eb616c | |||
| e9ae558c25 | |||
| afee37794b | |||
| 72e7bda418 | |||
| 69e14c8fca | |||
| 6394c0cf17 | |||
| d1deffb235 | |||
| ac885f8adb | |||
| 8d91a5df5f | |||
| 5ad9323944 | |||
| 559bf61c31 | |||
| 3a391c34fc | |||
| 332a96ea03 | |||
| 454c574d38 | |||
| 2512c828e7 | |||
| a99ecb60ef | |||
| 24f22dfecc | |||
| 8521e2389b | |||
| ea60b9b5e4 | |||
| c5cb6b2ade | |||
| 81eb020430 | |||
| 73f1816e49 | |||
| d0f0efca37 | |||
| 1697ffa752 | |||
| 8130b83328 | |||
| b384a387c3 | |||
| 8fd491460a | |||
| f86f90b2e0 | |||
| 00575130f5 | |||
| 2a873d974c | |||
| 439fdbf071 | |||
| 8ccf3de8f7 | |||
| 5fc126b61c | |||
| c75af3a750 | |||
| 5c768b54c0 | |||
| e8848c1641 | |||
| 24c90699e6 | |||
| e6ab47f341 | |||
| f63a1d89a3 | |||
| 0c1aaedf6b | |||
| 5b35d537a8 | |||
| 1d06016ae1 | |||
| 15b36b4d16 | |||
| 6a285e1e19 | |||
| f60d132b20 | |||
| d73bc95d4a | |||
| 2faeb5255c | |||
| b4c6f28e4e | |||
| d95bfdb7dc | |||
| 99a0fb727b | |||
| 0efa83ff48 | |||
| 66ab254fb2 | |||
| daad486c5e | |||
| e11fb287f1 | |||
| b889909d65 | |||
| 454a272cad | |||
| 7e7d610182 | |||
| 7302d43e7e | |||
| 3d4bcb8081 | |||
| a0f18fd0f7 | |||
| dc3113c57b | |||
| c09606db69 | |||
| 7b90b0624e | |||
| 342722b10a | |||
| 22964f4898 | |||
| a8b3244f92 | |||
| a1aee90f72 | |||
| 09dbc22728 | |||
| 9559a1b3f7 | |||
| 2f0bff4e42 | |||
| ea8586d4b5 | |||
| 33bb4fd9e0 | |||
| 5cf8765d9a | |||
| b6a98288cc | |||
| 89cfb38459 | |||
| 82179752ee | |||
| d495095d21 | |||
| 6cc901eba6 | |||
| 75b6aa9dac | |||
| aab85ab654 | |||
| 5e87af5e8f | |||
| 8bd6d89bff | |||
| ddf3019021 | |||
| ef871c44ff | |||
| 5fcc97142f | |||
| c6cbb495d2 | |||
| cd84cf974c | |||
| a2b8a87cc4 | |||
| c684472cb4 | |||
| 930e4bd556 | |||
| c6c03d4728 | |||
| e024099beb | |||
| 08648aca15 | |||
| 70a1cfbe28 | |||
| 3d99d74685 | |||
| 6cc090b693 | |||
| a8deff54d8 | |||
| e33cf652a1 | |||
| b35eadfc36 | |||
| 74a073e8bd | |||
| ce9c1e63a8 | |||
| 25f6245d31 | |||
| 074d6fa31b | |||
| 8dfacb9e7d | |||
| 12a6055ea3 | |||
| 637f9a1f44 | |||
| a7ed02160b | |||
| 03551e23e4 | |||
| 1f7d85ac60 | |||
| 4e46fd739d | |||
| ea5eca83fe | |||
| b49b902d64 | |||
| f81f7fb1c0 | |||
| bcdeeaafb3 | |||
| 92f631b628 | |||
| 9133782289 | |||
| e343c7b5aa | |||
| 3e47e39633 | |||
| 43a90bf9e6 | |||
| cd45ccfb70 | |||
| b52cba817f | |||
| ac203f4e79 | |||
| b019991ee6 | |||
| 6bc17a0031 | |||
| 69d9394840 | |||
| ad8462bc10 | |||
| 39b18ea011 | |||
| 76c99518b1 | |||
| 8fb0a16568 | |||
| 9bbc0c90e3 | |||
| b5012c4225 | |||
| 204ec64f14 | |||
| 451608b445 | |||
| 94ad4f2e40 | |||
| 5db3d92286 | |||
| 796aaaa1d4 | |||
| 5042f6edb0 | |||
| 0c1fad54b6 | |||
| fe1df0b344 | |||
| 3ca014b757 | |||
| db7a13fced | |||
| ab1f4c1196 | |||
| 14ffff4c6a | |||
| bada204f64 | |||
| 1c42a2016e | |||
| 0cd347d3b6 | |||
| 63713c6489 | |||
| 49153887dc | |||
| c46d543c43 | |||
| dbd2af91b5 | |||
| 86183c638d | |||
| aec9af49a0 | |||
| 791eca99b9 | |||
| 4190582659 | |||
| 601e1853e9 | |||
| 14077eddcd | |||
| 2255600c3b | |||
| badd63d4a7 | |||
| 6c345af691 | |||
| 2f326ffb97 | |||
| e7bb270c34 | |||
| fc4a46b72d | |||
| a402b45b17 | |||
| 9ab2089d01 | |||
| 0dc533cb82 | |||
| 4351218f8b | |||
| 3ee4ece04d | |||
| a377640d16 | |||
| bece1c574f | |||
| e9afe958b1 | |||
| 93f9291d7c | |||
| 8f0751442d | |||
| 003422934a | |||
| c11636562c | |||
| 654508eb94 | |||
| acfb9d6ea1 | |||
| 0d56db2d3d | |||
| 4a1ae51446 | |||
| 6520b7f4d4 | |||
| 48da94f77a | |||
| 2ea372f034 | |||
| 5773459a39 | |||
| 40f083ea40 | |||
| 219a7853e1 | |||
| 6d1d903345 | |||
| ef9ca48477 | |||
| 8ac24981a6 | |||
| 7e046d830d | |||
| 1691fafcc1 | |||
| 4400cd2b97 | |||
| 795fe72768 | |||
| 6d7d15ce46 | |||
| a648b9abc4 | |||
| 4057fadfe0 | |||
| 9b700195e4 | |||
| 906a0a0fbc | |||
| 8df55a03f4 | |||
| 8241ed932d | |||
| 0b3c645ffb | |||
| 0c17402efc | |||
| ccad7a2cd8 | |||
| 15772d8802 | |||
| c7e0faa33b | |||
| 13b1c684ee | |||
| 5e649d7cb1 | |||
| ec8a8b1908 | |||
| d850dde4ef | |||
| fb4075ac12 | |||
| 8576463522 | |||
| 2a4353fa13 | |||
| d21cbf1d40 | |||
| e97c96d0bb | |||
| 04dab68e17 | |||
| b001687f5c | |||
| 9f26e25126 | |||
| 5671d8e957 | |||
| 0bf641f02c | |||
| 7fc39a442b | |||
| 6e1ee7d16e | |||
| 5ee48aba1e | |||
| e6c21811bb | |||
| 142fea21bd | |||
| df43101b4e | |||
| 3044a774c2 | |||
| 65e4c027b8 | |||
| dabfb57173 | |||
| 63dfc2bd7b | |||
| 89399ef421 | |||
| d9474c3dd6 | |||
| f5a5e4854c | |||
| 632e823749 | |||
| a128f3c43d | |||
| 9c90699ca2 | |||
| f6f6ca6bac | |||
| b6d0b1ae6a | |||
| 93906db2d1 | |||
| 4ab71ccf00 | |||
| e058badee6 | |||
| 74c6df5aa6 | |||
| c2484b7c60 | |||
| b064127323 | |||
| 138f90f09c | |||
| 84469e2b5b | |||
| a164d259e0 | |||
| 34aa360920 | |||
| f0dde5a42d | |||
| e0ccc1a0af | |||
| 4fa7483d8b | |||
| cd835c6791 | |||
| abf233c94f | |||
| edd4fb3cc2 | |||
| d97620a390 | |||
| c2c5159a2d | |||
| 46d9f85f5e | |||
| ba7ec5aa68 | |||
| dd4c556959 | |||
| 0e63437154 | |||
| 0769320146 | |||
| d6da26c640 | |||
| d9facc0e62 | |||
| 31e0b5fae3 | |||
| b0bd2f4804 | |||
| 3aefe199f7 | |||
| 677008c779 | |||
| b8ba409e5c | |||
| 7cf8300b47 | |||
| 77fb5ea516 | |||
| e92dfe1b2b | |||
| 61bfa16645 | |||
| 84c295a10b | |||
| ed834bf424 | |||
| b1f8992933 | |||
| 201f7c4651 | |||
| 2574e41ee8 | |||
| 2aeb7cf79a | |||
| 98c277f471 | |||
| 78a2201a93 | |||
| 2de03f5734 | |||
| c59f9f421c | |||
| 598acc2048 | |||
| 6e6b279b88 | |||
| 943a5f4d8f | |||
| 4efa882558 | |||
| eff985ca02 | |||
| ff239ff3cd | |||
| 45bb824101 | |||
| 1956c8740b | |||
| f6638b095d | |||
| 6a1738c52a | |||
| a9e3520df1 | |||
| 08230e9089 | |||
| a5c6984087 | |||
| 99174cb9c2 | |||
| 336e70f059 | |||
| ce8b9aa5b4 | |||
| 70d6815d91 | |||
| 75273e86b6 | |||
| 37a2f6a715 | |||
| 4b7c734b9a | |||
| 590db0d148 | |||
| 50ad6410d5 | |||
| 85b80bfb22 | |||
| 33e49b7556 | |||
| 0a6f7e6426 | |||
| 5fd5d78a2a | |||
| ab32878b63 | |||
| ee7090f271 | |||
| df6bd2a68a | |||
| e46e9a3372 | |||
| 6c08814cc5 | |||
| 4cca5062af | |||
| dc2b585e6b | |||
| cc4f5c4478 | |||
| 01ced07bff | |||
| 85e13c9ac5 | |||
| 1ac4b0c10f | |||
| 781471f37a | |||
| e2790814b8 | |||
| f5705621b2 | |||
| a28a4fd752 | |||
| b890fae808 | |||
| 8e88379c1b | |||
| b2307f1bb9 | |||
| db9ffe3105 | |||
| 2c1e101135 | |||
| a991908a37 | |||
| f0206a6252 | |||
| e8061a9f6e | |||
| 64c47bd335 | |||
| ec573be7e0 | |||
| 4e53abbd48 | |||
| 338d351c29 | |||
| 835893e589 | |||
| 1e81c11e74 | |||
| 27384ad89a | |||
| 27d3909df5 | |||
| 2e3f416242 | |||
| b91cbbcbe9 | |||
| 3f43cd5575 | |||
| 1564d4d6d3 | |||
| 077db6c52f | |||
| a0d2bece1d | |||
| 0178742308 | |||
| d2482e5c82 | |||
| 2400f98f75 | |||
| 176946bd45 | |||
| a25009bdb1 | |||
| 03eff3a2e1 | |||
| ff12d802cc | |||
| 02b753eb12 | |||
| c9eaaee0c0 | |||
| f154249dde | |||
| 9ef7274199 | |||
| e9477e7a07 | |||
| 1fcf9f9520 | |||
| bbe226218c | |||
| 8d38c1d724 | |||
| 1cac2afc41 | |||
| 644a365c69 | |||
| 9bd4f5bb1b | |||
| b2a80b6971 | |||
| 1e3d0e501b | |||
| 3aa1f05343 | |||
| 05c008241e | |||
| 91d8efcde0 | |||
| 16ac1adf75 | |||
| 805bbc5ee3 | |||
| 43697716ae | |||
| 623c8d993d | |||
| bf2545ce40 | |||
| dd9e285962 | |||
| 7f513afcf2 | |||
| 912c92d6f3 | |||
| a4904fdd7e | |||
| b4a58b907f | |||
| 824fd22aae | |||
| feacacc368 | |||
| a307f9086b | |||
| d97ce713ac | |||
| 807870e739 | |||
| 53c40775ee | |||
| bf9f5d62e2 | |||
| 6650e0bdd8 | |||
| f2bf6c9a6f | |||
| 8d50a5d8a9 | |||
| 4e3286f11b | |||
| e08a587439 | |||
| 6ee8349d28 | |||
| 87f6c9ebde | |||
| 6239075c2d | |||
| 04ee11aab7 | |||
| 60ae9bba5d | |||
| 85dd171b48 | |||
| a174177357 | |||
| 7afae35553 | |||
| 1a49970ae2 | |||
| a413750562 | |||
| 82707e1def | |||
| ac3d8c6b54 | |||
| 1fd24bd60d | |||
| fc780646d2 | |||
| 5f175b4f7b | |||
| afaeadd77e | |||
| 72c7abeb69 | |||
| 12723c33d0 | |||
| 7af6bf3fe7 | |||
| e56436d3f2 | |||
| 25de119cad | |||
| c8308da95e | |||
| 9923094a54 | |||
| 463cc62443 | |||
| 92227fb9bf | |||
| 18a9c524ae | |||
| d925ae0f04 | |||
| cb0d0bd83e | |||
| 9fcfb2fe49 | |||
| d23aa3fda0 | |||
| 131f83505c | |||
| 5a95a745ff | |||
| 809bc6c302 | |||
| 4fba20d80b | |||
| 42a7614d15 | |||
| 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 | |||
| 9de702c301 | |||
| a47d6efe41 | |||
| 36253b0045 | |||
| 34e7c33e05 | |||
| e0a47f0aa3 | |||
| bce10d447e | |||
| 0d9804fcfe | |||
| 3b7c63183b | |||
| 2d323d94ec | |||
| ab0ed91c4f | |||
| 31e99bc49b | |||
| 5b27942981 | |||
| 161bafa818 | |||
| a5241ef1c5 | |||
| bf3f7dc3b1 | |||
| 7264934136 | |||
| a0745de096 | |||
| 4f4ec7d477 | |||
| ba3de8d080 | |||
| 0f8932b125 | |||
| 348354079b | |||
| 48db08192a | |||
| b6f410e895 | |||
| 1221fec5ab | |||
| faa805547c | |||
| fe0ac37ff1 | |||
| eed391917c | |||
| 76da24386d | |||
| 8e7caf4cd9 | |||
| 7d3040ab76 | |||
| 6a3bf770fb | |||
| 6805b01df2 | |||
| 7520917dcc | |||
| ec186b0288 | |||
| c7afd9c427 | |||
| bd3b022b08 | |||
| 49fcd68f42 | |||
| 1382742c26 | |||
| 9e2441ff53 | |||
| 490dbc725e | |||
| d9201e2cac | |||
| 52c09646b2 | |||
| b5d70d5201 | |||
| 7089b9ef7b | |||
| 034d7df9cd | |||
| f41ac673a3 | |||
| a7382f9273 | |||
| cb1465544d | |||
| 796c31eae4 | |||
| 047c2c44d6 | |||
| 1baa841963 | |||
| 7d40ee4aa9 | |||
| f9a8925f64 | |||
| c62a0b149d | |||
| 513402b099 | |||
| a39354f8f3 | |||
| 3814e51d3f | |||
| 326f5e9151 | |||
| 1e2fda29b7 | |||
| 222db46cac | |||
| 9e8841ea7a | |||
| 24d612c9e7 | |||
| 3cfe253a3d | |||
| b7e951fc1a | |||
| f735e37b15 | |||
| 2c2e602eb1 | |||
| 37cd6a6620 | |||
| a386765e33 | |||
| d252e33e5c | |||
| 08992599a0 | |||
| 2a10eca156 | |||
| b4be96ff45 | |||
| 06156a5a20 | |||
| 5ccff37e3b | |||
| c5ca62ec38 | |||
| bc5fc031e7 | |||
| 4ead65f948 | |||
| b602416a7e | |||
| cb431da23b | |||
| 19ddb4b2b1 | |||
| 1378d55fae | |||
| 8f647b9abe | |||
| 8a481e1423 | |||
| 42ee79ac30 | |||
| 5a6dc35fe0 | |||
| 73c08a8c5e | |||
| 67feae778e | |||
| 7dd49d634e | |||
| 06191ca260 | |||
| 0118974ba7 | |||
| 22e5a54941 | |||
| ce7442bab7 | |||
| 54c522e39b | |||
| dfa08625e3 | |||
| f6d411b992 | |||
| 9359f6d883 | |||
| b021a2c139 | |||
| 4de228d41b | |||
| 7d2e8eaaad | |||
| ce69a571bc | |||
| 1fdda378ac | |||
| 7b62fd4866 | |||
| 0da24e2651 | |||
| fd689e94ed | |||
| 47155ac280 | |||
| aa57bac96d | |||
| 24d730c120 | |||
| de9ae6eaa9 | |||
| 4fd065a4bd | |||
| e26aac187b | |||
| 5e63b70e83 | |||
| 292ab6e54b | |||
| 7d924fac27 | |||
| 4b31957617 | |||
| 35c99ae503 | |||
| 62189321cc | |||
| 59dfdc9af6 | |||
| 19cf4d3dc2 | |||
| 369265a6d5 | |||
| 56f8306960 | |||
| 3daf3c3325 | |||
| c36000a6aa | |||
| 12265b92e7 | |||
| 4e31445038 | |||
| c30f96912d | |||
| e3860c065e | |||
| 110b64df85 | |||
| e17f7aa6f1 | |||
| b4d98b1dd2 | |||
| e24636133d | |||
| 7d0a964918 | |||
| 38c7e747bc | |||
| 180e003978 | |||
| 4762ea8fae | |||
| 4ec3af8e45 | |||
| b816ca6788 | |||
| d703a8abb2 | |||
| 4a1f87727b | |||
| 16c0d09d6b | |||
| 7740ab68f7 | |||
| cd61025295 | |||
| 2695e2de1a | |||
| 7aea03034a | |||
| e9960347bf | |||
| 3808d4d0b8 | |||
| 14c5bf5f75 | |||
| fcc16ae8e1 | |||
| aaf8bdb893 | |||
| db81851db4 | |||
| a2d92155a5 | |||
| 0bd18cc91b | |||
| 1e7981dbb7 | |||
| 704073cd69 | |||
| 22e1518951 | |||
| 57bd730233 | |||
| cf1b13e5fb | |||
| 9a3b2c076d | |||
| 3981cc90c4 | |||
| 592d9d03aa | |||
| 59b00890f9 | |||
| 7ee57e7416 | |||
| 82a30df0c9 | |||
| 10e1d7e741 | |||
| f85cddadcf | |||
| 1700291af7 | |||
| e126e48439 | |||
| b3bda56498 | |||
| e59f868966 | |||
| a9b53afcc5 | |||
| 38cf296a4c | |||
| 35c0d269ac | |||
| d7211e856e | |||
| dfbb1a8035 | |||
| 61b09e926a | |||
| 9140fd52ac | |||
| 4a3ee4db67 | |||
| b333d8c3f9 | |||
| 245b35d01e | |||
| 37d20ba0dd | |||
| b5062c51af | |||
| 1ea830c955 | |||
| be31ecf432 | |||
| c586dfe87f | |||
| 7f65be34ff | |||
| c158dbb3ea | |||
| 95acf8c018 | |||
| 6c5aa6677a | |||
| 43ff379ed4 | |||
| 2c2849179a | |||
| d116505ff2 | |||
| 42535e14ab | |||
| 990ce16a7d | |||
| af1cf0bc71 | |||
| e166115745 | |||
| bdef92cc71 | |||
| 1e59c934ec | |||
| 456b00882d | |||
| 9b8a30c84f | |||
| 3b90e3fe15 | |||
| 5e3a5bb24c | |||
| 7413a03009 | |||
| bb1c9d73c4 | |||
| 3b5a901832 | |||
| a62a4876ec | |||
| 9d21ceacc3 | |||
| c604aeb064 | |||
| 9b9ed2f6e1 | |||
| 1ddc74d2b5 | |||
| ee9f6dd818 | |||
| a1754dff4e | |||
| 4827a17ba3 | |||
| b5ed7b9f4e | |||
| ab9760194d | |||
| abb5b6d5ac | |||
| 4656fe21f9 | |||
| 93e503eb87 | |||
| 6ab80dc5e3 | |||
| ceaff9006a | |||
| c749fe6fb0 | |||
| 402586756f | |||
| 19800da808 | |||
| d62da0c982 | |||
| 41df1d5a76 | |||
| bcdf8f15e7 | |||
| 326cbc3bec | |||
| 607d966322 | |||
| 69298090ce | |||
| 9c7d50fdff | |||
| fabbe8fe59 | |||
| 6abb55ba86 | |||
| 9cddbbd986 | |||
| 31c7c9301c | |||
| c9aad3a54d | |||
| ebc17e120e | |||
| 1ebb1782fa | |||
| cce3ca1996 | |||
| eb6018ac01 | |||
| 3b54371d5c | |||
| 67cd29e9f2 | |||
| 0f4c14ff41 | |||
| 5d9795139e | |||
| 0bbbd5de10 | |||
| 8963d8dec9 | |||
| eeb7766f36 | |||
| e7d4630fa5 | |||
| 0f19440864 | |||
| d0a3510b96 | |||
| 0946b5220f | |||
| d5a64ee41c | |||
| 067d60978c | |||
| 4b89174542 | |||
| 0a2a1b4692 | |||
| 4d99838209 | |||
| 27ac2633c7 | |||
| 1bff7fe861 | |||
| a9c36a9417 | |||
| 8e26cd4d9d | |||
| 237c920893 | |||
| 354d95eb2d | |||
| e7f0f09dee | |||
| 093a1aacf6 | |||
| afbac8e2f0 | |||
| 17c3163a2a | |||
| f0a96b9a7b | |||
| e5766da56d | |||
| 0239abb126 | |||
| 06960d3023 | |||
| fd813b8936 | |||
| fa9c39f212 | |||
| 536c3d113d | |||
| 23281bdc0c | |||
| cc5d8e162b | |||
| 5c43513295 | |||
| 6c648f4b89 | |||
| 9f88b1b1fb | |||
| 0ea0f56e1b | |||
| bff0ab3d3d | |||
| 1f56a8cc6d | |||
| eaebc184b1 | |||
| b9594538ca | |||
| 8e56da691a | |||
| c9f739ae3b | |||
| 2ba1aaa383 | |||
| 4510e7b4d8 | |||
| 9f1bf85b42 | |||
| a2a528c294 | |||
| 15ec09d71c | |||
| 57a18aec76 | |||
| 8fa1743dd6 | |||
| 78bb1ee195 | |||
| 130031e4f9 |
BIN
.gitattributes
vendored
BIN
.gitattributes
vendored
Binary file not shown.
4
.github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.md
generated
vendored
4
.github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.md
generated
vendored
@ -5,10 +5,10 @@
|
|||||||
|
|
||||||
1) [adguard.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/adguard.sh): This script collects system parameters. (Also holds the function to update the application.)
|
1) [adguard.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/adguard.sh): This script collects system parameters. (Also holds the function to update the application.)
|
||||||
2) [build.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/build.func): Adds user settings and integrates collected information.
|
2) [build.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/build.func): Adds user settings and integrates collected information.
|
||||||
3) [create_lxc.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/create_lxc.sh): Constructs the LXC container.
|
3) [create_lxc.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/create_lxc.sh): Constructs the LXC container.
|
||||||
4) [adguard-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/install/adguard-install.sh): Executes functions from [install.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/install.func), and installs the application.
|
4) [adguard-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/install/adguard-install.sh): Executes functions from [install.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/install.func), and installs the application.
|
||||||
5) [adguard.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/adguard.sh) (again): To display the completion message.
|
5) [adguard.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/adguard.sh) (again): To display the completion message.
|
||||||
|
|
||||||
The installation process uses reusable scripts: [build.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/build.func), [create_lxc.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/ct/create_lxc.sh), and [install.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/install.func), which are not specific to any particular application.
|
The installation process uses reusable scripts: [build.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/build.func), [create_lxc.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/create_lxc.sh), and [install.func](https://github.com/community-scripts/ProxmoxVE/blob/main/misc/install.func), which are not specific to any particular application.
|
||||||
|
|
||||||
To gain a better understanding, focus on reviewing [adguard-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/install/adguard-install.sh). This script contains the commands and configurations for installing and configuring AdGuard Home within the LXC container.
|
To gain a better understanding, focus on reviewing [adguard-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/install/adguard-install.sh). This script contains the commands and configurations for installing and configuring AdGuard Home within the LXC container.
|
||||||
|
|||||||
14
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md
generated
vendored
14
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md
generated
vendored
@ -108,13 +108,13 @@ Example:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
APP="SnipeIT"
|
APP="SnipeIT"
|
||||||
var_tags="asset-management;foss"
|
var_tags="${var_tags:-asset-management;foss}"
|
||||||
var_cpu="2"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="2048"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="4"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="debian"
|
var_os="${var_os:-debian}"
|
||||||
var_version="12"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="1"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
```
|
```
|
||||||
|
|
||||||
## 2.2 **📋 App output & base settings**
|
## 2.2 **📋 App output & base settings**
|
||||||
|
|||||||
104
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh
generated
vendored
104
.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh
generated
vendored
@ -6,22 +6,22 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# Source: [SOURCE_URL]
|
# Source: [SOURCE_URL]
|
||||||
|
|
||||||
# App Default Values
|
# App Default Values
|
||||||
APP="[APP_NAME]"
|
|
||||||
# Name of the app (e.g. Google, Adventurelog, Apache-Guacamole"
|
# Name of the app (e.g. Google, Adventurelog, Apache-Guacamole"
|
||||||
var_tags="[TAGS]"
|
APP="[APP_NAME]"
|
||||||
# Tags for Proxmox VE, maximum 2 pcs., no spaces allowed, separated by a semicolon ; (e.g. database | adblock;dhcp)
|
# Tags for Proxmox VE, maximum 2 pcs., no spaces allowed, separated by a semicolon ; (e.g. database | adblock;dhcp)
|
||||||
var_cpu="[CPU]"
|
var_tags="${var_tags:-[TAGS]}"
|
||||||
# Number of cores (1-X) (e.g. 4) - default are 2
|
# Number of cores (1-X) (e.g. 4) - default are 2
|
||||||
var_ram="[RAM]"
|
var_cpu="${var_cpu:-[CPU]}"
|
||||||
# Amount of used RAM in MB (e.g. 2048 or 4096)
|
# Amount of used RAM in MB (e.g. 2048 or 4096)
|
||||||
var_disk="[DISK]"
|
var_ram="${var_ram:-[RAM]}"
|
||||||
# Amount of used disk space in GB (e.g. 4 or 10)
|
# Amount of used disk space in GB (e.g. 4 or 10)
|
||||||
var_os="[OS]"
|
var_disk="${var_disk:-[DISK]}"
|
||||||
# Default OS (e.g. debian, ubuntu, alpine)
|
# Default OS (e.g. debian, ubuntu, alpine)
|
||||||
var_version="[VERSION]"
|
var_os="${var_os:-[OS]}"
|
||||||
# Default OS version (e.g. 12 for debian, 24.04 for ubuntu, 3.20 for alpine)
|
# Default OS version (e.g. 12 for debian, 24.04 for ubuntu, 3.20 for alpine)
|
||||||
var_unprivileged="[UNPRIVILEGED]"
|
var_version="${var_version:-[VERSION]}"
|
||||||
# 1 = unprivileged container, 0 = privileged container
|
# 1 = unprivileged container, 0 = privileged container
|
||||||
|
var_unprivileged="${var_unprivileged:-[UNPRIVILEGED]}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
@ -29,51 +29,51 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
# Check if installation is present | -f for file, -d for folder
|
# Check if installation is present | -f for file, -d for folder
|
||||||
if [[ ! -f [INSTALLATION_CHECK_PATH] ]]; then
|
if [[ ! -f [INSTALLATION_CHECK_PATH] ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Crawling the new version and checking whether an update is required
|
|
||||||
RELEASE=$(curl -fsSL [RELEASE_URL] | [PARSE_RELEASE_COMMAND])
|
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
|
||||||
# Stopping Services
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop [SERVICE_NAME]
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
# Creating Backup
|
|
||||||
msg_info "Creating Backup"
|
|
||||||
tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" [IMPORTANT_PATHS]
|
|
||||||
msg_ok "Backup Created"
|
|
||||||
|
|
||||||
# Execute Update
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
|
||||||
[UPDATE_COMMANDS]
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
# Starting Services
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start [SERVICE_NAME]
|
|
||||||
msg_ok "Started $APP"
|
|
||||||
|
|
||||||
# Cleaning up
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf [TEMP_FILES]
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
# Last Action
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Crawling the new version and checking whether an update is required
|
||||||
|
RELEASE=$(curl -fsSL [RELEASE_URL] | [PARSE_RELEASE_COMMAND])
|
||||||
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
|
# Stopping Services
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop [SERVICE_NAME]
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
# Creating Backup
|
||||||
|
msg_info "Creating Backup"
|
||||||
|
tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" [IMPORTANT_PATHS]
|
||||||
|
msg_ok "Backup Created"
|
||||||
|
|
||||||
|
# Execute Update
|
||||||
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
|
[UPDATE_COMMANDS]
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
|
# Starting Services
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start [SERVICE_NAME]
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
# Cleaning up
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf [TEMP_FILES]
|
||||||
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
|
# Last Action
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@ -83,4 +83,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:[PORT]${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:[PORT]${CL}"
|
||||||
|
|||||||
6
.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.md
generated
vendored
6
.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.md
generated
vendored
@ -152,7 +152,7 @@ Example for a git release:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
|
curl -fsSL "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5.2 **Save the version for update checks**
|
### 5.2 **Save the version for update checks**
|
||||||
@ -163,7 +163,7 @@ wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip"
|
|||||||
Example:
|
Example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
echo "${RELEASE}" >"/opt/AppName_version.txt"
|
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -184,7 +184,7 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt-get install -y ...
|
$STD apt-get install -y ...
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
read -p "Do you wish to enable HTTPS mode? (y/N): " httpschoice
|
read -p "${TAB3}Do you wish to enable HTTPS mode? (y/N): " httpschoice
|
||||||
```
|
```
|
||||||
|
|
||||||
### 6.2 **Verbosity**
|
### 6.2 **Verbosity**
|
||||||
|
|||||||
28
.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh
generated
vendored
28
.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh
generated
vendored
@ -6,7 +6,7 @@
|
|||||||
# Source: [SOURCE_URL]
|
# Source: [SOURCE_URL]
|
||||||
|
|
||||||
# Import Functions und Setup
|
# Import Functions und Setup
|
||||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
color
|
color
|
||||||
verb_ip6
|
verb_ip6
|
||||||
catch_errors
|
catch_errors
|
||||||
@ -31,30 +31,28 @@ $STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
|
|||||||
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');"
|
||||||
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
|
||||||
{
|
{
|
||||||
echo "${APPLICATION} Credentials"
|
echo "${APPLICATION} Credentials"
|
||||||
echo "Database User: $DB_USER"
|
echo "Database User: $DB_USER"
|
||||||
echo "Database Password: $DB_PASS"
|
echo "Database Password: $DB_PASS"
|
||||||
echo "Database Name: $DB_NAME"
|
echo "Database Name: $DB_NAME"
|
||||||
} >> ~/$APP_NAME.creds
|
} >>~/"$APP_NAME".creds
|
||||||
msg_ok "Set up Database"
|
msg_ok "Set up Database"
|
||||||
|
|
||||||
# Temp
|
|
||||||
|
|
||||||
# Setup App
|
# Setup App
|
||||||
msg_info "Setup ${APPLICATION}"
|
msg_info "Setup ${APPLICATION}"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/[REPO]/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/[REPO]/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
curl -fsSL -o "${RELEASE}.zip" "https://github.com/[REPO]/archive/refs/tags/${RELEASE}.zip"
|
curl -fsSL -o "${RELEASE}.zip" "https://github.com/[REPO]/archive/refs/tags/${RELEASE}.zip"
|
||||||
unzip -q "${RELEASE}.zip"
|
unzip -q "${RELEASE}.zip"
|
||||||
mv "${APPLICATION}-${RELEASE}/" "/opt/${APPLICATION}"
|
mv "${APPLICATION}-${RELEASE}/" "/opt/${APPLICATION}"
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
#
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
#
|
||||||
|
#
|
||||||
|
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
|
||||||
msg_ok "Setup ${APPLICATION}"
|
msg_ok "Setup ${APPLICATION}"
|
||||||
|
|
||||||
# Creating Service (if needed)
|
# Creating Service (if needed)
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
|
cat <<EOF >/etc/systemd/system/"${APPLICATION}".service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=${APPLICATION} Service
|
Description=${APPLICATION} Service
|
||||||
After=network.target
|
After=network.target
|
||||||
@ -66,7 +64,7 @@ Restart=always
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now ${APPLICATION}
|
systemctl enable -q --now "${APPLICATION}"
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
@ -74,7 +72,7 @@ customize
|
|||||||
|
|
||||||
# Cleanup
|
# Cleanup
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f ${RELEASE}.zip
|
rm -f "${RELEASE}".zip
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|||||||
88
.github/autolabeler-config.json
generated
vendored
88
.github/autolabeler-config.json
generated
vendored
@ -2,21 +2,43 @@
|
|||||||
"new script": [
|
"new script": [
|
||||||
{
|
{
|
||||||
"fileStatus": "added",
|
"fileStatus": "added",
|
||||||
"includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"],
|
"includeGlobs": [
|
||||||
|
"ct/**",
|
||||||
|
"install/**",
|
||||||
|
"misc/**",
|
||||||
|
"turnkey/**",
|
||||||
|
"vm/**"
|
||||||
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"update script": [
|
"update script": [
|
||||||
{
|
{
|
||||||
"fileStatus": "modified",
|
"fileStatus": "modified",
|
||||||
"includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"],
|
"includeGlobs": [
|
||||||
"excludeGlobs": ["misc/build.func", "misc/install.func", "misc/api.func"]
|
"ct/**",
|
||||||
|
"install/**",
|
||||||
|
"misc/**",
|
||||||
|
"turnkey/**",
|
||||||
|
"vm/**"
|
||||||
|
],
|
||||||
|
"excludeGlobs": [
|
||||||
|
"misc/build.func",
|
||||||
|
"misc/install.func",
|
||||||
|
"misc/api.func"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"delete script": [
|
"delete script": [
|
||||||
{
|
{
|
||||||
"fileStatus": "removed",
|
"fileStatus": "removed",
|
||||||
"includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"],
|
"includeGlobs": [
|
||||||
|
"ct/**",
|
||||||
|
"install/**",
|
||||||
|
"misc/**",
|
||||||
|
"turnkey/**",
|
||||||
|
"vm/**"
|
||||||
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -27,7 +49,7 @@
|
|||||||
"*.md",
|
"*.md",
|
||||||
".github/**",
|
".github/**",
|
||||||
"misc/*.func",
|
"misc/*.func",
|
||||||
"ct/create_lxc.sh",
|
"misc/create_lxc.sh",
|
||||||
"api/**"
|
"api/**"
|
||||||
],
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
@ -36,46 +58,57 @@
|
|||||||
"core": [
|
"core": [
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
"includeGlobs": ["misc/*.func", "ct/create_lxc.sh"],
|
"includeGlobs": [
|
||||||
|
"misc/*.func",
|
||||||
|
"misc/create_lxc.sh"
|
||||||
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"website": [
|
"website": [
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
"includeGlobs": ["frontend/**"],
|
"includeGlobs": [
|
||||||
|
"frontend/**"
|
||||||
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"api": [
|
"api": [
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
"includeGlobs": ["api/**", "misc/api.func"],
|
"includeGlobs": [
|
||||||
|
"api/**",
|
||||||
|
"misc/api.func"
|
||||||
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"github": [
|
"github": [
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
"includeGlobs": [".github/**"],
|
"includeGlobs": [
|
||||||
|
".github/**"
|
||||||
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"json": [
|
"json": [
|
||||||
{
|
{
|
||||||
"fileStatus": "modified",
|
"fileStatus": "modified",
|
||||||
"includeGlobs": ["frontend/public/json/**"],
|
"includeGlobs": [
|
||||||
|
"frontend/public/json/**"
|
||||||
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
"high risk": [
|
"high risk": [
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"misc/build.func",
|
"misc/build.func",
|
||||||
"misc/install.func",
|
"misc/install.func",
|
||||||
"ct/create_lxc.sh"
|
"misc/create_lxc.sh"
|
||||||
],
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
@ -83,7 +116,36 @@
|
|||||||
"documentation": [
|
"documentation": [
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
"includeGlobs": ["*.md"],
|
"includeGlobs": [
|
||||||
|
"*.md"
|
||||||
|
],
|
||||||
|
"excludeGlobs": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"addon": [
|
||||||
|
{
|
||||||
|
"fileStatus": null,
|
||||||
|
"includeGlobs": [
|
||||||
|
"tools/addon/**"
|
||||||
|
],
|
||||||
|
"excludeGlobs": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pve-tool": [
|
||||||
|
{
|
||||||
|
"fileStatus": null,
|
||||||
|
"includeGlobs": [
|
||||||
|
"tools/pve/**"
|
||||||
|
],
|
||||||
|
"excludeGlobs": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vm": [
|
||||||
|
{
|
||||||
|
"fileStatus": null,
|
||||||
|
"includeGlobs": [
|
||||||
|
"vm/**"
|
||||||
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
25
.github/workflows/auto-update-app-headers.yml
generated
vendored
25
.github/workflows/auto-update-app-headers.yml
generated
vendored
@ -5,11 +5,12 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
paths:
|
paths:
|
||||||
- 'ct/**.sh'
|
- "ct/**.sh"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update-app-files:
|
update-app-files:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: runner-cluster-htl-set
|
runs-on: runner-cluster-htl-set
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
@ -24,6 +25,13 @@ jobs:
|
|||||||
app-id: ${{ vars.APP_ID }}
|
app-id: ${{ vars.APP_ID }}
|
||||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
|
- name: Generate a token for PR approval and merge
|
||||||
|
id: generate-token-merge
|
||||||
|
uses: actions/create-github-app-token@v1
|
||||||
|
with:
|
||||||
|
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||||
|
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||||
|
|
||||||
# Step 1: Checkout repository
|
# Step 1: Checkout repository
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@ -79,7 +87,7 @@ jobs:
|
|||||||
--label "automated pr"
|
--label "automated pr"
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
|
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
|
||||||
|
|
||||||
- name: Approve pull request
|
- name: Approve pull request
|
||||||
if: env.changed == 'true'
|
if: env.changed == 'true'
|
||||||
env:
|
env:
|
||||||
@ -89,15 +97,18 @@ jobs:
|
|||||||
if [ -n "$PR_NUMBER" ]; then
|
if [ -n "$PR_NUMBER" ]; then
|
||||||
gh pr review $PR_NUMBER --approve
|
gh pr review $PR_NUMBER --approve
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Re-approve pull request after update
|
- name: Approve pull request and merge
|
||||||
if: env.changed == 'true'
|
if: env.changed == 'true'
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
|
||||||
run: |
|
run: |
|
||||||
PR_NUMBER=$(gh pr list --head "pr-update-app-files" --json number --jq '.[].number')
|
git config --global user.name "github-actions-automege[bot]"
|
||||||
|
git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
|
||||||
|
PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
|
||||||
if [ -n "$PR_NUMBER" ]; then
|
if [ -n "$PR_NUMBER" ]; then
|
||||||
gh pr review $PR_NUMBER --approve
|
gh pr review $PR_NUMBER --approve
|
||||||
|
gh pr merge $PR_NUMBER --squash --admin
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Step 8: Output success message when no changes
|
# Step 8: Output success message when no changes
|
||||||
|
|||||||
37
.github/workflows/autolabeler.yml
generated
vendored
37
.github/workflows/autolabeler.yml
generated
vendored
@ -7,6 +7,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
autolabeler:
|
autolabeler:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: runner-cluster-htl-set
|
runs-on: runner-cluster-htl-set
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
@ -18,7 +19,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: npm install minimatch
|
run: npm install minimatch
|
||||||
|
|
||||||
- name: Label PR based on file changes and PR template
|
- name: Label PR based on file changes and PR template
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
@ -42,51 +43,51 @@ jobs:
|
|||||||
pull_number: prNumber,
|
pull_number: prNumber,
|
||||||
});
|
});
|
||||||
const prFiles = prListFilesResponse.data;
|
const prFiles = prListFilesResponse.data;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Apply labels based on file changes
|
|
||||||
for (const [label, rules] of Object.entries(autolabelerConfig)) {
|
for (const [label, rules] of Object.entries(autolabelerConfig)) {
|
||||||
const shouldAddLabel = prFiles.some((prFile) => {
|
const shouldAddLabel = prFiles.some((prFile) => {
|
||||||
return rules.some((rule) => {
|
return rules.some((rule) => {
|
||||||
const isFileStatusMatch = rule.fileStatus ? rule.fileStatus === prFile.status : true;
|
const isFileStatusMatch = rule.fileStatus ? rule.fileStatus === prFile.status : true;
|
||||||
const isIncludeGlobMatch = rule.includeGlobs.some((glob) => minimatch(prFile.filename, glob));
|
const isIncludeGlobMatch = rule.includeGlobs.some((glob) => minimatch(prFile.filename, glob));
|
||||||
const isExcludeGlobMatch = rule.excludeGlobs.some((glob) => minimatch(prFile.filename, glob));
|
const isExcludeGlobMatch = rule.excludeGlobs.some((glob) => minimatch(prFile.filename, glob));
|
||||||
|
|
||||||
return isFileStatusMatch && isIncludeGlobMatch && !isExcludeGlobMatch;
|
return isFileStatusMatch && isIncludeGlobMatch && !isExcludeGlobMatch;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
if (shouldAddLabel) {
|
if (shouldAddLabel) {
|
||||||
labelsToAdd.add(label);
|
labelsToAdd.add(label);
|
||||||
|
if (label === "update script") {
|
||||||
|
for (const prFile of prFiles) {
|
||||||
|
const filename = prFile.filename;
|
||||||
|
if (filename.startsWith("vm/")) labelsToAdd.add("vm");
|
||||||
|
if (filename.startsWith("tools/addon/")) labelsToAdd.add("addon");
|
||||||
|
if (filename.startsWith("tools/pve/")) labelsToAdd.add("pve-tool");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if two labels or more are added, return
|
|
||||||
if (labelsToAdd.size < 2) {
|
if (labelsToAdd.size < 2) {
|
||||||
const templateLabelMappings = {
|
const templateLabelMappings = {
|
||||||
"🐞 **Bug fix**": "bugfix",
|
"🐞 **Bug fix**": "bugfix",
|
||||||
"✨ **New feature**": "feature",
|
"✨ **New feature**": "feature",
|
||||||
"💥 **Breaking change**": "breaking change",
|
"💥 **Breaking change**": "breaking change",
|
||||||
|
"🆕 **New script**": "new script",
|
||||||
|
"🌍 **Website update**": "website",
|
||||||
"🔧 **Refactoring / Code Cleanup**": "refactor",
|
"🔧 **Refactoring / Code Cleanup**": "refactor",
|
||||||
|
"📝 **Documentation update**": "documentation"
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
|
for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
|
||||||
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
|
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
|
||||||
const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i");
|
const regex = new RegExp(`- \[(x|X)\]\s*.*${escapedCheckbox}`, "i");
|
||||||
const match = prBody.match(regex);
|
if (regex.test(prBody)) {
|
||||||
if (match) {
|
|
||||||
console.log(`Match: ${match}`);
|
|
||||||
labelsToAdd.add(label);
|
labelsToAdd.add(label);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`);
|
|
||||||
|
|
||||||
if (labelsToAdd.size > 0) {
|
if (labelsToAdd.size > 0) {
|
||||||
console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`);
|
|
||||||
await github.rest.issues.addLabels({
|
await github.rest.issues.addLabels({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
|
|||||||
21
.github/workflows/changelog-pr.yml
generated
vendored
21
.github/workflows/changelog-pr.yml
generated
vendored
@ -7,6 +7,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update-changelog-pull-request:
|
update-changelog-pull-request:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: runner-cluster-htl-set
|
runs-on: runner-cluster-htl-set
|
||||||
env:
|
env:
|
||||||
CONFIG_PATH: .github/changelog-pr-config.json
|
CONFIG_PATH: .github/changelog-pr-config.json
|
||||||
@ -23,6 +24,13 @@ jobs:
|
|||||||
app-id: ${{ vars.APP_ID }}
|
app-id: ${{ vars.APP_ID }}
|
||||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
|
- name: Generate a token for PR approval and merge
|
||||||
|
id: generate-token-merge
|
||||||
|
uses: actions/create-github-app-token@v1
|
||||||
|
with:
|
||||||
|
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||||
|
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
@ -176,7 +184,7 @@ jobs:
|
|||||||
}
|
}
|
||||||
|
|
||||||
return await main();
|
return await main();
|
||||||
|
|
||||||
- name: Update CHANGELOG.md
|
- name: Update CHANGELOG.md
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
@ -201,7 +209,7 @@ jobs:
|
|||||||
if (hasMainNotes || hasSubNotes) {
|
if (hasMainNotes || hasSubNotes) {
|
||||||
newReleaseNotes += `### ${title}\n\n`;
|
newReleaseNotes += `### ${title}\n\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasMainNotes) {
|
if (hasMainNotes) {
|
||||||
newReleaseNotes += ` ${notes.join("\n")}\n\n`;
|
newReleaseNotes += ` ${notes.join("\n")}\n\n`;
|
||||||
}
|
}
|
||||||
@ -263,12 +271,15 @@ jobs:
|
|||||||
gh pr review $PR_NUMBER --approve
|
gh pr review $PR_NUMBER --approve
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Re-approve pull request after update
|
- name: Approve pull request and merge
|
||||||
if: env.changed == 'true'
|
if: env.changed == 'true'
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
|
||||||
run: |
|
run: |
|
||||||
|
git config --global user.name "github-actions-automege[bot]"
|
||||||
|
git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
|
||||||
PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
|
PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
|
||||||
if [ -n "$PR_NUMBER" ]; then
|
if [ -n "$PR_NUMBER" ]; then
|
||||||
gh pr review $PR_NUMBER --approve
|
gh pr review $PR_NUMBER --approve
|
||||||
fi
|
gh pr merge $PR_NUMBER --squash --admin
|
||||||
|
fi
|
||||||
|
|||||||
1
.github/workflows/close-discussion.yml
generated
vendored
1
.github/workflows/close-discussion.yml
generated
vendored
@ -11,6 +11,7 @@ permissions:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
close-discussion:
|
close-discussion:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: runner-cluster-htl-set
|
runs-on: runner-cluster-htl-set
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
1
.github/workflows/close-ttek-issues.yaml
generated
vendored
1
.github/workflows/close-ttek-issues.yaml
generated
vendored
@ -5,6 +5,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
close_tteck_issues:
|
close_tteck_issues:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Auto-close if tteck script detected
|
- name: Auto-close if tteck script detected
|
||||||
|
|||||||
2
.github/workflows/close_issue_in_dev.yaml
generated
vendored
2
.github/workflows/close_issue_in_dev.yaml
generated
vendored
@ -5,7 +5,7 @@ on:
|
|||||||
- closed
|
- closed
|
||||||
jobs:
|
jobs:
|
||||||
close_issue:
|
close_issue:
|
||||||
if: github.event.pull_request.merged == true
|
if: github.event.pull_request.merged == true && github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
12
.github/workflows/crawl-versions.yaml
generated
vendored
12
.github/workflows/crawl-versions.yaml
generated
vendored
@ -12,6 +12,7 @@ permissions:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
crawl-versions:
|
crawl-versions:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: runner-cluster-htl-set
|
runs-on: runner-cluster-htl-set
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@ -103,6 +104,17 @@ jobs:
|
|||||||
gh pr review $PR_NUMBER --approve
|
gh pr review $PR_NUMBER --approve
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
- name: Approve pull request and merge
|
||||||
|
if: env.changed == 'true'
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.PAT_AUTOMERGE }}
|
||||||
|
run: |
|
||||||
|
PR_NUMBER=$(gh pr list --head "update_versions" --json number --jq '.[].number')
|
||||||
|
if [ -n "$PR_NUMBER" ]; then
|
||||||
|
gh pr review $PR_NUMBER --approve
|
||||||
|
gh pr merge $PR_NUMBER --squash --admin
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Re-approve pull request after update
|
- name: Re-approve pull request after update
|
||||||
if: env.changed == 'true'
|
if: env.changed == 'true'
|
||||||
env:
|
env:
|
||||||
|
|||||||
1
.github/workflows/create-docker-for-runner.yml
generated
vendored
1
.github/workflows/create-docker-for-runner.yml
generated
vendored
@ -11,6 +11,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: ubuntu-latest #To ensure it always builds we use the github runner with all the right tooling
|
runs-on: ubuntu-latest #To ensure it always builds we use the github runner with all the right tooling
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
3
.github/workflows/delete-json-branch.yml
generated
vendored
3
.github/workflows/delete-json-branch.yml
generated
vendored
@ -9,6 +9,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
delete_branch:
|
delete_branch:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: runner-cluster-htl-set
|
runs-on: runner-cluster-htl-set
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the code
|
- name: Checkout the code
|
||||||
@ -25,4 +26,4 @@ jobs:
|
|||||||
git push origin --delete "$PR_BRANCH"
|
git push origin --delete "$PR_BRANCH"
|
||||||
else
|
else
|
||||||
echo "Skipping deletion of the main branch"
|
echo "Skipping deletion of the main branch"
|
||||||
fi
|
fi
|
||||||
|
|||||||
6
.github/workflows/frontend-cicd.yml
generated
vendored
6
.github/workflows/frontend-cicd.yml
generated
vendored
@ -25,6 +25,7 @@ concurrency:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: runner-cluster-htl-set
|
runs-on: runner-cluster-htl-set
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@ -43,9 +44,6 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: npm ci --prefer-offline --legacy-peer-deps
|
run: npm ci --prefer-offline --legacy-peer-deps
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: npm run test
|
|
||||||
|
|
||||||
- name: Configure Next.js for pages
|
- name: Configure Next.js for pages
|
||||||
uses: actions/configure-pages@v5
|
uses: actions/configure-pages@v5
|
||||||
with:
|
with:
|
||||||
@ -63,7 +61,7 @@ jobs:
|
|||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: build
|
needs: build
|
||||||
if: github.ref == 'refs/heads/main'
|
if: github.ref == 'refs/heads/main' && github.repository == 'community-scripts/ProxmoxVE'
|
||||||
permissions:
|
permissions:
|
||||||
pages: write
|
pages: write
|
||||||
id-token: write
|
id-token: write
|
||||||
|
|||||||
1
.github/workflows/github-release.yml
generated
vendored
1
.github/workflows/github-release.yml
generated
vendored
@ -7,6 +7,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
create-daily-release:
|
create-daily-release:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: runner-cluster-htl-set
|
runs-on: runner-cluster-htl-set
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|||||||
48
.github/workflows/push-to-gitea.yaml
generated
vendored
Normal file
48
.github/workflows/push-to-gitea.yaml
generated
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
name: Sync to Gitea
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sync:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout source repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Change all links to git.community-scripts.org
|
||||||
|
run: |
|
||||||
|
echo "Searching for files containing raw.githubusercontent.com URLs..."
|
||||||
|
|
||||||
|
# Find all files containing GitHub raw URLs, excluding certain directories
|
||||||
|
files_with_github_urls=$(grep -r "https://raw.githubusercontent.com/community-scripts/ProxmoxVE" . --exclude-dir=.git --exclude-dir=node_modules --exclude-dir=.github/workflows --files-with-matches || true)
|
||||||
|
|
||||||
|
if [ -n "$files_with_github_urls" ]; then
|
||||||
|
echo "$files_with_github_urls" | while read file; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
sed -i 's|https://raw\.githubusercontent\.com/community-scripts/ProxmoxVE/|https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/|g' "$file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "No files found containing GitHub raw URLs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Push to Gitea
|
||||||
|
run: |
|
||||||
|
git config --global user.name "Push From Github"
|
||||||
|
git config --global user.email "actions@github.com"
|
||||||
|
git remote add gitea https://$GITEA_USER:$GITEA_TOKEN@git.community-scripts.org/community-scripts/ProxmoxVE.git
|
||||||
|
git add .
|
||||||
|
git commit -m "Sync to Gitea"
|
||||||
|
git push gitea --all --force
|
||||||
|
env:
|
||||||
|
GITEA_USER: ${{ secrets.GITEA_USERNAME }}
|
||||||
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||||
1
.github/workflows/script-test.yml
generated
vendored
1
.github/workflows/script-test.yml
generated
vendored
@ -11,6 +11,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
run-install-script:
|
run-install-script:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: pvenode
|
runs-on: pvenode
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout PR branch
|
- name: Checkout PR branch
|
||||||
|
|||||||
1
.github/workflows/script_format.yml
generated
vendored
1
.github/workflows/script_format.yml
generated
vendored
@ -11,6 +11,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
run-install-script:
|
run-install-script:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: pvenode
|
runs-on: pvenode
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout PR branch (supports forks)
|
- name: Checkout PR branch (supports forks)
|
||||||
|
|||||||
5
.github/workflows/scripts/app-test/pr-alpine-install.func
generated
vendored
5
.github/workflows/scripts/app-test/pr-alpine-install.func
generated
vendored
@ -72,8 +72,7 @@ network_check() {
|
|||||||
|
|
||||||
update_os() {
|
update_os() {
|
||||||
msg_info "Updating Container OS"
|
msg_info "Updating Container OS"
|
||||||
apk update
|
$STD apk -U upgrade
|
||||||
apk upgrade
|
|
||||||
msg_ok "Updated Container OS"
|
msg_ok "Updated Container OS"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,4 +82,4 @@ motd_ssh() {
|
|||||||
|
|
||||||
customize() {
|
customize() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
70
.github/workflows/scripts/generate-app-headers.sh
generated
vendored
70
.github/workflows/scripts/generate-app-headers.sh
generated
vendored
@ -1,34 +1,50 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Base directory for headers
|
# Function for generating Figlet headers
|
||||||
headers_dir="./ct/headers"
|
generate_headers() {
|
||||||
|
local base_dir=$1
|
||||||
|
local target_subdir=$2
|
||||||
|
local search_pattern=$3
|
||||||
|
|
||||||
# Ensure the headers directory exists and clear it
|
local headers_dir="${base_dir}/headers"
|
||||||
mkdir -p "$headers_dir"
|
mkdir -p "$headers_dir"
|
||||||
rm -f "$headers_dir"/*
|
rm -f "$headers_dir"/*
|
||||||
|
|
||||||
# Find all .sh files in ./ct directory, sorted alphabetically
|
# Recursive or non-recursive search
|
||||||
find ./ct -type f -name "*.sh" | sort | while read -r script; do
|
if [[ "$search_pattern" == "**" ]]; then
|
||||||
# Extract the APP name from the APP line
|
shopt -s globstar nullglob
|
||||||
app_name=$(grep -oP '^APP="\K[^"]+' "$script" 2>/dev/null)
|
file_list=("${base_dir}"/**/*.sh)
|
||||||
|
shopt -u globstar
|
||||||
if [[ -n "$app_name" ]]; then
|
|
||||||
# Define the output file name in the headers directory
|
|
||||||
output_file="${headers_dir}/$(basename "${script%.*}")"
|
|
||||||
|
|
||||||
# Generate figlet output
|
|
||||||
figlet_output=$(figlet -w 500 -f slant "$app_name")
|
|
||||||
|
|
||||||
# Check if figlet output is not empty
|
|
||||||
if [[ -n "$figlet_output" ]]; then
|
|
||||||
echo "$figlet_output" > "$output_file"
|
|
||||||
echo "Generated: $output_file"
|
|
||||||
else
|
|
||||||
echo "Figlet failed for $app_name in $script"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "No APP name found in $script, skipping."
|
file_list=("${base_dir}"/*.sh)
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
|
|
||||||
echo "Completed processing .sh files."
|
for script in "${file_list[@]}"; do
|
||||||
|
[[ -f "$script" ]] || continue
|
||||||
|
|
||||||
|
app_name=$(grep -oP '^APP="\K[^"]+' "$script" 2>/dev/null)
|
||||||
|
if [[ -n "$app_name" ]]; then
|
||||||
|
output_file="${headers_dir}/$(basename "${script%.*}")"
|
||||||
|
figlet_output=$(figlet -w 500 -f slant "$app_name")
|
||||||
|
if [[ -n "$figlet_output" ]]; then
|
||||||
|
echo "$figlet_output" >"$output_file"
|
||||||
|
echo "Generated: $output_file"
|
||||||
|
else
|
||||||
|
echo "Figlet failed for $app_name in $script"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "No APP name found in $script, skipping."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# ct
|
||||||
|
generate_headers "./ct" "headers" "*"
|
||||||
|
|
||||||
|
# tools (addon, pve, ...)
|
||||||
|
generate_headers "./tools" "headers" "**"
|
||||||
|
|
||||||
|
# vm
|
||||||
|
generate_headers "./vm" "headers" "*"
|
||||||
|
|
||||||
|
echo "Completed processing all sections."
|
||||||
|
|||||||
33
.github/workflows/update-json-date.yml
generated
vendored
33
.github/workflows/update-json-date.yml
generated
vendored
@ -5,11 +5,12 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
paths:
|
paths:
|
||||||
- 'frontend/public/json/**.json'
|
- "frontend/public/json/**.json"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update-app-files:
|
update-app-files:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
runs-on: runner-cluster-htl-set
|
runs-on: runner-cluster-htl-set
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
@ -24,10 +25,17 @@ jobs:
|
|||||||
app-id: ${{ vars.APP_ID }}
|
app-id: ${{ vars.APP_ID }}
|
||||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
|
- name: Generate a token for PR approval and merge
|
||||||
|
id: generate-token-merge
|
||||||
|
uses: actions/create-github-app-token@v1
|
||||||
|
with:
|
||||||
|
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||||
|
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||||
|
|
||||||
- name: Generate dynamic branch name
|
- name: Generate dynamic branch name
|
||||||
id: timestamp
|
id: timestamp
|
||||||
run: echo "BRANCH_NAME=pr-update-json-$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
|
run: echo "BRANCH_NAME=pr-update-json-$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Set up GH_TOKEN
|
- name: Set up GH_TOKEN
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@ -37,7 +45,7 @@ jobs:
|
|||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 2 # Ensure we have the last two commits
|
fetch-depth: 2 # Ensure we have the last two commits
|
||||||
|
|
||||||
- name: Get Previous Commit
|
- name: Get Previous Commit
|
||||||
id: prev_commit
|
id: prev_commit
|
||||||
@ -102,8 +110,8 @@ jobs:
|
|||||||
- name: Commit and create PR if changes exist
|
- name: Commit and create PR if changes exist
|
||||||
if: env.changed == 'true'
|
if: env.changed == 'true'
|
||||||
run: |
|
run: |
|
||||||
|
|
||||||
|
|
||||||
git commit -m "Update date in json"
|
git commit -m "Update date in json"
|
||||||
git checkout -b ${{ env.BRANCH_NAME }}
|
git checkout -b ${{ env.BRANCH_NAME }}
|
||||||
git push origin ${{ env.BRANCH_NAME }}
|
git push origin ${{ env.BRANCH_NAME }}
|
||||||
@ -126,6 +134,19 @@ jobs:
|
|||||||
gh pr review $PR_NUMBER --approve
|
gh pr review $PR_NUMBER --approve
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
- name: Approve pull request and merge
|
||||||
|
if: env.changed == 'true'
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
|
||||||
|
run: |
|
||||||
|
git config --global user.name "github-actions-automege[bot]"
|
||||||
|
git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
|
||||||
|
PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
|
||||||
|
if [ -n "$PR_NUMBER" ]; then
|
||||||
|
gh pr review $PR_NUMBER --approve
|
||||||
|
gh pr merge $PR_NUMBER --squash --admin
|
||||||
|
fi
|
||||||
|
|
||||||
- name: No changes detected
|
- name: No changes detected
|
||||||
if: env.changed == 'false'
|
if: env.changed == 'false'
|
||||||
run: echo "No changes to commit. Workflow completed successfully."
|
run: echo "No changes to commit. Workflow completed successfully."
|
||||||
|
|||||||
5
.github/workflows/validate-filenames.yml
generated
vendored
5
.github/workflows/validate-filenames.yml
generated
vendored
@ -9,6 +9,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check-files:
|
check-files:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
name: Check changed files
|
name: Check changed files
|
||||||
runs-on: runner-cluster-htl-set
|
runs-on: runner-cluster-htl-set
|
||||||
permissions:
|
permissions:
|
||||||
@ -50,8 +51,8 @@ jobs:
|
|||||||
|
|
||||||
NON_COMPLIANT_FILES=""
|
NON_COMPLIANT_FILES=""
|
||||||
for FILE in $CHANGED_FILES; do
|
for FILE in $CHANGED_FILES; do
|
||||||
# Datei "ct/create_lxc.sh" explizit überspringen
|
# Skip File "misc/create_lxc.sh"
|
||||||
if [[ "$FILE" == "ct/create_lxc.sh" ]]; then
|
if [[ "$FILE" == "misc/create_lxc.sh" ]]; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
BASENAME=$(echo "$(basename "${FILE%.*}")")
|
BASENAME=$(echo "$(basename "${FILE%.*}")")
|
||||||
|
|||||||
1246
CHANGELOG.md
1246
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="#">
|
<a href="#">
|
||||||
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo.png" height="100px" />
|
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo-81x112.png" height="100px" />
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -13,7 +13,7 @@
|
|||||||
<a href="https://helper-scripts.com">
|
<a href="https://helper-scripts.com">
|
||||||
<img src="https://img.shields.io/badge/Website-4c9b3f?style=for-the-badge&logo=github&logoColor=white" alt="Website" />
|
<img src="https://img.shields.io/badge/Website-4c9b3f?style=for-the-badge&logo=github&logoColor=white" alt="Website" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://discord.gg/jsYVk5JBxq">
|
<a href="https://discord.gg/3AnUqsXnmK">
|
||||||
<img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
|
<img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://ko-fi.com/community_scripts">
|
<a href="https://ko-fi.com/community_scripts">
|
||||||
@ -82,7 +82,7 @@ We appreciate any contributions to the project—whether it's bug reports, featu
|
|||||||
|
|
||||||
Join our community for support:
|
Join our community for support:
|
||||||
|
|
||||||
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/jsYVk5JBxq) for real-time support.
|
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/3AnUqsXnmK) for real-time support.
|
||||||
- **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions).
|
- **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions).
|
||||||
|
|
||||||
## 🤝 Report a Bug or Feature Request
|
## 🤝 Report a Bug or Feature Request
|
||||||
|
|||||||
125
ct/2fauth.sh
125
ct/2fauth.sh
@ -20,79 +20,60 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
# Check if installation is present | -f for file, -d for folder
|
if [[ ! -d "/opt/2fauth" ]]; then
|
||||||
if [[ ! -d "/opt/2fauth" ]]; then
|
msg_error "No ${APP} Installation Found!"
|
||||||
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
|
|
||||||
exit
|
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 ~/.2fauth 2>/dev/null || cat /opt/2fauth_version.txt 2>/dev/null)" ]]; then
|
||||||
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get -y upgrade
|
||||||
|
|
||||||
|
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" setup_php
|
||||||
|
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
|
||||||
|
fi
|
||||||
|
fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth"
|
||||||
|
mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env"
|
||||||
|
mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage"
|
||||||
|
cd "/opt/2fauth" || return
|
||||||
|
chown -R www-data: "/opt/2fauth"
|
||||||
|
chmod -R 755 "/opt/2fauth"
|
||||||
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
|
$STD composer install --no-dev --prefer-source
|
||||||
|
php artisan 2fauth:install
|
||||||
|
$STD systemctl restart nginx
|
||||||
|
|
||||||
|
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
|
start
|
||||||
@ -102,4 +83,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
|
||||||
|
|||||||
67
ct/actualbudget.sh
Normal file
67
ct/actualbudget.sh
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://actualbudget.org/
|
||||||
|
|
||||||
|
APP="Actual Budget"
|
||||||
|
var_tags="finance"
|
||||||
|
var_cpu="2"
|
||||||
|
var_ram="2048"
|
||||||
|
var_disk="4"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
var_unprivileged="1"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -f /opt/actualbudget_version.txt ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
NODE_VERSION="22"
|
||||||
|
setup_nodejs
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ -f /opt/actualbudget-data/config.json ]]; then
|
||||||
|
if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop actualbudget
|
||||||
|
msg_ok "${APP} Stopped"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
|
$STD npm update -g @actual-app/sync-server
|
||||||
|
echo "${RELEASE}" >/opt/actualbudget_version.txt
|
||||||
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start actualbudget
|
||||||
|
msg_ok "Restarted ${APP}"
|
||||||
|
else
|
||||||
|
msg_info "${APP} is already up to date"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
msg_info "Old Installation Found, you need to migrate your data and recreate to a new container"
|
||||||
|
msg_info "Please follow the instructions on the ${APP} website to migrate your data"
|
||||||
|
msg_info "https://actualbudget.org/docs/backup-restore/backup"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:5006${CL}"
|
||||||
@ -27,43 +27,51 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.adventurelog 2>/dev/null)" ]] || [[ ! -f ~/.adventurelog ]]; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop adventurelog-backend
|
systemctl stop adventurelog-backend
|
||||||
systemctl stop adventurelog-frontend
|
systemctl stop adventurelog-frontend
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog"
|
||||||
mv /opt/adventurelog/ /opt/adventurelog-backup/
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
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/
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
mv /opt/AdventureLog-${RELEASE} /opt/adventurelog
|
# Backend Migration
|
||||||
|
cp /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
|
||||||
|
cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
|
||||||
|
|
||||||
mv /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env
|
|
||||||
mv /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
|
|
||||||
cd /opt/adventurelog/backend/server
|
cd /opt/adventurelog/backend/server
|
||||||
$STD pip install --upgrade pip
|
if [[ ! -x .venv/bin/python ]]; then
|
||||||
$STD pip install -r requirements.txt
|
$STD uv venv .venv
|
||||||
$STD python3 manage.py collectstatic --noinput
|
$STD .venv/bin/python -m ensurepip --upgrade
|
||||||
$STD python3 manage.py migrate
|
fi
|
||||||
|
|
||||||
mv /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env
|
$STD .venv/bin/python -m pip install --upgrade pip
|
||||||
|
$STD .venv/bin/python -m pip install -r requirements.txt
|
||||||
|
$STD .venv/bin/python -m manage collectstatic --noinput
|
||||||
|
$STD .venv/bin/python -m manage migrate
|
||||||
|
|
||||||
|
# Frontend Migration
|
||||||
|
cp /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env
|
||||||
cd /opt/adventurelog/frontend
|
cd /opt/adventurelog/frontend
|
||||||
$STD pnpm install
|
$STD pnpm i
|
||||||
$STD pnpm run build
|
$STD pnpm build
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
|
systemctl daemon-reexec
|
||||||
systemctl start adventurelog-backend
|
systemctl start adventurelog-backend
|
||||||
systemctl start adventurelog-frontend
|
systemctl start adventurelog-frontend
|
||||||
msg_ok "Started Services"
|
msg_ok "Services Started"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
rm -rf /opt/v${RELEASE}.zip
|
||||||
rm -rf /opt/adventurelog-backup
|
rm -rf /opt/adventurelog-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
@ -78,4 +86,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-ubuntu}"
|
var_os="${var_os:-ubuntu}"
|
||||||
var_version="${var_version:-22.04}"
|
var_version="${var_version:-24.04}"
|
||||||
var_unprivileged="${var_unprivileged:-0}"
|
var_unprivileged="${var_unprivileged:-0}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -20,15 +20,15 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/agentdvr ]]; then
|
if [[ ! -d /opt/agentdvr ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_error "Currently we don't provide an update function for this ${APP}."
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@ -38,4 +38,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
|
||||||
|
|||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-1}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -20,21 +20,20 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
msg_info "Updating Alpine Packages"
|
msg_info "Updating Alpine Packages"
|
||||||
$STD apk update
|
$STD apk -U upgrade
|
||||||
$STD apk upgrade
|
msg_ok "Updated Alpine Packages"
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating AdGuard Home"
|
msg_info "Updating AdGuard Home"
|
||||||
$STD /opt/AdGuardHome/AdGuardHome --update
|
$STD /opt/AdGuardHome/AdGuardHome --update
|
||||||
msg_ok "Updated AdGuard Home"
|
msg_ok "Updated AdGuard Home"
|
||||||
|
|
||||||
msg_info "Restarting AdGuard Home"
|
msg_info "Restarting AdGuard Home"
|
||||||
$STD rc-service adguardhome restart
|
$STD rc-service adguardhome restart
|
||||||
msg_ok "Restarted AdGuard Home"
|
msg_ok "Restarted AdGuard Home"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
89
ct/alpine-bitmagnet.sh
Normal file
89
ct/alpine-bitmagnet.sh
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/bitmagnet-io/bitmagnet
|
||||||
|
|
||||||
|
APP="Alpine-bitmagnet"
|
||||||
|
var_tags="${var_tags:-alpine;torrent}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-3}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.22}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
|
||||||
|
if [[ ! -d /opt/bitmagnet ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [ "${RELEASE}" != "$(cat /opt/bitmagnet_version.txt)" ] || [ ! -f /opt/bitmagnet_version.txt ]; then
|
||||||
|
msg_info "Backing up database"
|
||||||
|
rm -f /tmp/backup.sql
|
||||||
|
$STD sudo -u postgres pg_dump \
|
||||||
|
--column-inserts \
|
||||||
|
--data-only \
|
||||||
|
--on-conflict-do-nothing \
|
||||||
|
--rows-per-insert=1000 \
|
||||||
|
--table=metadata_sources \
|
||||||
|
--table=content \
|
||||||
|
--table=content_attributes \
|
||||||
|
--table=content_collections \
|
||||||
|
--table=content_collections_content \
|
||||||
|
--table=torrent_sources \
|
||||||
|
--table=torrents \
|
||||||
|
--table=torrent_files \
|
||||||
|
--table=torrent_hints \
|
||||||
|
--table=torrent_contents \
|
||||||
|
--table=torrent_tags \
|
||||||
|
--table=torrents_torrent_sources \
|
||||||
|
--table=key_values \
|
||||||
|
bitmagnet \
|
||||||
|
>/tmp/backup.sql
|
||||||
|
mv /tmp/backup.sql /opt/
|
||||||
|
msg_ok "Database backed up"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} from $(cat /opt/bitmagnet_version.txt) to ${RELEASE}"
|
||||||
|
$STD apk -U upgrade
|
||||||
|
$STD service bitmagnet stop
|
||||||
|
[ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
|
||||||
|
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
|
||||||
|
rm -rf /opt/bitmagnet/*
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
|
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
|
||||||
|
cd /opt/bitmagnet
|
||||||
|
VREL=v$RELEASE
|
||||||
|
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
||||||
|
chmod +x bitmagnet
|
||||||
|
[ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
|
||||||
|
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
|
||||||
|
rm -f "$temp_file"
|
||||||
|
echo "${RELEASE}" >/opt/bitmagnet_version.txt
|
||||||
|
$STD service bitmagnet start
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3333${CL}"
|
||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -36,7 +36,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
1)
|
1)
|
||||||
apk update && apk upgrade
|
$STD apk -U upgrade
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -47,4 +47,4 @@ start
|
|||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
|
|||||||
45
ct/alpine-forgejo.sh
Normal file
45
ct/alpine-forgejo.sh
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Johann3s-H (An!ma)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://forgejo.org/
|
||||||
|
|
||||||
|
APP="Alpine-Forgejo"
|
||||||
|
var_tags="${var_tags:-alpine;git}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-256}"
|
||||||
|
var_disk="${var_disk:-1}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.22}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
msg_info "Updating Alpine Packages"
|
||||||
|
$STD apk -U upgrade
|
||||||
|
msg_ok "Updated Alpine Packages"
|
||||||
|
|
||||||
|
msg_info "Updating Forgejo"
|
||||||
|
$STD apk upgrade forgejo
|
||||||
|
msg_ok "Updated Forgejo"
|
||||||
|
|
||||||
|
msg_info "Restarting Forgejo"
|
||||||
|
$STD rc-service forgejo restart
|
||||||
|
msg_ok "Restarted Forgejo"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
62
ct/alpine-gatus.sh
Normal file
62
ct/alpine-gatus.sh
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/TwiN/gatus
|
||||||
|
|
||||||
|
APP="Alpine-gatus"
|
||||||
|
var_tags="${var_tags:-alpine;monitoring}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-256}"
|
||||||
|
var_disk="${var_disk:-3}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.22}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
|
||||||
|
if [[ ! -d /opt/gatus ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [ "${RELEASE}" != "$(cat /opt/gatus_version.txt)" ] || [ ! -f /opt/gatus_version.txt ]; then
|
||||||
|
msg_info "Updating ${APP} LXC"
|
||||||
|
$STD apk -U upgrade
|
||||||
|
$STD service gatus stop
|
||||||
|
mv /opt/gatus/config/config.yaml /opt
|
||||||
|
rm -rf /opt/gatus/*
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
|
tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
|
||||||
|
cd /opt/gatus
|
||||||
|
$STD go mod tidy
|
||||||
|
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
|
||||||
|
setcap CAP_NET_RAW+ep gatus
|
||||||
|
mv /opt/config.yaml config
|
||||||
|
rm -f "$temp_file"
|
||||||
|
echo "${RELEASE}" >/opt/gatus_version.txt
|
||||||
|
$STD service gatus start
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-1}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -20,19 +20,18 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
msg_info "Updating Alpine Packages"
|
msg_info "Updating Alpine Packages"
|
||||||
apk update
|
$STD apk -U upgrade
|
||||||
apk upgrade
|
msg_ok "Updated Alpine Packages"
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating Gitea"
|
msg_info "Updating Gitea"
|
||||||
apk upgrade gitea
|
apk upgrade gitea
|
||||||
msg_ok "Updated Gitea"
|
msg_ok "Updated Gitea"
|
||||||
|
|
||||||
msg_info "Restarting Gitea"
|
msg_info "Restarting Gitea"
|
||||||
rc-service gitea restart
|
rc-service gitea restart
|
||||||
msg_ok "Restarted Gitea"
|
msg_ok "Restarted Gitea"
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@ -42,4 +41,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-1}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -39,7 +39,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
1)
|
1)
|
||||||
apk update && apk upgrade
|
$STD apk -U upgrade
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
@ -62,4 +62,4 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
${BL}http://${IP}:3000${CL} \n"
|
${BL}http://${IP}:3000${CL} \n"
|
||||||
|
|||||||
@ -9,9 +9,9 @@ APP="Alpine-IT-Tools"
|
|||||||
var_tags="${var_tags:-alpine;development}"
|
var_tags="${var_tags:-alpine;development}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-0.2}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -20,32 +20,30 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
if [ ! -d /usr/share/nginx/html ]; then
|
if [ ! -d /usr/share/nginx/html ]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
|
||||||
if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
|
if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
|
||||||
DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
|
DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip"
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
|
curl -fsSL -o it-tools.zip "$DOWNLOAD_URL"
|
||||||
mkdir -p /usr/share/nginx/html
|
mkdir -p /usr/share/nginx/html
|
||||||
rm -rf /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
|
cp -r /tmp/it-tools/dist/* /usr/share/nginx/html
|
||||||
rm -rf /tmp/it-tools
|
rm -rf /tmp/it-tools
|
||||||
rm -f it-tools.zip
|
rm -f it-tools.zip
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@ -55,4 +53,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
|
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
|
|||||||
67
ct/alpine-komodo.sh
Normal file
67
ct/alpine-komodo.sh
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://komo.do
|
||||||
|
|
||||||
|
APP="Alpine-Komodo"
|
||||||
|
var_tags="${var_tags:-docker,alpine}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-10}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.22}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
[[ -d /opt/komodo ]] || {
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
COMPOSE_FILE=$(find /opt/komodo -maxdepth 1 -type f -name '*.compose.yaml' ! -name 'compose.env' | head -n1)
|
||||||
|
if [[ -z "$COMPOSE_FILE" ]]; then
|
||||||
|
msg_error "No valid compose file found in /opt/komodo!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
|
||||||
|
|
||||||
|
if [[ "$COMPOSE_BASENAME" == "sqlite.compose.yaml" || "$COMPOSE_BASENAME" == "postgres.compose.yaml" ]]; then
|
||||||
|
msg_error "❌ Detected outdated Komodo setup using SQLite or PostgreSQL (FerretDB v1)."
|
||||||
|
echo -e "${YW}This configuration is no longer supported since Komodo v1.18.0.${CL}"
|
||||||
|
echo -e "${YW}Please follow the migration guide:${CL}"
|
||||||
|
echo -e "${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/5689${CL}\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
|
||||||
|
cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
|
||||||
|
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
GITHUB_URL="https://raw.githubusercontent.com/moghtech/komodo/main/compose/${COMPOSE_BASENAME}"
|
||||||
|
if ! curl -fsSL "$GITHUB_URL" -o "$COMPOSE_FILE"; then
|
||||||
|
msg_error "Failed to download ${COMPOSE_BASENAME} from GitHub!"
|
||||||
|
mv "$BACKUP_FILE" "$COMPOSE_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
|
||||||
|
msg_ok "Updated ${APP}"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9120${CL}"
|
||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-1}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -20,20 +20,19 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
msg_info "Updating Alpine Packages"
|
msg_info "Updating Alpine Packages"
|
||||||
$STD apk update
|
$STD apk -U upgrade
|
||||||
$STD apk upgrade
|
msg_ok "Updated Alpine Packages"
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating MariaDB"
|
msg_info "Updating MariaDB"
|
||||||
$STD apk upgrade mariadb mariadb-client
|
$STD apk upgrade mariadb mariadb-client
|
||||||
msg_ok "Updated MariaDB"
|
msg_ok "Updated MariaDB"
|
||||||
|
|
||||||
msg_info "Restarting MariaDB"
|
msg_info "Restarting MariaDB"
|
||||||
$STD rc-service mariadb restart
|
$STD rc-service mariadb restart
|
||||||
msg_ok "Restarted MariaDB"
|
msg_ok "Restarted MariaDB"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -58,4 +58,4 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
${BL}https://${IP}${CL} \n"
|
${BL}https://${IP}${CL} \n"
|
||||||
|
|||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-1}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -20,24 +20,19 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
msg_info "Updating Alpine Packages"
|
msg_info "Updating Alpine Packages"
|
||||||
$STD apk update
|
$STD apk -U upgrade
|
||||||
$STD apk upgrade
|
msg_ok "Updated Alpine Packages"
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating Node.js and npm"
|
msg_info "Updating Node.js and npm"
|
||||||
$STD apk upgrade nodejs npm
|
$STD apk upgrade nodejs npm
|
||||||
msg_ok "Updated Node.js and npm"
|
msg_ok "Updated Node.js and npm"
|
||||||
|
|
||||||
msg_info "Updating Node-RED"
|
msg_info "Updating Node-RED"
|
||||||
$STD npm install -g --unsafe-perm node-red
|
$STD npm install -g --unsafe-perm node-red
|
||||||
msg_ok "Updated Node-RED"
|
msg_ok "Updated Node-RED"
|
||||||
|
|
||||||
msg_info "Restarting Node-RED"
|
exit 0
|
||||||
$STD rc-service nodered restart
|
|
||||||
msg_ok "Restarted Node-RED"
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-1}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -21,8 +21,7 @@ catch_errors
|
|||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
msg_info "Updating Alpine Packages"
|
msg_info "Updating Alpine Packages"
|
||||||
$STD apk update
|
$STD apk -U upgrade
|
||||||
$STD apk upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
msg_ok "Updated Alpine Packages"
|
||||||
|
|
||||||
msg_info "Updating PostgreSQL"
|
msg_info "Updating PostgreSQL"
|
||||||
|
|||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-1}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -20,20 +20,19 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
msg_info "Updating Alpine Packages"
|
msg_info "Updating Alpine Packages"
|
||||||
$STD apk update
|
$STD apk -U upgrade
|
||||||
$STD apk upgrade
|
msg_ok "Updated Alpine Packages"
|
||||||
msg_ok "Updated Alpine Packages"
|
|
||||||
|
|
||||||
msg_info "Updating Prometheus"
|
msg_info "Updating Prometheus"
|
||||||
$STD apk upgrade prometheus
|
$STD apk upgrade prometheus
|
||||||
msg_ok "Updated Prometheus"
|
msg_ok "Updated Prometheus"
|
||||||
|
|
||||||
msg_info "Restarting Prometheus"
|
msg_info "Restarting Prometheus"
|
||||||
$STD rc-service prometheus restart
|
$STD rc-service prometheus restart
|
||||||
msg_ok "Restarted Prometheus"
|
msg_ok "Restarted Prometheus"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
52
ct/alpine-rclone.sh
Normal file
52
ct/alpine-rclone.sh
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/rclone/rclone
|
||||||
|
|
||||||
|
APP="Alpine-rclone"
|
||||||
|
var_tags="${var_tags:-alpine;backup}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-256}"
|
||||||
|
var_disk="${var_disk:-1}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.22}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
var_fuse="${var_fuse:-yes}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
if [ ! -d /opt/rclone ]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [ "${RELEASE}" != "$(cat /opt/rclone_version.txt)" ] || [ ! -f /opt/rclone_version.txt ]; then
|
||||||
|
msg_info "Updating ${APP} LXC"
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file"
|
||||||
|
$STD unzip -o "$temp_file" '*/**' -d /opt/rclone
|
||||||
|
rm -f "$temp_file"
|
||||||
|
echo "${RELEASE}" >/opt/rclone_version.txt
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following IP:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-1}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -69,4 +69,4 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${APP} should be reachable on port 6379.
|
echo -e "${APP} should be reachable on port 6379.
|
||||||
${BL}redis-cli -h ${IP} -p 6379${CL} \n"
|
${BL}redis-cli -h ${IP} -p 6379${CL} \n"
|
||||||
|
|||||||
45
ct/alpine-syncthing.sh
Normal file
45
ct/alpine-syncthing.sh
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://syncthing.net/
|
||||||
|
|
||||||
|
APP="Alpine-Syncthing"
|
||||||
|
var_tags="${var_tags:-alpine;networking}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-256}"
|
||||||
|
var_disk="${var_disk:-1}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.22}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
msg_info "Updating Alpine Packages"
|
||||||
|
$STD apk -U upgrade
|
||||||
|
msg_ok "Updated Alpine Packages"
|
||||||
|
|
||||||
|
msg_info "Updating Syncthing"
|
||||||
|
$STD apk upgrade syncthing
|
||||||
|
msg_ok "Updated Syncthing"
|
||||||
|
|
||||||
|
msg_info "Restarting Syncthing"
|
||||||
|
$STD rc-service syncthing restart
|
||||||
|
msg_ok "Restarted Syncthing"
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8384${CL}"
|
||||||
58
ct/alpine-tinyauth.sh
Normal file
58
ct/alpine-tinyauth.sh
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#!/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) | Co-Author: Stavros (steveiliop56)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/steveiliop56/tinyauth
|
||||||
|
|
||||||
|
APP="Alpine-Tinyauth"
|
||||||
|
var_tags="${var_tags:-alpine;auth}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-256}"
|
||||||
|
var_disk="${var_disk:-2}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.22}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
if [[ ! -d /opt/tinyauth ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Updating packages"
|
||||||
|
$STD apk -U upgrade
|
||||||
|
msg_ok "Updated packages"
|
||||||
|
|
||||||
|
msg_info "Updating Tinyauth"
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
|
||||||
|
if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
|
||||||
|
$STD service tinyauth stop
|
||||||
|
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"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
41
ct/alpine-traefik.sh
Normal file
41
ct/alpine-traefik.sh
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://alpinelinux.org/
|
||||||
|
|
||||||
|
APP="Alpine-Traefik"
|
||||||
|
var_tags="${var_tags:-os;alpine}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-1}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.22}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
msg_info "Updating Alpine Packages"
|
||||||
|
$STD apk -U upgrade
|
||||||
|
msg_ok "Updated Alpine Packages"
|
||||||
|
|
||||||
|
msg_info "Upgrading traefik from edge"
|
||||||
|
$STD apk add traefik --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community
|
||||||
|
msg_ok "Upgraded traefik"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} WebUI Access (if configured) - using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/dashboard${CL}"
|
||||||
45
ct/alpine-transmission.sh
Normal file
45
ct/alpine-transmission.sh
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://transmissionbt.com/
|
||||||
|
|
||||||
|
APP="Alpine-Transmission"
|
||||||
|
var_tags="${var_tags:-alpine;torrent}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-256}"
|
||||||
|
var_disk="${var_disk:-1}"
|
||||||
|
var_os="${var_os:-alpine}"
|
||||||
|
var_version="${var_version:-3.22}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
msg_info "Updating Alpine Packages"
|
||||||
|
$STD apk -U upgrade
|
||||||
|
msg_ok "Updated Alpine Packages"
|
||||||
|
|
||||||
|
msg_info "Updating Transmission"
|
||||||
|
$STD apk upgrade transmission-daemon
|
||||||
|
msg_ok "Updated Transmission"
|
||||||
|
|
||||||
|
msg_info "Restarting Transmission"
|
||||||
|
$STD rc-service transmission-daemon restart
|
||||||
|
msg_ok "Restarted Transmission"
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9091${CL}"
|
||||||
@ -9,9 +9,9 @@ APP="Alpine-Vaultwarden"
|
|||||||
var_tags="${var_tags:-alpine;vault}"
|
var_tags="${var_tags:-alpine;vault}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-0.5}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -37,14 +37,15 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
1)
|
1)
|
||||||
apk update && apk upgrade && rc-service vaultwarden restart -q
|
$STD apk -U upgrade
|
||||||
|
rc-service vaultwarden restart -q
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Setup your ADMIN_TOKEN (make it strong)" 10 58 3>&1 1>&2 2>&3); then
|
if NEWTOKEN=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "Setup your ADMIN_TOKEN (make it strong)" 10 58 3>&1 1>&2 2>&3); then
|
||||||
if [[ -z "$NEWTOKEN" ]]; then exit-script; fi
|
if [[ -z "$NEWTOKEN" ]]; then exit-script; fi
|
||||||
if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
|
if ! command -v argon2 >/dev/null 2>&1; then apk add argon2 &>/dev/null; fi
|
||||||
TOKEN=$(echo -n ${NEWTOKEN} | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
|
TOKEN=$(echo -n "${NEWTOKEN}" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1)
|
||||||
if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
|
if [[ ! -f /var/lib/vaultwarden/config.json ]]; then
|
||||||
sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
|
sed -i "s|export ADMIN_TOKEN=.*|export ADMIN_TOKEN='${TOKEN}'|" /etc/conf.d/vaultwarden
|
||||||
else
|
else
|
||||||
@ -65,4 +66,4 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${APP} should be reachable by going to the following URL.
|
echo -e "${APP} should be reachable by going to the following URL.
|
||||||
${BL}http://${IP}:8000${CL} \n"
|
${BL}https://${IP}:8000${CL} \n"
|
||||||
|
|||||||
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-1}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -21,8 +21,7 @@ catch_errors
|
|||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
msg_info "Updating Alpine Packages"
|
msg_info "Updating Alpine Packages"
|
||||||
$STD apk update
|
$STD apk -U upgrade
|
||||||
$STD apk upgrade
|
|
||||||
msg_ok "Updated Alpine Packages"
|
msg_ok "Updated Alpine Packages"
|
||||||
|
|
||||||
msg_info "update wireguard-tools"
|
msg_info "update wireguard-tools"
|
||||||
|
|||||||
@ -7,11 +7,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
|
|
||||||
APP="Alpine-Zigbee2MQTT"
|
APP="Alpine-Zigbee2MQTT"
|
||||||
var_tags="${var_tags:-alpine;zigbee;mqtt;smarthome}"
|
var_tags="${var_tags:-alpine;zigbee;mqtt;smarthome}"
|
||||||
var_disk="${var_disk:-0.3}"
|
var_disk="${var_disk:-1}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-0}"
|
var_unprivileged="${var_unprivileged:-0}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -36,7 +36,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
case $CHOICE in
|
case $CHOICE in
|
||||||
1)
|
1)
|
||||||
apk update && apk upgrade
|
$STD apk -U upgrade
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -47,4 +47,4 @@ start
|
|||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
|
|||||||
16
ct/alpine.sh
16
ct/alpine.sh
@ -9,9 +9,9 @@ APP="Alpine"
|
|||||||
var_tags="${var_tags:-os;alpine}"
|
var_tags="${var_tags:-os;alpine}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-0.1}"
|
var_disk="${var_disk:-1}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.21}"
|
var_version="${var_version:-3.22}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -20,13 +20,15 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
|
UPD=$(
|
||||||
"1" "Check for Alpine Updates" ON \
|
whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
|
||||||
3>&1 1>&2 2>&3)
|
"1" "Check for Alpine Updates" ON \
|
||||||
|
3>&1 1>&2 2>&3
|
||||||
|
)
|
||||||
|
|
||||||
header_info
|
header_info
|
||||||
if [ "$UPD" == "1" ]; then
|
if [ "$UPD" == "1" ]; then
|
||||||
apk update && apk upgrade
|
$STD apk -U upgrade
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -35,4 +37,4 @@ start
|
|||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\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}"
|
||||||
@ -1,15 +1,15 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: tteck (tteckster)
|
# Author: michelroegl-brunner
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://umbrel.com/
|
# Source: https://asterisk.org/
|
||||||
|
|
||||||
APP="Umbrel"
|
APP="Asterisk"
|
||||||
var_tags="${var_tags:-os}"
|
var_tags="${var_tags:-telephone;pbx}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
@ -23,10 +23,7 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_error "No Update function provided for ${APP} LXC"
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated ${APP} LXC"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,6 +32,4 @@ build_container
|
|||||||
description
|
description
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized! (manual reboot is required!)${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
|
||||||
@ -22,30 +22,30 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d "/etc/authelia/" ]]; then
|
if [[ ! -d "/etc/authelia/" ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
if [[ "${RELEASE}" != "$(/usr/bin/authelia -v | awk '{print substr($3, 2, length($2)) }')" ]]; then
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
curl -fsSL "https://github.com/authelia/authelia/releases/download/${RELEASE}/authelia_${RELEASE}_amd64.deb" -o $(basename "https://github.com/authelia/authelia/releases/download/${RELEASE}/authelia_${RELEASE}_amd64.deb")
|
|
||||||
$STD dpkg -i "authelia_${RELEASE}_amd64.deb"
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f "authelia_${RELEASE}_amd64.deb"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
|
if [[ "${RELEASE}" != "$(/usr/bin/authelia -v | awk '{print substr($3, 2, length($2)) }')" ]]; then
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get -y upgrade
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "authelia" "authelia/authelia" "binary"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@ -55,4 +55,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9091${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}https://YOUR_AUTHELIA_URL${CL}"
|
||||||
|
|||||||
@ -1,87 +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:-8192}"
|
|
||||||
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
|
|
||||||
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 "Installing Python Dependencies"
|
|
||||||
cd /opt/authentik
|
|
||||||
$STD poetry install --only=main --no-ansi --no-interaction --no-root
|
|
||||||
$STD poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt
|
|
||||||
$STD pip install --no-cache-dir -r requirements.txt
|
|
||||||
$STD pip install .
|
|
||||||
msg_ok "Installed Python Dependencies"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE} (Patience)"
|
|
||||||
cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints
|
|
||||||
$STD bash /opt/authentik/lifecycle/ak migrate
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
|
||||||
|
|
||||||
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}"
|
|
||||||
80
ct/babybuddy.sh
Normal file
80
ct/babybuddy.sh
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/babybuddy/babybuddy
|
||||||
|
|
||||||
|
APP="Baby Buddy"
|
||||||
|
var_tags="${var_tags:-baby}"
|
||||||
|
var_disk="${var_disk:-5}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/babybuddy ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.babybuddy 2>/dev/null)" ]] || [[ ! -f ~/.babybuddy ]]; then
|
||||||
|
setup_uv
|
||||||
|
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop nginx
|
||||||
|
systemctl stop uwsgi
|
||||||
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
|
msg_info "Cleaning old files"
|
||||||
|
cp babybuddy/settings/production.py /tmp/production.py.bak
|
||||||
|
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} +
|
||||||
|
msg_ok "Cleaned old files"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt/babybuddy
|
||||||
|
mv /tmp/production.py.bak babybuddy/settings/production.py
|
||||||
|
source .venv/bin/activate
|
||||||
|
$STD uv pip install -r requirements.txt
|
||||||
|
$STD python manage.py migrate
|
||||||
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Fixing permissions"
|
||||||
|
chown -R www-data:www-data /opt/data
|
||||||
|
chmod 640 /opt/data/db.sqlite3
|
||||||
|
chmod 750 /opt/data
|
||||||
|
msg_ok "Permissions fixed"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start uwsgi
|
||||||
|
systemctl start nginx
|
||||||
|
msg_ok "Services Started"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
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}"
|
||||||
17
ct/baikal.sh
17
ct/baikal.sh
@ -23,34 +23,35 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/baikal ]]; then
|
if [[ ! -d /opt/baikal ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.baikal 2>/dev/null)" ]] || [[ ! -f ~/.baikal ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
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
|
mv /opt/baikal /opt/baikal-backup
|
||||||
unzip -o -q "baikal-${RELEASE}.zip"
|
msg_ok "Backed up data"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
|
||||||
|
|
||||||
|
msg_info "Configuring Baikal"
|
||||||
cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
|
cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
|
||||||
cp -r /opt/baikal-backup/Specific/ /opt/baikal/
|
cp -r /opt/baikal-backup/Specific/ /opt/baikal/
|
||||||
chown -R www-data:www-data /opt/baikal/
|
chown -R www-data:www-data /opt/baikal/
|
||||||
chmod -R 755 /opt/baikal/
|
chmod -R 755 /opt/baikal/
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Configured Baikal"
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf "/opt/baikal-${RELEASE}.zip"
|
|
||||||
rm -rf /opt/baikal-backup
|
rm -rf /opt/baikal-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
|||||||
@ -23,27 +23,28 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/barcodebuddy ]]; then
|
if [[ ! -d /opt/barcodebuddy ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.barcodebuddy 2>/dev/null)" ]] || [[ ! -f ~/.barcodebuddy ]]; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
systemctl stop barcodebuddy
|
systemctl stop barcodebuddy
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
cd /opt
|
|
||||||
mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
|
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")
|
msg_ok "Backed up data"
|
||||||
unzip -q "v${RELEASE}.zip"
|
|
||||||
mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
|
fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
|
||||||
|
|
||||||
|
msg_info "Configuring ${APP}"
|
||||||
cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
|
cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
|
||||||
chown -R www-data:www-data /opt/barcodebuddy/data
|
chown -R www-data:www-data /opt/barcodebuddy/data
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
msg_ok "Configured ${APP}"
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
@ -51,7 +52,6 @@ function update_script() {
|
|||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -r "/opt/v${RELEASE}.zip"
|
|
||||||
rm -r /opt/barcodebuddy-backup
|
rm -r /opt/barcodebuddy-backup
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
|
|||||||
93
ct/bitmagnet.sh
Normal file
93
ct/bitmagnet.sh
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/bitmagnet/bitmagnet
|
||||||
|
|
||||||
|
APP="Bitmagnet"
|
||||||
|
var_tags="${var_tags:-os}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/bitmagnet ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.bitmagnet 2>/dev/null)" ]] || [[ ! -f ~/.bitmagnet ]]; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop bitmagnet-web
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
msg_info "Backing up data"
|
||||||
|
rm -f /tmp/backup.sql
|
||||||
|
$STD sudo -u postgres pg_dump \
|
||||||
|
--column-inserts \
|
||||||
|
--data-only \
|
||||||
|
--on-conflict-do-nothing \
|
||||||
|
--rows-per-insert=1000 \
|
||||||
|
--table=metadata_sources \
|
||||||
|
--table=content \
|
||||||
|
--table=content_attributes \
|
||||||
|
--table=content_collections \
|
||||||
|
--table=content_collections_content \
|
||||||
|
--table=torrent_sources \
|
||||||
|
--table=torrents \
|
||||||
|
--table=torrent_files \
|
||||||
|
--table=torrent_hints \
|
||||||
|
--table=torrent_contents \
|
||||||
|
--table=torrent_tags \
|
||||||
|
--table=torrents_torrent_sources \
|
||||||
|
--table=key_values \
|
||||||
|
bitmagnet \
|
||||||
|
>/tmp/backup.sql
|
||||||
|
mv /tmp/backup.sql /opt/
|
||||||
|
[ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
|
||||||
|
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
|
||||||
|
msg_ok "Data backed up"
|
||||||
|
|
||||||
|
rm -rf /opt/bitmagnet
|
||||||
|
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt/bitmagnet
|
||||||
|
VREL=v$RELEASE
|
||||||
|
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
|
||||||
|
chmod +x bitmagnet
|
||||||
|
[ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
|
||||||
|
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start bitmagnet-web
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3333${CL}"
|
||||||
@ -1,71 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Slaviša Arežina (tremor021)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/stackblitz-labs/bolt.diy/
|
|
||||||
|
|
||||||
APP="boltdiy"
|
|
||||||
TAGS="code;ai"
|
|
||||||
var_cpu="${var_cpu:-2}"
|
|
||||||
var_ram="${var_ram:-3072}"
|
|
||||||
var_disk="${var_disk:-6}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -d /opt/bolt.diy ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/stackblitz-labs/bolt.diy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/boltdiy_version.txt)" ]] || [[ ! -f /opt/boltdiy_version.txt ]]; then
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop boltdiy
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
|
||||||
temp_dir=$(mktemp -d)
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
cd $temp_dir
|
|
||||||
curl -fsSL "https://github.com/stackblitz-labs/bolt.diy/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar xzf $temp_file
|
|
||||||
cp -rf bolt.diy-${RELEASE}/* /opt/bolt.diy
|
|
||||||
cd /opt/bolt.diy
|
|
||||||
$STD pnpm install
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start boltdiy
|
|
||||||
msg_ok "Started $APP"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf $temp_file
|
|
||||||
rm -rf $temp_dir
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
echo "${RELEASE}" >/opt/boltdiy_version.txt
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5173${CL}"
|
|
||||||
79
ct/booklore.sh
Normal file
79
ct/booklore.sh
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/adityachandelgit/BookLore
|
||||||
|
|
||||||
|
APP="BookLore"
|
||||||
|
var_tags="${var_tags:-books;library}"
|
||||||
|
var_cpu="${var_cpu:-3}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-7}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/booklore ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.booklore 2>/dev/null)" ]] || [[ ! -f ~/.booklore ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop booklore
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "booklore" "adityachandelgit/BookLore"
|
||||||
|
|
||||||
|
msg_info "Building Frontend"
|
||||||
|
cd /opt/booklore/booklore-ui
|
||||||
|
$STD npm install --force
|
||||||
|
$STD npm run build --configuration=production
|
||||||
|
msg_ok "Built Frontend"
|
||||||
|
|
||||||
|
msg_info "Building Backend"
|
||||||
|
cd /opt/booklore/booklore-api
|
||||||
|
APP_VERSION=$(curl -fsSL https://api.github.com/repos/adityachandelgit/BookLore/releases/latest | yq '.tag_name' | sed 's/^v//')
|
||||||
|
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||||
|
$STD ./gradlew clean build --no-daemon
|
||||||
|
mkdir -p /opt/booklore/dist
|
||||||
|
JAR_PATH=$(find /opt/booklore/booklore-api/build/libs -maxdepth 1 -type f -name "booklore-api-*.jar" ! -name "*plain*" | head -n1)
|
||||||
|
if [[ -z "$JAR_PATH" ]]; then
|
||||||
|
msg_error "Backend JAR not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cp "$JAR_PATH" /opt/booklore/dist/app.jar
|
||||||
|
msg_ok "Built Backend"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start booklore
|
||||||
|
systemctl reload nginx
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6060${CL}"
|
||||||
@ -23,25 +23,32 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/bookstack ]]; then
|
if [[ ! -d /opt/bookstack ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.bookstack 2>/dev/null)" ]] || [[ ! -f ~/.bookstack ]]; then
|
||||||
msg_info "Stopping Apache2"
|
msg_info "Stopping Apache2"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
mv /opt/bookstack /opt/bookstack-backup
|
mv /opt/bookstack /opt/bookstack-backup
|
||||||
curl -fsSL "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" -o "/opt/BookStack-${RELEASE}.zip"
|
msg_ok "Backup finished"
|
||||||
unzip -q "/opt/BookStack-${RELEASE}.zip" -d /opt
|
|
||||||
mv "/opt/BookStack-${RELEASE}" /opt/bookstack
|
fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack"
|
||||||
|
PHP_MODULE="ldap,tidy,bz2,mysqli" PHP_FPM="YES" PHP_APACHE="YES" PHP_VERSION="8.3" setup_php
|
||||||
|
|
||||||
|
msg_info "Restoring backup"
|
||||||
cp /opt/bookstack-backup/.env /opt/bookstack/.env
|
cp /opt/bookstack-backup/.env /opt/bookstack/.env
|
||||||
cp -r /opt/bookstack-backup/public/uploads/* /opt/bookstack/public/uploads/ || true
|
[[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/
|
||||||
cp -r /opt/bookstack-backup/storage/uploads/* /opt/bookstack/storage/uploads/ || true
|
[[ -d /opt/bookstack-backup/storage/uploads ]] && cp -a /opt/bookstack-backup/storage/uploads/. /opt/bookstack/storage/uploads/
|
||||||
cp -r /opt/bookstack-backup/themes/* /opt/bookstack/themes/ || true
|
[[ -d /opt/bookstack-backup/themes ]] && cp -a /opt/bookstack-backup/themes/. /opt/bookstack/themes/
|
||||||
|
msg_ok "Backup restored"
|
||||||
|
|
||||||
|
msg_info "Configuring BookStack"
|
||||||
cd /opt/bookstack
|
cd /opt/bookstack
|
||||||
export COMPOSER_ALLOW_SUPERUSER=1
|
export COMPOSER_ALLOW_SUPERUSER=1
|
||||||
$STD composer install --no-dev
|
$STD composer install --no-dev
|
||||||
@ -51,7 +58,7 @@ function update_script() {
|
|||||||
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
|
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
|
||||||
chmod -R 640 /opt/bookstack/.env
|
chmod -R 640 /opt/bookstack/.env
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
msg_ok "Configured BookStack"
|
||||||
|
|
||||||
msg_info "Starting Apache2"
|
msg_info "Starting Apache2"
|
||||||
systemctl start apache2
|
systemctl start apache2
|
||||||
@ -59,7 +66,6 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
rm -rf /opt/bookstack-backup
|
rm -rf /opt/bookstack-backup
|
||||||
rm -rf "/opt/BookStack-${RELEASE}.zip"
|
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
|
|||||||
@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="BunkerWeb"
|
APP="BunkerWeb"
|
||||||
var_tags="${var_tags:-webserver}"
|
var_tags="${var_tags:-webserver}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-8192}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
@ -37,8 +37,8 @@ Pin: version ${RELEASE}
|
|||||||
Pin-Priority: 1001
|
Pin-Priority: 1001
|
||||||
EOF
|
EOF
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get install -y nginx=1.26.3*
|
apt-mark unhold bunkerweb nginx
|
||||||
apt-get install -y bunkerweb=${RELEASE}
|
apt-get install -y --allow-downgrades bunkerweb=${RELEASE}
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
@ -55,4 +55,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/setup${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/setup${CL}"
|
||||||
|
|||||||
@ -20,47 +20,47 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/bytestash ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
|
||||||
msg_info "Stopping Services"
|
|
||||||
systemctl stop bytestash-backend
|
|
||||||
systemctl stop bytestash-frontend
|
|
||||||
msg_ok "Services Stopped"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
if [[ ! -d /opt/bytestash ]]; then
|
||||||
temp_file=$(mktemp)
|
msg_error "No ${APP} Installation Found!"
|
||||||
curl -fsSL "https://github.com/jordan-dalby/ByteStash/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf $temp_file
|
|
||||||
rm -rf /opt/bytestash/server/node_modules
|
|
||||||
rm -rf /opt/bytestash/client/node_modules
|
|
||||||
cp -rf ByteStash-${RELEASE}/* /opt/bytestash
|
|
||||||
cd /opt/bytestash/server
|
|
||||||
$STD npm install
|
|
||||||
cd /opt/bytestash/client
|
|
||||||
$STD npm install
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
systemctl start bytestash-backend
|
|
||||||
systemctl start bytestash-frontend
|
|
||||||
msg_ok "Started Services"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f $temp_file
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.bytestash 2>/dev/null)" ]] || [[ ! -f ~/.bytestash ]]; then
|
||||||
|
|
||||||
|
read -rp "${TAB3}Did you make a backup via application WebUI? (y/n): " backuped
|
||||||
|
if [[ "$backuped" =~ ^[Yy]$ ]]; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop bytestash-backend
|
||||||
|
systemctl stop bytestash-frontend
|
||||||
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
|
rm -rf /opt/bytestash
|
||||||
|
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash"
|
||||||
|
|
||||||
|
msg_info "Configuring ByteStash"
|
||||||
|
cd /opt/bytestash/server
|
||||||
|
$STD npm install
|
||||||
|
cd /opt/bytestash/client
|
||||||
|
$STD npm install
|
||||||
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start bytestash-backend
|
||||||
|
systemctl start bytestash-frontend
|
||||||
|
msg_ok "Started Services"
|
||||||
|
else
|
||||||
|
msg_error "PLEASE MAKE A BACKUP FIRST!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
@ -70,4 +70,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
@ -52,6 +52,7 @@ function update_script() {
|
|||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps
|
$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps
|
||||||
# Update Chrome separately, as it has to be done with the force option. Otherwise the installation of other browsers will not be done if Chrome is already installed.
|
# Update Chrome separately, as it has to be done with the force option. Otherwise the installation of other browsers will not be done if Chrome is already installed.
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome
|
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome
|
||||||
|
$STD /opt/browserless/node_modules/playwright-core/cli.js install --force msedge
|
||||||
$STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit
|
$STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit
|
||||||
$STD npm run build --prefix /opt/browserless
|
$STD npm run build --prefix /opt/browserless
|
||||||
$STD npm run build:function --prefix /opt/browserless
|
$STD npm run build:function --prefix /opt/browserless
|
||||||
@ -74,4 +75,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
||||||
|
|||||||
37
ct/cloudflare-ddns.sh
Normal file
37
ct/cloudflare-ddns.sh
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: edoardop13
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/favonia/cloudflare-ddns
|
||||||
|
|
||||||
|
APP="Cloudflare-DDNS"
|
||||||
|
var_tags="${var_tags:-network}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
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 /etc/systemd/system/cloudflare-ddns.service ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_error "There is no update function for ${APP}."
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
@ -42,7 +42,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
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")
|
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/
|
rsync -a --exclude 'data/' commafeed-"${RELEASE}"-h2/ /opt/commafeed/
|
||||||
rm -rf commafeed-"${RELEASE}"-h2 commafeed-"${RELEASE}"-h2-jvm.zip
|
rm -rf commafeed-"${RELEASE}"-h2 commafeed-"${RELEASE}"-h2-jvm.zip
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
|||||||
66
ct/configarr.sh
Normal file
66
ct/configarr.sh
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: finkerle
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/raydak-labs/configarr
|
||||||
|
|
||||||
|
APP="Configarr"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/configarr ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/raydak-labs/configarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.configarr 2>/dev/null || cat /opt/configarr_version.txt 2>/dev/null)" ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop configarr-task.timer
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
|
mkdir -p /opt/backup/
|
||||||
|
mv /opt/configarr/{config.yml,secrets.yml,.env} "/opt/backup/"
|
||||||
|
rm -rf /opt/configarr
|
||||||
|
fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr"
|
||||||
|
mv /opt/backup/* /opt/configarr/
|
||||||
|
cd /opt/configarr
|
||||||
|
$STD pnpm install
|
||||||
|
$STD pnpm run build
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start configarr-task.timer
|
||||||
|
msg_ok "Started configarr"
|
||||||
|
|
||||||
|
rm -rf /opt/backup
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL (no web-ui):${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8989${CL}"
|
||||||
70
ct/convertx.sh
Normal file
70
ct/convertx.sh
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Omar Minaya | MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/C4illin/ConvertX
|
||||||
|
|
||||||
|
APP="ConvertX"
|
||||||
|
var_tags="${var_tags:-converter}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-20}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /var ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/C4illin/ConvertX/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.convertx 2>/dev/null)" ]] || [[ ! -f ~/.convertx ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop convertx
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Move data-Folder"
|
||||||
|
if [[ -d /opt/convertx/data ]]; then
|
||||||
|
mv /opt/convertx/data /opt/data
|
||||||
|
fi
|
||||||
|
msg_ok "Moved data-Folder"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "ConvertX" "C4illin/ConvertX" "tarball" "latest" "/opt/convertx"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
|
if [[ -d /opt/data ]]; then
|
||||||
|
mv /opt/data /opt/convertx/data
|
||||||
|
fi
|
||||||
|
cd /opt/convertx
|
||||||
|
$STD bun install
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start convertx
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
@ -46,7 +46,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating Crafty-Controller to v${RELEASE}"
|
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")
|
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/
|
cp -a crafty-4-v${RELEASE}/. /opt/crafty-controller/crafty/crafty-4/
|
||||||
rm -rf crafty-4-v${RELEASE}
|
rm -rf crafty-4-v${RELEASE}
|
||||||
cd /opt/crafty-controller/crafty/crafty-4
|
cd /opt/crafty-controller/crafty/crafty-4
|
||||||
|
|||||||
282
ct/create_lxc.sh
282
ct/create_lxc.sh
@ -1,282 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 tteck
|
|
||||||
# Author: tteck (tteckster)
|
|
||||||
# Co-Author: MickLesk
|
|
||||||
# License: MIT
|
|
||||||
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
|
|
||||||
# This sets verbose mode if the global variable is set to "yes"
|
|
||||||
# if [ "$VERBOSE" == "yes" ]; then set -x; fi
|
|
||||||
|
|
||||||
# This function sets color variables for formatting output in the terminal
|
|
||||||
# Colors
|
|
||||||
YW=$(echo "\033[33m")
|
|
||||||
YWB=$(echo "\033[93m")
|
|
||||||
BL=$(echo "\033[36m")
|
|
||||||
RD=$(echo "\033[01;31m")
|
|
||||||
GN=$(echo "\033[1;92m")
|
|
||||||
|
|
||||||
# Formatting
|
|
||||||
CL=$(echo "\033[m")
|
|
||||||
UL=$(echo "\033[4m")
|
|
||||||
BOLD=$(echo "\033[1m")
|
|
||||||
BFR="\\r\\033[K"
|
|
||||||
HOLD=" "
|
|
||||||
TAB=" "
|
|
||||||
|
|
||||||
# Icons
|
|
||||||
CM="${TAB}✔️${TAB}${CL}"
|
|
||||||
CROSS="${TAB}✖️${TAB}${CL}"
|
|
||||||
INFO="${TAB}💡${TAB}${CL}"
|
|
||||||
|
|
||||||
# This sets error handling options and defines the error_handler function to handle errors
|
|
||||||
set -Eeuo pipefail
|
|
||||||
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
|
|
||||||
|
|
||||||
# This function handles errors
|
|
||||||
function error_handler() {
|
|
||||||
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
|
|
||||||
printf "\e[?25h"
|
|
||||||
local exit_code="$?"
|
|
||||||
local line_number="$1"
|
|
||||||
local command="$2"
|
|
||||||
local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
|
|
||||||
echo -e "\n$error_message\n"
|
|
||||||
exit 200
|
|
||||||
}
|
|
||||||
|
|
||||||
# This function displays a spinner.
|
|
||||||
function spinner() {
|
|
||||||
local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
|
|
||||||
local spin_i=0
|
|
||||||
local interval=0.1
|
|
||||||
printf "\e[?25l"
|
|
||||||
|
|
||||||
local color="${YWB}"
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
printf "\r ${color}%s${CL}" "${frames[spin_i]}"
|
|
||||||
spin_i=$(((spin_i + 1) % ${#frames[@]}))
|
|
||||||
sleep "$interval"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# This function displays an informational message with a yellow color.
|
|
||||||
function msg_info() {
|
|
||||||
local msg="$1"
|
|
||||||
echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
|
|
||||||
spinner &
|
|
||||||
SPINNER_PID=$!
|
|
||||||
}
|
|
||||||
|
|
||||||
function msg_warn() {
|
|
||||||
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
|
|
||||||
printf "\e[?25h"
|
|
||||||
local msg="$1"
|
|
||||||
echo -e "${BFR}${INFO}${YWB}${msg}${CL}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# This function displays a success message with a green color.
|
|
||||||
function msg_ok() {
|
|
||||||
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
|
|
||||||
printf "\e[?25h"
|
|
||||||
local msg="$1"
|
|
||||||
echo -e "${BFR}${CM}${GN}${msg}${CL}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# This function displays a error message with a red color.
|
|
||||||
function msg_error() {
|
|
||||||
if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi
|
|
||||||
printf "\e[?25h"
|
|
||||||
local msg="$1"
|
|
||||||
echo -e "${BFR}${CROSS}${RD}${msg}${CL}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# This checks for the presence of valid Container Storage and Template Storage locations
|
|
||||||
msg_info "Validating Storage"
|
|
||||||
VALIDCT=$(pvesm status -content rootdir | awk 'NR>1')
|
|
||||||
if [ -z "$VALIDCT" ]; then
|
|
||||||
msg_error "Unable to detect a valid Container Storage location."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
VALIDTMP=$(pvesm status -content vztmpl | awk 'NR>1')
|
|
||||||
if [ -z "$VALIDTMP" ]; then
|
|
||||||
msg_error "Unable to detect a valid Template Storage location."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# This function is used to select the storage class and determine the corresponding storage content type and label.
|
|
||||||
function select_storage() {
|
|
||||||
local CLASS=$1
|
|
||||||
local CONTENT
|
|
||||||
local CONTENT_LABEL
|
|
||||||
case $CLASS in
|
|
||||||
container)
|
|
||||||
CONTENT='rootdir'
|
|
||||||
CONTENT_LABEL='Container'
|
|
||||||
;;
|
|
||||||
template)
|
|
||||||
CONTENT='vztmpl'
|
|
||||||
CONTENT_LABEL='Container template'
|
|
||||||
;;
|
|
||||||
*) false || {
|
|
||||||
msg_error "Invalid storage class."
|
|
||||||
exit 201
|
|
||||||
} ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# This Queries all storage locations
|
|
||||||
local -a MENU
|
|
||||||
while read -r line; do
|
|
||||||
local TAG=$(echo $line | awk '{print $1}')
|
|
||||||
local TYPE=$(echo $line | awk '{printf "%-10s", $2}')
|
|
||||||
local FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}')
|
|
||||||
local ITEM="Type: $TYPE Free: $FREE "
|
|
||||||
local OFFSET=2
|
|
||||||
if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then
|
|
||||||
local MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET))
|
|
||||||
fi
|
|
||||||
MENU+=("$TAG" "$ITEM" "OFF")
|
|
||||||
done < <(pvesm status -content $CONTENT | awk 'NR>1')
|
|
||||||
|
|
||||||
# Select storage location
|
|
||||||
if [ $((${#MENU[@]} / 3)) -eq 1 ]; then
|
|
||||||
printf ${MENU[0]}
|
|
||||||
else
|
|
||||||
local STORAGE
|
|
||||||
while [ -z "${STORAGE:+x}" ]; do
|
|
||||||
STORAGE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Storage Pools" --radiolist \
|
|
||||||
"Which storage pool would you like to use for the ${CONTENT_LABEL,,}?\nTo make a selection, use the Spacebar.\n" \
|
|
||||||
16 $(($MSG_MAX_LENGTH + 23)) 6 \
|
|
||||||
"${MENU[@]}" 3>&1 1>&2 2>&3) || {
|
|
||||||
msg_error "Menu aborted."
|
|
||||||
exit 202
|
|
||||||
}
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo -e "${CROSS}${RD} Menu aborted by user.${CL}"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
printf "%s" "$STORAGE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
# Test if required variables are set
|
|
||||||
[[ "${CTID:-}" ]] || {
|
|
||||||
msg_error "You need to set 'CTID' variable."
|
|
||||||
exit 203
|
|
||||||
}
|
|
||||||
[[ "${PCT_OSTYPE:-}" ]] || {
|
|
||||||
msg_error "You need to set 'PCT_OSTYPE' variable."
|
|
||||||
exit 204
|
|
||||||
}
|
|
||||||
|
|
||||||
# Test if ID is valid
|
|
||||||
[ "$CTID" -ge "100" ] || {
|
|
||||||
msg_error "ID cannot be less than 100."
|
|
||||||
exit 205
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for network connectivity (IPv4 & IPv6)
|
|
||||||
#function check_network() {
|
|
||||||
# local CHECK_URLS=("8.8.8.8" "1.1.1.1" "9.9.9.9" "2606:4700:4700::1111" "2001:4860:4860::8888" "2620:fe::fe")
|
|
||||||
#
|
|
||||||
# for url in "${CHECK_URLS[@]}"; do
|
|
||||||
# if ping -c 1 -W 2 "$url" &>/dev/null; then
|
|
||||||
# return 0 # Success: At least one connection works
|
|
||||||
# fi
|
|
||||||
# done
|
|
||||||
#
|
|
||||||
# msg_error "No network connection detected. Check your internet connection."
|
|
||||||
# exit 101
|
|
||||||
#}
|
|
||||||
|
|
||||||
# Test if ID is in use
|
|
||||||
if qm status "$CTID" &>/dev/null || pct status "$CTID" &>/dev/null; then
|
|
||||||
echo -e "ID '$CTID' is already in use."
|
|
||||||
unset CTID
|
|
||||||
msg_error "Cannot use ID that is already in use."
|
|
||||||
exit 206
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get template storage
|
|
||||||
TEMPLATE_STORAGE=$(select_storage template)
|
|
||||||
msg_ok "Using ${BL}$TEMPLATE_STORAGE${CL} ${GN}for Template Storage."
|
|
||||||
|
|
||||||
# Get container storage
|
|
||||||
CONTAINER_STORAGE=$(select_storage container)
|
|
||||||
msg_ok "Using ${BL}$CONTAINER_STORAGE${CL} ${GN}for Container Storage."
|
|
||||||
|
|
||||||
# Update LXC template list
|
|
||||||
msg_info "Updating LXC Template List"
|
|
||||||
#check_network
|
|
||||||
pveam update >/dev/null
|
|
||||||
msg_ok "Updated LXC Template List"
|
|
||||||
|
|
||||||
# Get LXC template string
|
|
||||||
TEMPLATE_SEARCH=${PCT_OSTYPE}-${PCT_OSVERSION:-}
|
|
||||||
mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLATE_SEARCH.*\)/\1/p" | sort -t - -k 2 -V)
|
|
||||||
[ ${#TEMPLATES[@]} -gt 0 ] || {
|
|
||||||
msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."
|
|
||||||
exit 207
|
|
||||||
}
|
|
||||||
TEMPLATE="${TEMPLATES[-1]}"
|
|
||||||
TEMPLATE_PATH="$(pvesm path $TEMPLATE_STORAGE:vztmpl/$TEMPLATE)"
|
|
||||||
# Without NAS/Mount: TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE"
|
|
||||||
# Check if template exists, if corrupt remove and redownload
|
|
||||||
if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE" || ! zstdcat "$TEMPLATE_PATH" | tar -tf - >/dev/null 2>&1; then
|
|
||||||
msg_warn "Template $TEMPLATE not found in storage or seems to be corrupted. Redownloading."
|
|
||||||
[[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
|
|
||||||
|
|
||||||
# Download with 3 attempts
|
|
||||||
for attempt in {1..3}; do
|
|
||||||
msg_info "Attempt $attempt: Downloading LXC template..."
|
|
||||||
|
|
||||||
if timeout 120 pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null; then
|
|
||||||
msg_ok "Template download successful."
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $attempt -eq 3 ]; then
|
|
||||||
msg_error "Three failed attempts. Aborting."
|
|
||||||
exit 208
|
|
||||||
fi
|
|
||||||
|
|
||||||
sleep $((attempt * 5))
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
msg_ok "LXC Template is ready to use."
|
|
||||||
|
|
||||||
# Check and fix subuid/subgid
|
|
||||||
grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >>/etc/subuid
|
|
||||||
grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >>/etc/subgid
|
|
||||||
|
|
||||||
# Combine all options
|
|
||||||
PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}})
|
|
||||||
[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs "$CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}")
|
|
||||||
|
|
||||||
msg_info "Creating LXC Container"
|
|
||||||
if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
|
|
||||||
msg_error "Container creation failed. Checking if template is corrupted."
|
|
||||||
|
|
||||||
if ! zstdcat "$TEMPLATE_PATH" | tar -tf - >/dev/null 2>&1; then
|
|
||||||
msg_error "Template appears to be corrupted. Removing and re-downloading."
|
|
||||||
rm -f "$TEMPLATE_PATH"
|
|
||||||
|
|
||||||
if ! timeout 120 pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null; then
|
|
||||||
msg_error "Failed to re-download template."
|
|
||||||
exit 208
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_ok "Re-downloaded LXC Template"
|
|
||||||
|
|
||||||
if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
|
|
||||||
msg_error "Container creation failed after re-downloading template."
|
|
||||||
exit 200
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
msg_error "Container creation failed, but template is not corrupted."
|
|
||||||
exit 209
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
msg_ok "LXC Container ${BL}$CTID${CL} ${GN}was successfully created."
|
|
||||||
@ -20,48 +20,46 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d "/opt/cryptpad" ]]; then
|
if [[ ! -d "/opt/cryptpad" ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop cryptpad
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
|
||||||
temp_dir=$(mktemp -d)
|
|
||||||
cp -f /opt/cryptpad/config/config.js /opt/config.js
|
|
||||||
curl -fsSL "https://github.com/cryptpad/cryptpad/archive/refs/tags/${RELEASE}.tar.gz" -o "$temp_dir/cryptpad-${RELEASE}.tar.gz"
|
|
||||||
cd "$temp_dir"
|
|
||||||
tar zxf "cryptpad-${RELEASE}.tar.gz"
|
|
||||||
cp -rf "cryptpad-${RELEASE}"/* /opt/cryptpad
|
|
||||||
cd /opt/cryptpad
|
|
||||||
$STD npm ci
|
|
||||||
$STD npm run install:components
|
|
||||||
$STD npm run build
|
|
||||||
cp -f /opt/config.js /opt/cryptpad/config/config.js
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf $temp_dir
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start cryptpad
|
|
||||||
msg_ok "Started $APP"
|
|
||||||
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.cryptpad 2>/dev/null)" ]] || [[ ! -f ~/.cryptpad ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop cryptpad
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Backing up configuration"
|
||||||
|
[ -f /opt/cryptpad/config/config.js ] && mv /opt/cryptpad/config/config.js /opt/
|
||||||
|
msg_ok "Backed up configuration"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
|
cd /opt/cryptpad
|
||||||
|
$STD npm ci
|
||||||
|
$STD npm run install:components
|
||||||
|
$STD npm run build
|
||||||
|
msg_ok "Updated $APP to ${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Restoring configuration"
|
||||||
|
mv /opt/config.js /opt/cryptpad/config/
|
||||||
|
msg_ok "Configuration restored"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start cryptpad
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
10
ct/dashy.sh
10
ct/dashy.sh
@ -29,7 +29,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.dashy 2>/dev/null)" ]] || [[ ! -f ~/.dashy ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop dashy
|
systemctl stop dashy
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
@ -43,14 +43,13 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
msg_ok "Backed up conf.yml"
|
msg_ok "Backed up conf.yml"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
rm -rf /opt/dashy
|
rm -rf /opt/dashy
|
||||||
mkdir -p /opt/dashy
|
fetch_and_deploy_gh_release "dashy" "Lissy93/dashy"
|
||||||
curl -fsSL "https://github.com/Lissy93/dashy/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz -C /opt/dashy --strip-components=1
|
|
||||||
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
cd /opt/dashy
|
cd /opt/dashy
|
||||||
npm install
|
npm install
|
||||||
npm run build
|
npm run build
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Restoring conf.yml"
|
msg_info "Restoring conf.yml"
|
||||||
@ -65,6 +64,7 @@ function update_script() {
|
|||||||
msg_info "Starting Dashy"
|
msg_info "Starting Dashy"
|
||||||
systemctl start dashy
|
systemctl start dashy
|
||||||
msg_ok "Started Dashy"
|
msg_ok "Started Dashy"
|
||||||
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
@ -8,8 +8,8 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Docmost"
|
APP="Docmost"
|
||||||
var_tags="${var_tags:-documents}"
|
var_tags="${var_tags:-documents}"
|
||||||
var_cpu="${var_cpu:-3}"
|
var_cpu="${var_cpu:-3}"
|
||||||
var_ram="${var_ram:-3072}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-7}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
|
|
||||||
@ -27,48 +27,35 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
|
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"
|
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
||||||
$STD apt-get purge -y nodejs
|
|
||||||
rm -f /etc/apt/sources.list.d/nodesource.list
|
|
||||||
rm -f /etc/apt/keyrings/nodesource.gpg
|
|
||||||
mkdir -p /etc/apt/keyrings
|
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get install -y nodejs
|
|
||||||
$STD npm install -g pnpm@10.4.0
|
|
||||||
msg_ok "Node.js 22 installed"
|
|
||||||
fi
|
fi
|
||||||
export NODE_OPTIONS="--max_old_space_size=4096"
|
export NODE_OPTIONS="--max_old_space_size=4096"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.docmost 2>/dev/null)" ]] || [[ ! -f ~/.docmost ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop docmost
|
systemctl stop docmost
|
||||||
msg_ok "${APP} Stopped"
|
msg_ok "${APP} Stopped"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Backing up data"
|
||||||
cp /opt/docmost/.env /opt/
|
cp /opt/docmost/.env /opt/
|
||||||
cp -r /opt/docmost/data /opt/
|
cp -r /opt/docmost/data /opt/
|
||||||
rm -rf /opt/docmost
|
rm -rf /opt/docmost
|
||||||
temp_file=$(mktemp)
|
msg_ok "Data backed up"
|
||||||
curl -fsSL "https://github.com/docmost/docmost/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar -xzf "$temp_file"
|
fetch_and_deploy_gh_release "docmost" "docmost/docmost"
|
||||||
mv docmost-${RELEASE} /opt/docmost
|
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt/docmost
|
cd /opt/docmost
|
||||||
mv /opt/.env /opt/docmost/.env
|
mv /opt/.env /opt/docmost/.env
|
||||||
mv /opt/data /opt/docmost/data
|
mv /opt/data /opt/docmost/data
|
||||||
$STD pnpm install --force
|
$STD pnpm install --force
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start docmost
|
systemctl start docmost
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f ${temp_file}
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
@ -20,46 +20,51 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/documenso ]]; then
|
if [[ ! -d /opt/documenso ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
|
||||||
msg_info "Stopping ${APP}"
|
|
||||||
systemctl stop documenso
|
|
||||||
msg_ok "${APP} Stopped"
|
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
|
||||||
cp /opt/documenso/.env /opt/
|
|
||||||
rm -rf /opt/documenso
|
|
||||||
cd /opt
|
|
||||||
curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip
|
|
||||||
unzip -q v${RELEASE}.zip
|
|
||||||
mv documenso-${RELEASE} /opt/documenso
|
|
||||||
cd /opt/documenso
|
|
||||||
mv /opt/.env /opt/documenso/.env
|
|
||||||
$STD npm install
|
|
||||||
$STD npm run build:web
|
|
||||||
$STD npm run prisma:migrate-deploy
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
|
||||||
systemctl start documenso
|
|
||||||
msg_ok "Started ${APP}"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
|
systemctl stop documenso
|
||||||
|
msg_ok "${APP} Stopped"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
|
cp /opt/documenso/.env /opt/
|
||||||
|
rm -rf /opt/documenso
|
||||||
|
cd /opt
|
||||||
|
curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip
|
||||||
|
$STD unzip v${RELEASE}.zip
|
||||||
|
mv documenso-${RELEASE} /opt/documenso
|
||||||
|
cd /opt/documenso
|
||||||
|
mv /opt/.env /opt/documenso/.env
|
||||||
|
export TURBO_CACHE=1
|
||||||
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
|
export CYPRESS_INSTALL_BINARY=0
|
||||||
|
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||||
|
$STD npm ci
|
||||||
|
$STD turbo run build --filter=@documenso/remix
|
||||||
|
$STD npm run prisma:migrate-deploy
|
||||||
|
$STD turbo daemon stop
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
|
systemctl start documenso
|
||||||
|
msg_ok "Started ${APP}"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -rf /opt/v${RELEASE}.zip
|
||||||
|
msg_ok "Cleaned"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@ -47,7 +47,7 @@ function update_script() {
|
|||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
msg_ok "Updated $APP LXC"
|
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"
|
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) }')
|
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
|
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"
|
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
|
tar xzf "$temp_file" -C /opt/synapse-admin --strip-components=1
|
||||||
cd /opt/synapse-admin
|
cd /opt/synapse-admin
|
||||||
|
$STD yarn global add serve
|
||||||
$STD yarn install --ignore-engines
|
$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
|
systemctl start synapse-admin
|
||||||
echo "${RELEASE}" >/opt/"${APP}"_version.txt
|
echo "${RELEASE}" >/opt/"${APP}"_version.txt
|
||||||
rm -f "$temp_file"
|
rm -f "$temp_file"
|
||||||
|
|||||||
30
ct/emby.sh
30
ct/emby.sh
@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-ubuntu}"
|
var_os="${var_os:-ubuntu}"
|
||||||
var_version="${var_version:-22.04}"
|
var_version="${var_version:-24.04}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@ -23,26 +23,26 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/emby-server ]]; then
|
if [[ ! -d /opt/emby-server ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
LATEST=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
msg_info "Stopping ${APP}"
|
if [[ "${RELEASE}" != "$(cat ~/.emby 2>/dev/null)" ]] || [[ ! -f ~/.emby ]]; then
|
||||||
systemctl stop emby-server
|
msg_info "Stopping ${APP}"
|
||||||
msg_ok "Stopped ${APP}"
|
systemctl stop emby-server
|
||||||
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
|
||||||
$STD curl -fsSL "https://github.com/MediaBrowser/Emby.Releases/releases/download/${LATEST}/emby-server-deb_${LATEST}_amd64.deb" -o "emby-server-deb_${LATEST}_amd64.deb"
|
|
||||||
$STD dpkg -i "emby-server-deb_${LATEST}_amd64.deb"
|
|
||||||
rm "emby-server-deb_${LATEST}_amd64.deb"
|
|
||||||
msg_ok "Updated ${APP}"
|
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
systemctl start emby-server
|
systemctl start emby-server
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
|
||||||
exit
|
msg_ok "Updated Successfully"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@ -7,7 +7,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
|
|
||||||
APP="ErsatzTV"
|
APP="ErsatzTV"
|
||||||
var_tags="${var_tags:-iptv}"
|
var_tags="${var_tags:-iptv}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-5}"
|
var_disk="${var_disk:-5}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
@ -27,31 +27,18 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
|
||||||
if [[ ! -f /opt/${APP}_version.txt && $(echo "x.x.x" >/opt/${APP}_version.txt) || "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.ersatztv 2>/dev/null)" ]] || [[ ! -f ~/.ersatztv ]]; then
|
||||||
msg_info "Stopping ErsatzTV"
|
msg_info "Stopping ErsatzTV"
|
||||||
systemctl stop ersatzTV
|
systemctl stop ersatzTV
|
||||||
msg_ok "Stopped ErsatzTV"
|
msg_ok "Stopped ErsatzTV"
|
||||||
|
|
||||||
msg_info "Updating ErsatzTV"
|
FFMPEG_VERSION="latest" FFMPEG_TYPE="medium" setup_ffmpeg
|
||||||
cp -R /opt/ErsatzTV/ ErsatzTV-backup
|
fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
|
||||||
rm ErsatzTV-backup/ErsatzTV
|
|
||||||
rm -rf /opt/ErsatzTV
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz" -o "$temp_file"
|
|
||||||
tar -xzf "$temp_file"
|
|
||||||
mv ErsatzTV-${RELEASE}-linux-x64 /opt/ErsatzTV
|
|
||||||
cp -R ErsatzTV-backup/* /opt/ErsatzTV/
|
|
||||||
rm -rf ErsatzTV-backup
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ErsatzTV"
|
|
||||||
|
|
||||||
msg_info "Starting ErsatzTV"
|
msg_info "Starting ErsatzTV"
|
||||||
systemctl start ersatzTV
|
systemctl start ersatzTV
|
||||||
msg_ok "Started ErsatzTV"
|
msg_ok "Started ErsatzTV"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f ${temp_file}
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
msg_ok "No update required. ${APP} is already at ${RELEASE}"
|
||||||
|
|||||||
@ -25,22 +25,62 @@ function update_script() {
|
|||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -f /etc/systemd/system/esphomeDashboard.service ]]; then
|
if [[ ! -f /etc/systemd/system/esphomeDashboard.service ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit 1
|
||||||
fi
|
fi
|
||||||
msg_info "Stopping ESPHome"
|
|
||||||
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop esphomeDashboard
|
systemctl stop esphomeDashboard
|
||||||
msg_ok "Stopped ESPHome"
|
msg_ok "Stopped ${APP}"
|
||||||
|
|
||||||
msg_info "Updating ESPHome"
|
VENV_PATH="/opt/esphome/.venv"
|
||||||
if [[ -d /srv/esphome ]]; then
|
ESPHOME_BIN="${VENV_PATH}/bin/esphome"
|
||||||
$STD source /srv/esphome/bin/activate
|
export PYTHON_VERSION="3.12"
|
||||||
|
|
||||||
|
if [[ ! -d "$VENV_PATH" || ! -x "$ESPHOME_BIN" ]]; then
|
||||||
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
msg_info "Migrating to uv/venv"
|
||||||
|
rm -rf "$VENV_PATH"
|
||||||
|
mkdir -p /opt/esphome
|
||||||
|
cd /opt/esphome
|
||||||
|
$STD uv venv "$VENV_PATH"
|
||||||
|
$STD "$VENV_PATH/bin/python" -m ensurepip --upgrade
|
||||||
|
$STD "$VENV_PATH/bin/python" -m pip install --upgrade pip
|
||||||
|
$STD "$VENV_PATH/bin/python" -m pip install esphome tornado esptool
|
||||||
|
msg_ok "Migrated to uv/venv"
|
||||||
|
else
|
||||||
|
msg_info "Updating ESPHome"
|
||||||
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
$STD "$VENV_PATH/bin/python" -m pip install --upgrade esphome tornado esptool
|
||||||
|
msg_ok "Updated ESPHome"
|
||||||
fi
|
fi
|
||||||
$STD pip3 install -U esphome
|
SERVICE_FILE="/etc/systemd/system/esphomeDashboard.service"
|
||||||
msg_ok "Updated ESPHome"
|
if ! grep -q "${VENV_PATH}/bin/esphome" "$SERVICE_FILE"; then
|
||||||
|
msg_info "Updating systemd service"
|
||||||
|
cat <<EOF >"$SERVICE_FILE"
|
||||||
|
[Unit]
|
||||||
|
Description=ESPHome Dashboard
|
||||||
|
After=network.target
|
||||||
|
|
||||||
msg_info "Starting ESPHome"
|
[Service]
|
||||||
|
ExecStart=${VENV_PATH}/bin/esphome dashboard /root/config/
|
||||||
|
Restart=always
|
||||||
|
User=root
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
$STD systemctl daemon-reload
|
||||||
|
msg_ok "Updated systemd service"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Linking esphome to /usr/local/bin"
|
||||||
|
rm -f /usr/local/bin/esphome
|
||||||
|
ln -s /opt/esphome/.venv/bin/esphome /usr/local/bin/esphome
|
||||||
|
msg_ok "Linked esphome binary"
|
||||||
|
|
||||||
|
msg_info "Starting ${APP}"
|
||||||
systemctl start esphomeDashboard
|
systemctl start esphomeDashboard
|
||||||
msg_ok "Started ESPHome"
|
msg_ok "Started ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
@ -52,4 +92,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6052${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6052${CL}"
|
||||||
|
|||||||
@ -9,7 +9,7 @@ APP="Excalidraw"
|
|||||||
TAGS="diagrams"
|
TAGS="diagrams"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-3072}"
|
var_ram="${var_ram:-3072}"
|
||||||
var_disk="${var_disk:-6}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
@ -20,46 +20,46 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/excalidraw ]]; then
|
if [[ ! -d /opt/excalidraw ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
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
|
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
|
start
|
||||||
@ -69,4 +69,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
@ -47,7 +47,7 @@ function update_script() {
|
|||||||
msg_info "Updating $APP to latest version"
|
msg_info "Updating $APP to latest version"
|
||||||
temp_file=$(mktemp)
|
temp_file=$(mktemp)
|
||||||
curl -fsSL https://fileflows.com/downloads/zip -o "$temp_file"
|
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_ok "Updated $APP to latest version"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: quantumryuu
|
# Author: quantumryuu | Co-Author: Slaviša Arežina (tremor021)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://firefly-iii.org/
|
# Source: https://firefly-iii.org/
|
||||||
|
|
||||||
|
|||||||
@ -39,8 +39,8 @@ function update_script() {
|
|||||||
cp /opt/fluid-calendar/.env /opt/fluid.env
|
cp /opt/fluid-calendar/.env /opt/fluid.env
|
||||||
rm -rf /opt/fluid-calendar
|
rm -rf /opt/fluid-calendar
|
||||||
tmp_file=$(mktemp)
|
tmp_file=$(mktemp)
|
||||||
curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
|
curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
|
||||||
unzip -q $tmp_file
|
$STD unzip $tmp_file
|
||||||
mv ${APP}-${RELEASE}/ /opt/fluid-calendar
|
mv ${APP}-${RELEASE}/ /opt/fluid-calendar
|
||||||
mv /opt/fluid.env /opt/fluid-calendar/.env
|
mv /opt/fluid.env /opt/fluid-calendar/.env
|
||||||
cd /opt/fluid-calendar
|
cd /opt/fluid-calendar
|
||||||
@ -74,4 +74,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2025 tteck
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
# Author: tteck (tteckster)
|
# Author: Arian Nasr (arian-nasr)
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/deepch/RTSPtoWeb
|
# Source: https://www.freepbx.org/
|
||||||
|
|
||||||
APP="RTSPtoWeb"
|
APP="FreePBX"
|
||||||
var_tags="${var_tags:-media}"
|
var_tags="pbx;voip;telephony"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
@ -23,14 +23,12 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /var ]]; then
|
|
||||||
|
if [[ ! -f /lib/systemd/system/freepbx.service ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating $APP LXC"
|
msg_error "Currently we don't provide an update function for this ${APP}."
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y upgrade
|
|
||||||
msg_ok "Updated $APP LXC"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,4 +39,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
72
ct/fumadocs.sh
Normal file
72
ct/fumadocs.sh
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/fuma-nama/fumadoc
|
||||||
|
|
||||||
|
APP="Fumadocs"
|
||||||
|
var_tags="${var_tags:-documentation}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-5}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/fumadocs ]]; then
|
||||||
|
msg_error "No installation found in /opt/fumadocs!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f /opt/fumadocs/.projectname ]]; then
|
||||||
|
msg_error "Project name file not found: /opt/fumadocs/.projectname!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs
|
||||||
|
PROJECT_NAME=$(</opt/fumadocs/.projectname)
|
||||||
|
PROJECT_DIR="/opt/fumadocs/${PROJECT_NAME}"
|
||||||
|
SERVICE_NAME="fumadocs_${PROJECT_NAME}.service"
|
||||||
|
|
||||||
|
if [[ ! -d "$PROJECT_DIR" ]]; then
|
||||||
|
msg_error "Project directory does not exist: $PROJECT_DIR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Stopping service $SERVICE_NAME"
|
||||||
|
systemctl stop "$SERVICE_NAME"
|
||||||
|
msg_ok "Stopped service $SERVICE_NAME"
|
||||||
|
|
||||||
|
msg_info "Updating dependencies using pnpm"
|
||||||
|
cd "$PROJECT_DIR"
|
||||||
|
$STD pnpm up --latest
|
||||||
|
$STD pnpm build
|
||||||
|
msg_ok "Updated dependencies using pnpm"
|
||||||
|
|
||||||
|
msg_info "Starting service $SERVICE_NAME"
|
||||||
|
systemctl start "$SERVICE_NAME"
|
||||||
|
msg_ok "Started service $SERVICE_NAME"
|
||||||
|
|
||||||
|
msg_ok "Fumadocs successfully updated"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
75
ct/gatus.sh
Normal file
75
ct/gatus.sh
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/TwiN/gatus
|
||||||
|
|
||||||
|
APP="gatus"
|
||||||
|
var_tags="${var_tags:-monitoring}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
|
||||||
|
if [[ ! -d /opt/gatus ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
|
msg_info "Updating $APP"
|
||||||
|
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop gatus
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
|
mv /opt/gatus/config/config.yaml /opt
|
||||||
|
rm -rf /opt/gatus/*
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
|
tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
|
||||||
|
cd /opt/gatus
|
||||||
|
$STD go mod tidy
|
||||||
|
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
|
||||||
|
setcap CAP_NET_RAW+ep gatus
|
||||||
|
mv /opt/config.yaml config
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start gatus
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_info "Cleaning Up"
|
||||||
|
rm -f "$temp_file"
|
||||||
|
msg_ok "Cleanup Completed"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
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/RayLabsHQ/gitea-mirror
|
||||||
|
|
||||||
|
APP="gitea-mirror"
|
||||||
|
var_tags="${var_tags:-mirror;gitea}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-6}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/gitea-mirror ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/RayLabsHQ/gitea-mirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then
|
||||||
|
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop gitea-mirror
|
||||||
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
|
msg_info "Backup Data"
|
||||||
|
mkdir -p /opt/gitea-mirror-backup/data
|
||||||
|
cp /opt/gitea-mirror/data/* /opt/gitea-mirror-backup/data/
|
||||||
|
msg_ok "Backup Data"
|
||||||
|
|
||||||
|
msg_info "Installing Bun"
|
||||||
|
export BUN_INSTALL=/opt/bun
|
||||||
|
curl -fsSL https://bun.sh/install | $STD bash
|
||||||
|
ln -sf /opt/bun/bin/bun /usr/local/bin/bun
|
||||||
|
ln -sf /opt/bun/bin/bun /usr/local/bin/bunx
|
||||||
|
msg_ok "Installed Bun"
|
||||||
|
|
||||||
|
rm -rf /opt/gitea-mirror
|
||||||
|
fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
|
||||||
|
|
||||||
|
msg_info "Updating and rebuilding ${APP} to v${RELEASE}"
|
||||||
|
cd /opt/gitea-mirror
|
||||||
|
$STD bun run setup
|
||||||
|
$STD bun run build
|
||||||
|
APP_VERSION=$(grep -o '"version": *"[^"]*"' package.json | cut -d'"' -f4)
|
||||||
|
sudo sed -i.bak "s|^Environment=npm_package_version=.*|Environment=npm_package_version=${APP_VERSION}|" /etc/systemd/system/gitea-mirror.service
|
||||||
|
msg_ok "Updated and rebuilt ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Restoring Data"
|
||||||
|
cp /opt/gitea-mirror-backup/data/* /opt/gitea-mirror/data
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Restored Data"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl start gitea-mirror
|
||||||
|
msg_ok "Service Started"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4321${CL}"
|
||||||
@ -29,10 +29,11 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
|
RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o $(basename "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64")
|
FILENAME="gitea-$RELEASE-linux-amd64"
|
||||||
|
curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o $FILENAME
|
||||||
systemctl stop gitea
|
systemctl stop gitea
|
||||||
rm -rf /usr/local/bin/gitea
|
rm -rf /usr/local/bin/gitea
|
||||||
mv gitea* /usr/local/bin/gitea
|
mv $FILENAME /usr/local/bin/gitea
|
||||||
chmod +x /usr/local/bin/gitea
|
chmod +x /usr/local/bin/gitea
|
||||||
systemctl start gitea
|
systemctl start gitea
|
||||||
msg_ok "Updated $APP Successfully"
|
msg_ok "Updated $APP Successfully"
|
||||||
|
|||||||
32
ct/go2rtc.sh
32
ct/go2rtc.sh
@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# Source: https://github.com/AlexxIT/go2rtc
|
# Source: https://github.com/AlexxIT/go2rtc
|
||||||
|
|
||||||
APP="go2rtc"
|
APP="go2rtc"
|
||||||
var_tags="${var_tags:-recorder;video}"
|
var_tags="${var_tags:-streaming;video}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
@ -20,22 +20,22 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
if [[ ! -d /opt/go2rtc ]]; then
|
if [[ ! -d /opt/go2rtc ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
msg_info "Updating $APP"
|
|
||||||
systemctl stop go2rtc
|
|
||||||
cd /opt/go2rtc
|
|
||||||
rm go2rtc_linux_amd64
|
|
||||||
curl -fsSL "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64" -o $(basename "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64")
|
|
||||||
chmod +x go2rtc_linux_amd64
|
|
||||||
systemctl start go2rtc
|
|
||||||
msg_ok "Updated $APP"
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Updating $APP"
|
||||||
|
systemctl stop go2rtc
|
||||||
|
cd /opt/go2rtc
|
||||||
|
rm go2rtc_linux_amd64
|
||||||
|
curl -fsSL "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64" -o $(basename "https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64")
|
||||||
|
chmod +x go2rtc_linux_amd64
|
||||||
|
systemctl start go2rtc
|
||||||
|
msg_ok "Updated $APP"
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
40
ct/gomft.sh
40
ct/gomft.sh
@ -45,6 +45,9 @@ function update_script() {
|
|||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
msg_info "Updating $APP to ${RELEASE}"
|
||||||
|
if ! command -v git >/dev/null 2>&1; then
|
||||||
|
$STD apt-get install -y git
|
||||||
|
fi
|
||||||
rm -f /opt/gomft/gomft
|
rm -f /opt/gomft/gomft
|
||||||
temp_file=$(mktemp)
|
temp_file=$(mktemp)
|
||||||
curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
||||||
@ -53,6 +56,43 @@ function update_script() {
|
|||||||
cd /opt/gomft
|
cd /opt/gomft
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
|
TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
|
||||||
|
$STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
|
||||||
|
# dirty hack to fix templ
|
||||||
|
cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
|
||||||
|
package search
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/starfleetcptn/gomft/components/file_metadata"
|
||||||
|
"github.com/starfleetcptn/gomft/components/file_metadata/list"
|
||||||
|
)
|
||||||
|
|
||||||
|
templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
|
||||||
|
<!-- Search Results -->
|
||||||
|
<div id="search-results">
|
||||||
|
if len(data.Files) > 0 {
|
||||||
|
@list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
|
||||||
|
Files: data.Files,
|
||||||
|
Page: data.Page,
|
||||||
|
Limit: data.Limit,
|
||||||
|
TotalCount: data.TotalCount,
|
||||||
|
TotalPages: data.TotalPages,
|
||||||
|
Filter: data.Filter,
|
||||||
|
SortBy: data.SortBy,
|
||||||
|
SortDir: data.SortDir,
|
||||||
|
}, "/files/search/partial", "#search-results-container")
|
||||||
|
} else {
|
||||||
|
<div class="p-6 text-center text-gray-500 dark:text-gray-400">
|
||||||
|
<svg class="mx-auto mb-4 w-12 h-12 text-gray-400" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" />
|
||||||
|
</svg>
|
||||||
|
<p>No files found matching your search criteria.</p>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
EOF
|
||||||
$STD "$HOME"/go/bin/templ generate
|
$STD "$HOME"/go/bin/templ generate
|
||||||
export CGO_ENABLED=1
|
export CGO_ENABLED=1
|
||||||
export GOOS=linux
|
export GOOS=linux
|
||||||
|
|||||||
@ -37,7 +37,7 @@ function update_script() {
|
|||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
cd /opt/gotify
|
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")
|
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
|
rm -rf gotify-linux-amd64.zip
|
||||||
chmod +x gotify-linux-amd64
|
chmod +x gotify-linux-amd64
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
|||||||
@ -39,7 +39,7 @@ function update_script() {
|
|||||||
rm -rf grist_bak
|
rm -rf grist_bak
|
||||||
mv grist 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")
|
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
|
mv grist-core-${RELEASE} grist
|
||||||
|
|
||||||
mkdir -p grist/docs
|
mkdir -p grist/docs
|
||||||
|
|||||||
6
ct/headers/actualbudget
Normal file
6
ct/headers/actualbudget
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
___ __ __ ____ __ __
|
||||||
|
/ | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_
|
||||||
|
/ /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/
|
||||||
|
/ ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_
|
||||||
|
/_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/
|
||||||
|
/____/
|
||||||
6
ct/headers/alpine-bitmagnet
Normal file
6
ct/headers/alpine-bitmagnet
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
___ __ _ __ _ __ __
|
||||||
|
/ | / /___ (_)___ ___ / /_ (_) /_____ ___ ____ _____ _____ ___ / /_
|
||||||
|
/ /| | / / __ \/ / __ \/ _ \______/ __ \/ / __/ __ `__ \/ __ `/ __ `/ __ \/ _ \/ __/
|
||||||
|
/ ___ |/ / /_/ / / / / / __/_____/ /_/ / / /_/ / / / / / /_/ / /_/ / / / / __/ /_
|
||||||
|
/_/ |_/_/ .___/_/_/ /_/\___/ /_.___/_/\__/_/ /_/ /_/\__,_/\__, /_/ /_/\___/\__/
|
||||||
|
/_/ /____/
|
||||||
6
ct/headers/alpine-forgejo
Normal file
6
ct/headers/alpine-forgejo
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
___ __ _ ______ _
|
||||||
|
/ | / /___ (_)___ ___ / ____/___ _________ ____ (_)___
|
||||||
|
/ /| | / / __ \/ / __ \/ _ \______/ /_ / __ \/ ___/ __ `/ _ \ / / __ \
|
||||||
|
/ ___ |/ / /_/ / / / / / __/_____/ __/ / /_/ / / / /_/ / __/ / / /_/ /
|
||||||
|
/_/ |_/_/ .___/_/_/ /_/\___/ /_/ \____/_/ \__, /\___/_/ /\____/
|
||||||
|
/_/ /____/ /___/
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user