mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-07-23 14:22:53 +02:00
Compare commits
461 Commits
2026-06-15
...
readd_ca
| Author | SHA1 | Date | |
|---|---|---|---|
| 09a5860ea3 | |||
| 043f1154e3 | |||
| 8c7da1e036 | |||
| bbd5a3f522 | |||
| c07dc4a4c3 | |||
| e7f6a6d4cd | |||
| 3242b9a2d1 | |||
| 38ed344e0a | |||
| 658aad229a | |||
| eb5a5b2cb7 | |||
| 09c85021fc | |||
| 7f1b0ead93 | |||
| c24bba00de | |||
| 3f7228f9c6 | |||
| c0a327dad8 | |||
| 78990277f2 | |||
| 0b15e19500 | |||
| f75b0a8b0e | |||
| b5360882c9 | |||
| b2936ff9ce | |||
| 29552c6e2e | |||
| d2ecb9f44c | |||
| ec3c25c5f5 | |||
| b1259e3749 | |||
| ff192c4530 | |||
| e72f335b46 | |||
| 13d7bf6c78 | |||
| 2ab4a31dd1 | |||
| e7557c2355 | |||
| 79cee47df6 | |||
| b4dcdd4472 | |||
| 8f2b68ed7e | |||
| 853f5e868a | |||
| 7c7d40cfe3 | |||
| 373ae7e143 | |||
| abc31499a2 | |||
| 7bf45d5b66 | |||
| f119e8782a | |||
| 271df3c3fb | |||
| c991a7eccf | |||
| 5d4eff0493 | |||
| 3f90af2a21 | |||
| 55002839fb | |||
| a51e1f37f5 | |||
| 8655282c2d | |||
| e15db754a6 | |||
| 772430de7e | |||
| 04a84f5052 | |||
| 12dec08523 | |||
| 775f1a98c2 | |||
| 6d6d66eec6 | |||
| 9bb99c59c5 | |||
| d122341a47 | |||
| b9f26d66ed | |||
| c44789f5f6 | |||
| 5144f8d0cc | |||
| d23a2e64e7 | |||
| b36ad5c3a2 | |||
| 74a233b8b9 | |||
| 66eff7ee87 | |||
| 812267aedd | |||
| c759617379 | |||
| 75a1da273f | |||
| c99768869d | |||
| c52a69e8e5 | |||
| 2afea1239c | |||
| 07e31eb5bc | |||
| 80c4b04d83 | |||
| ed29bb6f62 | |||
| a5b839f91f | |||
| d4d482746b | |||
| 2bffa47924 | |||
| 108c9dcf43 | |||
| 0f37abff3c | |||
| 670d972cc1 | |||
| 9f8bc4b03d | |||
| 817ee347c7 | |||
| bb4e35f988 | |||
| 254e720b4f | |||
| 9055f4b34e | |||
| 3f5453b609 | |||
| e812206116 | |||
| 7f430e15bb | |||
| 9c586b94ab | |||
| ab3c9be482 | |||
| 103b420e30 | |||
| c039ab2e62 | |||
| 63f219f14f | |||
| 09ec7b3203 | |||
| 55ab97a020 | |||
| b7a002cae4 | |||
| 171b954c7c | |||
| 6f76cc043e | |||
| 5d57c328fb | |||
| da62724407 | |||
| dbe2c9eb97 | |||
| 3c5a848d7d | |||
| 1e3d0dedb3 | |||
| bcaadc4dbd | |||
| 666bdbd8c8 | |||
| 7596b95517 | |||
| 1521e131b5 | |||
| 734bb75b12 | |||
| d6d8d20c76 | |||
| 649e66ed2b | |||
| 81bb9c7d71 | |||
| ca082aedf0 | |||
| 1e7667e5f8 | |||
| f828e629b5 | |||
| 4a98e86db1 | |||
| 37b5242c21 | |||
| a1333222a8 | |||
| 12949bce6c | |||
| fae0aacf6d | |||
| fd20ed1bfc | |||
| eb3fb749df | |||
| f7fdf419b1 | |||
| 0a7bd0f37e | |||
| 48483c63b8 | |||
| 962c040f44 | |||
| c0b2c906fa | |||
| 96100474cc | |||
| 76335cefe8 | |||
| 8fbb4b1988 | |||
| c481c3e24e | |||
| dcd1eefdd4 | |||
| f1b2bd0486 | |||
| 42f6b3ccdd | |||
| ed9c80f805 | |||
| 0906341e95 | |||
| 618d578c35 | |||
| f137f8c894 | |||
| 98bedb6ccd | |||
| b958252441 | |||
| 92c4fb45a9 | |||
| f4e0111ac0 | |||
| 2e4558e262 | |||
| 11139aede7 | |||
| 6716d8de84 | |||
| f1e952005e | |||
| 89b671880a | |||
| 25045ef344 | |||
| bfab0dd034 | |||
| f1adfc32d3 | |||
| 11937bf5fa | |||
| a6a8651000 | |||
| 6e55269d9f | |||
| e64f5a041d | |||
| 67e0c7e9f8 | |||
| 87f2189cbb | |||
| a9d71b7d23 | |||
| 2bf6c5e5da | |||
| 3143d25caa | |||
| d9d724ce57 | |||
| 7a9726b1dd | |||
| 0102d5bd83 | |||
| 8d288ffee3 | |||
| e00df4fd6e | |||
| fe7de5e26c | |||
| 87ccf49dc3 | |||
| c5f905ccf1 | |||
| bff3c6932a | |||
| 7027d67eb3 | |||
| 766f8519a3 | |||
| 68cc4f3da7 | |||
| 81d6b2beee | |||
| 555953117c | |||
| 93ce08aa72 | |||
| 728726d5cc | |||
| 20740c3ca2 | |||
| 417b0641a0 | |||
| 86991b283d | |||
| 4ebae9f1c4 | |||
| d8c636eaef | |||
| 4b71ee8b3a | |||
| a8aa1ba085 | |||
| 954da140f1 | |||
| 604f7c7ae9 | |||
| dbd591ada6 | |||
| cc5976baa6 | |||
| d29eec9494 | |||
| 819ecc1105 | |||
| 7e15a4bf26 | |||
| 9406a1ca98 | |||
| d58123a518 | |||
| 704916d27d | |||
| 3c84f2d6c1 | |||
| 044bffcea4 | |||
| 84a1f13fa7 | |||
| c075708588 | |||
| 2b3e2346e1 | |||
| 6ad04d8b19 | |||
| 225329a62f | |||
| b8a1879b24 | |||
| 9f90357abc | |||
| a068d32a66 | |||
| ea7249ca03 | |||
| d610a35b34 | |||
| a76225aba6 | |||
| 0c9d77973e | |||
| 9b7f4533c6 | |||
| 70f8118198 | |||
| ace936085e | |||
| 6f18af08d8 | |||
| cd9c920d48 | |||
| 6a07f1bfd5 | |||
| 3f1b2f2180 | |||
| 0bc090abc6 | |||
| be29bb1538 | |||
| 8f3d439daa | |||
| 88458c5837 | |||
| ce11015489 | |||
| f156e761e0 | |||
| 7493a7f003 | |||
| a8eedc1848 | |||
| be21f7517a | |||
| 4c10c0d98f | |||
| 17d18e70c8 | |||
| 80af66e864 | |||
| 53c72b9a1f | |||
| 34f56866d5 | |||
| 7b5d525d26 | |||
| 26c8959902 | |||
| 9c6d4479a7 | |||
| e276b6c5b5 | |||
| a1fa80cec3 | |||
| cd8a07a170 | |||
| 2dff51e198 | |||
| 7450c1ef03 | |||
| dbad31ba08 | |||
| 8fba38a423 | |||
| 5d25171d8d | |||
| fde188a6ff | |||
| 4d56173394 | |||
| 02bbb774c9 | |||
| 7c8bbed4fa | |||
| 71761ce5a9 | |||
| 069c8f578f | |||
| da24518021 | |||
| 5703462a0d | |||
| 89998b4fa0 | |||
| 7140f1dd00 | |||
| e9bc9df3a9 | |||
| b85df60ddf | |||
| b1523bc2e2 | |||
| 33642ab1c5 | |||
| 1aef5d655c | |||
| a84e13b504 | |||
| 3141dfbfb7 | |||
| 084fe40484 | |||
| 905c3fa411 | |||
| fd2ec706f3 | |||
| 68b76e7b0b | |||
| 03963b5193 | |||
| d756c83b62 | |||
| e36e0bbe3f | |||
| de0408e12f | |||
| b5361e5278 | |||
| 4f9f556a93 | |||
| 4b23f2c72c | |||
| 2ded16ed4b | |||
| e1f61aeeb9 | |||
| fb9f5a0047 | |||
| 17b5f8c10c | |||
| 8b99d3b1cc | |||
| 039470965b | |||
| 8e4a9829cf | |||
| f1eee5f5ed | |||
| fb14e6ae8b | |||
| 4142c5c2d3 | |||
| d85914530f | |||
| 3d9e67292b | |||
| ae60dc138b | |||
| 14a85a8591 | |||
| 1be64c1994 | |||
| 340695b9bd | |||
| ba31c925e3 | |||
| 868b405082 | |||
| 60266b9c17 | |||
| ea8b87fd7f | |||
| 58145d5bd3 | |||
| 9fbe2de1cb | |||
| c918dee5fe | |||
| 0774772b87 | |||
| dc26b8358e | |||
| 01a6c1ddec | |||
| 3e544b750d | |||
| 681924cb1a | |||
| 6ea04b7602 | |||
| b2d20799d8 | |||
| 324fa33d8c | |||
| 5aed3bdde5 | |||
| b3cef14a35 | |||
| 10c8ad6f28 | |||
| 37bcddd847 | |||
| 075a691198 | |||
| fbd083c9ae | |||
| edf167025f | |||
| 3abbefe3b0 | |||
| c356c3827a | |||
| 6f2d3da61f | |||
| f7acb76e80 | |||
| b2ecd86698 | |||
| df10a5ea53 | |||
| 3a65047ff9 | |||
| 5b01ff81e8 | |||
| 4e6cb56f06 | |||
| 470c0672fb | |||
| 62b7080477 | |||
| e193adad5a | |||
| aeb8dba809 | |||
| 3fc7008bbe | |||
| f71005cc48 | |||
| 0b94d4f54a | |||
| 2acf3ba19e | |||
| 5670e3721d | |||
| 50eb6c37cf | |||
| ef2a840842 | |||
| 49a5bfeda3 | |||
| 97cf2ea294 | |||
| d3623d2da5 | |||
| a1c7097ef5 | |||
| 13f348ce1b | |||
| 812200ccd6 | |||
| 5fe4c20ccc | |||
| 33a18190fc | |||
| eabfaf25dc | |||
| e076322c0f | |||
| f7dff0a642 | |||
| 52e4e5ff39 | |||
| 23ee4c3722 | |||
| 89b6678d1f | |||
| aab46b25e3 | |||
| b18e9298b1 | |||
| a96402797e | |||
| 9b619969ad | |||
| 70e14ef238 | |||
| 7ac60ac88e | |||
| cfb5114d8b | |||
| d879050293 | |||
| bd228edb21 | |||
| fdd6704b3c | |||
| 084993ba60 | |||
| f8ae0738c9 | |||
| f1321ce38b | |||
| 1cdf74dd41 | |||
| fd1dbf2ba1 | |||
| 68bf362a9d | |||
| edbd570adf | |||
| 6b931ef4d4 | |||
| 10d19362a2 | |||
| 3fc187efb8 | |||
| 51db1a9d7d | |||
| bc9ceb187d | |||
| 490aa20dab | |||
| 834f2dbd29 | |||
| 0524e7feb5 | |||
| c1a6dc29ee | |||
| 7f363170f3 | |||
| bf815a847b | |||
| a5f21f63e8 | |||
| 0940119aea | |||
| 7b3afbc609 | |||
| b581ce74e7 | |||
| afd20452b5 | |||
| 6545c0b731 | |||
| 826311c0d6 | |||
| 6e82dc8bce | |||
| 0783cefae2 | |||
| c218deddd1 | |||
| ca6eacdd92 | |||
| 9996ed71ba | |||
| a3794d2eb6 | |||
| 92c22b40d7 | |||
| cf2252f548 | |||
| 6345455031 | |||
| 73c55bed9f | |||
| f7210f3a66 | |||
| 8b877f1c9f | |||
| 6192225be7 | |||
| 6665a5bf5d | |||
| 53efcadfa9 | |||
| 89d82d324c | |||
| b5c31d58f4 | |||
| c98d2da1bd | |||
| 3799d565da | |||
| c0c230058b | |||
| dd2d2a1696 | |||
| a6db986d97 | |||
| df187136ef | |||
| 518b8406e3 | |||
| ecd563b94e | |||
| 2d5441f3d5 | |||
| 610a3d56b7 | |||
| 59b560a402 | |||
| 18b9cd2e64 | |||
| f6377d6be3 | |||
| 603ff05a39 | |||
| 8064b505de | |||
| 1134f4cdc6 | |||
| ca678a39e2 | |||
| 59285b8b64 | |||
| a40fbfec3b | |||
| 589659068d | |||
| d1c8711207 | |||
| 76d98edaa1 | |||
| 6c55f61efc | |||
| 7789f1c58c | |||
| 8d635c210a | |||
| 95ddaf0f22 | |||
| 6710cb5210 | |||
| 8bcab8b4d9 | |||
| 2f8315eebf | |||
| 7e64f1b2d7 | |||
| b8a16454cd | |||
| e5072fae5c | |||
| c43420ba6c | |||
| 6ce9d8a39d | |||
| 482a7a78f7 | |||
| 5dfabfbb92 | |||
| 515122227a | |||
| 1b07f60163 | |||
| fb29b8f4e4 | |||
| f4415b8df2 | |||
| e0c05196d4 | |||
| 02c5d1ef82 | |||
| 6ef8608124 | |||
| d0caa76202 | |||
| 6275928a81 | |||
| 3465170234 | |||
| d8640aeb4c | |||
| e9b6af3531 | |||
| ca95941cd9 | |||
| 05823c3cb5 | |||
| a5398b742c | |||
| 3d7fd049fa | |||
| 4b80e0db29 | |||
| 5169c61968 | |||
| 1d8518b305 | |||
| 04e6933b3b | |||
| 00fe32dc3c | |||
| 59a389fb2d | |||
| d42fd9893e | |||
| 4556d40b07 | |||
| 49b7de22c3 | |||
| 2112e2793e | |||
| 2e8ff7a6c5 | |||
| 4d4e1d7654 | |||
| 6b25e35ecf | |||
| 6c23883d94 | |||
| e08719ac3f | |||
| 0683d4942c | |||
| b0896dbdeb | |||
| f1ee2a2b91 | |||
| 691ce33090 | |||
| 5f5881c757 | |||
| af7e83300f | |||
| 29c25a0ab8 | |||
| e60c1f31c2 | |||
| f13782704e | |||
| 7ee47be436 |
+40
-7
@@ -12,13 +12,17 @@ body:
|
|||||||
Requests may be closed if the application is out of scope, abandoned, too new, not publicly verifiable, or not suitable for a reliable Proxmox VE Helper-Scripts integration.
|
Requests may be closed if the application is out of scope, abandoned, too new, not publicly verifiable, or not suitable for a reliable Proxmox VE Helper-Scripts integration.
|
||||||
|
|
||||||
General requirements:
|
General requirements:
|
||||||
- The application should be self-hosted.
|
- The application must be self-hosted.
|
||||||
- The project should have an official public source repository.
|
- The project must have an official public source repository.
|
||||||
- The project should provide official releases, tags, or release tarballs.
|
- The project must provide official releases, tags, or release tarballs.
|
||||||
- The project should be actively maintained.
|
- The project must be actively maintained.
|
||||||
- The project should generally have at least 1,000 stars or a comparable public adoption signal.
|
- The official source repository must have at least 1,000 stars.
|
||||||
- The latest official release or tag should not be older than 6 months.
|
- The latest official release or tag must not be older than 6 months.
|
||||||
- The project itself should be at least 6 months old.
|
- The project itself must be at least 6 months old.
|
||||||
|
|
||||||
|
Projects that do not meet these requirements may be closed without further evaluation.
|
||||||
|
|
||||||
|
Exceptions to the 1,000-star requirement are rare and require a clearly verifiable, significant public adoption signal.
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: application-name
|
id: application-name
|
||||||
@@ -47,6 +51,35 @@ body:
|
|||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## ⚠️ Project Eligibility
|
||||||
|
|
||||||
|
Before continuing, verify that the requested project meets the minimum requirements below.
|
||||||
|
|
||||||
|
**Projects with fewer than 1,000 stars are generally not eligible for a script request.**
|
||||||
|
|
||||||
|
Exceptions are only considered where there is a clearly verifiable, significant public adoption signal.
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: repository-stars
|
||||||
|
attributes:
|
||||||
|
label: Repository Stars
|
||||||
|
description: Enter the current number of stars of the official source repository.
|
||||||
|
placeholder: "e.g., 15,000"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: minimum-stars
|
||||||
|
attributes:
|
||||||
|
label: Minimum Adoption Requirement
|
||||||
|
description: Confirm that you have verified the project's public adoption.
|
||||||
|
options:
|
||||||
|
- label: The official source repository has at least 1,000 stars.
|
||||||
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: app-description
|
id: app-description
|
||||||
attributes:
|
attributes:
|
||||||
|
|||||||
Generated
+1
@@ -1,2 +1,3 @@
|
|||||||
ko_fi: community_scripts
|
ko_fi: community_scripts
|
||||||
github: community_scripts
|
github: community_scripts
|
||||||
|
buy_me_a_coffee: communityscripts
|
||||||
|
|||||||
Generated
+392
@@ -1,3 +1,395 @@
|
|||||||
|
## 2026-06-30
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Use heredoc when creating env files and creds/other [@tremor021](https://github.com/tremor021) ([#15469](https://github.com/community-scripts/ProxmoxVE/pull/15469))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- [tools/pve/*.sh] https://download.proxmox.com -> http://download.proxmox.com (PVE8 Only) [@galeksandrp](https://github.com/galeksandrp) ([#15498](https://github.com/community-scripts/ProxmoxVE/pull/15498))
|
||||||
|
|
||||||
|
## 2026-06-29
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Koffan ([#15467](https://github.com/community-scripts/ProxmoxVE/pull/15467))
|
||||||
|
- Etherpad ([#15468](https://github.com/community-scripts/ProxmoxVE/pull/15468))
|
||||||
|
- Flame ([#15464](https://github.com/community-scripts/ProxmoxVE/pull/15464))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- chore(ct): sync snapotter defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15472](https://github.com/community-scripts/ProxmoxVE/pull/15472))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- feat: update nginx proxy manager to trixie [@asylumexp](https://github.com/asylumexp) ([#15457](https://github.com/community-scripts/ProxmoxVE/pull/15457))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [tools.func]: add edit_yaml_config function [@tremor021](https://github.com/tremor021) ([#15484](https://github.com/community-scripts/ProxmoxVE/pull/15484))
|
||||||
|
|
||||||
|
## 2026-06-28
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- remove: promtail as EOL and other fixes [@asylumexp](https://github.com/asylumexp) ([#15455](https://github.com/community-scripts/ProxmoxVE/pull/15455))
|
||||||
|
|
||||||
|
## 2026-06-27
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- tool: add disk-health tool (SMART + NVMe) [@MickLesk](https://github.com/MickLesk) ([#15417](https://github.com/community-scripts/ProxmoxVE/pull/15417))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Deluge openssl fix [@asylumexp](https://github.com/asylumexp) ([#15435](https://github.com/community-scripts/ProxmoxVE/pull/15435))
|
||||||
|
- fix command syntax in tunarr.sh [@asylumexp](https://github.com/asylumexp) ([#15434](https://github.com/community-scripts/ProxmoxVE/pull/15434))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Storyteller: bump Node.js version to Node 24 [@thinusn](https://github.com/thinusn) ([#15439](https://github.com/community-scripts/ProxmoxVE/pull/15439))
|
||||||
|
|
||||||
|
### ❔ Uncategorized
|
||||||
|
|
||||||
|
- fix(endurain): replace Poetry/uv-pip backend setup with uv sync --frozen --no-dev [@Copilot](https://github.com/Copilot) ([#15429](https://github.com/community-scripts/ProxmoxVE/pull/15429))
|
||||||
|
|
||||||
|
## 2026-06-26
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Termix: Update Nginx configuration file paths [@xyzulu](https://github.com/xyzulu) ([#15397](https://github.com/community-scripts/ProxmoxVE/pull/15397))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Docuseal: use real SECRET_KEY_BASE for db:migrate on update [@MickLesk](https://github.com/MickLesk) ([#15411](https://github.com/community-scripts/ProxmoxVE/pull/15411))
|
||||||
|
- bun: correct install for degoog [@MickLesk](https://github.com/MickLesk) ([#15412](https://github.com/community-scripts/ProxmoxVE/pull/15412))
|
||||||
|
- fix databasus update/install errors [@asylumexp](https://github.com/asylumexp) ([#15403](https://github.com/community-scripts/ProxmoxVE/pull/15403))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- tools.func: fix setup_docker - don't abort update on docker pull failure [@MickLesk](https://github.com/MickLesk) ([#15410](https://github.com/community-scripts/ProxmoxVE/pull/15410))
|
||||||
|
- fix(build.func): set /dev/kfd GID in fix_gpu_gids for AMD ROCm [@jamiej](https://github.com/jamiej) ([#15401](https://github.com/community-scripts/ProxmoxVE/pull/15401))
|
||||||
|
- fix alpine mktmp error [@asylumexp](https://github.com/asylumexp) ([#15398](https://github.com/community-scripts/ProxmoxVE/pull/15398))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: reduce IP-Tag resource usage and clean up ShellCheck findings [@MickLesk](https://github.com/MickLesk) ([#15418](https://github.com/community-scripts/ProxmoxVE/pull/15418))
|
||||||
|
- QoL: kernel-clean: Validate kernel selection input [@MickLesk](https://github.com/MickLesk) ([#15414](https://github.com/community-scripts/ProxmoxVE/pull/15414))
|
||||||
|
- QoL: clean-lxcs exclude matching and set -e cancel handling [@MickLesk](https://github.com/MickLesk) ([#15413](https://github.com/community-scripts/ProxmoxVE/pull/15413))
|
||||||
|
- QoL: Harden microcode download/install in microcode and pbs-microcode [@MickLesk](https://github.com/MickLesk) ([#15415](https://github.com/community-scripts/ProxmoxVE/pull/15415))
|
||||||
|
- QoL: scaling-governor extend selection and guard missing cpufreq [@MickLesk](https://github.com/MickLesk) ([#15416](https://github.com/community-scripts/ProxmoxVE/pull/15416))
|
||||||
|
|
||||||
|
## 2026-06-25
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Pinchflat ([#15367](https://github.com/community-scripts/ProxmoxVE/pull/15367))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- persist gramps-web configuration file after update [@operfesium](https://github.com/operfesium) ([#15394](https://github.com/community-scripts/ProxmoxVE/pull/15394))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- VM-Core: Update some Functions [@MickLesk](https://github.com/MickLesk) ([#15113](https://github.com/community-scripts/ProxmoxVE/pull/15113))
|
||||||
|
|
||||||
|
## 2026-06-24
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- SnapOtter ([#15368](https://github.com/community-scripts/ProxmoxVE/pull/15368))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- enabling rewirte module in apache [@d3v3lop3rDE](https://github.com/d3v3lop3rDE) ([#15360](https://github.com/community-scripts/ProxmoxVE/pull/15360))
|
||||||
|
- watcharr: Increase default RAM allocation from 1024 to 2048 [@MickLesk](https://github.com/MickLesk) ([#15370](https://github.com/community-scripts/ProxmoxVE/pull/15370))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor LibreNMS: replace old install and update variant with tarball approach [@MickLesk](https://github.com/MickLesk) ([#15369](https://github.com/community-scripts/ProxmoxVE/pull/15369))
|
||||||
|
|
||||||
|
### 🗑️ Deleted Scripts
|
||||||
|
|
||||||
|
- delete wger [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15380](https://github.com/community-scripts/ProxmoxVE/pull/15380))
|
||||||
|
- Delete ghost [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15377](https://github.com/community-scripts/ProxmoxVE/pull/15377))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: add SDN vnet selection in advanced install [@MickLesk](https://github.com/MickLesk) ([#15366](https://github.com/community-scripts/ProxmoxVE/pull/15366))
|
||||||
|
- core: add var_http_proxy and var_http_no_proxy support [@MickLesk](https://github.com/MickLesk) ([#15225](https://github.com/community-scripts/ProxmoxVE/pull/15225))
|
||||||
|
|
||||||
|
## 2026-06-23
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- update jdk when updating crafty-controller [@asylumexp](https://github.com/asylumexp) ([#15349](https://github.com/community-scripts/ProxmoxVE/pull/15349))
|
||||||
|
- fix docker update function [@asylumexp](https://github.com/asylumexp) ([#15353](https://github.com/community-scripts/ProxmoxVE/pull/15353))
|
||||||
|
- LibreNMS: run daily.sh as librenms user with git available [@MickLesk](https://github.com/MickLesk) ([#15314](https://github.com/community-scripts/ProxmoxVE/pull/15314))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- termix - patch tmp nginx behaviour to match the install script [@xyzulu](https://github.com/xyzulu) ([#15283](https://github.com/community-scripts/ProxmoxVE/pull/15283))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- Fix syntax error in build function [@l0caldadmin](https://github.com/l0caldadmin) ([#15337](https://github.com/community-scripts/ProxmoxVE/pull/15337))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix: close lxc build function [@ServerBP](https://github.com/ServerBP) ([#15343](https://github.com/community-scripts/ProxmoxVE/pull/15343))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [arm64] port pve scripts to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15288](https://github.com/community-scripts/ProxmoxVE/pull/15288))
|
||||||
|
|
||||||
|
### ❔ Uncategorized
|
||||||
|
|
||||||
|
- fix(build.func): remove duplicate if statement causing syntax error on container creation [@Copilot](https://github.com/Copilot) ([#15338](https://github.com/community-scripts/ProxmoxVE/pull/15338))
|
||||||
|
|
||||||
|
## 2026-06-22
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Postiz ([#15048](https://github.com/community-scripts/ProxmoxVE/pull/15048))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- invoiceshelf: use pnpm instead of yarn for frontend build [@MickLesk](https://github.com/MickLesk) ([#15312](https://github.com/community-scripts/ProxmoxVE/pull/15312))
|
||||||
|
- VictoriaMetrics: resolve architecture before jq asset filter [@MickLesk](https://github.com/MickLesk) ([#15316](https://github.com/community-scripts/ProxmoxVE/pull/15316))
|
||||||
|
- Endurain: pin uv to the version required by the project [@MickLesk](https://github.com/MickLesk) ([#15313](https://github.com/community-scripts/ProxmoxVE/pull/15313))
|
||||||
|
- add proxy headers to dispatcharr from #15143 [@asylumexp](https://github.com/asylumexp) ([#15293](https://github.com/community-scripts/ProxmoxVE/pull/15293))
|
||||||
|
- Fix-15015: check correct path for certbot [@galz55](https://github.com/galz55) ([#15034](https://github.com/community-scripts/ProxmoxVE/pull/15034))
|
||||||
|
- fix(romm): resolve 403 Forbidden error on nginx mod_zip installation [@hug-efrei](https://github.com/hug-efrei) ([#15134](https://github.com/community-scripts/ProxmoxVE/pull/15134))
|
||||||
|
- Degoog: Fix valkey url in update; set mandatory settings password [@vhsdream](https://github.com/vhsdream) ([#15300](https://github.com/community-scripts/ProxmoxVE/pull/15300))
|
||||||
|
- [arm64] fix update functions to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15290](https://github.com/community-scripts/ProxmoxVE/pull/15290))
|
||||||
|
- Fix typo in victoriametrics [@asylumexp](https://github.com/asylumexp) ([#15289](https://github.com/community-scripts/ProxmoxVE/pull/15289))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- update: esphome to install and run ESPHome Device Builder [@jesserockz](https://github.com/jesserockz) ([#15195](https://github.com/community-scripts/ProxmoxVE/pull/15195))
|
||||||
|
- [arm64] Port scripts between warracker-zwavejsui to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15291](https://github.com/community-scripts/ProxmoxVE/pull/15291))
|
||||||
|
- [arm64] Port scripts between thingsboard & wanderer to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15286](https://github.com/community-scripts/ProxmoxVE/pull/15286))
|
||||||
|
- [arm64] Port scripts between snowshare & thelounge to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15280](https://github.com/community-scripts/ProxmoxVE/pull/15280))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- tools.func: refresh ruby-build when requested version is missing [@MickLesk](https://github.com/MickLesk) ([#15315](https://github.com/community-scripts/ProxmoxVE/pull/15315))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: add pre-install storage health checks [@MickLesk](https://github.com/MickLesk) ([#15226](https://github.com/community-scripts/ProxmoxVE/pull/15226))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core:: skip LXC stack upgrade prompt in unattended mode [@MickLesk](https://github.com/MickLesk) ([#15319](https://github.com/community-scripts/ProxmoxVE/pull/15319))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- update-apps: sanitize service detection and fail on invalid names [@MickLesk](https://github.com/MickLesk) ([#15318](https://github.com/community-scripts/ProxmoxVE/pull/15318))
|
||||||
|
|
||||||
|
## 2026-06-21
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Matomo: flatten nested deploy layout after update [@MickLesk](https://github.com/MickLesk) ([#15267](https://github.com/community-scripts/ProxmoxVE/pull/15267))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [arm64] Port scripts between qdrant & snipeit to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15274](https://github.com/community-scripts/ProxmoxVE/pull/15274))
|
||||||
|
- [arm64] Port scripts between nodered & paperlessngx to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15255](https://github.com/community-scripts/ProxmoxVE/pull/15255))
|
||||||
|
- [arm64] port scripts titled between papra and qbittorrent to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15258](https://github.com/community-scripts/ProxmoxVE/pull/15258))
|
||||||
|
- [arm64] Port scripts between mediamtx-nocodb to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15254](https://github.com/community-scripts/ProxmoxVE/pull/15254))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- tools.func: centralize Node.js corepack and npm handling in `setup_nodejs()` [@MickLesk](https://github.com/MickLesk) ([#15268](https://github.com/community-scripts/ProxmoxVE/pull/15268))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- tools.func: APT install and deb822 repo reliability [@MickLesk](https://github.com/MickLesk) ([#15272](https://github.com/community-scripts/ProxmoxVE/pull/15272))
|
||||||
|
- tools.func: prevent MySQL data loss and fix repo version matching [@MickLesk](https://github.com/MickLesk) ([#15271](https://github.com/community-scripts/ProxmoxVE/pull/15271))
|
||||||
|
- tools.func: runtime hardening for API helpers and Docker/MeiliSearch [@MickLesk](https://github.com/MickLesk) ([#15273](https://github.com/community-scripts/ProxmoxVE/pull/15273))
|
||||||
|
|
||||||
|
## 2026-06-20
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Apache-Airflow ([#15228](https://github.com/community-scripts/ProxmoxVE/pull/15228))
|
||||||
|
- Plane ([#15227](https://github.com/community-scripts/ProxmoxVE/pull/15227))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Fix docker service crash [@asylumexp](https://github.com/asylumexp) ([#15243](https://github.com/community-scripts/ProxmoxVE/pull/15243))
|
||||||
|
- Nginxproxymanager: repair broken certbot pip before update [@MickLesk](https://github.com/MickLesk) ([#15224](https://github.com/community-scripts/ProxmoxVE/pull/15224))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [arm64] Port scripts between komga & mediamanager to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15245](https://github.com/community-scripts/ProxmoxVE/pull/15245))
|
||||||
|
- [arm64] port scripts between hyperhdr & kometa to arm64 [@asylumexp](https://github.com/asylumexp) ([#15234](https://github.com/community-scripts/ProxmoxVE/pull/15234))
|
||||||
|
|
||||||
|
### 📂 Github
|
||||||
|
|
||||||
|
- add arm64 title check to autolabeler [@asylumexp](https://github.com/asylumexp) ([#15235](https://github.com/community-scripts/ProxmoxVE/pull/15235))
|
||||||
|
|
||||||
|
### ❔ Uncategorized
|
||||||
|
|
||||||
|
- chore(ct): sync limesurvey defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15247](https://github.com/community-scripts/ProxmoxVE/pull/15247))
|
||||||
|
|
||||||
|
## 2026-06-19
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- add avx2 check to influxdb3 [@asylumexp](https://github.com/asylumexp) ([#15208](https://github.com/community-scripts/ProxmoxVE/pull/15208))
|
||||||
|
- Step ca leaf data patch [@heinemannj](https://github.com/heinemannj) ([#15210](https://github.com/community-scripts/ProxmoxVE/pull/15210))
|
||||||
|
- Kimai: Add APP_SECRET env var [@tremor021](https://github.com/tremor021) ([#15199](https://github.com/community-scripts/ProxmoxVE/pull/15199))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [arm64] Port scripts between garage-hortusfox to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15207](https://github.com/community-scripts/ProxmoxVE/pull/15207))
|
||||||
|
- [arm64] Port scripts titled between A-F to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15181](https://github.com/community-scripts/ProxmoxVE/pull/15181))
|
||||||
|
|
||||||
|
### 📂 Github
|
||||||
|
|
||||||
|
- fix (workflow): YAML syntax error in pocketbase stub generation [@Trollfjorden](https://github.com/Trollfjorden) ([#15174](https://github.com/community-scripts/ProxmoxVE/pull/15174))
|
||||||
|
|
||||||
|
### ❔ Uncategorized
|
||||||
|
|
||||||
|
- chore(ct): sync coredns defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15182](https://github.com/community-scripts/ProxmoxVE/pull/15182))
|
||||||
|
- chore(ct): sync gatus defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15184](https://github.com/community-scripts/ProxmoxVE/pull/15184))
|
||||||
|
- chore(ct): sync bitmagnet defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15183](https://github.com/community-scripts/ProxmoxVE/pull/15183))
|
||||||
|
|
||||||
|
## 2026-06-18
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- flowise: add deps / uv / python 3.11 [@MickLesk](https://github.com/MickLesk) ([#15177](https://github.com/community-scripts/ProxmoxVE/pull/15177))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- refactor: crafty-controller [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15178](https://github.com/community-scripts/ProxmoxVE/pull/15178))
|
||||||
|
|
||||||
|
## 2026-06-17
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- kasm: fix release detection [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15151](https://github.com/community-scripts/ProxmoxVE/pull/15151))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- trek: update install and upgrade workflow for v3.1.0 [@MickLesk](https://github.com/MickLesk) ([#15165](https://github.com/community-scripts/ProxmoxVE/pull/15165))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- TREK: Pin version [@tremor021](https://github.com/tremor021) ([#15156](https://github.com/community-scripts/ProxmoxVE/pull/15156))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- chore(paperless-ngx): pin version to prevent v3 update [@tomfrenzel](https://github.com/tomfrenzel) ([#15171](https://github.com/community-scripts/ProxmoxVE/pull/15171))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- immich public proxy: replace npm install with npm ci for consistent dependency installation [@MickLesk](https://github.com/MickLesk) ([#15166](https://github.com/community-scripts/ProxmoxVE/pull/15166))
|
||||||
|
|
||||||
|
## 2026-06-16
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Feishin ([#15130](https://github.com/community-scripts/ProxmoxVE/pull/15130))
|
||||||
|
- Kiwix ([#15131](https://github.com/community-scripts/ProxmoxVE/pull/15131))
|
||||||
|
- Add runtime status guard and deleted script stubs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15125](https://github.com/community-scripts/ProxmoxVE/pull/15125))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix(degoog): use localhost for valkey url [@ethan-hgwr](https://github.com/ethan-hgwr) ([#15149](https://github.com/community-scripts/ProxmoxVE/pull/15149))
|
||||||
|
- Fix InvoiceShelf install/update Yarn package manager mismatch [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15141](https://github.com/community-scripts/ProxmoxVE/pull/15141))
|
||||||
|
- fix storyteller install failure with yarn 4 corepack [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15140](https://github.com/community-scripts/ProxmoxVE/pull/15140))
|
||||||
|
- fix: generate policy-compliant OpenObserve root password [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15137](https://github.com/community-scripts/ProxmoxVE/pull/15137))
|
||||||
|
|
||||||
|
## 2026-06-15
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Watcharr: Clean install on update [@tremor021](https://github.com/tremor021) ([#15119](https://github.com/community-scripts/ProxmoxVE/pull/15119))
|
||||||
|
- Vaultwarden: extend version check for VaultWarden update [@MickLesk](https://github.com/MickLesk) ([#15105](https://github.com/community-scripts/ProxmoxVE/pull/15105))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- degoog: add curl-impersonate to script [@MickLesk](https://github.com/MickLesk) ([#15117](https://github.com/community-scripts/ProxmoxVE/pull/15117))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: extend mesa-vulkan-drivers and vulkan-tools to installation for ARC GPU's [@MickLesk](https://github.com/MickLesk) ([#15106](https://github.com/community-scripts/ProxmoxVE/pull/15106))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: improve mirror selection and error handling [@MickLesk](https://github.com/MickLesk) ([#15108](https://github.com/community-scripts/ProxmoxVE/pull/15108))
|
||||||
|
- core: implement gateway validation for DHCP and static networks [@MickLesk](https://github.com/MickLesk) ([#15107](https://github.com/community-scripts/ProxmoxVE/pull/15107))
|
||||||
|
|
||||||
|
## 2026-06-14
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Iinvoiceninja: fix nginx setup assets port [@MickLesk](https://github.com/MickLesk) ([#15090](https://github.com/community-scripts/ProxmoxVE/pull/15090))
|
||||||
|
- CheckMK: remove stale backup site before creating new backup during update [@MickLesk](https://github.com/MickLesk) ([#15088](https://github.com/community-scripts/ProxmoxVE/pull/15088))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: Implement backup functions for scripts C-D [@tremor021](https://github.com/tremor021) ([#15096](https://github.com/community-scripts/ProxmoxVE/pull/15096))
|
||||||
|
|
||||||
## 2026-06-13
|
## 2026-06-13
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
|
|||||||
Generated
+352
@@ -0,0 +1,352 @@
|
|||||||
|
## 2026-07-18
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- core: add configurable host CA inheritance during bootstrap [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15840](https://github.com/community-scripts/ProxmoxVE/pull/15840))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- tools.func: Safe Delete Directorys & Update PYTHON_VERSION with setup_uv [@MickLesk](https://github.com/MickLesk) ([#15870](https://github.com/community-scripts/ProxmoxVE/pull/15870))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [tools.update-lxcs] feat: optional reporting success/failures to heathchecks.io (or others) [@sir106](https://github.com/sir106) ([#15701](https://github.com/community-scripts/ProxmoxVE/pull/15701))
|
||||||
|
|
||||||
|
## 2026-07-17
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Invidious ([#15824](https://github.com/community-scripts/ProxmoxVE/pull/15824))
|
||||||
|
- OxiCloud ([#15823](https://github.com/community-scripts/ProxmoxVE/pull/15823))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- webtrees: initialize database schema before admin user creation [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15837](https://github.com/community-scripts/ProxmoxVE/pull/15837))
|
||||||
|
- Fix DocuSeal missing Leptonica deps on install and update [@Copilot](https://github.com/Copilot) ([#15858](https://github.com/community-scripts/ProxmoxVE/pull/15858))
|
||||||
|
- apache-guacamole: detect installed extensions during update [@TowyTowy](https://github.com/TowyTowy) ([#15841](https://github.com/community-scripts/ProxmoxVE/pull/15841))
|
||||||
|
- CLIProxyAPI: fix update deleting config.yaml [@austinpilz](https://github.com/austinpilz) ([#15834](https://github.com/community-scripts/ProxmoxVE/pull/15834))
|
||||||
|
- esphome: install libusb-1.0-0 for ESP-IDF native builds [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15838](https://github.com/community-scripts/ProxmoxVE/pull/15838))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- AFFiNE: Bump to 0.27.0 [@MickLesk](https://github.com/MickLesk) ([#15848](https://github.com/community-scripts/ProxmoxVE/pull/15848))
|
||||||
|
- n8n: unpin / use latest release [@MickLesk](https://github.com/MickLesk) ([#15817](https://github.com/community-scripts/ProxmoxVE/pull/15817))
|
||||||
|
- Pin Opencloud to v7.3.0 [@vhsdream](https://github.com/vhsdream) ([#15826](https://github.com/community-scripts/ProxmoxVE/pull/15826))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- SFTPGo: Update APT Repo & Re-Enable Script [@MickLesk](https://github.com/MickLesk) ([#15829](https://github.com/community-scripts/ProxmoxVE/pull/15829))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: enhance rbenv with profile updates / bundle in bashrc [@MickLesk](https://github.com/MickLesk) ([#15822](https://github.com/community-scripts/ProxmoxVE/pull/15822))
|
||||||
|
- feat(build.func): notify users when already on a pinned script version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15819](https://github.com/community-scripts/ProxmoxVE/pull/15819))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- MongoDB: Implement kernel version check and patch [@MickLesk](https://github.com/MickLesk) ([#15821](https://github.com/community-scripts/ProxmoxVE/pull/15821))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- update-lxc: autoremove and autoclean after apt full-upgrade [@soupy-boy](https://github.com/soupy-boy) ([#15831](https://github.com/community-scripts/ProxmoxVE/pull/15831))
|
||||||
|
|
||||||
|
## 2026-07-16
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Sync-In ([#15812](https://github.com/community-scripts/ProxmoxVE/pull/15812))
|
||||||
|
- Beaverhabits ([#15813](https://github.com/community-scripts/ProxmoxVE/pull/15813))
|
||||||
|
- Notediscovery ([#15811](https://github.com/community-scripts/ProxmoxVE/pull/15811))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Pin Immich to v3.0.3 [@vhsdream](https://github.com/vhsdream) ([#15790](https://github.com/community-scripts/ProxmoxVE/pull/15790))
|
||||||
|
|
||||||
|
## 2026-07-15
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Nexterm ([#15688](https://github.com/community-scripts/ProxmoxVE/pull/15688))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- 2fauth: minor fixes for 8.0.0 [@MickLesk](https://github.com/MickLesk) ([#15795](https://github.com/community-scripts/ProxmoxVE/pull/15795))
|
||||||
|
- SnapOtter: refactor update process to prebuild [@MickLesk](https://github.com/MickLesk) ([#15797](https://github.com/community-scripts/ProxmoxVE/pull/15797))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- tools.func: default Docker setup to official repo [@MickLesk](https://github.com/MickLesk) ([#15794](https://github.com/community-scripts/ProxmoxVE/pull/15794))
|
||||||
|
|
||||||
|
## 2026-07-14
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Grav ([#15773](https://github.com/community-scripts/ProxmoxVE/pull/15773))
|
||||||
|
- Yuvomi ([#15772](https://github.com/community-scripts/ProxmoxVE/pull/15772))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Lychee: Preserve uploads and ownership during update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15768](https://github.com/community-scripts/ProxmoxVE/pull/15768))
|
||||||
|
- Wanderer: Clean deploy and install plugins for v0.20.0 update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15759](https://github.com/community-scripts/ProxmoxVE/pull/15759))
|
||||||
|
- FileFlows: Handle update API 401, force update, and Node install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15766](https://github.com/community-scripts/ProxmoxVE/pull/15766))
|
||||||
|
- BirdNET-Go: Match new upstream release asset naming [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15758](https://github.com/community-scripts/ProxmoxVE/pull/15758))
|
||||||
|
- [Upstream Fix] Immich: Fix loader priority [@vhsdream](https://github.com/vhsdream) ([#15755](https://github.com/community-scripts/ProxmoxVE/pull/15755))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Bump OpenCloud version to v7.2.2 [@MickLesk](https://github.com/MickLesk) ([#15769](https://github.com/community-scripts/ProxmoxVE/pull/15769))
|
||||||
|
- Silverbullet: Add optional Runtime API install via Chromium [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15761](https://github.com/community-scripts/ProxmoxVE/pull/15761))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Pangolin: Bump to 1.20.0 | BREAKING: Switch to PostgreSQL [@MickLesk](https://github.com/MickLesk) ([#15682](https://github.com/community-scripts/ProxmoxVE/pull/15682))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- AFFiNE: Pin to v0.26.3 [@MickLesk](https://github.com/MickLesk) ([#15782](https://github.com/community-scripts/ProxmoxVE/pull/15782))
|
||||||
|
|
||||||
|
## 2026-07-13
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- LeafWiki ([#15748](https://github.com/community-scripts/ProxmoxVE/pull/15748))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix(hyperion): keep service running after container reboot [@TowyTowy](https://github.com/TowyTowy) ([#15653](https://github.com/community-scripts/ProxmoxVE/pull/15653))
|
||||||
|
- Change sign-in URL to admin URL in affine.sh [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15741](https://github.com/community-scripts/ProxmoxVE/pull/15741))
|
||||||
|
- immich: use actual PostgreSQL version for VectorChord package lookup [@mnavon](https://github.com/mnavon) ([#15705](https://github.com/community-scripts/ProxmoxVE/pull/15705))
|
||||||
|
- fix storyteller release selection for stable web tags [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15736](https://github.com/community-scripts/ProxmoxVE/pull/15736))
|
||||||
|
- Docmost: Fix update procedure [@MickLesk](https://github.com/MickLesk) ([#15732](https://github.com/community-scripts/ProxmoxVE/pull/15732))
|
||||||
|
- fix(shinobi): remove obsolete --unsafe-perm npm flag [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15730](https://github.com/community-scripts/ProxmoxVE/pull/15730))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- reitti: update to v5 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15635](https://github.com/community-scripts/ProxmoxVE/pull/15635))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix(build.func): parse script status without jq dependency [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15729](https://github.com/community-scripts/ProxmoxVE/pull/15729))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- tools.func: some improvements (sql injection / command injection / guard) [@MickLesk](https://github.com/MickLesk) ([#15661](https://github.com/community-scripts/ProxmoxVE/pull/15661))
|
||||||
|
|
||||||
|
## 2026-07-12
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- AFFiNE ([#15690](https://github.com/community-scripts/ProxmoxVE/pull/15690))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Immich: Bump version to 3.0.2 [@vhsdream](https://github.com/vhsdream) ([#15668](https://github.com/community-scripts/ProxmoxVE/pull/15668))
|
||||||
|
|
||||||
|
### ❔ Uncategorized
|
||||||
|
|
||||||
|
- fix(immich): correct Python indentation error in ct/immich.sh heredoc patch [@Copilot](https://github.com/Copilot) ([#15723](https://github.com/community-scripts/ProxmoxVE/pull/15723))
|
||||||
|
|
||||||
|
## 2026-07-11
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- LocalAGI ([#15687](https://github.com/community-scripts/ProxmoxVE/pull/15687))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- fix(adventurelog): allow pnpm build scripts so install/update doesn't abort [@TowyTowy](https://github.com/TowyTowy) ([#15681](https://github.com/community-scripts/ProxmoxVE/pull/15681))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix(fileflows): install .NET 10 ASP.NET Core Runtime to match current release [@TowyTowy](https://github.com/TowyTowy) ([#15702](https://github.com/community-scripts/ProxmoxVE/pull/15702))
|
||||||
|
- Fix spacing on VLAN Input Box in haos-vm.sh [@pumrum](https://github.com/pumrum) ([#15696](https://github.com/community-scripts/ProxmoxVE/pull/15696))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [tools.func]: Add function to handle deployment via GitLab release tags [@tremor021](https://github.com/tremor021) ([#15641](https://github.com/community-scripts/ProxmoxVE/pull/15641))
|
||||||
|
|
||||||
|
## 2026-07-10
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Squid ([#15605](https://github.com/community-scripts/ProxmoxVE/pull/15605))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Adapt to new artifact filename format for pocket id [@wollew](https://github.com/wollew) ([#15689](https://github.com/community-scripts/ProxmoxVE/pull/15689))
|
||||||
|
- Fireshare: Fix for install and upgrade to v1.7.3 [@tremor021](https://github.com/tremor021) ([#15673](https://github.com/community-scripts/ProxmoxVE/pull/15673))
|
||||||
|
- Endurain: Fix update procedure [@tremor021](https://github.com/tremor021) ([#15674](https://github.com/community-scripts/ProxmoxVE/pull/15674))
|
||||||
|
|
||||||
|
## 2026-07-09
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- fix(pihole): repair Unbound DNS-over-TLS (DoT) forwarding config [@TowyTowy](https://github.com/TowyTowy) ([#15654](https://github.com/community-scripts/ProxmoxVE/pull/15654))
|
||||||
|
|
||||||
|
## 2026-07-08
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Opencloud: Bump version to 7.2.1 [@vhsdream](https://github.com/vhsdream) ([#15655](https://github.com/community-scripts/ProxmoxVE/pull/15655))
|
||||||
|
- BabyBuddy: Harden update script [@MickLesk](https://github.com/MickLesk) ([#15642](https://github.com/community-scripts/ProxmoxVE/pull/15642))
|
||||||
|
|
||||||
|
## 2026-07-07
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Forgejo-Runner ([#15046](https://github.com/community-scripts/ProxmoxVE/pull/15046))
|
||||||
|
|
||||||
|
## 2026-07-06
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix alignment in various ct end messages [@tremor021](https://github.com/tremor021) ([#15632](https://github.com/community-scripts/ProxmoxVE/pull/15632))
|
||||||
|
- Immich: Update libvips to 8.18.4 [@vhsdream](https://github.com/vhsdream) ([#15619](https://github.com/community-scripts/ProxmoxVE/pull/15619))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Wizarr: Build JS and CSS static assets [@vhsdream](https://github.com/vhsdream) ([#15634](https://github.com/community-scripts/ProxmoxVE/pull/15634))
|
||||||
|
- RustDesk Server: Update URL format in rustdeskserver.sh [@tremor021](https://github.com/tremor021) ([#15626](https://github.com/community-scripts/ProxmoxVE/pull/15626))
|
||||||
|
- attempt to port docker-vm to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15611](https://github.com/community-scripts/ProxmoxVE/pull/15611))
|
||||||
|
- fix(plane): don't clobber global app var, breaking /usr/bin/update [@asylumexp](https://github.com/asylumexp) ([#15612](https://github.com/community-scripts/ProxmoxVE/pull/15612))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- cliproxyapi: point setup message at /management.html [@austinpilz](https://github.com/austinpilz) ([#15628](https://github.com/community-scripts/ProxmoxVE/pull/15628))
|
||||||
|
|
||||||
|
### 🗑️ Deleted Scripts
|
||||||
|
|
||||||
|
- Remove: FlowiseAI [@MickLesk](https://github.com/MickLesk) ([#15624](https://github.com/community-scripts/ProxmoxVE/pull/15624))
|
||||||
|
|
||||||
|
## 2026-07-05
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- excalidash ([#15604](https://github.com/community-scripts/ProxmoxVE/pull/15604))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix: homarr: cli [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15603](https://github.com/community-scripts/ProxmoxVE/pull/15603))
|
||||||
|
- immich: vacuum smart_search/face_search before VectorChord bump [@irishpadres](https://github.com/irishpadres) ([#15607](https://github.com/community-scripts/ProxmoxVE/pull/15607))
|
||||||
|
|
||||||
|
## 2026-07-04
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Element Synapse: Fix heredoc syntax in elementsynapse-install.sh [@tremor021](https://github.com/tremor021) ([#15594](https://github.com/community-scripts/ProxmoxVE/pull/15594))
|
||||||
|
- Twenty: Fix backup restore [@tremor021](https://github.com/tremor021) ([#15586](https://github.com/community-scripts/ProxmoxVE/pull/15586))
|
||||||
|
- fix(endurain): update frontend dist path after upstream restructure [@joaovitoriasilva](https://github.com/joaovitoriasilva) ([#15590](https://github.com/community-scripts/ProxmoxVE/pull/15590))
|
||||||
|
|
||||||
|
## 2026-07-03
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Immich: handle mise monorepo_root rename correctly | bump to 3.0.1 [@MickLesk](https://github.com/MickLesk) ([#15557](https://github.com/community-scripts/ProxmoxVE/pull/15557))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Opencloud: bump to v7.2.0 [@vhsdream](https://github.com/vhsdream) ([#15575](https://github.com/community-scripts/ProxmoxVE/pull/15575))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- tools.func: fix corepack/pnpm install flow in setup_nodejs [@MickLesk](https://github.com/MickLesk) ([#15579](https://github.com/community-scripts/ProxmoxVE/pull/15579))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Removed deprecated parameter in Filebrowser Quantum configuration [@alpargatagazer](https://github.com/alpargatagazer) ([#15573](https://github.com/community-scripts/ProxmoxVE/pull/15573))
|
||||||
|
|
||||||
|
## 2026-07-02
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Rackula ([#15465](https://github.com/community-scripts/ProxmoxVE/pull/15465))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- typo: fix npm update to npm install for n8n [@MickLesk](https://github.com/MickLesk) ([#15545](https://github.com/community-scripts/ProxmoxVE/pull/15545))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Frigate: bump to v0.17.2 [@MickLesk](https://github.com/MickLesk) ([#15536](https://github.com/community-scripts/ProxmoxVE/pull/15536))
|
||||||
|
|
||||||
|
- #### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Revert "Immich v3.0.0" [@MickLesk](https://github.com/MickLesk) ([#15558](https://github.com/community-scripts/ProxmoxVE/pull/15558))
|
||||||
|
- Immich v3.0.0 [@vhsdream](https://github.com/vhsdream) ([#15153](https://github.com/community-scripts/ProxmoxVE/pull/15153))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- tools.func: configure pnpm to allow all build scripts for environments [@MickLesk](https://github.com/MickLesk) ([#15532](https://github.com/community-scripts/ProxmoxVE/pull/15532))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- feat(build.func): add var_ignore_disable to bypass disabled-script guard [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15544](https://github.com/community-scripts/ProxmoxVE/pull/15544))
|
||||||
|
|
||||||
|
## 2026-07-01
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- iVentoy ([#15503](https://github.com/community-scripts/ProxmoxVE/pull/15503))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Stirling-PDF: patch libicudata execstack flag for LXC container compatibility [@MickLesk](https://github.com/MickLesk) ([#15531](https://github.com/community-scripts/ProxmoxVE/pull/15531))
|
||||||
|
- FlowiseAI: align install to use pnpm instead of npm to fix missing dependencies [@MickLesk](https://github.com/MickLesk) ([#15530](https://github.com/community-scripts/ProxmoxVE/pull/15530))
|
||||||
|
- Vaultwarden: handle version detection failure gracefully in update [@MickLesk](https://github.com/MickLesk) ([#15526](https://github.com/community-scripts/ProxmoxVE/pull/15526))
|
||||||
|
- homarr: fix: update-fail [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15512](https://github.com/community-scripts/ProxmoxVE/pull/15512))
|
||||||
|
- n8n: pin version to 2.27.5 [@tremor021](https://github.com/tremor021) ([#15516](https://github.com/community-scripts/ProxmoxVE/pull/15516))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- [arm64] feat: iventory arm64 support [@asylumexp](https://github.com/asylumexp) ([#15521](https://github.com/community-scripts/ProxmoxVE/pull/15521))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- core: fix SDN vnet network parameter to use bridge instead of vnet [@MickLesk](https://github.com/MickLesk) ([#15527](https://github.com/community-scripts/ProxmoxVE/pull/15527))
|
||||||
|
- tools.func: use safe variable expansion in check_for_gh_release RETURN trap [@MickLesk](https://github.com/MickLesk) ([#15529](https://github.com/community-scripts/ProxmoxVE/pull/15529))
|
||||||
Generated
+7
-1
@@ -21,7 +21,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, title, and PR template
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -35,6 +35,7 @@ jobs:
|
|||||||
|
|
||||||
const prNumber = context.payload.pull_request.number;
|
const prNumber = context.payload.pull_request.number;
|
||||||
const prBody = context.payload.pull_request.body || "";
|
const prBody = context.payload.pull_request.body || "";
|
||||||
|
const prTitle = context.payload.pull_request.title || "";
|
||||||
|
|
||||||
let labelsToAdd = new Set();
|
let labelsToAdd = new Set();
|
||||||
|
|
||||||
@@ -68,6 +69,11 @@ jobs:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add arm64 label if PR title contains "arm64"
|
||||||
|
if (/arm64/i.test(prTitle)) {
|
||||||
|
labelsToAdd.add("arm64");
|
||||||
|
}
|
||||||
|
|
||||||
// Always parse template checkboxes to add content-type labels (bugfix, feature, etc.)
|
// Always parse template checkboxes to add content-type labels (bugfix, feature, etc.)
|
||||||
const templateLabelMappings = {
|
const templateLabelMappings = {
|
||||||
"🐞 **Bug fix**": "bugfix",
|
"🐞 **Bug fix**": "bugfix",
|
||||||
|
|||||||
+163
@@ -0,0 +1,163 @@
|
|||||||
|
name: Close PRs Missing Template
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
branches: ["main"]
|
||||||
|
types: [opened, edited, reopened, synchronize, labeled]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
validate-pr-template:
|
||||||
|
if: github.repository == 'community-scripts/ProxmoxVE'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
issues: write
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- name: Close PR if it does not follow the PR template
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const pr = context.payload.pull_request;
|
||||||
|
const prNumber = pr.number;
|
||||||
|
const author = pr.user.login;
|
||||||
|
const owner = context.repo.owner;
|
||||||
|
const repo = context.repo.repo;
|
||||||
|
|
||||||
|
const allowedBots = [
|
||||||
|
"push-app-to-main[bot]",
|
||||||
|
"push-app-to-main",
|
||||||
|
"community-scripts-pr-app",
|
||||||
|
"github-actions[bot]",
|
||||||
|
"dependabot[bot]",
|
||||||
|
];
|
||||||
|
|
||||||
|
if (allowedBots.includes(author) || author.endsWith("[bot]")) {
|
||||||
|
core.info(`PR #${prNumber} by bot "${author}" — skipping template validation.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const association = pr.author_association;
|
||||||
|
const exemptAssociations = ["OWNER", "MEMBER", "COLLABORATOR"];
|
||||||
|
if (exemptAssociations.includes(association)) {
|
||||||
|
core.info(`PR #${prNumber} by ${association} "${author}" — skipping template validation.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const labels = pr.labels.map((label) => label.name);
|
||||||
|
const skipLabels = ["automated pr", "keep open"];
|
||||||
|
|
||||||
|
if (skipLabels.some((label) => labels.includes(label))) {
|
||||||
|
core.info(`PR #${prNumber} has a skip label (${labels.join(", ")}) — skipping template validation.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pr.draft) {
|
||||||
|
core.info(`PR #${prNumber} is a draft — skipping template validation.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const body = pr.body || "";
|
||||||
|
const failures = [];
|
||||||
|
|
||||||
|
const requiredSections = [
|
||||||
|
"## ✍️ Description",
|
||||||
|
"## ✅ Prerequisites",
|
||||||
|
"## 🛠️ Type of Change",
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const section of requiredSections) {
|
||||||
|
if (!body.includes(section)) {
|
||||||
|
failures.push(`Missing required section: \`${section}\``);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const descriptionMatch = body.match(
|
||||||
|
/## ✍️ Description\s*\n+([\s\S]*?)(?=\n## )/i
|
||||||
|
);
|
||||||
|
const description = (descriptionMatch?.[1] || "").trim();
|
||||||
|
if (!description) {
|
||||||
|
failures.push("The **Description** section is empty.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const prerequisiteCheckboxes = [
|
||||||
|
"**Self-review completed**",
|
||||||
|
"**Tested thoroughly**",
|
||||||
|
"**No security risks**",
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const checkbox of prerequisiteCheckboxes) {
|
||||||
|
const escaped = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
|
||||||
|
const regex = new RegExp(`- \\[(x|X)\\]\\s*${escaped}`, "i");
|
||||||
|
if (!regex.test(body)) {
|
||||||
|
failures.push(`Prerequisite not checked: ${checkbox}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const typeOfChangeCheckboxes = [
|
||||||
|
"🐞 **Bug fix**",
|
||||||
|
"✨ **New feature**",
|
||||||
|
"💥 **Breaking change**",
|
||||||
|
"🆕 **New script**",
|
||||||
|
"🌍 **Website update**",
|
||||||
|
"🔧 **Refactoring / Code Cleanup**",
|
||||||
|
"📝 **Documentation update**",
|
||||||
|
];
|
||||||
|
|
||||||
|
const hasTypeChecked = typeOfChangeCheckboxes.some((checkbox) => {
|
||||||
|
const escaped = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
|
||||||
|
const regex = new RegExp(`- \\[(x|X)\\]\\s*${escaped}`, "i");
|
||||||
|
return regex.test(body);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!hasTypeChecked) {
|
||||||
|
failures.push("At least one **Type of Change** checkbox must be checked.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (failures.length === 0) {
|
||||||
|
core.info(`PR #${prNumber} follows the PR template.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
core.info(`Closing PR #${prNumber} — template validation failed.`);
|
||||||
|
|
||||||
|
const templateUrl =
|
||||||
|
"https://github.com/community-scripts/ProxmoxVE/blob/main/.github/pull_request_template.md";
|
||||||
|
const failureList = failures.map((item) => `- ${item}`).join("\n");
|
||||||
|
|
||||||
|
const comment = [
|
||||||
|
`👋 Hi @${author},`,
|
||||||
|
``,
|
||||||
|
`This pull request was closed because it does not follow the [PR template](${templateUrl}).`,
|
||||||
|
``,
|
||||||
|
`Please fix the following and open a new PR (or reopen this one after updating the description):`,
|
||||||
|
``,
|
||||||
|
failureList,
|
||||||
|
``,
|
||||||
|
`> Use the template sections, fill in the description, check all prerequisite boxes, and select at least one type of change.`,
|
||||||
|
``,
|
||||||
|
`Maintainers can add the \`keep open\` label to exempt a PR from this check.`,
|
||||||
|
``,
|
||||||
|
`Thank you for contributing! 🙏`,
|
||||||
|
].join("\n");
|
||||||
|
|
||||||
|
await github.rest.issues.createComment({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
issue_number: prNumber,
|
||||||
|
body: comment,
|
||||||
|
});
|
||||||
|
|
||||||
|
await github.rest.pulls.update({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
pull_number: prNumber,
|
||||||
|
state: "closed",
|
||||||
|
});
|
||||||
|
|
||||||
|
await github.rest.issues.addLabels({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
issue_number: prNumber,
|
||||||
|
labels: ["missing pr template"],
|
||||||
|
});
|
||||||
+1
@@ -28,6 +28,7 @@ jobs:
|
|||||||
const allowedBots = [
|
const allowedBots = [
|
||||||
"push-app-to-main[bot]",
|
"push-app-to-main[bot]",
|
||||||
"push-app-to-main",
|
"push-app-to-main",
|
||||||
|
"community-scripts-pr-app"
|
||||||
];
|
];
|
||||||
|
|
||||||
if (allowedBots.includes(author)) {
|
if (allowedBots.includes(author)) {
|
||||||
|
|||||||
+24
@@ -91,6 +91,30 @@ jobs:
|
|||||||
let skipped = 0;
|
let skipped = 0;
|
||||||
|
|
||||||
for (const branch of candidates) {
|
for (const branch of candidates) {
|
||||||
|
// A branch name can be reused after an earlier PR was merged. Never delete a
|
||||||
|
// branch while it is the head of a current open PR, even if it is also a
|
||||||
|
// candidate from an older merged PR.
|
||||||
|
try {
|
||||||
|
const { data: openPrs } = await github.rest.pulls.list({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
state: "open",
|
||||||
|
head: `${owner}:${branch}`,
|
||||||
|
per_page: 1,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (openPrs.length > 0) {
|
||||||
|
console.log(`Skipped "${branch}" (head of open PR #${openPrs[0].number})`);
|
||||||
|
skipped++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// Do not risk deleting a branch if GitHub cannot confirm it has no open PR.
|
||||||
|
console.log(`Failed to check open PRs for "${branch}": ${error.message}`);
|
||||||
|
skipped++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Confirm the branch still exists and isn't protected.
|
// Confirm the branch still exists and isn't protected.
|
||||||
let branchData;
|
let branchData;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ jobs:
|
|||||||
BEFORE="${{ github.event.before }}"
|
BEFORE="${{ github.event.before }}"
|
||||||
AFTER="${{ github.event.after }}"
|
AFTER="${{ github.event.after }}"
|
||||||
slugs=""
|
slugs=""
|
||||||
|
ct_slugs=""
|
||||||
|
|
||||||
# Deleted JSON files: get slug from previous commit
|
# Deleted JSON files: get slug from previous commit
|
||||||
deleted_json=$(git diff --name-only --diff-filter=D "$BEFORE" "$AFTER" -- json/ | grep '\.json$' || true)
|
deleted_json=$(git diff --name-only --diff-filter=D "$BEFORE" "$AFTER" -- json/ | grep '\.json$' || true)
|
||||||
@@ -37,6 +38,14 @@ jobs:
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Deleted script files: derive slug from path
|
# Deleted script files: derive slug from path
|
||||||
|
deleted_ct=$(git diff --name-only --diff-filter=D "$BEFORE" "$AFTER" -- ct/ | grep '\.sh$' || true)
|
||||||
|
for f in $deleted_ct; do
|
||||||
|
[[ -z "$f" ]] && continue
|
||||||
|
base="${f##*/}"
|
||||||
|
base="${base%.sh}"
|
||||||
|
[[ -n "$base" ]] && ct_slugs="$ct_slugs $base"
|
||||||
|
done
|
||||||
|
|
||||||
deleted_sh=$(git diff --name-only --diff-filter=D "$BEFORE" "$AFTER" -- ct/ install/ tools/ turnkey/ vm/ | grep '\.sh$' || true)
|
deleted_sh=$(git diff --name-only --diff-filter=D "$BEFORE" "$AFTER" -- ct/ install/ tools/ turnkey/ vm/ | grep '\.sh$' || true)
|
||||||
for f in $deleted_sh; do
|
for f in $deleted_sh; do
|
||||||
[[ -z "$f" ]] && continue
|
[[ -z "$f" ]] && continue
|
||||||
@@ -51,14 +60,17 @@ jobs:
|
|||||||
done
|
done
|
||||||
|
|
||||||
slugs=$(echo $slugs | xargs -n1 | sort -u | tr '\n' ' ')
|
slugs=$(echo $slugs | xargs -n1 | sort -u | tr '\n' ' ')
|
||||||
|
ct_slugs=$(echo $ct_slugs | xargs -n1 2>/dev/null | sort -u | tr '\n' ' ')
|
||||||
if [[ -z "$slugs" ]]; then
|
if [[ -z "$slugs" ]]; then
|
||||||
echo "No deleted JSON or script files to mark as deleted in PocketBase."
|
echo "No deleted JSON or script files to mark as deleted in PocketBase."
|
||||||
echo "count=0" >> "$GITHUB_OUTPUT"
|
echo "count=0" >> "$GITHUB_OUTPUT"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
echo "$slugs" > slugs_to_delete.txt
|
echo "$slugs" > slugs_to_delete.txt
|
||||||
|
echo "$ct_slugs" > ct_slugs_to_stub.txt
|
||||||
echo "count=$(echo $slugs | wc -w)" >> "$GITHUB_OUTPUT"
|
echo "count=$(echo $slugs | wc -w)" >> "$GITHUB_OUTPUT"
|
||||||
echo "Slugs to mark as deleted: $slugs"
|
echo "Slugs to mark as deleted: $slugs"
|
||||||
|
[[ -n "$ct_slugs" ]] && echo "CT stubs to generate: $ct_slugs"
|
||||||
|
|
||||||
- name: Mark as deleted in PocketBase
|
- name: Mark as deleted in PocketBase
|
||||||
if: steps.slugs.outputs.count != '0'
|
if: steps.slugs.outputs.count != '0'
|
||||||
@@ -159,3 +171,134 @@ jobs:
|
|||||||
})().catch(e => { console.error(e); process.exit(1); });
|
})().catch(e => { console.error(e); process.exit(1); });
|
||||||
ENDSCRIPT
|
ENDSCRIPT
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
|
- name: Generate CT stubs for deleted scripts
|
||||||
|
if: steps.slugs.outputs.count != '0'
|
||||||
|
env:
|
||||||
|
POCKETBASE_URL: ${{ secrets.POCKETBASE_URL }}
|
||||||
|
POCKETBASE_COLLECTION: ${{ secrets.POCKETBASE_COLLECTION }}
|
||||||
|
POCKETBASE_ADMIN_EMAIL: ${{ secrets.POCKETBASE_ADMIN_EMAIL }}
|
||||||
|
POCKETBASE_ADMIN_PASSWORD: ${{ secrets.POCKETBASE_ADMIN_PASSWORD }}
|
||||||
|
run: |
|
||||||
|
if [[ ! -s ct_slugs_to_stub.txt ]]; then
|
||||||
|
echo "No deleted ct/*.sh files; skipping stub generation."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
node << 'ENDSCRIPT'
|
||||||
|
(async function() {
|
||||||
|
const fs = require('fs');
|
||||||
|
const https = require('https');
|
||||||
|
const http = require('http');
|
||||||
|
const path = require('path');
|
||||||
|
const url = require('url');
|
||||||
|
|
||||||
|
function request(fullUrl, opts, redirectCount) {
|
||||||
|
redirectCount = redirectCount || 0;
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
const u = url.parse(fullUrl);
|
||||||
|
const isHttps = u.protocol === 'https:';
|
||||||
|
const body = opts.body;
|
||||||
|
const options = {
|
||||||
|
hostname: u.hostname,
|
||||||
|
port: u.port || (isHttps ? 443 : 80),
|
||||||
|
path: u.path,
|
||||||
|
method: opts.method || 'GET',
|
||||||
|
headers: opts.headers || {}
|
||||||
|
};
|
||||||
|
if (body) options.headers['Content-Length'] = Buffer.byteLength(body);
|
||||||
|
const lib = isHttps ? https : http;
|
||||||
|
const req = lib.request(options, function(res) {
|
||||||
|
if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
|
||||||
|
if (redirectCount >= 5) return reject(new Error('Too many redirects from ' + fullUrl));
|
||||||
|
const redirectUrl = url.resolve(fullUrl, res.headers.location);
|
||||||
|
res.resume();
|
||||||
|
resolve(request(redirectUrl, opts, redirectCount + 1));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let data = '';
|
||||||
|
res.on('data', function(chunk) { data += chunk; });
|
||||||
|
res.on('end', function() {
|
||||||
|
resolve({ ok: res.statusCode >= 200 && res.statusCode < 300, statusCode: res.statusCode, body: data });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
req.on('error', reject);
|
||||||
|
if (body) req.write(body);
|
||||||
|
req.end();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const raw = process.env.POCKETBASE_URL.replace(/\/$/, '');
|
||||||
|
const apiBase = /\/api$/i.test(raw) ? raw : raw + '/api';
|
||||||
|
const coll = process.env.POCKETBASE_COLLECTION;
|
||||||
|
const ctSlugs = fs.readFileSync('ct_slugs_to_stub.txt', 'utf8').trim().split(/\s+/).filter(Boolean);
|
||||||
|
if (!ctSlugs.length) {
|
||||||
|
console.log('No ct slugs to process.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const authRes = await request(apiBase + '/collections/users/auth-with-password', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({
|
||||||
|
identity: process.env.POCKETBASE_ADMIN_EMAIL,
|
||||||
|
password: process.env.POCKETBASE_ADMIN_PASSWORD
|
||||||
|
})
|
||||||
|
});
|
||||||
|
if (!authRes.ok) throw new Error('Auth failed: ' + authRes.body);
|
||||||
|
const token = JSON.parse(authRes.body).token;
|
||||||
|
const recordsUrl = apiBase + '/collections/' + encodeURIComponent(coll) + '/records';
|
||||||
|
|
||||||
|
for (const slug of ctSlugs) {
|
||||||
|
const filter = "(slug='" + slug + "')";
|
||||||
|
const listRes = await request(recordsUrl + '?filter=' + encodeURIComponent(filter) + '&perPage=1&fields=slug,name,deleted_message', {
|
||||||
|
headers: { 'Authorization': token }
|
||||||
|
});
|
||||||
|
if (!listRes.ok) {
|
||||||
|
console.warn('Failed to fetch record for slug "' + slug + '"');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const list = JSON.parse(listRes.body);
|
||||||
|
const rec = list.items && list.items[0];
|
||||||
|
const appName = (rec && rec.name) ? rec.name : slug;
|
||||||
|
const deletedMessage = (rec && rec.deleted_message && rec.deleted_message.trim())
|
||||||
|
? rec.deleted_message.trim()
|
||||||
|
: 'This script was removed and cannot be installed or updated.';
|
||||||
|
|
||||||
|
const stubPath = path.join('ct', slug + '.sh');
|
||||||
|
const content = [
|
||||||
|
"#!/usr/bin/env bash",
|
||||||
|
"source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)",
|
||||||
|
"# Copyright (c) 2021-2026 community-scripts ORG",
|
||||||
|
"# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE",
|
||||||
|
"",
|
||||||
|
`APP="${appName.replace(/"/g, '\\"')}"`,
|
||||||
|
"",
|
||||||
|
'header_info "$APP"',
|
||||||
|
'variables',
|
||||||
|
'color',
|
||||||
|
"",
|
||||||
|
'msg_error "This script is no longer available in community-scripts."',
|
||||||
|
`msg_error "${deletedMessage.replace(/"/g, '\\"')}"`,
|
||||||
|
`msg_warn "More info: https://community-scripts.org/scripts/${slug}"`,
|
||||||
|
"exit 1"
|
||||||
|
].join('\n') + '\n';
|
||||||
|
fs.writeFileSync(stubPath, content);
|
||||||
|
console.log('Generated stub: ' + stubPath);
|
||||||
|
}
|
||||||
|
})().catch(e => { console.error(e); process.exit(1); });
|
||||||
|
ENDSCRIPT
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Commit generated stubs
|
||||||
|
if: steps.slugs.outputs.count != '0'
|
||||||
|
run: |
|
||||||
|
if git diff --quiet -- ct; then
|
||||||
|
echo "No generated ct stubs to commit."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||||
|
git add ct/*.sh
|
||||||
|
git commit -m "chore: add deleted script stubs"
|
||||||
|
git push
|
||||||
|
shell: bash
|
||||||
|
|||||||
+548
-475
File diff suppressed because it is too large
Load Diff
@@ -149,6 +149,12 @@ This project runs on community contributions. Whether you want to write new scri
|
|||||||
<sub><b>vhsdream</b></sub>
|
<sub><b>vhsdream</b></sub>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/asylumexp">
|
||||||
|
<img src="https://github.com/asylumexp.png" width="80" height="80" style="border-radius:50%" alt="asylumexp" /><br/>
|
||||||
|
<sub><b>asylumexp</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ function update_script() {
|
|||||||
php artisan 2fauth:install
|
php artisan 2fauth:install
|
||||||
chown -R www-data: /opt/2fauth
|
chown -R www-data: /opt/2fauth
|
||||||
chmod -R 755 /opt/2fauth
|
chmod -R 755 /opt/2fauth
|
||||||
|
$STD php artisan 2fauth:fix-passport-key-permissions
|
||||||
$STD systemctl restart php8.4-fpm
|
$STD systemctl restart php8.4-fpm
|
||||||
$STD systemctl restart nginx
|
$STD systemctl restart nginx
|
||||||
msg_ok "Configured 2FAuth"
|
msg_ok "Configured 2FAuth"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+2
-1
@@ -12,7 +12,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -60,6 +60,7 @@ function update_script() {
|
|||||||
$STD .venv/bin/python -m manage migrate
|
$STD .venv/bin/python -m manage migrate
|
||||||
|
|
||||||
cd /opt/adventurelog/frontend
|
cd /opt/adventurelog/frontend
|
||||||
|
grep -q "^dangerouslyAllowAllBuilds:" ./pnpm-workspace.yaml 2>/dev/null || echo "dangerouslyAllowAllBuilds: true" >>./pnpm-workspace.yaml
|
||||||
$STD pnpm i
|
$STD pnpm i
|
||||||
$STD pnpm build
|
$STD pnpm build
|
||||||
msg_ok "Updated AdventureLog"
|
msg_ok "Updated AdventureLog"
|
||||||
|
|||||||
+131
@@ -0,0 +1,131 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/toeverything/AFFiNE
|
||||||
|
|
||||||
|
APP="AFFiNE"
|
||||||
|
var_tags="${var_tags:-knowledge;notes;workspace}"
|
||||||
|
var_cpu="${var_cpu:-4}"
|
||||||
|
var_ram="${var_ram:-8192}"
|
||||||
|
var_disk="${var_disk:-20}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-no}"
|
||||||
|
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/affine ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE="v0.27.0"
|
||||||
|
if check_for_gh_release "affine_app" "toeverything/AFFiNE" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop affine-web affine-worker
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
ensure_dependencies cmake
|
||||||
|
|
||||||
|
create_backup /root/.affine/config /root/.affine/storage
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "affine_app" "toeverything/AFFiNE" "tarball" "${RELEASE}" "/opt/affine"
|
||||||
|
|
||||||
|
msg_info "Rebuilding Application (Patience ~25 mins, don't close the console!)"
|
||||||
|
cd /opt/affine
|
||||||
|
source /root/.profile
|
||||||
|
export PATH="/root/.cargo/bin:/root/.rbenv/shims:$PATH"
|
||||||
|
|
||||||
|
set -a && source /opt/affine/.env && set +a
|
||||||
|
|
||||||
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
|
export VITE_CORE_COMMIT_SHA=$(cat ~/.affine_app)
|
||||||
|
|
||||||
|
# Initialize git repo (required for build process)
|
||||||
|
export HUSKY=0
|
||||||
|
$STD git init -q
|
||||||
|
$STD git config user.email "build@local"
|
||||||
|
$STD git config user.name "Build"
|
||||||
|
$STD git add -A
|
||||||
|
$STD git commit -q -m "update" --no-verify --allow-empty
|
||||||
|
|
||||||
|
# Force Turbo to run sequentially
|
||||||
|
mkdir -p /opt/affine/.turbo
|
||||||
|
cat <<TURBO >/opt/affine/.turbo/config.json
|
||||||
|
{
|
||||||
|
"concurrency": 1
|
||||||
|
}
|
||||||
|
TURBO
|
||||||
|
|
||||||
|
$STD corepack enable
|
||||||
|
$STD corepack prepare yarn@4.13.0 --activate
|
||||||
|
$STD yarn config set enableTelemetry 0
|
||||||
|
|
||||||
|
export NODE_OPTIONS="--max-old-space-size=2048"
|
||||||
|
$STD yarn install
|
||||||
|
$STD npm install -g typescript
|
||||||
|
|
||||||
|
$STD yarn affine @affine/native build
|
||||||
|
$STD yarn affine @affine/server-native build
|
||||||
|
|
||||||
|
# Create architecture-specific symlinks
|
||||||
|
ln -sf /opt/affine/packages/backend/native/server-native.node \
|
||||||
|
/opt/affine/packages/backend/native/server-native.x64.node
|
||||||
|
ln -sf /opt/affine/packages/backend/native/server-native.node \
|
||||||
|
/opt/affine/packages/backend/native/server-native.arm64.node
|
||||||
|
ln -sf /opt/affine/packages/backend/native/server-native.node \
|
||||||
|
/opt/affine/packages/backend/native/server-native.armv7.node
|
||||||
|
|
||||||
|
$STD yarn affine init
|
||||||
|
$STD yarn affine build -p @affine/reader
|
||||||
|
$STD yarn affine build -p @affine/server
|
||||||
|
|
||||||
|
export NODE_OPTIONS="--max-old-space-size=4096"
|
||||||
|
$STD yarn affine build -p @affine/web
|
||||||
|
$STD yarn affine build -p @affine/admin
|
||||||
|
|
||||||
|
# Copy web assets
|
||||||
|
mkdir -p /opt/affine/packages/backend/server/static
|
||||||
|
cp -r /opt/affine/packages/frontend/apps/web/dist/* /opt/affine/packages/backend/server/static/
|
||||||
|
mkdir -p /opt/affine/packages/backend/server/static/admin
|
||||||
|
cp -r /opt/affine/packages/frontend/admin/dist/* /opt/affine/packages/backend/server/static/admin/
|
||||||
|
|
||||||
|
# Mobile manifest placeholder
|
||||||
|
mkdir -p /opt/affine/packages/backend/server/static/mobile
|
||||||
|
echo '{"publicPath":"/","js":[],"css":[],"gitHash":"","description":""}' \
|
||||||
|
>/opt/affine/packages/backend/server/static/mobile/assets-manifest.json
|
||||||
|
|
||||||
|
# Run migrations
|
||||||
|
cd /opt/affine/packages/backend/server
|
||||||
|
set -a && source /opt/affine/.env && set +a
|
||||||
|
$STD node ./scripts/self-host-predeploy.js
|
||||||
|
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start affine-web affine-worker
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_ok "Updated Successfully!"
|
||||||
|
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 "${GATEWAY}${BGN}http://${IP}:3010/admin${CL}"
|
||||||
+4
-4
@@ -12,7 +12,7 @@ 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:-24.04}"
|
var_version="${var_version:-24.04}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-0}"
|
var_unprivileged="${var_unprivileged:-0}"
|
||||||
var_gpu="${var_gpu:-yes}"
|
var_gpu="${var_gpu:-yes}"
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL "https://www.ispyconnect.com/api/Agent/DownloadLocation4?platform=Linux64&fromVersion=0" | grep -o 'https://.*\.zip')
|
RELEASE=$(curl -fsSL "https://www.ispyconnect.com/api/Agent/DownloadLocation4?platform=$(arch_resolve "Linux64" "LinuxARM64")&fromVersion=0" | grep -o 'https://.*\.zip')
|
||||||
if [[ "${RELEASE}" != "$(cat ~/.agentdvr 2>/dev/null)" ]] || [[ ! -f ~/.agentdvr ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.agentdvr 2>/dev/null)" ]] || [[ ! -f ~/.agentdvr ]]; then
|
||||||
msg_info "Stopping service"
|
msg_info "Stopping service"
|
||||||
systemctl stop AgentDVR
|
systemctl stop AgentDVR
|
||||||
@@ -39,10 +39,10 @@ function update_script() {
|
|||||||
msg_info "Updating AgentDVR"
|
msg_info "Updating AgentDVR"
|
||||||
cd /opt/agentdvr/agent
|
cd /opt/agentdvr/agent
|
||||||
curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
|
curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
|
||||||
$STD unzip -o Agent_Linux64*.zip
|
$STD unzip -o Agent_$(arch_resolve "Linux64" "LinuxARM64")*.zip
|
||||||
chmod +x ./Agent
|
chmod +x ./Agent
|
||||||
echo $RELEASE >~/.agentdvr
|
echo $RELEASE >~/.agentdvr
|
||||||
rm -rf Agent_Linux64*.zip
|
rm -rf Agent_$(arch_resolve "Linux64" "LinuxARM64")*.zip
|
||||||
msg_ok "Updated AgentDVR"
|
msg_ok "Updated AgentDVR"
|
||||||
|
|
||||||
msg_info "Starting service"
|
msg_info "Starting service"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Alpine-bitmagnet"
|
APP="Alpine-bitmagnet"
|
||||||
var_tags="${var_tags:-alpine;torrent}"
|
var_tags="${var_tags:-alpine;torrent}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-3}"
|
var_disk="${var_disk:-3}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
var_disk="${var_disk:-20}"
|
var_disk="${var_disk:-20}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-256}"
|
|||||||
var_disk="${var_disk:-3}"
|
var_disk="${var_disk:-3}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+3
-3
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
var_nesting="${var_nesting:-0}"
|
var_nesting="${var_nesting:-0}"
|
||||||
|
|
||||||
@@ -54,5 +54,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed successfully!\n"
|
msg_ok "Completed successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} 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}:8080${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-5}"
|
var_disk="${var_disk:-5}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -39,7 +39,7 @@ function update_script() {
|
|||||||
msg_ok "Backed Up Data"
|
msg_ok "Backed Up Data"
|
||||||
|
|
||||||
msg_info "Updating Garage"
|
msg_info "Updating Garage"
|
||||||
curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/x86_64-unknown-linux-musl/garage" -o /usr/local/bin/garage
|
curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/$(arch_resolve "x86_64" "aarch64")-unknown-linux-musl/garage" -o /usr/local/bin/garage
|
||||||
chmod +x /usr/local/bin/garage
|
chmod +x /usr/local/bin/garage
|
||||||
echo "${GITEA_RELEASE}" >~/.garage
|
echo "${GITEA_RELEASE}" >~/.garage
|
||||||
msg_ok "Updated Garage"
|
msg_ok "Updated Garage"
|
||||||
|
|||||||
+2
-2
@@ -8,11 +8,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Alpine-gatus"
|
APP="Alpine-gatus"
|
||||||
var_tags="${var_tags:-alpine;monitoring}"
|
var_tags="${var_tags:-alpine;monitoring}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-3}"
|
var_disk="${var_disk:-3}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Alpine-Grafana"
|
APP="Alpine-Grafana"
|
||||||
var_tags="${var_tags:-alpine;monitoring}"
|
var_tags="${var_tags:-alpine;monitoring}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-512}"
|
||||||
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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-3
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -58,5 +58,3 @@ 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 "${GATEWAY}${BGN}http://${IP}:3100${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:3100${CL}"
|
||||||
echo -e "${INFO}${YW}Access Promtail using the following URL:${CL}"
|
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:9080${CL}"
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ var_ram="${var_ram:-256}"
|
|||||||
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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
var_fuse="${var_fuse:-yes}"
|
var_fuse="${var_fuse:-yes}"
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ function update_script() {
|
|||||||
if [ "${RELEASE}" != "$(cat /opt/rclone_version.txt)" ] || [ ! -f /opt/rclone_version.txt ]; then
|
if [ "${RELEASE}" != "$(cat /opt/rclone_version.txt)" ] || [ ! -f /opt/rclone_version.txt ]; then
|
||||||
msg_info "Updating ${APP} LXC"
|
msg_info "Updating ${APP} LXC"
|
||||||
temp_file=$(mktemp)
|
temp_file=$(mktemp)
|
||||||
curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file"
|
curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-$(arch_resolve).zip" -o "$temp_file"
|
||||||
$STD unzip -o "$temp_file" '*/**' -d /opt/rclone
|
$STD unzip -o "$temp_file" '*/**' -d /opt/rclone
|
||||||
rm -f "$temp_file"
|
rm -f "$temp_file"
|
||||||
echo "${RELEASE}" >/opt/rclone_version.txt
|
echo "${RELEASE}" >/opt/rclone_version.txt
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -36,7 +36,7 @@ function update_script() {
|
|||||||
$STD rc-service redlib stop
|
$STD rc-service redlib stop
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-x86_64-unknown-linux-musl.tar.gz"
|
fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-$(arch_resolve "x86_64" "aarch64")-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
$STD rc-service redlib start
|
$STD rc-service redlib start
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-3}"
|
var_disk="${var_disk:-3}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -35,13 +35,14 @@ function update_script() {
|
|||||||
$STD service rustdesk-server-hbbs stop
|
$STD service rustdesk-server-hbbs stop
|
||||||
$STD service rustdesk-server-hbbr stop
|
$STD service rustdesk-server-hbbr stop
|
||||||
temp_file1=$(mktemp)
|
temp_file1=$(mktemp)
|
||||||
curl -fsSL "https://github.com/lejianwen/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-amd64.zip" -o "$temp_file1"
|
ARCH=$(arch_resolve "amd64" "arm64v8")
|
||||||
|
curl -fsSL "https://github.com/lejianwen/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-${ARCH}.zip" -o "$temp_file1"
|
||||||
$STD unzip "$temp_file1"
|
$STD unzip "$temp_file1"
|
||||||
cp -r amd64/* /opt/rustdesk-server/
|
cp -r "$ARCH"/* /opt/rustdesk-server/
|
||||||
echo "${RELEASE}" >~/.rustdesk-server
|
echo "${RELEASE}" >~/.rustdesk-server
|
||||||
$STD service rustdesk-server-hbbs start
|
$STD service rustdesk-server-hbbs start
|
||||||
$STD service rustdesk-server-hbbr start
|
$STD service rustdesk-server-hbbr start
|
||||||
rm -rf amd64
|
rm -rf "$ARCH"
|
||||||
rm -f "$temp_file1"
|
rm -f "$temp_file1"
|
||||||
msg_ok "Updated RustDesk Server"
|
msg_ok "Updated RustDesk Server"
|
||||||
else
|
else
|
||||||
@@ -51,7 +52,7 @@ function update_script() {
|
|||||||
msg_info "Updating RustDesk API to v${APIRELEASE}"
|
msg_info "Updating RustDesk API to v${APIRELEASE}"
|
||||||
$STD service rustdesk-api stop
|
$STD service rustdesk-api stop
|
||||||
temp_file2=$(mktemp)
|
temp_file2=$(mktemp)
|
||||||
curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/linux-amd64.tar.gz" -o "$temp_file2"
|
curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/linux-$(arch_resolve).tar.gz" -o "$temp_file2"
|
||||||
$STD tar zxvf "$temp_file2"
|
$STD tar zxvf "$temp_file2"
|
||||||
cp -r release/* /opt/rustdesk-api
|
cp -r release/* /opt/rustdesk-api
|
||||||
echo "${APIRELEASE}" >~/.rustdesk-api
|
echo "${APIRELEASE}" >~/.rustdesk-api
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ var_ram="${var_ram:-256}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ var_ram="${var_ram:-256}"
|
|||||||
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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -52,7 +52,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating Tinyauth"
|
msg_info "Updating Tinyauth"
|
||||||
rm -f /opt/tinyauth/tinyauth
|
rm -f /opt/tinyauth/tinyauth
|
||||||
curl -fsSL "https://github.com/tinyauthapp/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
|
curl -fsSL "https://github.com/tinyauthapp/tinyauth/releases/download/v${RELEASE}/tinyauth-$(arch_resolve)" -o /opt/tinyauth/tinyauth
|
||||||
chmod +x /opt/tinyauth/tinyauth
|
chmod +x /opt/tinyauth/tinyauth
|
||||||
echo "${RELEASE}" >~/.tinyauth
|
echo "${RELEASE}" >~/.tinyauth
|
||||||
msg_ok "Updated Tinyauth"
|
msg_ok "Updated Tinyauth"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+2
-2
@@ -13,7 +13,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-alpine}"
|
var_os="${var_os:-alpine}"
|
||||||
var_version="${var_version:-3.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -43,7 +43,7 @@ function update_script() {
|
|||||||
cp /opt/wakapi/config.yml /opt/wakapi/wakapi_db.db /opt/wakapi-backup/
|
cp /opt/wakapi/config.yml /opt/wakapi/wakapi_db.db /opt/wakapi-backup/
|
||||||
msg_ok "Created backup"
|
msg_ok "Created backup"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wakapi" "muety/wakapi" "prebuild" "latest" "/opt/wakapi" "wakapi_linux_amd64.zip"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wakapi" "muety/wakapi" "prebuild" "latest" "/opt/wakapi" "wakapi_linux_$(arch_resolve).zip"
|
||||||
|
|
||||||
msg_info "Configuring Wakapi"
|
msg_info "Configuring Wakapi"
|
||||||
cd /opt/wakapi
|
cd /opt/wakapi
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
var_tun="${var_tun:-1}"
|
var_tun="${var_tun:-1}"
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ 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.23}"
|
var_version="${var_version:-3.23}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-0}"
|
var_unprivileged="${var_unprivileged:-0}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_cpu="${var_cpu:-4}"
|
|||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}"
|
|||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ var_ram="${var_ram:-4096}"
|
|||||||
var_disk="${var_disk:-16}"
|
var_disk="${var_disk:-16}"
|
||||||
var_os="${var_os:-ubuntu}"
|
var_os="${var_os:-ubuntu}"
|
||||||
var_version="${var_version:-24.04}"
|
var_version="${var_version:-24.04}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -38,7 +38,7 @@ function update_script() {
|
|||||||
|
|
||||||
create_backup /opt/anytype/data
|
create_backup /opt/anytype/data
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "anytype" "grishy/any-sync-bundle" "prebuild" "latest" "/opt/anytype" "any-sync-bundle_*_linux_amd64.tar.gz"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "anytype" "grishy/any-sync-bundle" "prebuild" "latest" "/opt/anytype" "any-sync-bundle_*_linux_$(arch_resolve).tar.gz"
|
||||||
chmod +x /opt/anytype/any-sync-bundle
|
chmod +x /opt/anytype/any-sync-bundle
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|||||||
@@ -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-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/apache/airflow
|
||||||
|
|
||||||
|
APP="Apache-Airflow"
|
||||||
|
var_tags="${var_tags:-workflow;scheduler;automation}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-16}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-no}"
|
||||||
|
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/airflow ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
INSTALLED=$(cat ~/.airflow 2>/dev/null || echo "0")
|
||||||
|
LATEST=$(curl -fsSL "https://pypi.org/pypi/apache-airflow/json" | jq -r '.info.version')
|
||||||
|
|
||||||
|
if [[ $INSTALLED == "$LATEST" ]]; then
|
||||||
|
msg_ok "Already on the latest version (${LATEST})"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop airflow-api-server airflow-scheduler airflow-dag-processor airflow-triggerer
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
create_backup /opt/airflow/.env
|
||||||
|
|
||||||
|
msg_info "Updating Apache Airflow to ${LATEST}"
|
||||||
|
$STD uv pip install --python /opt/airflow/.venv/bin/python \
|
||||||
|
"apache-airflow[postgres,fab]==${LATEST}" \
|
||||||
|
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-${LATEST}/constraints-3.12.txt"
|
||||||
|
echo "${LATEST}" >~/.airflow
|
||||||
|
msg_ok "Updated Apache Airflow to ${LATEST}"
|
||||||
|
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Running Database Migrations"
|
||||||
|
set -a && source /opt/airflow/.env && set +a
|
||||||
|
$STD /opt/airflow/.venv/bin/airflow db migrate
|
||||||
|
msg_ok "Ran Database Migrations"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start airflow-api-server airflow-scheduler airflow-dag-processor airflow-triggerer
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
|
echo -e "${GATEWAY}${BGN}http://${IP}:8080${CL}"
|
||||||
@@ -146,7 +146,7 @@ function update_script() {
|
|||||||
|
|
||||||
# Check and upgrade optional extensions
|
# Check and upgrade optional extensions
|
||||||
# TOTP Extension
|
# TOTP Extension
|
||||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-totp-*.jar ]]; then
|
if compgen -G "/etc/guacamole/extensions/guacamole-auth-totp-*.jar" >/dev/null; then
|
||||||
msg_info "Updating TOTP Extension"
|
msg_info "Updating TOTP Extension"
|
||||||
rm -f /etc/guacamole/extensions/guacamole-auth-totp-*.jar
|
rm -f /etc/guacamole/extensions/guacamole-auth-totp-*.jar
|
||||||
curl_download "/tmp/guacamole-auth-totp.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-totp-${LATEST_SERVER}.tar.gz"
|
curl_download "/tmp/guacamole-auth-totp.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-totp-${LATEST_SERVER}.tar.gz"
|
||||||
@@ -158,7 +158,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# DUO Extension
|
# DUO Extension
|
||||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-duo-*.jar ]]; then
|
if compgen -G "/etc/guacamole/extensions/guacamole-auth-duo-*.jar" >/dev/null; then
|
||||||
msg_info "Updating DUO Extension"
|
msg_info "Updating DUO Extension"
|
||||||
rm -f /etc/guacamole/extensions/guacamole-auth-duo-*.jar
|
rm -f /etc/guacamole/extensions/guacamole-auth-duo-*.jar
|
||||||
curl_download "/tmp/guacamole-auth-duo.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-duo-${LATEST_SERVER}.tar.gz"
|
curl_download "/tmp/guacamole-auth-duo.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-duo-${LATEST_SERVER}.tar.gz"
|
||||||
@@ -170,7 +170,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# LDAP Extension
|
# LDAP Extension
|
||||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-ldap-*.jar ]]; then
|
if compgen -G "/etc/guacamole/extensions/guacamole-auth-ldap-*.jar" >/dev/null; then
|
||||||
msg_info "Updating LDAP Extension"
|
msg_info "Updating LDAP Extension"
|
||||||
rm -f /etc/guacamole/extensions/guacamole-auth-ldap-*.jar
|
rm -f /etc/guacamole/extensions/guacamole-auth-ldap-*.jar
|
||||||
curl_download "/tmp/guacamole-auth-ldap.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-ldap-${LATEST_SERVER}.tar.gz"
|
curl_download "/tmp/guacamole-auth-ldap.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-ldap-${LATEST_SERVER}.tar.gz"
|
||||||
@@ -182,7 +182,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Quick Connect Extension
|
# Quick Connect Extension
|
||||||
if [[ -f /etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar ]]; then
|
if compgen -G "/etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar" >/dev/null; then
|
||||||
msg_info "Updating Quick Connect Extension"
|
msg_info "Updating Quick Connect Extension"
|
||||||
rm -f /etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar
|
rm -f /etc/guacamole/extensions/guacamole-auth-quickconnect-*.jar
|
||||||
curl_download "/tmp/guacamole-auth-quickconnect.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-quickconnect-${LATEST_SERVER}.tar.gz"
|
curl_download "/tmp/guacamole-auth-quickconnect.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-auth-quickconnect-${LATEST_SERVER}.tar.gz"
|
||||||
@@ -194,7 +194,7 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# History Recording Storage Extension
|
# History Recording Storage Extension
|
||||||
if [[ -f /etc/guacamole/extensions/guacamole-history-recording-storage-*.jar ]]; then
|
if compgen -G "/etc/guacamole/extensions/guacamole-history-recording-storage-*.jar" >/dev/null; then
|
||||||
msg_info "Updating History Recording Storage Extension"
|
msg_info "Updating History Recording Storage Extension"
|
||||||
rm -f /etc/guacamole/extensions/guacamole-history-recording-storage-*.jar
|
rm -f /etc/guacamole/extensions/guacamole-history-recording-storage-*.jar
|
||||||
curl_download "/tmp/guacamole-history-recording-storage.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-history-recording-storage-${LATEST_SERVER}.tar.gz"
|
curl_download "/tmp/guacamole-history-recording-storage.tar.gz" "https://downloads.apache.org/guacamole/${LATEST_SERVER}/binary/guacamole-history-recording-storage-${LATEST_SERVER}.tar.gz"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}"
|
|||||||
var_disk="${var_disk:-10}"
|
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_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_cpu="${var_cpu:-1}"
|
|||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-1024}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+5
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -34,6 +34,7 @@ function update_script() {
|
|||||||
systemctl stop apprise-api
|
systemctl stop apprise-api
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
export UV_PYTHON_INSTALL_DIR=/opt/uv-python
|
||||||
PYTHON_VERSION="3.12" setup_uv
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "apprise" "caronc/apprise-api" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "apprise" "caronc/apprise-api" "tarball"
|
||||||
|
|
||||||
@@ -41,7 +42,9 @@ function update_script() {
|
|||||||
cd /opt/apprise
|
cd /opt/apprise
|
||||||
cp ./requirements.txt /etc/requirements.txt
|
cp ./requirements.txt /etc/requirements.txt
|
||||||
$STD apt install -y nginx git
|
$STD apt install -y nginx git
|
||||||
$STD uv pip install -r requirements.txt gunicorn supervisor --system
|
$STD uv venv /opt/apprise/.venv
|
||||||
|
$STD uv pip install -r requirements.txt gunicorn supervisor -p /opt/apprise/.venv/bin/python
|
||||||
|
ln -sf /opt/apprise/.venv/bin/supervisord /opt/apprise/.venv/bin/gunicorn /usr/local/bin/
|
||||||
cp -fr apprise_api/static /usr/share/nginx/html/s/
|
cp -fr apprise_api/static /usr/share/nginx/html/s/
|
||||||
mv apprise_api/ webapp
|
mv apprise_api/ webapp
|
||||||
touch /etc/nginx/server-override.conf
|
touch /etc/nginx/server-override.conf
|
||||||
|
|||||||
+3
-3
@@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -39,13 +39,13 @@ function update_script() {
|
|||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Upgrading Playwright"
|
msg_info "Upgrading Playwright"
|
||||||
$STD uv pip install playwright --system
|
$STD uv pip install playwright --system --break-system-packages
|
||||||
$STD playwright install-deps chromium
|
$STD playwright install-deps chromium
|
||||||
msg_ok "Upgraded Playwright"
|
msg_ok "Upgraded Playwright"
|
||||||
|
|
||||||
msg_info "Updating ArchiveBox"
|
msg_info "Updating ArchiveBox"
|
||||||
cd /opt/archivebox/data
|
cd /opt/archivebox/data
|
||||||
$STD uv pip install --system --upgrade --no-reinstall archivebox
|
$STD uv pip install --system --break-system-packages --upgrade --no-reinstall archivebox
|
||||||
sudo -u archivebox archivebox init
|
sudo -u archivebox archivebox init
|
||||||
msg_ok "Updated ArchiveBox"
|
msg_ok "Updated ArchiveBox"
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-3}"
|
var_disk="${var_disk:-3}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -33,7 +33,7 @@ function update_script() {
|
|||||||
systemctl stop argus
|
systemctl stop argus
|
||||||
msg_ok "Service stopped"
|
msg_ok "Service stopped"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-amd64"
|
fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-$(arch_resolve)"
|
||||||
|
|
||||||
msg_info "Starting service"
|
msg_info "Starting service"
|
||||||
systemctl start argus
|
systemctl start argus
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+62
-61
@@ -30,10 +30,10 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -r MAJOR MINOR PATCH <<< "$(sed 's/^version\///; s/\./ /g' "$HOME/.authentik")"
|
read -r MAJOR MINOR PATCH <<<"$(sed 's/^version\///; s/\./ /g' "$HOME/.authentik")"
|
||||||
|
|
||||||
msg_info "Update dependencies"
|
msg_info "Update dependencies"
|
||||||
ensure_dependencies crossbuild-essential-amd64 gcc-x86-64-linux-gnu cmake clang libunwind-18-dev
|
ensure_dependencies crossbuild-essential-$(arch_resolve) gcc-$(arch_resolve "x86-64" "aarch64")-linux-gnu cmake clang libunwind-18-dev
|
||||||
msg_ok "Update dependencies"
|
msg_ok "Update dependencies"
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="24" setup_nodejs
|
||||||
@@ -66,26 +66,26 @@ function update_script() {
|
|||||||
if check_for_gh_release "authentik" "goauthentik/authentik" "${AUTHENTIK_VERSION}"; then
|
if check_for_gh_release "authentik" "goauthentik/authentik" "${AUTHENTIK_VERSION}"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop authentik-server authentik-worker
|
systemctl stop authentik-server authentik-worker
|
||||||
if [[ $(systemctl is-active authentik-ldap) == active ]]; then
|
if [[ $(systemctl is-active authentik-ldap) == active ]]; then
|
||||||
systemctl stop authentik-ldap
|
systemctl stop authentik-ldap
|
||||||
fi
|
fi
|
||||||
if [[ $(systemctl is-active authentik-rac) == active ]]; then
|
if [[ $(systemctl is-active authentik-rac) == active ]]; then
|
||||||
systemctl stop authentik-rac
|
systemctl stop authentik-rac
|
||||||
fi
|
fi
|
||||||
if [[ $(systemctl is-active authentik-radius) == active ]]; then
|
if [[ $(systemctl is-active authentik-radius) == active ]]; then
|
||||||
systemctl stop authentik-radius
|
systemctl stop authentik-radius
|
||||||
fi
|
fi
|
||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "authentik" "goauthentik/authentik" "tarball" "${AUTHENTIK_VERSION}" "/opt/authentik"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "authentik" "goauthentik/authentik" "tarball" "${AUTHENTIK_VERSION}" "/opt/authentik"
|
||||||
|
|
||||||
msg_info "Configuring rust"
|
msg_info "Configuring rust"
|
||||||
cd /opt/authentik
|
cd /opt/authentik
|
||||||
$STD rustup install
|
$STD rustup install
|
||||||
$STD rustup default "$(sed -n 's/channel = "\(.*\)"/\1/p' rust-toolchain.toml)"
|
$STD rustup default "$(sed -n 's/channel = "\(.*\)"/\1/p' rust-toolchain.toml)"
|
||||||
msg_ok "Configured rust"
|
msg_ok "Configured rust"
|
||||||
|
|
||||||
msg_info "Updating web"
|
msg_info "Updating web"
|
||||||
cd /opt/authentik/web
|
cd /opt/authentik/web
|
||||||
export NODE_ENV="production"
|
export NODE_ENV="production"
|
||||||
$STD npm install
|
$STD npm install
|
||||||
@@ -96,20 +96,21 @@ function update_script() {
|
|||||||
msg_info "Updating go proxy"
|
msg_info "Updating go proxy"
|
||||||
cd /opt/authentik
|
cd /opt/authentik
|
||||||
export CGO_ENABLED="1"
|
export CGO_ENABLED="1"
|
||||||
|
export CC="$(arch_resolve "x86_64" "aarch64")-linux-gnu-gcc"
|
||||||
$STD go mod download
|
$STD go mod download
|
||||||
$STD go build -o /opt/authentik/authentik-server ./cmd/server
|
$STD go build -o /opt/authentik/authentik-server ./cmd/server
|
||||||
$STD go build -o /opt/authentik/ldap ./cmd/ldap
|
$STD go build -o /opt/authentik/ldap ./cmd/ldap
|
||||||
$STD go build -o /opt/authentik/rac ./cmd/rac
|
$STD go build -o /opt/authentik/rac ./cmd/rac
|
||||||
$STD go build -o /opt/authentik/radius ./cmd/radius
|
$STD go build -o /opt/authentik/radius ./cmd/radius
|
||||||
msg_ok "Updated go proxy"
|
msg_ok "Updated go proxy"
|
||||||
|
|
||||||
msg_info "Building worker"
|
msg_info "Building worker"
|
||||||
export AWS_LC_FIPS_SYS_CC="clang"
|
export AWS_LC_FIPS_SYS_CC="clang"
|
||||||
cd /opt/authentik
|
cd /opt/authentik
|
||||||
$STD cargo build --package authentik --no-default-features --features core --locked --release --jobs 1
|
$STD cargo build --package authentik --no-default-features --features core --locked --release --jobs 1
|
||||||
cp ./target/release/authentik /opt/authentik/authentik-worker
|
cp ./target/release/authentik /opt/authentik/authentik-worker
|
||||||
rm -r ./target
|
rm -r ./target
|
||||||
msg_ok "Built worker"
|
msg_ok "Built worker"
|
||||||
|
|
||||||
msg_info "Updating python server"
|
msg_info "Updating python server"
|
||||||
export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
|
export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
|
||||||
@@ -124,26 +125,26 @@ function update_script() {
|
|||||||
msg_ok "Updated python server"
|
msg_ok "Updated python server"
|
||||||
|
|
||||||
if [[ $MAJOR == 2026 && $MINOR -lt 5 ]]; then
|
if [[ $MAJOR == 2026 && $MINOR -lt 5 ]]; then
|
||||||
msg_info "Updating Worker and Server config"
|
msg_info "Updating Worker and Server config"
|
||||||
cp /etc/authentik/config.yml /etc/authentik/config.bak
|
cp /etc/authentik/config.yml /etc/authentik/config.bak
|
||||||
yq -i ".postgresql.conn_max_age = 0" /etc/authentik/config.yml
|
yq -i ".postgresql.conn_max_age = 0" /etc/authentik/config.yml
|
||||||
yq -i ".postgresql.conn_health_checks = false" /etc/authentik/config.yml
|
yq -i ".postgresql.conn_health_checks = false" /etc/authentik/config.yml
|
||||||
yq -i ".listen.debug_tokio = \"[::]:6669\"" /etc/authentik/config.yml
|
yq -i '.listen.debug_tokio = "[::]:6669"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.console_subscriber = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.console_subscriber = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.h2 = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.h2 = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.hyper_util = \"warn\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.hyper_util = "warn"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.mio = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.mio = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.notify = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.notify = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.reqwest = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.reqwest = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.runtime = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.runtime = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.rustls = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.rustls = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.sqlx = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.sqlx = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.sqlx_postgres = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.sqlx_postgres = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.tokio = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.tokio = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".log.rust_log.tungstenite = \"info\"" /etc/authentik/config.yml
|
yq -i '.log.rust_log.tungstenite = "info"' /etc/authentik/config.yml
|
||||||
yq -i ".web.workers = 2" /etc/authentik/config.yml
|
yq -i ".web.workers = 2" /etc/authentik/config.yml
|
||||||
mv /etc/default/authentik /etc/default/authentik.bak
|
mv /etc/default/authentik /etc/default/authentik.bak
|
||||||
cat <<EOF >/etc/default/authentik-server
|
cat <<EOF >/etc/default/authentik-server
|
||||||
TMPDIR=/dev/shm/
|
TMPDIR=/dev/shm/
|
||||||
UV_LINK_MODE=copy
|
UV_LINK_MODE=copy
|
||||||
UV_PYTHON_DOWNLOADS=0
|
UV_PYTHON_DOWNLOADS=0
|
||||||
@@ -158,7 +159,7 @@ AUTHENTIK_LISTEN__HTTP="[::]:9000"
|
|||||||
AUTHENTIK_LISTEN__HTTPS="[::]:9443"
|
AUTHENTIK_LISTEN__HTTPS="[::]:9443"
|
||||||
AUTHENTIK_LISTEN__METRICS="[::]:9300"
|
AUTHENTIK_LISTEN__METRICS="[::]:9300"
|
||||||
EOF
|
EOF
|
||||||
cat <<EOF >/etc/default/authentik-worker
|
cat <<EOF >/etc/default/authentik-worker
|
||||||
TMPDIR=/dev/shm/
|
TMPDIR=/dev/shm/
|
||||||
UV_LINK_MODE=copy
|
UV_LINK_MODE=copy
|
||||||
UV_PYTHON_DOWNLOADS=0
|
UV_PYTHON_DOWNLOADS=0
|
||||||
@@ -173,11 +174,11 @@ AUTHENTIK_LISTEN__HTTP="[::]:8000"
|
|||||||
AUTHENTIK_LISTEN__HTTPS="[::]:8443"
|
AUTHENTIK_LISTEN__HTTPS="[::]:8443"
|
||||||
AUTHENTIK_LISTEN__METRICS="[::]:8300"
|
AUTHENTIK_LISTEN__METRICS="[::]:8300"
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Updated Worker and Server config!"
|
msg_ok "Updated Worker and Server config!"
|
||||||
msg_warn "Please check /etc/default/authentik-worker and /etc/default/authentik-server config files for port configurations!"
|
msg_warn "Please check /etc/default/authentik-worker and /etc/default/authentik-server config files for port configurations!"
|
||||||
|
|
||||||
msg_info "Updating services"
|
msg_info "Updating services"
|
||||||
cat <<EOF >/etc/systemd/system/authentik-server.service
|
cat <<EOF >/etc/systemd/system/authentik-server.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=authentik Go Server (API Gateway)
|
Description=authentik Go Server (API Gateway)
|
||||||
After=network.target
|
After=network.target
|
||||||
@@ -197,7 +198,7 @@ EnvironmentFile=/etc/default/authentik-server
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/authentik-worker.service
|
cat <<EOF >/etc/systemd/system/authentik-worker.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=authentik Worker
|
Description=authentik Worker
|
||||||
After=network.target postgresql.service
|
After=network.target postgresql.service
|
||||||
@@ -216,21 +217,21 @@ RestartSec=5
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
msg_ok "Updated services"
|
msg_ok "Updated services"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl start authentik-server authentik-worker
|
systemctl start authentik-server authentik-worker
|
||||||
if [[ $(systemctl is-enabled authentik-ldap) == enabled ]]; then
|
if [[ $(systemctl is-enabled authentik-ldap) == enabled ]]; then
|
||||||
systemctl start authentik-ldap
|
systemctl start authentik-ldap
|
||||||
fi
|
fi
|
||||||
if [[ $(systemctl is-enabled authentik-rac) == enabled ]]; then
|
if [[ $(systemctl is-enabled authentik-rac) == enabled ]]; then
|
||||||
systemctl start authentik-rac
|
systemctl start authentik-rac
|
||||||
fi
|
fi
|
||||||
if [[ $(systemctl is-enabled authentik-radius) == enabled ]]; then
|
if [[ $(systemctl is-enabled authentik-radius) == enabled ]]; then
|
||||||
systemctl start authentik-radius
|
systemctl start authentik-radius
|
||||||
fi
|
fi
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
@@ -269,5 +270,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed successfully!\n"
|
msg_ok "Completed successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:9443${CL}"
|
echo -e "${GATEWAY}${BGN}https://${IP}:9443${CL}"
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}"
|
|||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -34,7 +34,7 @@ function update_script() {
|
|||||||
systemctl stop autobrr
|
systemctl stop autobrr
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_x86_64.tar.gz"
|
fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_$(arch_resolve "x86_64" "arm64").tar.gz"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start autobrr
|
systemctl start autobrr
|
||||||
|
|||||||
+3
-1
@@ -40,7 +40,8 @@ function update_script() {
|
|||||||
create_backup /opt/babybuddy/babybuddy/settings/production.py
|
create_backup /opt/babybuddy/babybuddy/settings/production.py
|
||||||
|
|
||||||
msg_info "Cleaning old files"
|
msg_info "Cleaning old files"
|
||||||
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} +
|
cd /opt/babybuddy || exit
|
||||||
|
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf -- {} +
|
||||||
msg_ok "Cleaned old files"
|
msg_ok "Cleaned old files"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy" "tarball"
|
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy" "tarball"
|
||||||
@@ -51,6 +52,7 @@ function update_script() {
|
|||||||
source .venv/bin/activate
|
source .venv/bin/activate
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
export DJANGO_SETTINGS_MODULE=babybuddy.settings.production
|
export DJANGO_SETTINGS_MODULE=babybuddy.settings.production
|
||||||
|
$STD python manage.py makemigrations
|
||||||
$STD python manage.py migrate
|
$STD python manage.py migrate
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -34,7 +34,7 @@ function update_script() {
|
|||||||
systemctl stop backrest
|
systemctl stop backrest
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "backrest" "garethgeorge/backrest" "prebuild" "latest" "/opt/backrest/bin" "backrest_Linux_x86_64.tar.gz"
|
fetch_and_deploy_gh_release "backrest" "garethgeorge/backrest" "prebuild" "latest" "/opt/backrest/bin" "backrest_Linux_$(arch_resolve "x86_64" "arm64").tar.gz"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start backrest
|
systemctl start backrest
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}"
|
|||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+2
-2
@@ -71,5 +71,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} 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 "${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: MickLesk (CanbiZ)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/daya0576/beaverhabits
|
||||||
|
|
||||||
|
APP="BeaverHabits"
|
||||||
|
var_tags="${var_tags:-habits;tracking;productivity}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-1024}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_arm64="${var_arm64:-yes}"
|
||||||
|
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/beaverhabits ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "beaverhabits" "daya0576/beaverhabits"; then
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop beaverhabits
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
|
create_backup /opt/beaverhabits/.user
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "beaverhabits" "daya0576/beaverhabits" "tarball"
|
||||||
|
|
||||||
|
msg_info "Syncing Dependencies"
|
||||||
|
cd /opt/beaverhabits
|
||||||
|
$STD uv sync --no-dev
|
||||||
|
msg_ok "Synced Dependencies"
|
||||||
|
|
||||||
|
restore_backup
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start beaverhabits
|
||||||
|
msg_ok "Started Service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
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 "${GATEWAY}${BGN}http://${IP}:8080/register{CL}"
|
||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-5}"
|
var_disk="${var_disk:-5}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+5
-5
@@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -68,16 +68,16 @@ function update_script() {
|
|||||||
create_backup /opt/bichon/bichon.env
|
create_backup /opt/bichon/bichon.env
|
||||||
|
|
||||||
if [ "$MIGRATE_V1" -eq 1 ] && [ "$CURRENT_VERSION" != "0.3.7" ]; then
|
if [ "$MIGRATE_V1" -eq 1 ] && [ "$CURRENT_VERSION" != "0.3.7" ]; then
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "v0.3.7" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz"
|
|
||||||
restore_backup
|
|
||||||
msg_info "Updating to intermediate version v0.3.7"
|
msg_info "Updating to intermediate version v0.3.7"
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "v0.3.7" "/opt/bichon" "bichon-*-$(arch_resolve "x86_64" "aarch64")-unknown-linux-gnu.tar.gz"
|
||||||
|
restore_backup
|
||||||
systemctl start bichon
|
systemctl start bichon
|
||||||
sleep 30
|
sleep 30
|
||||||
systemctl stop bichon
|
systemctl stop bichon
|
||||||
msg_ok "Intermediate update completed"
|
msg_ok "Intermediate update completed"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-$(arch_resolve "x86_64" "aarch64")-unknown-linux-gnu.tar.gz"
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
if [ "$MIGRATE_V1" -eq 1 ]; then
|
if [ "$MIGRATE_V1" -eq 1 ]; then
|
||||||
@@ -133,4 +133,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 "${GATEWAY}${BGN}http://${IP}:15630${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:15630${CL}"
|
||||||
+2
-2
@@ -13,7 +13,7 @@ var_ram="${var_ram:-2048}"
|
|||||||
var_disk="${var_disk:-12}"
|
var_disk="${var_disk:-12}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
var_gpu="${var_gpu:-no}"
|
var_gpu="${var_gpu:-no}"
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ function update_script() {
|
|||||||
systemctl stop birdnet
|
systemctl stop birdnet
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "birdnet" "tphakala/birdnet-go" "prebuild" "latest" "/opt/birdnet" "birdnet-go-linux-amd64.tar.gz"
|
fetch_and_deploy_gh_release "birdnet" "tphakala/birdnet-go" "prebuild" "latest" "/opt/birdnet" "birdnet-go-linux-$(arch_resolve)*.tar.gz"
|
||||||
|
|
||||||
msg_info "Deploying Binary"
|
msg_info "Deploying Binary"
|
||||||
cp /opt/birdnet/birdnet-go /usr/local/bin/birdnet-go
|
cp /opt/birdnet/birdnet-go /usr/local/bin/birdnet-go
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -31,11 +31,14 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE_JSON=$(curl -fsSL "https://api.bitfocus.io/v1/product/companion/packages?limit=20")
|
RELEASE_JSON=$(curl -fsSL "https://api.bitfocus.io/v1/product/companion/packages?limit=20")
|
||||||
PACKAGE_JSON=$(echo "$RELEASE_JSON" | jq -c '(if type == "array" then . else .packages end) | [.[] | select(.target=="linux-tgz" and (.uri | contains("linux-x64")))] | first')
|
PACKAGE_JSON=$(echo "$RELEASE_JSON" | jq -c \
|
||||||
|
--arg target "linux-$(arch_resolve "tgz" "arm64-tgz")" \
|
||||||
|
--arg arch "linux-$(arch_resolve "x64" "arm64")" \
|
||||||
|
'(if type == "array" then . else .packages end) | [.[] | select(.target==$target and (.uri | contains($arch)))] | first')
|
||||||
RELEASE=$(echo "$PACKAGE_JSON" | jq -r '.version // empty')
|
RELEASE=$(echo "$PACKAGE_JSON" | jq -r '.version // empty')
|
||||||
ASSET_URL=$(echo "$PACKAGE_JSON" | jq -r '.uri // empty')
|
ASSET_URL=$(echo "$PACKAGE_JSON" | jq -r '.uri // empty')
|
||||||
if [[ -z "$RELEASE" || -z "$ASSET_URL" ]]; then
|
if [[ -z "$RELEASE" || -z "$ASSET_URL" ]]; then
|
||||||
msg_error "Could not resolve a matching Linux x64 Companion package from the Bitfocus API."
|
msg_error "Could not resolve a matching Linux $(arch_resolve "x64" "arm64") Companion package from the Bitfocus API."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="Bitmagnet"
|
APP="Bitmagnet"
|
||||||
var_tags="${var_tags:-os}"
|
var_tags="${var_tags:-os}"
|
||||||
var_cpu="${var_cpu:-2}"
|
var_cpu="${var_cpu:-2}"
|
||||||
var_ram="${var_ram:-1024}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
|
|||||||
+3
-3
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -34,7 +34,7 @@ function update_script() {
|
|||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
create_backup /opt/blocky/config.yml
|
create_backup /opt/blocky/config.yml
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_$(arch_resolve "x86_64" "arm64").tar.gz"
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
@@ -52,4 +52,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 "${GATEWAY}${BGN}http://${IP}${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
|
||||||
|
APP="BookLore"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
|
||||||
|
msg_error "This script is no longer available in community-scripts."
|
||||||
|
msg_error "The Booklore or the Grimmory Fork will for now not return to community-scripts. Due to the unstable nature of these projects we decided to remove them and will decide at later point if they come back, which will most likley not happen. Plese do not create Issues for this."
|
||||||
|
msg_warn "More info: https://community-scripts.org/scripts/booklore"
|
||||||
|
exit 1
|
||||||
+5
-4
@@ -30,6 +30,8 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_release "bookorbit" "bookorbit/bookorbit"; then
|
if check_for_gh_release "bookorbit" "bookorbit/bookorbit"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop bookorbit
|
systemctl stop bookorbit
|
||||||
@@ -42,7 +44,7 @@ function update_script() {
|
|||||||
msg_info "Rebuilding Application"
|
msg_info "Rebuilding Application"
|
||||||
cd /opt/bookorbit
|
cd /opt/bookorbit
|
||||||
PNPM_VERSION=$(jq -r '.packageManager | ltrimstr("pnpm@")' /opt/bookorbit/package.json)
|
PNPM_VERSION=$(jq -r '.packageManager | ltrimstr("pnpm@")' /opt/bookorbit/package.json)
|
||||||
$STD corepack enable
|
|
||||||
$STD corepack prepare "pnpm@${PNPM_VERSION}" --activate
|
$STD corepack prepare "pnpm@${PNPM_VERSION}" --activate
|
||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
$STD pnpm --filter client run build-only
|
$STD pnpm --filter client run build-only
|
||||||
@@ -59,7 +61,6 @@ function update_script() {
|
|||||||
$STD uv pip install --python /opt/bookorbit-python/bin/python -r /opt/bookorbit/server/requirements/kobo-cloudscraper.txt
|
$STD uv pip install --python /opt/bookorbit-python/bin/python -r /opt/bookorbit/server/requirements/kobo-cloudscraper.txt
|
||||||
msg_ok "Updated Kobo Python Runtime"
|
msg_ok "Updated Kobo Python Runtime"
|
||||||
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start bookorbit
|
systemctl start bookorbit
|
||||||
msg_ok "Started Service"
|
msg_ok "Started Service"
|
||||||
@@ -74,5 +75,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} 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 "${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}"
|
|||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-256}"
|
|||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -37,7 +37,7 @@ function update_script() {
|
|||||||
|
|
||||||
create_backup /opt/certimate/pb_data
|
create_backup /opt/certimate/pb_data
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "certimate" "certimate-go/certimate" "prebuild" "latest" "/opt/certimate" "certimate_*_linux_amd64.zip"
|
fetch_and_deploy_gh_release "certimate" "certimate-go/certimate" "prebuild" "latest" "/opt/certimate" "certimate_*_linux_$(arch_resolve).zip"
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -35,7 +35,7 @@ function update_script() {
|
|||||||
|
|
||||||
create_backup /opt/cleanuparr/config
|
create_backup /opt/cleanuparr/config
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}"
|
|||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -41,5 +41,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} 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}:8123${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:8123${CL}"
|
||||||
|
|||||||
+8
-4
@@ -13,7 +13,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -36,7 +36,11 @@ function update_script() {
|
|||||||
systemctl stop cliproxyapi
|
systemctl stop cliproxyapi
|
||||||
msg_ok "Stopped CLIProxyAPI"
|
msg_ok "Stopped CLIProxyAPI"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cliproxyapi" "router-for-me/CLIProxyAPI" "prebuild" "latest" "/opt/cliproxyapi" "CLIProxyAPI_*_linux_amd64.tar.gz"
|
create_backup /opt/cliproxyapi/config.yaml
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cliproxyapi" "router-for-me/CLIProxyAPI" "prebuild" "latest" "/opt/cliproxyapi" "CLIProxyAPI_*_linux_$(arch_resolve "amd64" "aarch64").tar.gz"
|
||||||
|
|
||||||
|
restore_backup
|
||||||
|
|
||||||
msg_info "Starting CLIProxyAPI"
|
msg_info "Starting CLIProxyAPI"
|
||||||
systemctl start cliproxyapi
|
systemctl start cliproxyapi
|
||||||
@@ -52,5 +56,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed successfully!\n"
|
msg_ok "Completed successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW}Authenticate your AI providers via the management panel at:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:8317${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:8317/management.html${CL}"
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
var_disk="${var_disk:-10}"
|
var_disk="${var_disk:-10}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -34,7 +34,7 @@ function update_script() {
|
|||||||
systemctl stop cloudreve
|
systemctl stop cloudreve
|
||||||
msg_info "Stopped Service"
|
msg_info "Stopped Service"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_amd64.tar.gz"
|
fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_$(arch_resolve).tar.gz"
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start cloudreve
|
systemctl start cloudreve
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
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}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-8192}"
|
|||||||
var_disk="${var_disk:-25}"
|
var_disk="${var_disk:-25}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
var_gpu="${var_gpu:-yes}"
|
var_gpu="${var_gpu:-yes}"
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -37,7 +37,7 @@ function update_script() {
|
|||||||
/opt/configarr/secrets.yml \
|
/opt/configarr/secrets.yml \
|
||||||
/opt/configarr/.env
|
/opt/configarr/.env
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr" "prebuild" "latest" "/opt/configarr" "configarr-linux-x64.tar.xz"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr" "prebuild" "latest" "/opt/configarr" "configarr-linux-$(arch_resolve "x64" "arm64").tar.xz"
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}"
|
|||||||
var_disk="${var_disk:-30}"
|
var_disk="${var_disk:-30}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+2
-2
@@ -9,10 +9,10 @@ APP="CoreDNS"
|
|||||||
var_tags="${var_tags:-dns;network}"
|
var_tags="${var_tags:-dns;network}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-256}"
|
var_ram="${var_ram:-256}"
|
||||||
var_disk="${var_disk:-1}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}"
|
|||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
var_fuse="${var_fuse:-yes}"
|
var_fuse="${var_fuse:-yes}"
|
||||||
|
|
||||||
|
|||||||
+25
-24
@@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}"
|
|||||||
var_disk="${var_disk:-16}"
|
var_disk="${var_disk:-16}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -29,42 +29,43 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL "https://gitlab.com/api/v4/projects/20430749/releases" | grep -o '"tag_name":"v[^"]*"' | head -n 1 | sed 's/"tag_name":"v//;s/"//')
|
if check_for_gl_release "Crafty-Controller" "crafty-controller/crafty-4"; then
|
||||||
if [[ ! -f /opt/crafty-controller_version.txt ]] || [[ ${RELEASE} != "$(cat /opt/crafty-controller_version.txt)" ]]; then
|
|
||||||
|
|
||||||
msg_info "Stopping Crafty-Controller"
|
msg_info "Stopping Crafty-Controller"
|
||||||
systemctl stop crafty-controller
|
systemctl stop crafty-controller
|
||||||
msg_ok "Stopped Crafty-Controller"
|
msg_ok "Stopped Crafty-Controller"
|
||||||
|
|
||||||
create_backup /opt/crafty-controller/crafty/crafty-4/app/config/version.json \
|
create_backup \
|
||||||
/opt/crafty-controller/crafty/crafty-4/app/config/credits.json \
|
"/opt/crafty-controller/crafty/crafty-4/app/config/db" \
|
||||||
/opt/crafty-controller/crafty/crafty-4/app/config/logging.json \
|
"/opt/crafty-controller/crafty/crafty-4/app/config/config.json" \
|
||||||
/opt/crafty-controller/crafty/crafty-4/app/config/default.json.example \
|
"/opt/crafty-controller/crafty/crafty-4/app/config/web" \
|
||||||
/opt/crafty-controller/crafty/crafty-4/app/config/motd_format.json
|
"/opt/crafty-controller/crafty/crafty-4/servers" \
|
||||||
|
"/opt/crafty-controller/crafty/crafty-4/backups" \
|
||||||
|
"/opt/crafty-controller/crafty/crafty-4/import"
|
||||||
|
|
||||||
msg_info "Updating Crafty-Controller to v${RELEASE}"
|
CLEAN_INSTALL=1 fetch_and_deploy_gl_release "Crafty-Controller" "crafty-controller/crafty-4" "tarball" "latest" "/opt/crafty-controller/crafty/crafty-4"
|
||||||
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")
|
|
||||||
$STD unzip crafty-4-v"${RELEASE}".zip
|
|
||||||
cp -a crafty-4-v"${RELEASE}"/. /opt/crafty-controller/crafty/crafty-4/
|
|
||||||
rm -rf crafty-4-v"${RELEASE}"
|
|
||||||
cd /opt/crafty-controller/crafty/crafty-4
|
|
||||||
sudo -u crafty bash -c '
|
|
||||||
source /opt/crafty-controller/crafty/.venv/bin/activate
|
|
||||||
pip3 install --no-cache-dir -r requirements.txt
|
|
||||||
' &>/dev/null
|
|
||||||
echo "${RELEASE}" >"/opt/crafty-controller_version.txt"
|
|
||||||
msg_ok "Updated Crafty-Controller to v${RELEASE}"
|
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
chown -R crafty:crafty /opt/crafty-controller/
|
|
||||||
|
msg_info "Updating TemurinJDK"
|
||||||
|
setup_java
|
||||||
|
$STD apt install -y temurin-{8,11,17,21,25}-jre
|
||||||
|
$STD update-alternatives --set java /usr/lib/jvm/temurin-25-jre-$(arch_resolve)/bin/java
|
||||||
|
msg_ok "Updated TemurinJDK"
|
||||||
|
|
||||||
|
msg_info "Updating Python dependencies"
|
||||||
|
chown -R crafty:crafty /opt/crafty-controller
|
||||||
|
cd /opt/crafty-controller/crafty/crafty-4
|
||||||
|
$STD sudo -u crafty bash -c '
|
||||||
|
source /opt/crafty-controller/crafty/.venv/bin/activate
|
||||||
|
pip3 install --no-cache-dir -r requirements.txt
|
||||||
|
'
|
||||||
|
msg_ok "Updated Python dependencies"
|
||||||
|
|
||||||
msg_info "Starting Crafty-Controller"
|
msg_info "Starting Crafty-Controller"
|
||||||
systemctl start crafty-controller
|
systemctl start crafty-controller
|
||||||
msg_ok "Started Crafty-Controller"
|
msg_ok "Started Crafty-Controller"
|
||||||
|
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -52,5 +52,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed successfully!\n"
|
msg_ok "Completed successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access cross-seed API using the following URL:${CL}"
|
echo -e "${INFO}${YW}Access cross-seed API using the following URL:${CL}"
|
||||||
echo -e "${GATEWAY}${BGN}http://${IP}:2468${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}:2468${CL}"
|
||||||
|
|||||||
+5
-5
@@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -26,8 +26,8 @@ function update_script() {
|
|||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/cyberchef ]]; then
|
if [[ ! -d /opt/cyberchef ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "cyberchef" "gchq/CyberChef"; then
|
if check_for_gh_release "cyberchef" "gchq/CyberChef"; then
|
||||||
@@ -58,5 +58,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed successfully!\n"
|
msg_ok "Completed successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} 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}${CL}"
|
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -37,7 +37,7 @@ function update_script() {
|
|||||||
|
|
||||||
create_backup /opt/dagu/data
|
create_backup /opt/dagu/data
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_amd64.tar.gz"
|
fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_$(arch_resolve).tar.gz"
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}"
|
|||||||
var_disk="${var_disk:-6}"
|
var_disk="${var_disk:-6}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+11
-6
@@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}"
|
|||||||
var_disk="${var_disk:-8}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -30,6 +30,8 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_release "databasus" "databasus/databasus"; then
|
if check_for_gh_release "databasus" "databasus/databasus"; then
|
||||||
msg_info "Stopping Databasus"
|
msg_info "Stopping Databasus"
|
||||||
$STD systemctl stop databasus
|
$STD systemctl stop databasus
|
||||||
@@ -45,13 +47,16 @@ function update_script() {
|
|||||||
# Install MongoDB Database Tools via direct .deb (no APT repo for Debian 13)
|
# Install MongoDB Database Tools via direct .deb (no APT repo for Debian 13)
|
||||||
if ! command -v mongodump &>/dev/null; then
|
if ! command -v mongodump &>/dev/null; then
|
||||||
[[ "$(get_os_info id)" == "ubuntu" ]] && MONGO_DIST="ubuntu2204" || MONGO_DIST="debian12"
|
[[ "$(get_os_info id)" == "ubuntu" ]] && MONGO_DIST="ubuntu2204" || MONGO_DIST="debian12"
|
||||||
fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-x86_64-100.16.1.deb"
|
MONGO_ARCH=$(arch_resolve "x86_64" "arm64")
|
||||||
|
# MongoDB only publishes arm64 builds for Ubuntu
|
||||||
|
[[ "$MONGO_ARCH" == "arm64" ]] && MONGO_DIST="ubuntu2204"
|
||||||
|
fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-${MONGO_ARCH}-100.16.1.deb"
|
||||||
fi
|
fi
|
||||||
|
ensure_dependencies mariadb-client
|
||||||
|
mkdir -p /usr/local/mariadb-{10.6,12.1}/bin /usr/local/mysql-{5.7,8.0,8.4,9}/bin /usr/local/mongodb-database-tools/bin
|
||||||
[[ -f /usr/bin/mongodump ]] && ln -sf /usr/bin/mongodump /usr/local/mongodb-database-tools/bin/mongodump
|
[[ -f /usr/bin/mongodump ]] && ln -sf /usr/bin/mongodump /usr/local/mongodb-database-tools/bin/mongodump
|
||||||
[[ -f /usr/bin/mongorestore ]] && ln -sf /usr/bin/mongorestore /usr/local/mongodb-database-tools/bin/mongorestore
|
[[ -f /usr/bin/mongorestore ]] && ln -sf /usr/bin/mongorestore /usr/local/mongodb-database-tools/bin/mongorestore
|
||||||
# Create MariaDB and MySQL client symlinks for compatibility
|
# Create MariaDB and MySQL client symlinks for compatibility
|
||||||
ensure_dependencies mariadb-client
|
|
||||||
mkdir -p /usr/local/mariadb-{10.6,12.1}/bin /usr/local/mysql-{5.7,8.0,8.4,9}/bin /usr/local/mongodb-database-tools/bin
|
|
||||||
for dir in /usr/local/mariadb-{10.6,12.1}/bin; do
|
for dir in /usr/local/mariadb-{10.6,12.1}/bin; do
|
||||||
ln -sf /usr/bin/mariadb-dump "$dir/mariadb-dump"
|
ln -sf /usr/bin/mariadb-dump "$dir/mariadb-dump"
|
||||||
ln -sf /usr/bin/mariadb "$dir/mariadb"
|
ln -sf /usr/bin/mariadb "$dir/mariadb"
|
||||||
@@ -67,14 +72,14 @@ function update_script() {
|
|||||||
msg_info "Updating Databasus"
|
msg_info "Updating Databasus"
|
||||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
cd /opt/databasus/frontend
|
cd /opt/databasus/frontend
|
||||||
$STD corepack enable
|
|
||||||
$STD corepack prepare pnpm@latest --activate
|
$STD corepack prepare pnpm@latest --activate
|
||||||
$STD pnpm install --frozen-lockfile
|
$STD pnpm install --frozen-lockfile
|
||||||
$STD pnpm run build
|
$STD pnpm run build
|
||||||
cd /opt/databasus/backend
|
cd /opt/databasus/backend
|
||||||
$STD go mod download
|
$STD go mod download
|
||||||
$STD /root/go/bin/swag init -g cmd/main.go -o swagger
|
$STD /root/go/bin/swag init -g cmd/main.go -o swagger
|
||||||
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o databasus ./cmd/main.go
|
$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd
|
||||||
mv /opt/databasus/backend/databasus /opt/databasus/databasus
|
mv /opt/databasus/backend/databasus /opt/databasus/databasus
|
||||||
mkdir -p /opt/databasus/ui/build
|
mkdir -p /opt/databasus/ui/build
|
||||||
cp -r /opt/databasus/frontend/dist/* /opt/databasus/ui/build/
|
cp -r /opt/databasus/frontend/dist/* /opt/databasus/ui/build/
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}"
|
|||||||
var_disk="${var_disk:-15}"
|
var_disk="${var_disk:-15}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ var_ram="${var_ram:-512}"
|
|||||||
var_disk="${var_disk:-2}"
|
var_disk="${var_disk:-2}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
@@ -35,7 +35,7 @@ function update_script() {
|
|||||||
|
|
||||||
create_backup /opt/ddns-updater/data
|
create_backup /opt/ddns-updater/data
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ddns-updater" "qdm12/ddns-updater" "singlefile" "latest" "/opt/ddns-updater" "ddns-updater_*_linux_amd64"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ddns-updater" "qdm12/ddns-updater" "singlefile" "latest" "/opt/ddns-updater" "ddns-updater_*_linux_$(arch_resolve)"
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}"
|
|||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-13}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-no}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-0}"
|
var_unprivileged="${var_unprivileged:-0}"
|
||||||
|
|
||||||
header_info "$APP"
|
header_info "$APP"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user