Compare commits

...

198 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
ee5cd20915 Update CHANGELOG.md (#5942)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-12 01:15:38 +01:00
community-scripts-pr-app[bot]
5dcd39231f Update versions.json (#5941)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-12 02:15:06 +02:00
Slaviša Arežina
8f79823c95 Fix dependencies (#5940) 2025-07-11 22:04:41 +02:00
community-scripts-pr-app[bot]
ba00a1d3f0 Update CHANGELOG.md (#5939)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-11 19:24:43 +01:00
Chris
599d65768e immich: hotfix 5821 (#5938) 2025-07-11 20:24:06 +02:00
community-scripts-pr-app[bot]
471e2f758f Update CHANGELOG.md (#5936)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-11 14:06:04 +01:00
CanbiZ
f3a4bd461d bookstack: add setup_composer in update (#5935) 2025-07-11 15:05:26 +02:00
community-scripts-pr-app[bot]
b115fe9120 Update versions.json (#5934)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-11 14:07:46 +02:00
community-scripts-pr-app[bot]
f9429ecf5a Update CHANGELOG.md (#5933)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-11 12:56:53 +01:00
Chris
ebea43f299 Immich: revert install sequence (#5932)
- apparently the Postgresql-16 install does not like running after
packages from Testing are installed. Reverted the change and restored
running the DB Collation queries
2025-07-11 13:56:20 +02:00
community-scripts-pr-app[bot]
d693c9361b Update CHANGELOG.md (#5927)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-11 10:40:20 +01:00
CanbiZ
3ca53067a7 Refactor & Function Bump: Docker (#5889)
* Refactor: Docker

* add more features

* update_script

* Update docker.sh
2025-07-11 11:39:50 +02:00
community-scripts-pr-app[bot]
93e204850b Update CHANGELOG.md (#5925)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-11 07:36:12 +01:00
Chris
8595d48cec Immich: handle custom library dependency updates; other fixes (#5896)
- Adds libaom-dev to the installer; checks for it and installs during
update
- Refactor immich.sh to simplify custom library recompilations into
functions
- Move installation of packages from Testing repo before Postgresql
install to avoid DB collation issue
2025-07-11 08:35:45 +02:00
community-scripts-pr-app[bot]
6fcca2bfdb Update CHANGELOG.md (#5923)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-11 01:16:20 +01:00
community-scripts-pr-app[bot]
295b419fbc Update versions.json (#5922)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-11 02:15:34 +02:00
CanbiZ
b9ac02e74f Update tools.func 2025-07-10 14:39:33 +02:00
community-scripts-pr-app[bot]
66d2f96b16 Update versions.json (#5916)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 14:08:52 +02:00
community-scripts-pr-app[bot]
1a66ca2683 Update CHANGELOG.md (#5915)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 13:01:54 +01:00
community-scripts-pr-app[bot]
b865be5e45 Update CHANGELOG.md (#5914)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 13:00:20 +01:00
CanbiZ
edb8ee5980 Refactor: Habitica (#5911) 2025-07-10 14:00:04 +02:00
community-scripts-pr-app[bot]
d30c0718da Update CHANGELOG.md (#5913)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 12:59:02 +01:00
CanbiZ
90b6712453 Refactor: EMQX + Update-Function + Improved NodeJS Crawling (#5907) 2025-07-10 13:58:20 +02:00
community-scripts-pr-app[bot]
3140438b2f Update CHANGELOG.md (#5908)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 10:17:31 +01:00
CanbiZ
bb00b9f545 core: fix breaking redownload for lxc containers (#5906) 2025-07-10 11:17:01 +02:00
community-scripts-pr-app[bot]
12b9e163bc Update CHANGELOG.md (#5905)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 06:35:30 +01:00
Slaviša Arežina
ee182fe867 Fix planka (#5900) 2025-07-10 07:35:03 +02:00
community-scripts-pr-app[bot]
5c6573152d Update CHANGELOG.md (#5902)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 01:16:04 +01:00
community-scripts-pr-app[bot]
1c05a843bb Update versions.json (#5901)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-10 02:15:25 +02:00
community-scripts-pr-app[bot]
ce5b17e210 Update CHANGELOG.md (#5895)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 20:59:08 +01:00
CanbiZ
787d749340 omada fix (#5894) 2025-07-09 21:58:33 +02:00
community-scripts-pr-app[bot]
cd98fddc05 Update CHANGELOG.md (#5892)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 20:20:14 +01:00
Slaviša Arežina
043ca11732 Update baikal-install.sh (#5891) 2025-07-09 21:19:49 +02:00
CanbiZ
d596ced793 fix tcp issue docker 2025-07-09 19:19:18 +02:00
CanbiZ
4f08b4609b breaking fix docker 2025-07-09 19:09:41 +02:00
community-scripts-pr-app[bot]
2e4c185ee1 Update CHANGELOG.md (#5887)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 18:01:03 +01:00
CanbiZ
64fac95a03 FreshRSS: fix needed php modules (#5886) 2025-07-09 19:00:33 +02:00
community-scripts-pr-app[bot]
786c9178f9 Update CHANGELOG.md (#5885)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 16:43:58 +01:00
CanbiZ
7b380253ee Refactor: Stirling-PDF (#5872) 2025-07-09 17:43:30 +02:00
community-scripts-pr-app[bot]
3914c0f7b9 Update CHANGELOG.md (#5884)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 16:43:07 +01:00
Slaviša Arežina
1a53b749da Refactor (#5844) 2025-07-09 17:42:28 +02:00
community-scripts-pr-app[bot]
f01046133e Update CHANGELOG.md (#5883)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 16:40:39 +01:00
CanbiZ
e8aa450d06 Refactor: Ghost (use now MySQL) (#5871)
* Refactor: Ghost

* update mysql
2025-07-09 17:40:14 +02:00
community-scripts-pr-app[bot]
6acf854f3e Update CHANGELOG.md (#5882)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 16:12:38 +01:00
Slaviša Arežina
b565048985 Refactor (#5874) 2025-07-09 17:12:02 +02:00
community-scripts-pr-app[bot]
24eff9dbbd Update CHANGELOG.md (#5880)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 15:10:41 +01:00
CanbiZ
24be3b43b1 core: Fix VAAPI passthrough for unprivileged LXC containers via devX (#5875) 2025-07-09 16:10:13 +02:00
community-scripts-pr-app[bot]
54d534a5d2 Update CHANGELOG.md (#5879)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 15:05:57 +01:00
Slaviša Arežina
5bad80e148 Refactor: FlareSolverr (#5845)
* Refactor

* Update flaresolverr.sh

* Update flaresolverr.sh

* Update flaresolverr-install.sh
2025-07-09 16:05:31 +02:00
community-scripts-pr-app[bot]
89498f4205 Update CHANGELOG.md (#5878)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 15:04:36 +01:00
Slaviša Arežina
661a58ae29 Refactor (#5876) 2025-07-09 16:03:57 +02:00
CanbiZ
acc500fe9d remove breaking change in autolabler 2025-07-09 14:28:44 +02:00
community-scripts-pr-app[bot]
0a37d1b004 Update CHANGELOG.md (#5870)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 13:23:23 +01:00
Slaviša Arežina
8c09216691 Refactor: Commafeed (#5802) 2025-07-09 14:22:41 +02:00
community-scripts-pr-app[bot]
54cd7dd669 Update CHANGELOG.md (#5869)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 13:10:09 +01:00
CanbiZ
2ff778db9a Github: AutoLabler | ChangeLog (Refactor) (#5868) 2025-07-09 14:09:11 +02:00
community-scripts-pr-app[bot]
5d1f0ab13e Update versions.json (#5867)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 14:08:07 +02:00
community-scripts-pr-app[bot]
b306a31235 Update CHANGELOG.md (#5866)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 13:07:01 +01:00
CanbiZ
c8797ba135 tools.func: strip leading folders for prebuild assets (#5865) 2025-07-09 14:06:33 +02:00
community-scripts-pr-app[bot]
b9ec651a8b Update CHANGELOG.md (#5864)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 10:36:31 +01:00
Slaviša Arežina
475c666eb0 Refactor: FreshRSS (#5847)
* Refactor

* Update freshrss-install.sh
2025-07-09 11:36:03 +02:00
community-scripts-pr-app[bot]
8d419616a6 Update CHANGELOG.md (#5863)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 10:12:49 +01:00
Slaviša Arežina
d087719571 Refactor: Fluid-Calendar (#5846)
* Refactor

* Update fluid-calendar.sh

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-07-09 11:12:22 +02:00
community-scripts-pr-app[bot]
df52a2d057 Update CHANGELOG.md (#5862)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 10:01:52 +01:00
community-scripts-pr-app[bot]
4886196cfa Update CHANGELOG.md (#5861)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 10:01:18 +01:00
CanbiZ
1f37fbb83e BabyBuddy: fix path issues (#5856) 2025-07-09 11:01:01 +02:00
community-scripts-pr-app[bot]
387f2c7bd1 Update CHANGELOG.md (#5860)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 10:00:43 +01:00
CanbiZ
0b949c8151 tools.func: fix an bug while php libapache2-mod breaks (#5857) 2025-07-09 11:00:15 +02:00
community-scripts-pr-app[bot]
fd248e072c Update CHANGELOG.md (#5859)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 09:57:43 +01:00
Slaviša Arežina
e58e50fc15 Refactor (#5840) 2025-07-09 10:57:15 +02:00
community-scripts-pr-app[bot]
5b869b61fc Update CHANGELOG.md (#5858)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 09:54:01 +01:00
Slaviša Arežina
0e2c793f92 Refactor (#5841) 2025-07-09 10:53:35 +02:00
community-scripts-pr-app[bot]
96a8f9df89 Update CHANGELOG.md (#5855)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 06:42:31 +01:00
Slaviša Arežina
4f569c67eb Refactor (#5849) 2025-07-09 07:42:06 +02:00
CanbiZ
e856b36306 add workflow_dispatch 2025-07-09 07:39:32 +02:00
CanbiZ
42e8623f39 fix autolabler regex 2025-07-09 07:38:29 +02:00
community-scripts-pr-app[bot]
3b7036ae58 Update CHANGELOG.md (#5852)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 01:16:10 +01:00
community-scripts-pr-app[bot]
4412b39d21 Update versions.json (#5851)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-09 02:15:26 +02:00
community-scripts-pr-app[bot]
0faf06f4e2 Update CHANGELOG.md (#5842)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-08 20:52:00 +01:00
Slaviša Arežina
0b300fb9ab Refactor: Emby (#5839) 2025-07-08 21:26:13 +02:00
community-scripts-pr-app[bot]
08b89eb285 Update CHANGELOG.md (#5837)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-08 16:22:15 +01:00
CanbiZ
9cbcf4435a Refactor: ErsatzTV (#5835) 2025-07-08 17:21:46 +02:00
community-scripts-pr-app[bot]
e4252a58ee Update CHANGELOG.md (#5836)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-08 16:20:27 +01:00
CanbiZ
08eb914e3c tools.func: add ffmpeg + minor improvement (#5834) 2025-07-08 17:19:51 +02:00
community-scripts-pr-app[bot]
000b7d4a85 Update versions.json (#5831)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-08 14:07:50 +02:00
Slaviša Arežina
bb33002c2a Update bookstack-install.sh (#5825) 2025-07-08 09:06:52 +02:00
community-scripts-pr-app[bot]
7bafa864d0 Update CHANGELOG.md (#5824)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-08 06:57:25 +01:00
Luca Comellini
396e0c6523 Ollama: fix update script (#5819) 2025-07-08 07:56:58 +02:00
community-scripts-pr-app[bot]
1530e52108 Update CHANGELOG.md (#5821)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-08 01:15:52 +01:00
community-scripts-pr-app[bot]
451f6aff8e Update versions.json (#5820)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-08 02:15:09 +02:00
CanbiZ
046acc75db php locale 2025-07-07 22:48:56 +02:00
community-scripts-pr-app[bot]
f40218aa07 Update CHANGELOG.md (#5814)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 19:56:02 +01:00
Tobias
c5e831dadc fix func order (#5812) 2025-07-07 20:52:42 +02:00
Slaviša Arežina
16786a8304 Fix autologin (#5811) 2025-07-07 20:47:14 +02:00
community-scripts-pr-app[bot]
fc728bcca7 Update CHANGELOG.md (#5810)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 19:40:09 +01:00
community-scripts-pr-app[bot]
5516aa493d Update CHANGELOG.md (#5809)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 19:39:38 +01:00
Michel Roegl-Brunner
54f2f98193 Update pulse.sh (#5807) 2025-07-07 20:39:17 +02:00
community-scripts-pr-app[bot]
137a41f67c Update CHANGELOG.md (#5808)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 19:38:34 +01:00
Slaviša Arežina
26365561dc Refactor (#5806) 2025-07-07 20:37:57 +02:00
CanbiZ
9dc0fc80b9 motd ssh 2025-07-07 20:13:00 +02:00
community-scripts-pr-app[bot]
722f7e14d7 Update CHANGELOG.md (#5805)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 19:05:27 +01:00
Jc Miñarro
b2a8a9bd00 Fix/stirling pdf script (#5803) 2025-07-07 20:04:51 +02:00
CanbiZ
12bd6754ab quickfix globbing issue 2025-07-07 18:56:45 +02:00
community-scripts-pr-app[bot]
74166f97f9 Update CHANGELOG.md (#5796)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 14:12:49 +01:00
Tobias
b2bccd9501 gitea-mirror: update repo-url (#5794) 2025-07-07 15:12:04 +02:00
CanbiZ
c567b75aa7 fix broken repo logo 2025-07-07 14:55:33 +02:00
CanbiZ
2d77790b64 remove uneeded hint 2025-07-07 14:53:56 +02:00
CanbiZ
37d466103d little cpu fixes 2025-07-07 14:41:23 +02:00
CanbiZ
d59aa0527a IP-Tag: Optimizations / Guide / Manual Execution (#5791)
* IP-Tag: Optimizations / Guide / Manual Execution

* warning > info

* Update add-iptag.json
2025-07-07 14:26:07 +02:00
community-scripts-pr-app[bot]
9ddf10f82e Update versions.json (#5795)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 14:07:47 +02:00
community-scripts-pr-app[bot]
69d2835c73 Update CHANGELOG.md (#5792)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 12:22:18 +01:00
CanbiZ
59f99a27d2 PBS: add hint for advanced installs (#5788) 2025-07-07 13:21:44 +02:00
community-scripts-pr-app[bot]
372b52f64d Update CHANGELOG.md (#5789)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 12:17:43 +01:00
CanbiZ
2586c9f385 Refactor: Threadfin (+ updateble) (#5783) 2025-07-07 13:17:03 +02:00
community-scripts-pr-app[bot]
5c5d5d52ce Update CHANGELOG.md (#5787)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 10:02:09 +01:00
CanbiZ
c2a7e990bd tools.func: better handling when unpacking tarfiles in prebuild mode (#5781) 2025-07-07 11:01:39 +02:00
community-scripts-pr-app[bot]
3847442ca5 Update CHANGELOG.md (#5786)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 10:00:44 +01:00
Slaviša Arežina
6996111473 Refactor: Baby Buddy (#5769)
* Refactor

* Update babybuddy.sh
2025-07-07 11:00:19 +02:00
community-scripts-pr-app[bot]
3336f6a6f5 Update CHANGELOG.md (#5785)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 09:59:55 +01:00
CanbiZ
be6a63cd03 tools.func: add AVX check for MongoDB (#5780) 2025-07-07 10:59:20 +02:00
community-scripts-pr-app[bot]
160846e98b Update CHANGELOG.md (#5784)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 09:55:33 +01:00
CanbiZ
e63128625e Bookstack: Fix PHP Issue & Bump to PHP 8.3 (#5779) 2025-07-07 10:55:07 +02:00
CanbiZ
e58ad9237a Improve AutoLabler 2025-07-07 10:45:49 +02:00
community-scripts-pr-app[bot]
2ce64b5004 Update CHANGELOG.md (#5782)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 09:05:32 +01:00
Théophile Diot
9893379eef Refactor: Changed the way we install BunkerWeb by leveraging the brand new install-bunkerweb.sh (#5707)
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-07-07 10:04:01 +02:00
community-scripts-pr-app[bot]
9ae95d1eb5 Update CHANGELOG.md (#5778)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 07:16:50 +01:00
community-scripts-pr-app[bot]
8a178b6f45 Update CHANGELOG.md (#5777)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 07:16:29 +01:00
Slaviša Arežina
f0b645c894 Mark updateable (#5773) 2025-07-07 08:16:20 +02:00
Slaviša Arežina
2be5d83a6d Add warning (#5770) 2025-07-07 08:15:48 +02:00
community-scripts-pr-app[bot]
fafb7501c5 Update CHANGELOG.md (#5775)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 01:16:48 +01:00
community-scripts-pr-app[bot]
4bac3063da Update versions.json (#5774)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-07 02:16:05 +02:00
CanbiZ
29d3015314 add pattern for binary mode 2025-07-06 20:39:15 +02:00
CanbiZ
4d2fcb2c66 add missing local pattern 2025-07-06 20:31:17 +02:00
community-scripts-pr-app[bot]
ca6b1a95dd Update CHANGELOG.md (#5762)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 13:46:56 +01:00
Jonas Albrecht
14cb9f097d Fix update script for Mafl: ensure directory is removed recursively (#5759) 2025-07-06 14:46:15 +02:00
community-scripts-pr-app[bot]
4d4726ccbe Update versions.json (#5760)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 14:07:08 +02:00
community-scripts-pr-app[bot]
3ce5893fe3 Update CHANGELOG.md (#5755)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 09:47:45 +01:00
community-scripts-pr-app[bot]
993b01fa83 Update CHANGELOG.md (#5754)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 09:47:34 +01:00
Oleh Formaniuk
5c4abb6d1d [Feature] Add option to expose Docker via TCP port (#5716) 2025-07-06 10:47:14 +02:00
community-scripts-pr-app[bot]
06ec9593da Update CHANGELOG.md (#5753)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 09:46:17 +01:00
community-scripts-pr-app[bot]
ace106051b Update CHANGELOG.md (#5752)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 09:45:31 +01:00
community-scripts-pr-app[bot]
e2396f6667 Update CHANGELOG.md (#5751)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 09:45:18 +01:00
community-scripts-pr-app[bot]
067b3c2f02 Update CHANGELOG.md (#5750)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 09:45:00 +01:00
Slaviša Arežina
73f1c261ab Refactor (#5733) 2025-07-06 10:44:53 +02:00
community-scripts-pr-app[bot]
2cbf0f744f Update CHANGELOG.md (#5749)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 09:44:43 +01:00
Slaviša Arežina
a6517f4d7e Refactor (#5735) 2025-07-06 10:44:16 +02:00
Slaviša Arežina
e492a9b5d9 Refactor (#5736) 2025-07-06 10:43:54 +02:00
community-scripts-pr-app[bot]
5e7eb4ae3a Update CHANGELOG.md (#5748)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 09:43:42 +01:00
Slaviša Arežina
1a8a34b533 Typo fix (#5746) 2025-07-06 10:43:18 +02:00
community-scripts-pr-app[bot]
c38b4c2ef3 Update CHANGELOG.md (#5747)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 09:38:10 +01:00
John Sturgeon
679699e6af Resolves incorrect URL at end of Pocket ID script (#5743) 2025-07-06 10:37:45 +02:00
community-scripts-pr-app[bot]
32a724ac8a Update CHANGELOG.md (#5745)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 01:17:29 +01:00
community-scripts-pr-app[bot]
798a7b323e Update versions.json (#5744)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-06 02:16:46 +02:00
Slaviša Arežina
f1eda9a270 Fix spacing (#5734) 2025-07-05 22:30:52 +02:00
community-scripts-pr-app[bot]
5eaee5054f Update CHANGELOG.md (#5738)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-05 21:30:43 +01:00
Slaviša Arežina
e140631760 Refactor (#5732) 2025-07-05 22:30:08 +02:00
community-scripts-pr-app[bot]
ae24b56c61 Update CHANGELOG.md (#5731)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-05 17:16:01 +01:00
Slaviša Arežina
cb7d58b9b0 Refactor (#5725) 2025-07-05 18:15:37 +02:00
community-scripts-pr-app[bot]
115b21f729 Update CHANGELOG.md (#5730)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-05 17:04:31 +01:00
Slaviša Arežina
9072459066 Refactor (#5724) 2025-07-05 18:03:36 +02:00
community-scripts-pr-app[bot]
c2f9737435 Update CHANGELOG.md (#5729)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-05 17:03:33 +01:00
Slaviša Arežina
e5bea1f49a Refactor (#5723) 2025-07-05 18:02:58 +02:00
community-scripts-pr-app[bot]
f7e9fbc473 Update CHANGELOG.md (#5728)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-05 17:02:52 +01:00
Slaviša Arežina
66a5730288 Refactor (#5722) 2025-07-05 18:02:26 +02:00
community-scripts-pr-app[bot]
1cefb1b842 Update CHANGELOG.md (#5727)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-05 15:38:19 +01:00
Slaviša Arežina
16ac51b551 Fixes (#5726) 2025-07-05 16:37:54 +02:00
community-scripts-pr-app[bot]
28ed2da95f Update versions.json (#5721)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-05 14:07:02 +02:00
community-scripts-pr-app[bot]
0c98308b60 Update CHANGELOG.md (#5719)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-05 01:15:20 +01:00
community-scripts-pr-app[bot]
9128b9dd12 Update versions.json (#5718)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-05 02:14:40 +02:00
Slaviša Arežina
301a23e5f4 Update mafl.sh (#5715) 2025-07-04 22:49:36 +02:00
community-scripts-pr-app[bot]
2b848ff1d8 Update CHANGELOG.md (#5714)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 21:24:37 +01:00
Slaviša Arežina
3d69931675 Refactor: Mafl (#5702)
* Refactor: Mafl

* Update mafl.sh
2025-07-04 22:24:12 +02:00
CanbiZ
3e504cf48f final fixes 2025-07-04 22:19:35 +02:00
CanbiZ
d2cbfcd69a Update install.func 2025-07-04 22:12:37 +02:00
CanbiZ
ebfb6a4e34 Update install.func 2025-07-04 22:07:23 +02:00
CanbiZ
7403470bd7 Update install.func 2025-07-04 21:55:35 +02:00
community-scripts-pr-app[bot]
af9475d280 Update CHANGELOG.md (#5712)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 20:54:51 +01:00
community-scripts-pr-app[bot]
8882a17b6f Update CHANGELOG.md (#5711)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 20:54:41 +01:00
CanbiZ
32d6194ade Update install.func 2025-07-04 21:54:15 +02:00
CanbiZ
569089cb73 Update create_lxc.sh 2025-07-04 21:47:23 +02:00
CanbiZ
f494e68016 Update create_lxc.sh 2025-07-04 21:43:17 +02:00
CanbiZ
7561e26c0a Core layer refactor: centralized error traps and msg_* consistency (#5705) 2025-07-04 21:22:50 +02:00
community-scripts-pr-app[bot]
a95be13c95 Update .app files (#5706)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-07-04 17:53:15 +02:00
CanbiZ
9ab50d4248 Update trilium.sh 2025-07-04 17:29:35 +02:00
community-scripts-pr-app[bot]
f5be1d270a Update CHANGELOG.md (#5699)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 13:08:22 +01:00
community-scripts-pr-app[bot]
524a2a422d Update versions.json (#5698)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 14:07:48 +02:00
community-scripts-pr-app[bot]
45fbc30cc5 Update CHANGELOG.md (#5695)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 11:46:44 +01:00
Slaviša Arežina
f8c1d7bde8 Update outline-install.sh (#5688) 2025-07-04 12:46:07 +02:00
community-scripts-pr-app[bot]
9b8657fbb3 Update CHANGELOG.md (#5694)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 10:48:12 +01:00
Austin
f68f19aa3d MySQL phpMyAdmin Access Information (#5679)
* Updating MySQL CT with phpMyAdmin access information

* Update mysql.json

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-07-04 11:47:43 +02:00
community-scripts-pr-app[bot]
85758f8b91 Update CHANGELOG.md (#5693)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 10:40:33 +01:00
CanbiZ
e981c42517 Komodo: Update Script to use FerretDB / remove psql & sqlite options (#5690) 2025-07-04 11:40:07 +02:00
community-scripts-pr-app[bot]
7d6ac73153 Update CHANGELOG.md (#5692)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 10:36:49 +01:00
CanbiZ
aad2dd6232 ESPHome: Fix Linking issue (#5685) 2025-07-04 11:36:15 +02:00
community-scripts-pr-app[bot]
cb24880115 Update CHANGELOG.md (#5687)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 09:38:37 +01:00
Desert Gamer
0e87c4fe34 Update Iptag (#5677) 2025-07-04 10:38:05 +02:00
community-scripts-pr-app[bot]
438eddbde1 Update CHANGELOG.md (#5686)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-07-04 09:35:11 +01:00
CanbiZ
729895e2ed Update cloudflare-ddns-install.sh (#5682) 2025-07-04 10:34:35 +02:00
106 changed files with 3490 additions and 2434 deletions

42
.github/autolabeler-config.json generated vendored
View File

@@ -4,6 +4,7 @@
"fileStatus": "added", "fileStatus": "added",
"includeGlobs": [ "includeGlobs": [
"ct/**", "ct/**",
"tools/**",
"install/**", "install/**",
"misc/**", "misc/**",
"turnkey/**", "turnkey/**",
@@ -17,16 +18,13 @@
"fileStatus": "modified", "fileStatus": "modified",
"includeGlobs": [ "includeGlobs": [
"ct/**", "ct/**",
"tools/**",
"install/**", "install/**",
"misc/**", "misc/**",
"turnkey/**", "turnkey/**",
"vm/**" "vm/**"
], ],
"excludeGlobs": [ "excludeGlobs": []
"misc/build.func",
"misc/install.func",
"misc/api.func"
]
} }
], ],
"delete script": [ "delete script": [
@@ -34,6 +32,7 @@
"fileStatus": "removed", "fileStatus": "removed",
"includeGlobs": [ "includeGlobs": [
"ct/**", "ct/**",
"tools/**",
"install/**", "install/**",
"misc/**", "misc/**",
"turnkey/**", "turnkey/**",
@@ -46,11 +45,7 @@
{ {
"fileStatus": null, "fileStatus": null,
"includeGlobs": [ "includeGlobs": [
"*.md", "*.md"
".github/**",
"misc/*.func",
"misc/create_lxc.sh",
"api/**"
], ],
"excludeGlobs": [] "excludeGlobs": []
} }
@@ -62,7 +57,9 @@
"misc/*.func", "misc/*.func",
"misc/create_lxc.sh" "misc/create_lxc.sh"
], ],
"excludeGlobs": [] "excludeGlobs": [
"misc/api.func"
]
} }
], ],
"website": [ "website": [
@@ -71,7 +68,9 @@
"includeGlobs": [ "includeGlobs": [
"frontend/**" "frontend/**"
], ],
"excludeGlobs": [] "excludeGlobs": [
"frontend/public/json/**"
]
} }
], ],
"api": [ "api": [
@@ -102,22 +101,29 @@
"excludeGlobs": [] "excludeGlobs": []
} }
], ],
"high risk": [ "addon": [
{ {
"fileStatus": null, "fileStatus": null,
"includeGlobs": [ "includeGlobs": [
"misc/build.func", "tools/addon/**"
"misc/install.func",
"misc/create_lxc.sh"
], ],
"excludeGlobs": [] "excludeGlobs": []
} }
], ],
"documentation": [ "pve-tool": [
{ {
"fileStatus": null, "fileStatus": null,
"includeGlobs": [ "includeGlobs": [
"*.md" "tools/pve/**"
],
"excludeGlobs": []
}
],
"vm": [
{
"fileStatus": null,
"includeGlobs": [
"vm/**"
], ],
"excludeGlobs": [] "excludeGlobs": []
} }

120
.github/changelog-pr-config.json generated vendored
View File

@@ -1,112 +1,148 @@
[ [
{ {
"title": "🆕 New Scripts", "title": "🆕 New Scripts",
"labels": ["new script"] "labels": [
"new script"
]
}, },
{ {
"title": "🚀 Updated Scripts", "title": "🚀 Updated Scripts",
"labels": ["update script"], "labels": [
"update script"
],
"subCategories": [ "subCategories": [
{ {
"title": "🐞 Bug Fixes", "title": "🐞 Bug Fixes",
"labels": ["bugfix"], "labels": [
"notes" : [] "bugfix"
],
"notes": []
}, },
{ {
"title": "✨ New Features", "title": "✨ New Features",
"labels": ["feature"], "labels": [
"notes" : [] "feature"
],
"notes": []
}, },
{ {
"title": "💥 Breaking Changes", "title": "💥 Breaking Changes",
"labels": ["breaking change"], "labels": [
"notes" : [] "breaking change"
],
"notes": []
}, },
{ {
"title": "🔧 Refactor", "title": "🔧 Refactor",
"labels": ["refactor"], "labels": [
"notes" : [] "refactor"
],
"notes": []
} }
] ]
}, },
{ {
"title": "🧰 Maintenance", "title": "🧰 Maintenance",
"labels": ["maintenance"], "labels": [
"maintenance"
],
"subCategories": [ "subCategories": [
{ {
"title": "🐞 Bug Fixes", "title": "🐞 Bug Fixes",
"labels": ["bugfix"], "labels": [
"notes" : [] "bugfix"
],
"notes": []
}, },
{ {
"title": "✨ New Features", "title": "✨ New Features",
"labels": ["feature"], "labels": [
"notes" : [] "feature"
],
"notes": []
}, },
{ {
"title": "💥 Breaking Changes", "title": "💥 Breaking Changes",
"labels": ["breaking change"], "labels": [
"notes" : [] "breaking change"
],
"notes": []
}, },
{ {
"title": "📡 API", "title": "📡 API",
"labels": ["api"], "labels": [
"notes" : [] "api"
],
"notes": []
}, },
{ {
"title": "💾 Core", "title": "💾 Core",
"labels": ["core"], "labels": [
"notes" : [] "core"
],
"notes": []
}, },
{ {
"title": "📂 Github", "title": "📂 Github",
"labels": ["github"], "labels": [
"notes" : [] "github"
],
"notes": []
}, },
{ {
"title" :"📝 Documentation", "title": "📝 Documentation",
"labels": ["documentation"], "labels": [
"notes" : [] "maintenance"
],
"notes": []
}, },
{ {
"title" :"🔧 Refactor", "title": "🔧 Refactor",
"labels": ["refactor"], "labels": [
"notes" : [] "refactor"
],
"notes": []
} }
] ]
}, },
{ {
"title": "🌐 Website", "title": "🌐 Website",
"labels": ["website"], "labels": [
"website"
],
"subCategories": [ "subCategories": [
{ {
"title": "🐞 Bug Fixes", "title": "🐞 Bug Fixes",
"labels": ["bugfix"], "labels": [
"notes" : [] "bugfix"
],
"notes": []
}, },
{ {
"title": "✨ New Features", "title": "✨ New Features",
"labels": ["feature"], "labels": [
"notes" : [] "feature"
],
"notes": []
}, },
{ {
"title": "💥 Breaking Changes", "title": "💥 Breaking Changes",
"labels": ["breaking change"], "labels": [
"notes" : [] "breaking change"
],
"notes": []
}, },
{ {
"title": "📝 Script Information", "title": "📝 Script Information",
"labels": ["json"], "labels": [
"notes" : [] "json"
],
"notes": []
} }
] ]
}, },
{ {
"title": "❔ Unlabelled", "title": "❔ Unlabelled",
"labels": [] "labels": []
},
{
"title": "💥 Breaking Changes",
"labels": ["breaking change"]
} }
] ]

49
.github/workflows/autolabeler.yml generated vendored
View File

@@ -1,6 +1,7 @@
name: Auto Label Pull Requests name: Auto Label Pull Requests
on: on:
workflow_dispatch:
pull_request_target: pull_request_target:
branches: ["main"] branches: ["main"]
types: [opened, synchronize, reopened, edited] types: [opened, synchronize, reopened, edited]
@@ -33,7 +34,7 @@ jobs:
const autolabelerConfig = JSON.parse(fileContent); const autolabelerConfig = JSON.parse(fileContent);
const prNumber = context.payload.pull_request.number; const prNumber = context.payload.pull_request.number;
const prBody = context.payload.pull_request.body.toLowerCase(); const prBody = context.payload.pull_request.body || "";
let labelsToAdd = new Set(); let labelsToAdd = new Set();
@@ -44,50 +45,66 @@ jobs:
}); });
const prFiles = prListFilesResponse.data; const prFiles = prListFilesResponse.data;
// Apply labels based on file changes
for (const [label, rules] of Object.entries(autolabelerConfig)) { for (const [label, rules] of Object.entries(autolabelerConfig)) {
const shouldAddLabel = prFiles.some((prFile) => { const shouldAddLabel = prFiles.some((prFile) => {
return rules.some((rule) => { return rules.some((rule) => {
const isFileStatusMatch = rule.fileStatus ? rule.fileStatus === prFile.status : true; const isFileStatusMatch = rule.fileStatus ? rule.fileStatus === prFile.status : true;
const isIncludeGlobMatch = rule.includeGlobs.some((glob) => minimatch(prFile.filename, glob)); const isIncludeGlobMatch = rule.includeGlobs.some((glob) => minimatch(prFile.filename, glob));
const isExcludeGlobMatch = rule.excludeGlobs.some((glob) => minimatch(prFile.filename, glob)); const isExcludeGlobMatch = rule.excludeGlobs.some((glob) => minimatch(prFile.filename, glob));
return isFileStatusMatch && isIncludeGlobMatch && !isExcludeGlobMatch; return isFileStatusMatch && isIncludeGlobMatch && !isExcludeGlobMatch;
}); });
}); });
if (shouldAddLabel) { if (shouldAddLabel) {
labelsToAdd.add(label); labelsToAdd.add(label);
if (label === "update script") {
for (const prFile of prFiles) {
const filename = prFile.filename;
if (filename.startsWith("vm/")) labelsToAdd.add("vm");
if (filename.startsWith("tools/addon/")) labelsToAdd.add("addon");
if (filename.startsWith("tools/pve/")) labelsToAdd.add("pve-tool");
} }
} }
//if two labels or more are added, return }
}
if (labelsToAdd.size < 2) { if (labelsToAdd.size < 2) {
const templateLabelMappings = { const templateLabelMappings = {
"🐞 **Bug fix**": "bugfix", "🐞 **Bug fix**": "bugfix",
"✨ **New feature**": "feature", "✨ **New feature**": "feature",
"💥 **Breaking change**": "breaking change", "💥 **Breaking change**": "breaking change",
"🆕 **New script**": "new script",
"🌍 **Website update**": "website", // handled special
"🔧 **Refactoring / Code Cleanup**": "refactor", "🔧 **Refactoring / Code Cleanup**": "refactor",
"📝 **Documentation update**": "documentation" // mapped to maintenance
}; };
for (const [checkbox, label] of Object.entries(templateLabelMappings)) { for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i"); const regex = new RegExp(`- \\[(x|X)\\]\\s*${escapedCheckbox}`, "i");
const match = prBody.match(regex);
if (match) { if (regex.test(prBody)) {
console.log(`Match: ${match}`); if (label === "website") {
const hasJson = prFiles.some((f) => f.filename.startsWith("frontend/public/json/"));
const hasUpdateScript = labelsToAdd.has("update script");
const hasContentLabel = ["bugfix", "feature", "refactor"].some((l) => labelsToAdd.has(l));
if (!(hasUpdateScript && hasContentLabel)) {
labelsToAdd.add(hasJson ? "json" : "website");
}
} else if (label === "documentation") {
labelsToAdd.add("maintenance");
} else {
labelsToAdd.add(label); labelsToAdd.add(label);
} }
} }
} }
}
if (labelsToAdd.size === 0) {
labelsToAdd.add("needs triage");
console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`); }
if (labelsToAdd.size > 0) { if (labelsToAdd.size > 0) {
console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`);
await github.rest.issues.addLabels({ await github.rest.issues.addLabels({
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,

2
.github/workflows/changelog-pr.yml generated vendored
View File

@@ -80,7 +80,7 @@ jobs:
{ title: "💥 Breaking Changes", labels: ["breaking change"], notes: [] }, { title: "💥 Breaking Changes", labels: ["breaking change"], notes: [] },
{ title: "📡 API", labels: ["api"], notes: [] }, { title: "📡 API", labels: ["api"], notes: [] },
{ title: "Github", labels: ["github"], notes: [] }, { title: "Github", labels: ["github"], notes: [] },
{ title: "📝 Documentation", labels: ["documentation"], notes: [] }, { title: "📝 Documentation", labels: ["maintenance"], notes: [] },
{ title: "🔧 Refactor", labels: ["refactor"], notes: [] } { title: "🔧 Refactor", labels: ["refactor"], notes: [] }
] : ] :
obj.labels.includes("website") ? [ obj.labels.includes("website") ? [

View File

@@ -10,12 +10,189 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
> [!NOTE] ## 2025-07-12
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
## 2025-07-11
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- immich: hotfix #5921 [@vhsdream](https://github.com/vhsdream) ([#5938](https://github.com/community-scripts/ProxmoxVE/pull/5938))
- bookstack: add setup_composer in update [@MickLesk](https://github.com/MickLesk) ([#5935](https://github.com/community-scripts/ProxmoxVE/pull/5935))
- Quickfix: Immich: revert install sequence [@vhsdream](https://github.com/vhsdream) ([#5932](https://github.com/community-scripts/ProxmoxVE/pull/5932))
- #### ✨ New Features
- Refactor & Function Bump: Docker [@MickLesk](https://github.com/MickLesk) ([#5889](https://github.com/community-scripts/ProxmoxVE/pull/5889))
- #### 🔧 Refactor
- Immich: handle custom library dependency updates; other fixes [@vhsdream](https://github.com/vhsdream) ([#5896](https://github.com/community-scripts/ProxmoxVE/pull/5896))
## 2025-07-10
### 🚀 Updated Scripts
- Refactor: Habitica [@MickLesk](https://github.com/MickLesk) ([#5911](https://github.com/community-scripts/ProxmoxVE/pull/5911))
- #### 🐞 Bug Fixes
- core: fix breaking re-download of lxc containers [@MickLesk](https://github.com/MickLesk) ([#5906](https://github.com/community-scripts/ProxmoxVE/pull/5906))
- PLANKA: Fix paths to application directory [@tremor021](https://github.com/tremor021) ([#5900](https://github.com/community-scripts/ProxmoxVE/pull/5900))
- #### 🔧 Refactor
- Refactor: EMQX + Update-Function + Improved NodeJS Crawling [@MickLesk](https://github.com/MickLesk) ([#5907](https://github.com/community-scripts/ProxmoxVE/pull/5907))
## 2025-07-09
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Omada Update: add missing exit [@MickLesk](https://github.com/MickLesk) ([#5894](https://github.com/community-scripts/ProxmoxVE/pull/5894))
- FreshRSS: fix needed php modules [@MickLesk](https://github.com/MickLesk) ([#5886](https://github.com/community-scripts/ProxmoxVE/pull/5886))
- core: Fix VAAPI passthrough for unprivileged LXC containers via devX [@MickLesk](https://github.com/MickLesk) ([#5875](https://github.com/community-scripts/ProxmoxVE/pull/5875))
- tools.func: fix an bug while php libapache2-mod breaks [@MickLesk](https://github.com/MickLesk) ([#5857](https://github.com/community-scripts/ProxmoxVE/pull/5857))
- BabyBuddy: fix path issues for update [@MickLesk](https://github.com/MickLesk) ([#5856](https://github.com/community-scripts/ProxmoxVE/pull/5856))
- #### ✨ New Features
- tools.func: strip leading folders for prebuild assets [@MickLesk](https://github.com/MickLesk) ([#5865](https://github.com/community-scripts/ProxmoxVE/pull/5865))
- #### 💥 Breaking Changes
- Refactor: Stirling-PDF [@MickLesk](https://github.com/MickLesk) ([#5872](https://github.com/community-scripts/ProxmoxVE/pull/5872))
- #### 🔧 Refactor
- Refactor: EMQX [@tremor021](https://github.com/tremor021) ([#5840](https://github.com/community-scripts/ProxmoxVE/pull/5840))
- Refactor: Excalidraw [@tremor021](https://github.com/tremor021) ([#5841](https://github.com/community-scripts/ProxmoxVE/pull/5841))
- Refactor: Firefly [@tremor021](https://github.com/tremor021) ([#5844](https://github.com/community-scripts/ProxmoxVE/pull/5844))
- Refactor: gatus [@tremor021](https://github.com/tremor021) ([#5849](https://github.com/community-scripts/ProxmoxVE/pull/5849))
- Refactor: FreshRSS [@tremor021](https://github.com/tremor021) ([#5847](https://github.com/community-scripts/ProxmoxVE/pull/5847))
- Refactor: Fluid-Calendar [@tremor021](https://github.com/tremor021) ([#5846](https://github.com/community-scripts/ProxmoxVE/pull/5846))
- Refactor: Commafeed [@tremor021](https://github.com/tremor021) ([#5802](https://github.com/community-scripts/ProxmoxVE/pull/5802))
- Refactor: FlareSolverr [@tremor021](https://github.com/tremor021) ([#5845](https://github.com/community-scripts/ProxmoxVE/pull/5845))
- Refactor: Glance [@tremor021](https://github.com/tremor021) ([#5874](https://github.com/community-scripts/ProxmoxVE/pull/5874))
- Refactor: Gitea [@tremor021](https://github.com/tremor021) ([#5876](https://github.com/community-scripts/ProxmoxVE/pull/5876))
- Refactor: Ghost (use now MySQL) [@MickLesk](https://github.com/MickLesk) ([#5871](https://github.com/community-scripts/ProxmoxVE/pull/5871))
### 🧰 Maintenance
- #### 📂 Github
- Github: AutoLabler | ChangeLog (Refactor) [@MickLesk](https://github.com/MickLesk) ([#5868](https://github.com/community-scripts/ProxmoxVE/pull/5868))
## 2025-07-08
### 🚀 Updated Scripts
- Refactor: Emby [@tremor021](https://github.com/tremor021) ([#5839](https://github.com/community-scripts/ProxmoxVE/pull/5839))
- #### 🐞 Bug Fixes
- Ollama: fix update script [@lucacome](https://github.com/lucacome) ([#5819](https://github.com/community-scripts/ProxmoxVE/pull/5819))
- #### ✨ New Features
- tools.func: add ffmpeg + minor improvement [@MickLesk](https://github.com/MickLesk) ([#5834](https://github.com/community-scripts/ProxmoxVE/pull/5834))
- #### 🔧 Refactor
- Refactor: ErsatzTV [@MickLesk](https://github.com/MickLesk) ([#5835](https://github.com/community-scripts/ProxmoxVE/pull/5835))
## 2025-07-07
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Fix/stirling pdf script [@JcMinarro](https://github.com/JcMinarro) ([#5803](https://github.com/community-scripts/ProxmoxVE/pull/5803))
- gitea-mirror: update repo-url [@CrazyWolf13](https://github.com/CrazyWolf13) ([#5794](https://github.com/community-scripts/ProxmoxVE/pull/5794))
- Fix unbound var in pulse.sh [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#5807](https://github.com/community-scripts/ProxmoxVE/pull/5807))
- Bookstack: Fix PHP Issue & Bump to PHP 8.3 [@MickLesk](https://github.com/MickLesk) ([#5779](https://github.com/community-scripts/ProxmoxVE/pull/5779))
- #### ✨ New Features
- Refactor: Threadfin (+ updatable) [@MickLesk](https://github.com/MickLesk) ([#5783](https://github.com/community-scripts/ProxmoxVE/pull/5783))
- tools.func: better handling when unpacking tarfiles in prebuild mode [@MickLesk](https://github.com/MickLesk) ([#5781](https://github.com/community-scripts/ProxmoxVE/pull/5781))
- tools.func: add AVX check for MongoDB [@MickLesk](https://github.com/MickLesk) ([#5780](https://github.com/community-scripts/ProxmoxVE/pull/5780))
- #### 🔧 Refactor
- Refactor: Docmost [@tremor021](https://github.com/tremor021) ([#5806](https://github.com/community-scripts/ProxmoxVE/pull/5806))
- Refactor: Baby Buddy [@tremor021](https://github.com/tremor021) ([#5769](https://github.com/community-scripts/ProxmoxVE/pull/5769))
- Refactor: Changed the way we install BunkerWeb by leveraging the brand new install-bunkerweb.sh [@TheophileDiot](https://github.com/TheophileDiot) ([#5707](https://github.com/community-scripts/ProxmoxVE/pull/5707))
### 🌐 Website
- #### 📝 Script Information
- PBS: add hint for advanced installs [@MickLesk](https://github.com/MickLesk) ([#5788](https://github.com/community-scripts/ProxmoxVE/pull/5788))
- EMQX: Add warning to website [@tremor021](https://github.com/tremor021) ([#5770](https://github.com/community-scripts/ProxmoxVE/pull/5770))
## 2025-07-06
### 🚀 Updated Scripts
- Refactor: Barcodebuddy [@tremor021](https://github.com/tremor021) ([#5735](https://github.com/community-scripts/ProxmoxVE/pull/5735))
- #### 🐞 Bug Fixes
- Fix update script for Mafl: ensure directory is removed recursively [@jonalbr](https://github.com/jonalbr) ([#5759](https://github.com/community-scripts/ProxmoxVE/pull/5759))
- BookStack: Typo fix [@tremor021](https://github.com/tremor021) ([#5746](https://github.com/community-scripts/ProxmoxVE/pull/5746))
- Resolves incorrect URL at end of Pocket ID script [@johnsturgeon](https://github.com/johnsturgeon) ([#5743](https://github.com/community-scripts/ProxmoxVE/pull/5743))
- #### ✨ New Features
- [Feature] Add option to expose Docker via TCP port (alpine docker) [@oformaniuk](https://github.com/oformaniuk) ([#5716](https://github.com/community-scripts/ProxmoxVE/pull/5716))
- #### 🔧 Refactor
- Refactor: Bitmagnet [@tremor021](https://github.com/tremor021) ([#5733](https://github.com/community-scripts/ProxmoxVE/pull/5733))
- Refactor: Baikal [@tremor021](https://github.com/tremor021) ([#5736](https://github.com/community-scripts/ProxmoxVE/pull/5736))
## 2025-07-05
### 🚀 Updated Scripts
- #### 🔧 Refactor
- Refactor: BookStack [@tremor021](https://github.com/tremor021) ([#5732](https://github.com/community-scripts/ProxmoxVE/pull/5732))
- Refactor: Authelia [@tremor021](https://github.com/tremor021) ([#5722](https://github.com/community-scripts/ProxmoxVE/pull/5722))
- Refactor: Dashy [@tremor021](https://github.com/tremor021) ([#5723](https://github.com/community-scripts/ProxmoxVE/pull/5723))
- Refactor: CryptPad [@tremor021](https://github.com/tremor021) ([#5724](https://github.com/community-scripts/ProxmoxVE/pull/5724))
- Refactor: ByteStash [@tremor021](https://github.com/tremor021) ([#5725](https://github.com/community-scripts/ProxmoxVE/pull/5725))
- Refactor: AgentDVR [@tremor021](https://github.com/tremor021) ([#5726](https://github.com/community-scripts/ProxmoxVE/pull/5726))
## 2025-07-04 ## 2025-07-04
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Refactor: Mafl [@tremor021](https://github.com/tremor021) ([#5702](https://github.com/community-scripts/ProxmoxVE/pull/5702))
- Outline: Fix sed command for v0.85.0 [@tremor021](https://github.com/tremor021) ([#5688](https://github.com/community-scripts/ProxmoxVE/pull/5688))
- Komodo: Update Script to use FerretDB / remove psql & sqlite options [@MickLesk](https://github.com/MickLesk) ([#5690](https://github.com/community-scripts/ProxmoxVE/pull/5690))
- ESPHome: Fix Linking issue to prevent version mismatch [@MickLesk](https://github.com/MickLesk) ([#5685](https://github.com/community-scripts/ProxmoxVE/pull/5685))
- Cloudflare-DDNS: fix unvisible read command at install [@MickLesk](https://github.com/MickLesk) ([#5682](https://github.com/community-scripts/ProxmoxVE/pull/5682))
- #### ✨ New Features
- Core layer refactor: centralized error traps and msg_* consistency [@MickLesk](https://github.com/MickLesk) ([#5705](https://github.com/community-scripts/ProxmoxVE/pull/5705))
- #### 💥 Breaking Changes
- Update Iptag [@DesertGamer](https://github.com/DesertGamer) ([#5677](https://github.com/community-scripts/ProxmoxVE/pull/5677))
### 🌐 Website
- #### 📝 Script Information
- MySQL phpMyAdmin Access Information [@austinpilz](https://github.com/austinpilz) ([#5679](https://github.com/community-scripts/ProxmoxVE/pull/5679))
## 2025-07-03 ## 2025-07-03
### 🚀 Updated Scripts ### 🚀 Updated Scripts

View File

@@ -1,7 +1,7 @@
<div align="center"> <div align="center">
<p align="center"> <p align="center">
<a href="#"> <a href="#">
<img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo.png" height="100px" /> <img src="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo-81x112.png" height="100px" />
</a> </a>
</p> </p>
</div> </div>

View File

@@ -32,6 +32,15 @@ function update_script() {
exit 1 exit 1
fi fi
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE") COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
if [[ "$COMPOSE_BASENAME" == "sqlite.compose.yaml" || "$COMPOSE_BASENAME" == "postgres.compose.yaml" ]]; then
msg_error "❌ Detected outdated Komodo setup using SQLite or PostgreSQL (FerretDB v1)."
echo -e "${YW}This configuration is no longer supported since Komodo v1.18.0.${CL}"
echo -e "${YW}Please follow the migration guide:${CL}"
echo -e "${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/5689${CL}\n"
exit 1
fi
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)" BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
cp "$COMPOSE_FILE" "$BACKUP_FILE" || { cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!" msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"

View File

@@ -31,16 +31,16 @@ function update_script() {
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ "${RELEASE}" != "$(/usr/bin/authelia -v | awk '{print substr($3, 2, length($2)) }')" ]]; then if [[ "${RELEASE}" != "$(/usr/bin/authelia -v | awk '{print substr($3, 2, length($2)) }')" ]]; then
msg_info "Updating $APP to ${RELEASE}"
$STD apt-get update $STD apt-get update
$STD apt-get -y upgrade $STD apt-get -y upgrade
curl -fsSL "https://github.com/authelia/authelia/releases/download/${RELEASE}/authelia_${RELEASE}_amd64.deb" -o $(basename "https://github.com/authelia/authelia/releases/download/${RELEASE}/authelia_${RELEASE}_amd64.deb")
$STD dpkg -i "authelia_${RELEASE}_amd64.deb" fetch_and_deploy_gh_release "authelia" "authelia/authelia" "binary"
msg_info "Cleaning Up" msg_info "Cleaning Up"
rm -f "authelia_${RELEASE}_amd64.deb"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleanup Completed" msg_ok "Cleanup Completed"
msg_ok "Updated $APP to ${RELEASE}" msg_ok "Updated $APP to ${RELEASE}"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -29,7 +29,7 @@ function update_script() {
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/babybuddy_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.babybuddy 2>/dev/null)" ]] || [[ ! -f ~/.babybuddy ]]; then
setup_uv setup_uv
msg_info "Stopping Services" msg_info "Stopping Services"
@@ -38,21 +38,18 @@ function update_script() {
msg_ok "Services Stopped" msg_ok "Services Stopped"
msg_info "Cleaning old files" msg_info "Cleaning old files"
cp babybuddy/settings/production.py /tmp/production.py.bak cp /opt/babybuddy/babybuddy/settings/production.py /tmp/production.py.bak
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} + 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"
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Updating ${APP} to v${RELEASE}"
temp_file=$(mktemp)
curl -fsSL "https://github.com/babybuddy/babybuddy/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
cd /opt/babybuddy
tar zxf "$temp_file" --strip-components=1 -C /opt/babybuddy
mv /tmp/production.py.bak babybuddy/settings/production.py
cd /opt/babybuddy cd /opt/babybuddy
mv /tmp/production.py.bak /opt/babybuddy/babybuddy/settings/production.py
source .venv/bin/activate source .venv/bin/activate
$STD uv pip install -r requirements.txt $STD uv pip install -r requirements.txt
$STD python manage.py migrate $STD python manage.py migrate
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}" msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Fixing permissions" msg_info "Fixing permissions"
@@ -66,9 +63,6 @@ function update_script() {
systemctl start nginx systemctl start nginx
msg_ok "Services Started" msg_ok "Services Started"
msg_info "Cleaning up"
rm -f "$temp_file"
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -23,34 +23,35 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/baikal ]]; then if [[ ! -d /opt/baikal ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.baikal 2>/dev/null)" ]] || [[ ! -f ~/.baikal ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop apache2 systemctl stop apache2
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Backing up data"
cd /opt
curl -fsSL "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip" -o $(basename "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip")
mv /opt/baikal /opt/baikal-backup mv /opt/baikal /opt/baikal-backup
$STD unzip -o "baikal-${RELEASE}.zip" msg_ok "Backed up data"
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
msg_info "Configuring Baikal"
cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/ cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/
cp -r /opt/baikal-backup/Specific/ /opt/baikal/ cp -r /opt/baikal-backup/Specific/ /opt/baikal/
chown -R www-data:www-data /opt/baikal/ chown -R www-data:www-data /opt/baikal/
chmod -R 755 /opt/baikal/ chmod -R 755 /opt/baikal/
echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Configured Baikal"
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start apache2 systemctl start apache2
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/baikal-${RELEASE}.zip"
rm -rf /opt/baikal-backup rm -rf /opt/baikal-backup
msg_ok "Cleaned" msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"

View File

@@ -23,27 +23,28 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/barcodebuddy ]]; then if [[ ! -d /opt/barcodebuddy ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.barcodebuddy 2>/dev/null)" ]] || [[ ! -f ~/.barcodebuddy ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop apache2 systemctl stop apache2
systemctl stop barcodebuddy systemctl stop barcodebuddy
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Backing up data"
cd /opt
mv /opt/barcodebuddy/ /opt/barcodebuddy-backup mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
curl -fsSL "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip") msg_ok "Backed up data"
$STD unzip "v${RELEASE}.zip"
mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
msg_info "Configuring ${APP}"
cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
chown -R www-data:www-data /opt/barcodebuddy/data chown -R www-data:www-data /opt/barcodebuddy/data
echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Configured ${APP}"
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start apache2 systemctl start apache2
@@ -51,7 +52,6 @@ function update_script() {
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleaning up" msg_info "Cleaning up"
rm -r "/opt/v${RELEASE}.zip"
rm -r /opt/barcodebuddy-backup rm -r /opt/barcodebuddy-backup
msg_ok "Cleaned" msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"

View File

@@ -28,12 +28,12 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.bitmagnet 2>/dev/null)" ]] || [[ ! -f ~/.bitmagnet ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop bitmagnet-web systemctl stop bitmagnet-web
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Backing up database" msg_info "Backing up data"
rm -f /tmp/backup.sql rm -f /tmp/backup.sql
$STD sudo -u postgres pg_dump \ $STD sudo -u postgres pg_dump \
--column-inserts \ --column-inserts \
@@ -56,31 +56,26 @@ function update_script() {
bitmagnet \ bitmagnet \
>/tmp/backup.sql >/tmp/backup.sql
mv /tmp/backup.sql /opt/ mv /tmp/backup.sql /opt/
msg_ok "Database backed up"
msg_info "Updating ${APP} to v${RELEASE}"
[ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/ [ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/ [ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
rm -rf /opt/bitmagnet/* msg_ok "Data backed up"
temp_file=$(mktemp)
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file" rm -rf /opt/bitmagnet
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt/bitmagnet cd /opt/bitmagnet
VREL=v$RELEASE VREL=v$RELEASE
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL" $STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
chmod +x bitmagnet chmod +x bitmagnet
[ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/ [ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/ [ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}" msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start bitmagnet-web systemctl start bitmagnet-web
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleaning up"
rm -f "$temp_file"
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -23,25 +23,33 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/bookstack ]]; then if [[ ! -d /opt/bookstack ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.bookstack 2>/dev/null)" ]] || [[ ! -f ~/.bookstack ]]; then
msg_info "Stopping Apache2" msg_info "Stopping Apache2"
systemctl stop apache2 systemctl stop apache2
msg_ok "Services Stopped" msg_ok "Services Stopped"
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Backing up data"
mv /opt/bookstack /opt/bookstack-backup mv /opt/bookstack /opt/bookstack-backup
curl -fsSL "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" -o "/opt/BookStack-${RELEASE}.zip" msg_ok "Backup finished"
$STD unzip "/opt/BookStack-${RELEASE}.zip" -d /opt
mv "/opt/BookStack-${RELEASE}" /opt/bookstack fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack"
PHP_MODULE="ldap,tidy,bz2,mysqli" PHP_FPM="YES" PHP_APACHE="YES" PHP_VERSION="8.3" setup_php
setup_composer
msg_info "Restoring backup"
cp /opt/bookstack-backup/.env /opt/bookstack/.env cp /opt/bookstack-backup/.env /opt/bookstack/.env
[[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/ [[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/
[[ -d /opt/bookstack-backup/storage/uploads ]] && cp -a /opt/bookstack-backup/storage/uploads/. /opt/bookstack/storage/uploads/ [[ -d /opt/bookstack-backup/storage/uploads ]] && cp -a /opt/bookstack-backup/storage/uploads/. /opt/bookstack/storage/uploads/
[[ -d /opt/bookstack-backup/themes ]] && cp -a /opt/bookstack-backup/themes/. /opt/bookstack/themes/ [[ -d /opt/bookstack-backup/themes ]] && cp -a /opt/bookstack-backup/themes/. /opt/bookstack/themes/
msg_ok "Backup restored"
msg_info "Configuring BookStack"
cd /opt/bookstack cd /opt/bookstack
export COMPOSER_ALLOW_SUPERUSER=1 export COMPOSER_ALLOW_SUPERUSER=1
$STD composer install --no-dev $STD composer install --no-dev
@@ -51,7 +59,7 @@ function update_script() {
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
chmod -R 640 /opt/bookstack/.env chmod -R 640 /opt/bookstack/.env
echo "${RELEASE}" >/opt/${APP}_version.txt echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}" msg_ok "Configured BookStack"
msg_info "Starting Apache2" msg_info "Starting Apache2"
systemctl start apache2 systemctl start apache2
@@ -59,7 +67,6 @@ function update_script() {
msg_info "Cleaning Up" msg_info "Cleaning Up"
rm -rf /opt/bookstack-backup rm -rf /opt/bookstack-backup
rm -rf "/opt/BookStack-${RELEASE}.zip"
msg_ok "Cleaned" msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else

View File

@@ -37,8 +37,8 @@ Pin: version ${RELEASE}
Pin-Priority: 1001 Pin-Priority: 1001
EOF EOF
apt-get update apt-get update
apt-get install -y nginx=1.26.3* apt-mark unhold bunkerweb nginx
apt-get install -y bunkerweb=${RELEASE} apt-get install -y --allow-downgrades bunkerweb=${RELEASE}
echo "${RELEASE}" >/opt/${APP}_version.txt echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}" msg_ok "Updated ${APP} to ${RELEASE}"

View File

@@ -23,39 +23,39 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/bytestash ]]; then if [[ ! -d /opt/bytestash ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.bytestash 2>/dev/null)" ]] || [[ ! -f ~/.bytestash ]]; then
read -rp "${TAB3}Did you make a backup via application WebUI? (y/n): " backuped
if [[ "$backuped" =~ ^[Yy]$ ]]; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop bytestash-backend systemctl stop bytestash-backend
systemctl stop bytestash-frontend systemctl stop bytestash-frontend
msg_ok "Services Stopped" msg_ok "Services Stopped"
msg_info "Updating ${APP} to ${RELEASE}" rm -rf /opt/bytestash
temp_file=$(mktemp) fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash"
curl -fsSL "https://github.com/jordan-dalby/ByteStash/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file msg_info "Configuring ByteStash"
rm -rf /opt/bytestash/server/node_modules
rm -rf /opt/bytestash/client/node_modules
cp -rf ByteStash-${RELEASE}/* /opt/bytestash
cd /opt/bytestash/server cd /opt/bytestash/server
$STD npm install $STD npm install
cd /opt/bytestash/client cd /opt/bytestash/client
$STD npm install $STD npm install
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting Services" msg_info "Starting Services"
systemctl start bytestash-backend systemctl start bytestash-backend
systemctl start bytestash-frontend systemctl start bytestash-frontend
msg_ok "Started Services" msg_ok "Started Services"
else
msg_info "Cleaning Up" msg_error "PLEASE MAKE A BACKUP FIRST!"
rm -f $temp_file exit
msg_ok "Cleaned" fi
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -23,12 +23,13 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/commafeed ]]; then if [[ ! -d /opt/commafeed ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4) RELEASE=$(curl -fsSL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.commafeed 2>/dev/null)" ]] || [[ ! -f ~/.commafeed ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop commafeed systemctl stop commafeed
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
@@ -39,13 +40,15 @@ function update_script() {
$STD apt-get install -y rsync $STD apt-get install -y rsync
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
fi fi
if [ -d /opt/commafeed/data ] && [ "$(ls -A /opt/commafeed/data)" ]; then
mv /opt/commafeed/data /opt/data.bak
fi
fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip"
msg_info "Updating ${APP} to ${RELEASE}" msg_info "Updating ${APP} to ${RELEASE}"
curl -fsSL "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip" -o $(basename "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip") if [ -d /opt/commafeed/data.bak ] && [ "$(ls -A /opt/commafeed/data.bak)" ]; then
$STD unzip commafeed-"${RELEASE}"-h2-jvm.zip mv /opt/commafeed/data.bak /opt/commafeed/data
rsync -a --exclude 'data/' commafeed-"${RELEASE}"-h2/ /opt/commafeed/ fi
rm -rf commafeed-"${RELEASE}"-h2 commafeed-"${RELEASE}"-h2-jvm.zip
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}" msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"

View File

@@ -29,29 +29,27 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.cryptpad 2>/dev/null)" ]] || [[ ! -f ~/.cryptpad ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop cryptpad systemctl stop cryptpad
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Backing up configuration"
[ -f /opt/cryptpad/config/config.js ] && mv /opt/cryptpad/config/config.js /opt/
msg_ok "Backed up configuration"
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad"
msg_info "Updating $APP to ${RELEASE}" msg_info "Updating $APP to ${RELEASE}"
temp_dir=$(mktemp -d)
cp -f /opt/cryptpad/config/config.js /opt/config.js
curl -fsSL "https://github.com/cryptpad/cryptpad/archive/refs/tags/${RELEASE}.tar.gz" -o "$temp_dir/cryptpad-${RELEASE}.tar.gz"
cd "$temp_dir"
tar zxf "cryptpad-${RELEASE}.tar.gz"
cp -rf "cryptpad-${RELEASE}"/* /opt/cryptpad
cd /opt/cryptpad cd /opt/cryptpad
$STD npm ci $STD npm ci
$STD npm run install:components $STD npm run install:components
$STD npm run build $STD npm run build
cp -f /opt/config.js /opt/cryptpad/config/config.js
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to ${RELEASE}" msg_ok "Updated $APP to ${RELEASE}"
msg_info "Cleaning Up" msg_info "Restoring configuration"
rm -rf $temp_dir mv /opt/config.js /opt/cryptpad/config/
msg_ok "Cleanup Completed" msg_ok "Configuration restored"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start cryptpad systemctl start cryptpad

View File

@@ -29,7 +29,7 @@ function update_script() {
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4) RELEASE=$(curl -fsSL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.dashy 2>/dev/null)" ]] || [[ ! -f ~/.dashy ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop dashy systemctl stop dashy
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
@@ -43,14 +43,13 @@ function update_script() {
fi fi
msg_ok "Backed up conf.yml" msg_ok "Backed up conf.yml"
msg_info "Updating ${APP} to ${RELEASE}"
rm -rf /opt/dashy rm -rf /opt/dashy
mkdir -p /opt/dashy fetch_and_deploy_gh_release "dashy" "Lissy93/dashy"
curl -fsSL "https://github.com/Lissy93/dashy/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz -C /opt/dashy --strip-components=1
msg_info "Updating ${APP} to ${RELEASE}"
cd /opt/dashy cd /opt/dashy
npm install npm install
npm run build npm run build
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}" msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Restoring conf.yml" msg_info "Restoring conf.yml"
@@ -65,6 +64,7 @@ function update_script() {
msg_info "Starting Dashy" msg_info "Starting Dashy"
systemctl start dashy systemctl start dashy
msg_ok "Started Dashy" msg_ok "Started Dashy"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -23,14 +23,64 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /var ]]; then
msg_error "No ${APP} Installation Found!" get_latest_release() {
exit curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
fi }
msg_info "Updating ${APP} LXC"
msg_info "Updating base system"
$STD apt-get update $STD apt-get update
$STD apt-get -y upgrade $STD apt-get -y upgrade
msg_ok "Updated ${APP} LXC" msg_ok "Base system updated"
msg_info "Updating Docker Engine"
$STD apt-get install --only-upgrade -y docker-ce docker-ce-cli containerd.io
msg_ok "Docker Engine updated"
if [[ -f /usr/local/lib/docker/cli-plugins/docker-compose ]]; then
COMPOSE_BIN="/usr/local/lib/docker/cli-plugins/docker-compose"
COMPOSE_NEW_VERSION=$(get_latest_release "docker/compose")
msg_info "Updating Docker Compose to $COMPOSE_NEW_VERSION"
curl -fsSL "https://github.com/docker/compose/releases/download/${COMPOSE_NEW_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
-o "$COMPOSE_BIN"
chmod +x "$COMPOSE_BIN"
msg_ok "Docker Compose updated"
fi
if docker ps -a --format '{{.Names}}' | grep -q '^portainer$'; then
msg_info "Updating Portainer"
$STD docker pull portainer/portainer-ce:latest
$STD docker stop portainer && docker rm portainer
$STD docker volume create portainer_data >/dev/null 2>&1
$STD docker run -d \
-p 8000:8000 \
-p 9443:9443 \
--name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
msg_ok "Updated Portainer"
fi
if docker ps -a --format '{{.Names}}' | grep -q '^portainer_agent$'; then
msg_info "Updating Portainer Agent"
$STD docker pull portainer/agent:latest
$STD docker stop portainer_agent && docker rm portainer_agent
$STD docker run -d \
-p 9001:9001 \
--name=portainer_agent \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
portainer/agent
msg_ok "Updated Portainer Agent"
fi
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleanup complete"
exit exit
} }

View File

@@ -27,48 +27,35 @@ function update_script() {
exit exit
fi fi
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
msg_info "Installing Node.js 22" NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
$STD apt-get purge -y nodejs
rm -f /etc/apt/sources.list.d/nodesource.list
rm -f /etc/apt/keyrings/nodesource.gpg
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g pnpm@10.4.0
msg_ok "Node.js 22 installed"
fi fi
export NODE_OPTIONS="--max_old_space_size=4096" export NODE_OPTIONS="--max_old_space_size=4096"
RELEASE=$(curl -fsSL https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.docmost 2>/dev/null)" ]] || [[ ! -f ~/.docmost ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop docmost systemctl stop docmost
msg_ok "${APP} Stopped" msg_ok "${APP} Stopped"
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Backing up data"
cp /opt/docmost/.env /opt/ cp /opt/docmost/.env /opt/
cp -r /opt/docmost/data /opt/ cp -r /opt/docmost/data /opt/
rm -rf /opt/docmost rm -rf /opt/docmost
temp_file=$(mktemp) msg_ok "Data backed up"
curl -fsSL "https://github.com/docmost/docmost/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar -xzf "$temp_file" fetch_and_deploy_gh_release "docmost" "docmost/docmost"
mv docmost-${RELEASE} /opt/docmost
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt/docmost cd /opt/docmost
mv /opt/.env /opt/docmost/.env mv /opt/.env /opt/docmost/.env
mv /opt/data /opt/docmost/data mv /opt/data /opt/docmost/data
$STD pnpm install --force $STD pnpm install --force
$STD pnpm build $STD pnpm build
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start docmost systemctl start docmost
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_info "Cleaning Up"
rm -f ${temp_file}
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -23,26 +23,26 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/emby-server ]]; then if [[ ! -d /opt/emby-server ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
LATEST=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4) RELEASE=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
if [[ "${RELEASE}" != "$(cat ~/.emby 2>/dev/null)" ]] || [[ ! -f ~/.emby ]]; then
msg_info "Stopping ${APP}" msg_info "Stopping ${APP}"
systemctl stop emby-server systemctl stop emby-server
msg_ok "Stopped ${APP}" msg_ok "Stopped ${APP}"
msg_info "Updating ${APP}" fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
$STD curl -fsSL "https://github.com/MediaBrowser/Emby.Releases/releases/download/${LATEST}/emby-server-deb_${LATEST}_amd64.deb" -o "emby-server-deb_${LATEST}_amd64.deb"
$STD dpkg -i "emby-server-deb_${LATEST}_amd64.deb"
rm "emby-server-deb_${LATEST}_amd64.deb"
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start emby-server systemctl start emby-server
msg_ok "Started ${APP}" msg_ok "Started ${APP}"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
exit exit
fi
} }
start start

View File

@@ -23,14 +23,35 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /var ]]; then
msg_error "No ${APP} Installation Found!" RELEASE=$(curl -fsSL https://www.emqx.com/en/downloads/enterprise | grep -oP '/en/downloads/enterprise/v\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n1)
exit if [[ "$RELEASE" != "$(cat ~/.emqx 2>/dev/null)" ]] || [[ ! -f ~/.emqx ]]; then
msg_info "Stopping EMQX"
systemctl stop emqx
msg_ok "Stopped EMQX"
msg_info "Downloading EMQX v${RELEASE}"
DEB_FILE="/tmp/emqx-enterprise-${RELEASE}-debian12-amd64.deb"
curl -fsSL -o "$DEB_FILE" "https://www.emqx.com/en/downloads/enterprise/v${RELEASE}/emqx-enterprise-${RELEASE}-debian12-amd64.deb"
msg_ok "Downloaded EMQX"
msg_info "Installing EMQX"
$STD apt-get install -y "$DEB_FILE"
msg_ok "Installed EMQX v${RELEASE}"
msg_info "Starting EMQX"
systemctl start emqx
echo "$RELEASE" >~/.emqx
msg_ok "Started EMQX"
msg_info "Cleaning Up"
rm -f "$DEB_FILE"
msg_ok "Cleanup Completed"
msg_ok "Update Successful"
else
msg_ok "No update required. EMQX is already at v${RELEASE}"
fi fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
exit exit
} }

View File

@@ -7,7 +7,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="ErsatzTV" APP="ErsatzTV"
var_tags="${var_tags:-iptv}" var_tags="${var_tags:-iptv}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-5}" var_disk="${var_disk:-5}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
@@ -27,31 +27,18 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1) RELEASE=$(curl -fsSL https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
if [[ ! -f /opt/${APP}_version.txt && $(echo "x.x.x" >/opt/${APP}_version.txt) || "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.ersatztv 2>/dev/null)" ]] || [[ ! -f ~/.ersatztv ]]; then
msg_info "Stopping ErsatzTV" msg_info "Stopping ErsatzTV"
systemctl stop ersatzTV systemctl stop ersatzTV
msg_ok "Stopped ErsatzTV" msg_ok "Stopped ErsatzTV"
msg_info "Updating ErsatzTV" FFMPEG_VERSION="latest" FFMPEG_TYPE="medium" setup_ffmpeg
cp -R /opt/ErsatzTV/ ErsatzTV-backup fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
rm ErsatzTV-backup/ErsatzTV
rm -rf /opt/ErsatzTV
temp_file=$(mktemp)
curl -fsSL "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz" -o "$temp_file"
tar -xzf "$temp_file"
mv ErsatzTV-${RELEASE}-linux-x64 /opt/ErsatzTV
cp -R ErsatzTV-backup/* /opt/ErsatzTV/
rm -rf ErsatzTV-backup
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ErsatzTV"
msg_info "Starting ErsatzTV" msg_info "Starting ErsatzTV"
systemctl start ersatzTV systemctl start ersatzTV
msg_ok "Started ErsatzTV" msg_ok "Started ErsatzTV"
msg_info "Cleaning Up"
rm -f ${temp_file}
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"

View File

@@ -73,6 +73,11 @@ EOF
msg_ok "Updated systemd service" msg_ok "Updated systemd service"
fi fi
msg_info "Linking esphome to /usr/local/bin"
rm -f /usr/local/bin/esphome
ln -s /opt/esphome/.venv/bin/esphome /usr/local/bin/esphome
msg_ok "Linked esphome binary"
msg_info "Starting ${APP}" msg_info "Starting ${APP}"
systemctl start esphomeDashboard systemctl start esphomeDashboard
msg_ok "Started ${APP}" msg_ok "Started ${APP}"

View File

@@ -28,20 +28,16 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/excalidraw_version.txt)" ]] || [[ ! -f /opt/excalidraw_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.excalidraw 2>/dev/null)" ]] || [[ ! -f ~/.excalidraw ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop excalidraw systemctl stop excalidraw
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
cd /tmp
temp_file=$(mktemp)
curl -fsSL "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar xzf $temp_file
rm -rf /opt/excalidraw rm -rf /opt/excalidraw
mv excalidraw-${RELEASE} /opt/excalidraw fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw"
msg_info "Updating $APP to v${RELEASE}"
cd /opt/excalidraw cd /opt/excalidraw
$STD yarn $STD yarn
msg_ok "Updated $APP to v${RELEASE}" msg_ok "Updated $APP to v${RELEASE}"
@@ -50,11 +46,6 @@ function update_script() {
systemctl start excalidraw systemctl start excalidraw
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -rf $temp_file
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/excalidraw_version.txt
msg_ok "Update Successful" msg_ok "Update Successful"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -29,17 +29,20 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}') RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.firefly 2>/dev/null)" ]] || [[ ! -f ~/.firefly ]]; then
msg_info "Stopping Apache2" msg_info "Stopping Apache2"
systemctl stop apache2 systemctl stop apache2
msg_ok "Stopped Apache2" msg_ok "Stopped Apache2"
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Backing up data"
cp /opt/firefly/.env /opt/.env cp /opt/firefly/.env /opt/.env
cp -r /opt/firefly/storage /opt/storage cp -r /opt/firefly/storage /opt/storage
cd /opt msg_ok "Backed up data"
curl -fsSL "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz" -o $(basename "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz")
tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly --exclude='storage' fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii"
msg_info "Updating ${APP} to v${RELEASE}"
rm -rf /opt/firefly/storage
cp /opt/.env /opt/firefly/.env cp /opt/.env /opt/firefly/.env
cp -r /opt/storage /opt/firefly/storage cp -r /opt/storage /opt/firefly/storage
cd /opt/firefly cd /opt/firefly
@@ -50,16 +53,12 @@ function update_script() {
$STD php artisan view:clear $STD php artisan view:clear
$STD php artisan firefly-iii:upgrade-database $STD php artisan firefly-iii:upgrade-database
$STD php artisan firefly-iii:laravel-passport-keys $STD php artisan firefly-iii:laravel-passport-keys
echo "${RELEASE}" >"/opt/${APP}_version.txt"
msg_ok "Updated ${APP} to v${RELEASE}" msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting Apache2" msg_info "Starting Apache2"
systemctl start apache2 systemctl start apache2
msg_ok "Started Apache2" msg_ok "Started Apache2"
msg_info "Cleaning up"
rm -rf /opt/FireflyIII-v${RELEASE}.tar.gz
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}." msg_ok "No update required. ${APP} is already at v${RELEASE}."

View File

@@ -23,20 +23,23 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://github.com/FlareSolverr/FlareSolverr/releases/latest | grep "title>Release" | cut -d " " -f 4) RELEASE=$(curl -fsSL https://api.github.com/repos/FlareSolverr/FlareSolverr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.flaresolverr 2>/dev/null)" ]] || [[ ! -f ~/.flaresolverr ]]; then
msg_info "Updating $APP LXC" msg_info "Stopping service"
systemctl stop flaresolverr systemctl stop flaresolverr
curl -fsSL "https://github.com/FlareSolverr/FlareSolverr/releases/download/$RELEASE/flaresolverr_linux_x64.tar.gz" -o $(basename "https://github.com/FlareSolverr/FlareSolverr/releases/download/$RELEASE/flaresolverr_linux_x64.tar.gz") msg_ok "Stopped service"
tar -xzf flaresolverr_linux_x64.tar.gz -C /opt
rm flaresolverr_linux_x64.tar.gz rm -rf /opt/flaresolverr
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
msg_info "Starting service"
systemctl start flaresolverr systemctl start flaresolverr
echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Started service"
msg_ok "Updated $APP LXC"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi

View File

@@ -28,20 +28,17 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.fluid-calendar 2>/dev/null)" ]] || [[ ! -f ~/.fluid-calendar ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop fluid-calendar.service systemctl stop fluid-calendar
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
cp /opt/fluid-calendar/.env /opt/fluid.env cp /opt/fluid-calendar/.env /opt/fluid.env
rm -rf /opt/fluid-calendar rm -rf /opt/fluid-calendar
tmp_file=$(mktemp) fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
$STD unzip $tmp_file msg_info "Updating $APP to v${RELEASE}"
mv ${APP}-${RELEASE}/ /opt/fluid-calendar
mv /opt/fluid.env /opt/fluid-calendar/.env mv /opt/fluid.env /opt/fluid-calendar/.env
cd /opt/fluid-calendar cd /opt/fluid-calendar
export NEXT_TELEMETRY_DISABLED=1 export NEXT_TELEMETRY_DISABLED=1
@@ -52,14 +49,9 @@ function update_script() {
msg_ok "Updated $APP to v${RELEASE}" msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start fluid-calendar.service systemctl start fluid-calendar
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -rf $tmp_file
msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Update Successful" msg_ok "Update Successful"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -29,35 +29,29 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.gatus 2>/dev/null)" ]] || [[ ! -f ~/.gatus ]]; then
msg_info "Updating $APP" msg_info "Updating $APP"
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop gatus systemctl stop gatus
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Updating $APP to v${RELEASE}"
mv /opt/gatus/config/config.yaml /opt mv /opt/gatus/config/config.yaml /opt
rm -rf /opt/gatus/* rm -rf /opt/gatus
temp_file=$(mktemp) fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf "$temp_file" --strip-components=1 -C /opt/gatus msg_info "Updating $APP to v${RELEASE}"
cd /opt/gatus cd /opt/gatus
$STD go mod tidy $STD go mod tidy
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus . CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
setcap CAP_NET_RAW+ep gatus setcap CAP_NET_RAW+ep gatus
mv /opt/config.yaml config mv /opt/config.yaml config
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}" msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start gatus systemctl start gatus
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -f "$temp_file"
msg_ok "Cleanup Completed"
msg_ok "Update Successful" msg_ok "Update Successful"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}" msg_ok "No update required. ${APP} is already at v${RELEASE}"

View File

@@ -23,8 +23,13 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
msg_info "Updating ${APP} LXC"
if ! dpkg-query -W -f='${Status}' mariadb-server 2>/dev/null | grep -q "install ok installed"; then
setup_mysql
fi
NODE_VERSION="22" setup_nodejs
msg_info "Updating ${APP} LXC"
if command -v ghost &>/dev/null; then if command -v ghost &>/dev/null; then
current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}') current_version=$(ghost version | grep 'Ghost-CLI version' | awk '{print $3}')
latest_version=$(npm show ghost-cli version) latest_version=$(npm show ghost-cli version)

View File

@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: CrazyWolf13 # Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/arunavo4/gitea-mirror # Source: https://github.com/RayLabsHQ/gitea-mirror
APP="gitea-mirror" APP="gitea-mirror"
var_tags="${var_tags:-mirror;gitea}" var_tags="${var_tags:-mirror;gitea}"
@@ -28,7 +28,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/arunavo4/gitea-mirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/RayLabsHQ/gitea-mirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.${APP} 2>/dev/null || cat /opt/${APP}_version.txt 2>/dev/null)" ]]; then
msg_info "Stopping Services" msg_info "Stopping Services"
@@ -48,7 +48,7 @@ function update_script() {
msg_ok "Installed Bun" msg_ok "Installed Bun"
rm -rf /opt/gitea-mirror rm -rf /opt/gitea-mirror
fetch_and_deploy_gh_release "gitea-mirror" "arunavo4/gitea-mirror" fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
msg_info "Updating and rebuilding ${APP} to v${RELEASE}" msg_info "Updating and rebuilding ${APP} to v${RELEASE}"
cd /opt/gitea-mirror cd /opt/gitea-mirror

View File

@@ -23,20 +23,29 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /usr/local/bin/gitea ]]; then if [[ ! -f /usr/local/bin/gitea ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//') RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
msg_info "Updating $APP to ${RELEASE}" if [[ "${RELEASE}" != "$(cat ~/.gitea 2>/dev/null)" ]] || [[ ! -f ~/.gitea ]]; then
FILENAME="gitea-$RELEASE-linux-amd64" msg_info "Stopping service"
curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o $FILENAME
systemctl stop gitea systemctl stop gitea
msg_ok "Service stopped"
rm -rf /usr/local/bin/gitea rm -rf /usr/local/bin/gitea
mv $FILENAME /usr/local/bin/gitea fetch_and_deploy_gh_release "gitea" "go-gitea/gitea" "singlefile" "latest" "/usr/local/bin" "gitea-*-linux-amd64"
chmod +x /usr/local/bin/gitea chmod +x /usr/local/bin/gitea
msg_info "Starting service"
systemctl start gitea systemctl start gitea
msg_ok "Updated $APP Successfully" msg_ok "Started service"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit exit
} }

View File

@@ -28,28 +28,19 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then if [[ "${RELEASE}" != "$(cat ~/.glance 2>/dev/null)" ]] || [[ ! -f ~/.glance ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop glance systemctl stop glance
msg_ok "Stopped Service" msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}" rm -f /opt/glance/glance
cd /opt fetch_and_deploy_gh_release "glance" "glanceapp/glance" "prebuild" "latest" "/opt/glance" "glance-linux-amd64.tar.gz"
curl -fsSL "https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz" -o $(basename "https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz")
rm -rf /opt/glance/glance
tar -xzf glance-linux-amd64.tar.gz -C /opt/glance
echo "${RELEASE}" >"/opt/${APP}_version.txt"
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start glance systemctl start glance
msg_ok "Started Service" msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/glance-linux-amd64.tar.gz
msg_ok "Cleaned"
msg_ok "Updated Successfully" msg_ok "Updated Successfully"
else else
msg_ok "No update required. ${APP} is already at v${RELEASE}." msg_ok "No update required. ${APP} is already at v${RELEASE}."

View File

@@ -28,35 +28,48 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
RELEASE=$(curl -fsSL https://api.github.com/repos/HabitRPG/habitica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/HabitRPG/habitica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then if [[ "${RELEASE}" != "$(cat ~/.habitica 2>/dev/null)" ]] || [[ ! -f ~/.habitica ]]; then
msg_info "Stopping $APP" msg_info "Stopping $APP"
systemctl stop habitica-mongodb systemctl stop habitica-mongodb
systemctl stop habitica systemctl stop habitica
systemctl stop habitica-client systemctl stop habitica-client
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Save configuration"
if [[ -f /opt/habitica/config.json ]]; then
cp /opt/habitica/config.json ~/config.json
msg_ok "Saved configuration"
else
msg_warn "No configuration file found, skipping save"
fi
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
msg_info "Updating $APP to ${RELEASE}" msg_info "Updating $APP to ${RELEASE}"
temp_file=$(mktemp)
curl -fsSL "https://github.com/HabitRPG/habitica/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
cp -rf habitica-${RELEASE}/* /opt/habitica
cd /opt/habitica cd /opt/habitica
$STD npm i $STD npm i
echo "${RELEASE}" >/opt/${APP}_version.txt $STD npm run postinstall
$STD npm run client:build
$STD gulp build:prod
msg_ok "Updated $APP to ${RELEASE}" msg_ok "Updated $APP to ${RELEASE}"
msg_info "Restoring configuration"
if [[ -f ~/config.json ]]; then
cp ~/config.json /opt/habitica/config.json
msg_ok "Restored configuration"
else
msg_warn "No configuration file found to restore"
fi
msg_info "Starting $APP" msg_info "Starting $APP"
systemctl start habitica-mongodb systemctl start habitica-mongodb
systemctl start habitica systemctl start habitica
systemctl start habitica-client systemctl start habitica-client
msg_ok "Started $APP" msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -f $temp_file
rm -rf ~/habitica-${RELEASE}
msg_ok "Cleanup Completed"
msg_ok "Update Successful" msg_ok "Update Successful"
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}" msg_ok "No update required. ${APP} is already at ${RELEASE}"
@@ -71,4 +84,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@@ -1,6 +1,6 @@
______ _ ___ _ __ __ ______ _ ___
/_ __/____(_) (_)_ ______ ___ / | / /___ / /____ _____ /_ __/____(_) (_)_ ______ ___
/ / / ___/ / / / / / / __ `__ \ / |/ / __ \/ __/ _ \/ ___/ / / / ___/ / / / / / / __ `__ \
/ / / / / / / / /_/ / / / / / / / /| / /_/ / /_/ __(__ ) / / / / / / / / /_/ / / / / / /
/_/ /_/ /_/_/_/\__,_/_/ /_/ /_/ /_/ |_/\____/\__/\___/____/ /_/ /_/ /_/_/_/\__,_/_/ /_/ /_/

View File

@@ -51,134 +51,12 @@ function update_script() {
fi fi
if [[ -f ~/.immich_library_revisions ]]; then if [[ -f ~/.immich_library_revisions ]]; then
libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips") libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips")
readarray -d '' NEW_REVISIONS < <(for library in "${libraries[@]}"; do
echo "$library: $(curl -fsSL https://raw.githubusercontent.com/immich-app/base-images/refs/heads/main/server/sources/"$library".json | jq -cr '.revision' -)"
done)
UPDATED_REVISIONS="$(comm -13 <(sort ~/.immich_library_revisions) <(echo -n "${NEW_REVISIONS[@]}" | sort))"
if [[ "$UPDATED_REVISIONS" ]]; then
readarray -t NAMES < <(echo "$UPDATED_REVISIONS" | awk -F ':' '{print $1}')
rm -rf "$SOURCE_DIR"
mkdir -p "$SOURCE_DIR"
cd "$BASE_DIR" cd "$BASE_DIR"
$STD git pull $STD git pull
cd "$STAGING_DIR" for library in "${libraries[@]}"; do
for name in "${NAMES[@]}"; do compile_"$library"
if [[ "$name" == "libjxl" ]]; then
msg_info "Recompiling libjxl"
SOURCE=${SOURCE_DIR}/libjxl
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
: "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}"
$STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$LIBJXL_REVISION"
$STD git submodule update --init --recursive --depth 1 --recommend-shallow
$STD git apply "$BASE_DIR"/server/sources/libjxl-patches/jpegli-empty-dht-marker.patch
$STD git apply "$BASE_DIR"/server/sources/libjxl-patches/jpegli-icc-warning.patch
mkdir build
cd build
$STD cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF \
-DJPEGXL_ENABLE_DOXYGEN=OFF \
-DJPEGXL_ENABLE_MANPAGES=OFF \
-DJPEGXL_ENABLE_PLUGIN_GIMP210=OFF \
-DJPEGXL_ENABLE_BENCHMARK=OFF \
-DJPEGXL_ENABLE_EXAMPLES=OFF \
-DJPEGXL_FORCE_SYSTEM_BROTLI=ON \
-DJPEGXL_FORCE_SYSTEM_HWY=ON \
-DJPEGXL_ENABLE_JPEGLI=ON \
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=ON \
-DJPEGXL_INSTALL_JPEGLI_LIBJPEG=ON \
-DJPEGXL_ENABLE_PLUGINS=ON \
-DJPEGLI_LIBJPEG_LIBRARY_SOVERSION="$JPEGLI_LIBJPEG_LIBRARY_SOVERSION" \
-DJPEGLI_LIBJPEG_LIBRARY_VERSION="$JPEGLI_LIBJPEG_LIBRARY_VERSION" \
-DLIBJPEG_TURBO_VERSION_NUMBER=2001005 \
..
$STD cmake --build . -- -j"$(nproc)"
$STD cmake --install .
ldconfig /usr/local/lib
$STD make clean
cd "$STAGING_DIR"
rm -rf "$SOURCE"/{build,third_party}
msg_ok "Recompiled libjxl"
fi
if [[ "$name" == "libheif" ]]; then
msg_info "Recompiling libheif"
SOURCE=${SOURCE_DIR}/libheif
: "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}"
$STD git clone https://github.com/strukturag/libheif.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$LIBHEIF_REVISION"
mkdir build
cd build
$STD cmake --preset=release-noplugins \
-DWITH_DAV1D=ON \
-DENABLE_PARALLEL_TILE_DECODING=ON \
-DWITH_LIBSHARPYUV=ON \
-DWITH_LIBDE265=ON \
-DWITH_AOM_DECODER=OFF \
-DWITH_AOM_ENCODER=OFF \
-DWITH_X265=OFF \
-DWITH_EXAMPLES=OFF \
..
$STD make install -j "$(nproc)"
ldconfig /usr/local/lib
$STD make clean
cd "$STAGING_DIR"
rm -rf "$SOURCE"/build
msg_ok "Recompiled libheif"
fi
if [[ "$name" == "libraw" ]]; then
msg_info "Recompiling libraw"
SOURCE=${SOURCE_DIR}/libraw
: "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}"
$STD git clone https://github.com/libraw/libraw.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$LIBRAW_REVISION"
$STD autoreconf --install
$STD ./configure
$STD make -j"$(nproc)"
$STD make install
ldconfig /usr/local/lib
$STD make clean
cd "$STAGING_DIR"
msg_ok "Recompiled libraw"
fi
if [[ "$name" == "imagemagick" ]]; then
msg_info "Recompiling ImageMagick"
SOURCE=$SOURCE_DIR/imagemagick
: "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}"
$STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$IMAGEMAGICK_REVISION"
$STD ./configure --with-modules
$STD make -j"$(nproc)"
$STD make install
ldconfig /usr/local/lib
$STD make clean
cd "$STAGING_DIR"
msg_ok "Recompiled ImageMagick"
fi
if [[ "$name" == "libvips" ]]; then
msg_info "Recompiling libvips"
SOURCE=$SOURCE_DIR/libvips
: "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$LIBVIPS_REVISION"
$STD meson setup build --buildtype=release --libdir=lib -Dintrospection=disabled -Dtiff=disabled
cd build
$STD ninja install
ldconfig /usr/local/lib
cd "$STAGING_DIR"
rm -rf "$SOURCE"/build
msg_ok "Recompiled libvips"
fi
done done
echo -n "${NEW_REVISIONS[@]}" >~/.immich_library_revisions msg_ok "Image-processing libraries updated"
msg_ok "Image-processing libraries compiled"
fi
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
@@ -245,6 +123,10 @@ function update_script() {
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/ cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/
cp -a web/build "$APP_DIR"/www cp -a web/build "$APP_DIR"/www
cp LICENSE "$APP_DIR" cp LICENSE "$APP_DIR"
cd "$APP_DIR"
export SHARP_FORCE_GLOBAL_LIBVIPS=true
$STD npm install sharp
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
msg_ok "Updated ${APP} web and microservices" msg_ok "Updated ${APP} web and microservices"
cd "$SRC_DIR"/machine-learning cd "$SRC_DIR"/machine-learning
@@ -276,8 +158,6 @@ function update_script() {
ln -s "$GEO_DIR" "$APP_DIR" ln -s "$GEO_DIR" "$APP_DIR"
msg_info "Updating Immich CLI" msg_info "Updating Immich CLI"
$STD npm install --build-from-source sharp
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
$STD npm i -g @immich/cli $STD npm i -g @immich/cli
msg_ok "Updated Immich CLI" msg_ok "Updated Immich CLI"
@@ -293,6 +173,144 @@ function update_script() {
exit exit
} }
function compile_libjxl() {
SOURCE=${SOURCE_DIR}/libjxl
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
: "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}"
if [[ "${update:-}" ]] || [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libjxl"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
$STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$LIBJXL_REVISION"
$STD git submodule update --init --recursive --depth 1 --recommend-shallow
$STD git apply "$BASE_DIR"/server/sources/libjxl-patches/jpegli-empty-dht-marker.patch
$STD git apply "$BASE_DIR"/server/sources/libjxl-patches/jpegli-icc-warning.patch
mkdir build
cd build
$STD cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF \
-DJPEGXL_ENABLE_DOXYGEN=OFF \
-DJPEGXL_ENABLE_MANPAGES=OFF \
-DJPEGXL_ENABLE_PLUGIN_GIMP210=OFF \
-DJPEGXL_ENABLE_BENCHMARK=OFF \
-DJPEGXL_ENABLE_EXAMPLES=OFF \
-DJPEGXL_FORCE_SYSTEM_BROTLI=ON \
-DJPEGXL_FORCE_SYSTEM_HWY=ON \
-DJPEGXL_ENABLE_JPEGLI=ON \
-DJPEGXL_ENABLE_JPEGLI_LIBJPEG=ON \
-DJPEGXL_INSTALL_JPEGLI_LIBJPEG=ON \
-DJPEGXL_ENABLE_PLUGINS=ON \
-DJPEGLI_LIBJPEG_LIBRARY_SOVERSION="$JPEGLI_LIBJPEG_LIBRARY_SOVERSION" \
-DJPEGLI_LIBJPEG_LIBRARY_VERSION="$JPEGLI_LIBJPEG_LIBRARY_VERSION" \
-DLIBJPEG_TURBO_VERSION_NUMBER=2001005 \
..
$STD cmake --build . -- -j"$(nproc)"
$STD cmake --install .
ldconfig /usr/local/lib
$STD make clean
cd "$STAGING_DIR"
rm -rf "$SOURCE"/{build,third_party}
msg_ok "Recompiled libjxl"
fi
}
function compile_libheif() {
SOURCE=${SOURCE_DIR}/libheif
if ! dpkg -l | grep -q libaom; then
$STD apt-get install -y libaom-dev
local update="required"
fi
: "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}"
if [[ "${update:-}" ]] || [[ "$LIBHEIF_REVISION" != "$(grep 'libheif' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libheif"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
$STD git clone https://github.com/strukturag/libheif.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$LIBHEIF_REVISION"
mkdir build
cd build
$STD cmake --preset=release-noplugins \
-DWITH_DAV1D=ON \
-DENABLE_PARALLEL_TILE_DECODING=ON \
-DWITH_LIBSHARPYUV=ON \
-DWITH_LIBDE265=ON \
-DWITH_AOM_DECODER=OFF \
-DWITH_AOM_ENCODER=ON \
-DWITH_X265=OFF \
-DWITH_EXAMPLES=OFF \
..
$STD make install -j "$(nproc)"
ldconfig /usr/local/lib
$STD make clean
cd "$STAGING_DIR"
rm -rf "$SOURCE"/build
msg_ok "Recompiled libheif"
fi
}
function compile_libraw() {
SOURCE=${SOURCE_DIR}/libraw
local update
: "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
if [[ "${update:-}" ]] || [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libraw"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
$STD git clone https://github.com/libraw/libraw.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$LIBRAW_REVISION"
$STD autoreconf --install
$STD ./configure
$STD make -j"$(nproc)"
$STD make install
ldconfig /usr/local/lib
$STD make clean
cd "$STAGING_DIR"
msg_ok "Recompiled libraw"
fi
}
function compile_imagemagick() {
SOURCE=$SOURCE_DIR/imagemagick
: "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}"
if [[ "${update:-}" ]] || [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling ImageMagick"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
$STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$IMAGEMAGICK_REVISION"
$STD ./configure --with-modules
$STD make -j"$(nproc)"
$STD make install
ldconfig /usr/local/lib
$STD make clean
cd "$STAGING_DIR"
msg_ok "Recompiled ImageMagick"
fi
}
function compile_libvips() {
SOURCE=$SOURCE_DIR/libvips
# : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
: "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
if [[ "${update:-}" ]] || [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libvips"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
$STD git clone https://github.com/libvips/libvips.git "$SOURCE"
cd "$SOURCE"
$STD git reset --hard "$LIBVIPS_REVISION"
$STD meson setup build --buildtype=release --libdir=lib -Dintrospection=disabled -Dtiff=disabled
cd build
$STD ninja install
ldconfig /usr/local/lib
cd "$STAGING_DIR"
rm -rf "$SOURCE"/build
msg_ok "Recompiled libvips"
fi
}
start start
build_container build_container
description description

View File

@@ -36,6 +36,15 @@ function update_script() {
exit 1 exit 1
fi fi
COMPOSE_BASENAME=$(basename "$COMPOSE_FILE") COMPOSE_BASENAME=$(basename "$COMPOSE_FILE")
if [[ "$COMPOSE_BASENAME" == "sqlite.compose.yaml" || "$COMPOSE_BASENAME" == "postgres.compose.yaml" ]]; then
msg_error "❌ Detected outdated Komodo setup using SQLite or PostgreSQL (FerretDB v1)."
echo -e "${YW}This configuration is no longer supported since Komodo v1.18.0.${CL}"
echo -e "${YW}Please follow the migration guide:${CL}"
echo -e "${BGN}https://github.com/community-scripts/ProxmoxVE/discussions/5689${CL}\n"
exit 1
fi
BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)" BACKUP_FILE="/opt/komodo/${COMPOSE_BASENAME}.bak_$(date +%Y%m%d_%H%M%S)"
cp "$COMPOSE_FILE" "$BACKUP_FILE" || { cp "$COMPOSE_FILE" "$BACKUP_FILE" || {
msg_error "Failed to create backup of ${COMPOSE_BASENAME}!" msg_error "Failed to create backup of ${COMPOSE_BASENAME}!"

View File

@@ -27,18 +27,31 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/hywax/mafl/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/hywax/mafl/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Updating Mafl to v${RELEASE} (Patience)" if [[ "${RELEASE}" != "$(cat ~/.mafl 2>/dev/null)" ]] || [[ ! -f ~/.mafl ]]; then
msg_info "Stopping Mafl service"
systemctl stop mafl systemctl stop mafl
curl -fsSL "https://github.com/hywax/mafl/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/hywax/mafl/archive/refs/tags/v${RELEASE}.tar.gz") msg_ok "Service stopped"
tar -xzf v${RELEASE}.tar.gz
cp -r mafl-${RELEASE}/* /opt/mafl/ msg_info "Performing backup"
rm -rf mafl-${RELEASE} mkdir -p /opt/mafl-backup/data
mv /opt/mafl/data /opt/mafl-backup/data
rm -rf /opt/mafl
msg_ok "Backup complete"
fetch_and_deploy_gh_release "mafl" "hywax/mafl"
msg_info "Updating Mafl to v${RELEASE}"
cd /opt/mafl cd /opt/mafl
yarn install yarn install
yarn build yarn build
mv /opt/mafl-backup/data /opt/mafl/data
systemctl start mafl systemctl start mafl
msg_ok "Updated Mafl to v${RELEASE}" msg_ok "Updated Mafl to v${RELEASE}"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit exit
} }

View File

@@ -40,6 +40,7 @@ function update_script() {
msg_info "Updating Ollama to ${RELEASE}" msg_info "Updating Ollama to ${RELEASE}"
rm -rf /usr/local/lib/ollama rm -rf /usr/local/lib/ollama
rm -rf /usr/local/bin/ollama rm -rf /usr/local/bin/ollama
mkdir -p /usr/local/lib/ollama
tar -xzf "${TMP_TAR}" -C /usr/local/lib/ollama tar -xzf "${TMP_TAR}" -C /usr/local/lib/ollama
ln -sf /usr/local/lib/ollama/bin/ollama /usr/local/bin/ollama ln -sf /usr/local/lib/ollama/bin/ollama /usr/local/bin/ollama
echo "${RELEASE}" >/opt/Ollama_version.txt echo "${RELEASE}" >/opt/Ollama_version.txt

View File

@@ -66,6 +66,7 @@ function update_script() {
$STD dpkg -i "$OMADA_PKG" $STD dpkg -i "$OMADA_PKG"
rm -f "$OMADA_PKG" rm -f "$OMADA_PKG"
msg_ok "Updated Omada Controller" msg_ok "Updated Omada Controller"
exit 0
} }
start start

View File

@@ -40,20 +40,20 @@ function update_script() {
mkdir -p /opt/planka-backup/user-avatars mkdir -p /opt/planka-backup/user-avatars
mkdir -p /opt/planka-backup/background-images mkdir -p /opt/planka-backup/background-images
mkdir -p /opt/planka-backup/attachments mkdir -p /opt/planka-backup/attachments
mv /opt/planka/planka/.env /opt/planka-backup mv /opt/planka/.env /opt/planka-backup
[ -n "$(ls -A /opt/planka/planka/public/favicons 2>/dev/null)" ] && mv /opt/planka/planka/public/favicons/* /opt/planka-backup/favicons/ [ -n "$(ls -A /opt/planka/public/favicons 2>/dev/null)" ] && mv /opt/planka/public/favicons/* /opt/planka-backup/favicons/
[ -n "$(ls -A /opt/planka/planka/public/user-avatars 2>/dev/null)" ] && mv /opt/planka/planka/public/user-avatars/* /opt/planka-backup/user-avatars/ [ -n "$(ls -A /opt/planka/public/user-avatars 2>/dev/null)" ] && mv /opt/planka/public/user-avatars/* /opt/planka-backup/user-avatars/
[ -n "$(ls -A /opt/planka/planka/public/background-images 2>/dev/null)" ] && mv /opt/planka/planka/public/background-images/* /opt/planka-backup/background-images/ [ -n "$(ls -A /opt/planka/public/background-images 2>/dev/null)" ] && mv /opt/planka/public/background-images/* /opt/planka-backup/background-images/
[ -n "$(ls -A /opt/planka/planka/private/attachments 2>/dev/null)" ] && mv /opt/planka/planka/private/attachments/* /opt/planka-backup/attachments/ [ -n "$(ls -A /opt/planka/private/attachments 2>/dev/null)" ] && mv /opt/planka/private/attachments/* /opt/planka-backup/attachments/
rm -rf /opt/planka rm -rf /opt/planka
fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip" fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip"
cd /opt/planka/planka cd /opt/planka
$STD npm install $STD npm install
mv /opt/planka-backup/.env /opt/planka/planka/ mv /opt/planka-backup/.env /opt/planka/
[ -n "$(ls -A /opt/planka-backup/favicons 2>/dev/null)" ] && mv /opt/planka-backup/favicons/* /opt/planka/planka/public/favicons/ [ -n "$(ls -A /opt/planka-backup/favicons 2>/dev/null)" ] && mv /opt/planka-backup/favicons/* /opt/planka/public/favicons/
[ -n "$(ls -A /opt/planka-backup/user-avatars 2>/dev/null)" ] && mv /opt/planka-backup/user-avatars/* /opt/planka/planka/public/user-avatars/ [ -n "$(ls -A /opt/planka-backup/user-avatars 2>/dev/null)" ] && mv /opt/planka-backup/user-avatars/* /opt/planka/public/user-avatars/
[ -n "$(ls -A /opt/planka-backup/background-images 2>/dev/null)" ] && mv /opt/planka-backup/background-images/* /opt/planka/planka/public/background-images/ [ -n "$(ls -A /opt/planka-backup/background-images 2>/dev/null)" ] && mv /opt/planka-backup/background-images/* /opt/planka/public/background-images/
[ -n "$(ls -A /opt/planka-backup/attachments 2>/dev/null)" ] && mv /opt/planka-backup/attachments/* /opt/planka/planka/private/attachments/ [ -n "$(ls -A /opt/planka-backup/attachments 2>/dev/null)" ] && mv /opt/planka-backup/attachments/* /opt/planka/private/attachments/
msg_ok "Updated $APP to ${RELEASE}" msg_ok "Updated $APP to ${RELEASE}"
msg_info "Starting $APP" msg_info "Starting $APP"

View File

@@ -86,4 +86,4 @@ 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} Configure your reverse proxy to point to:${BGN} ${IP}:1411${CL}" echo -e "${INFO}${YW} Configure your reverse proxy to point to:${BGN} ${IP}:1411${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}https://{PUBLIC_URL}/login/setup${CL}" echo -e "${TAB}${GATEWAY}${BGN}https://{PUBLIC_URL}/setup${CL}"

View File

@@ -58,6 +58,7 @@ function update_script() {
else else
msg_ok "No update required. ${APP} is already at ${RELEASE}." msg_ok "No update required. ${APP} is already at ${RELEASE}."
fi fi
exit
} }
start start

View File

@@ -27,29 +27,41 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP}" RELEASE=$(curl -fsSL https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
systemctl stop stirlingpdf if [[ "${RELEASE}" != "$(cat ~/.stirling-pdf 2>/dev/null)" ]] || [[ ! -f ~/.stirling-pdf ]]; then
if [[ -n $(dpkg -l | grep -w ocrmypdf) ]] && [[ -z $(dpkg -l | grep -w qpdf) ]]; then if [[ ! -f /etc/systemd/system/unoserver.service ]]; then
$STD apt-get remove -y ocrmypdf msg_custom "⚠️ " "\e[33m" "Legacy installation detected please recreate the container using the latest install script."
$STD apt-get install -y qpdf exit 0
fi
PYTHON_VERSION="3.12" setup_uv
JAVA_VERSION="21" setup_java
msg_info "Stopping Services"
systemctl stop stirlingpdf libreoffice-listener unoserver
msg_ok "Stopped Services"
if [[ -f ~/.Stirling-PDF-login ]]; then
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF-with-login.jar"
mv /opt/Stirling-PDF/Stirling-PDF-with-login.jar /opt/Stirling-PDF/Stirling-PDF.jar
else
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF.jar"
fi
msg_info "Refreshing Font Cache"
$STD fc-cache -fv
msg_ok "Font Cache Updated"
msg_info "Starting Services"
systemctl start stirlingpdf libreoffice-listener unoserver
msg_ok "Started Services"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz" -o $(basename "https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz")
tar -xzf v$RELEASE.tar.gz
cd Stirling-PDF-$RELEASE
chmod +x ./gradlew
$STD ./gradlew build
rm -rf /opt/Stirling-PDF/Stirling-PDF-*.jar
cp -r ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/
cp -r scripts /opt/Stirling-PDF/
cd ~
rm -rf Stirling-PDF-$RELEASE v$RELEASE.tar.gz
ln -sf /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar /opt/Stirling-PDF/Stirling-PDF.jar
systemctl start stirlingpdf
msg_ok "Updated ${APP} to v$RELEASE"
exit exit
} }
start start
build_container build_container
description description

View File

@@ -27,12 +27,24 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating $APP"
systemctl stop threadfin.service RELEASE=$(curl -fsSL https://api.github.com/repos/threadfin/threadfin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/Threadfin/Threadfin/releases/latest/download/Threadfin_linux_amd64" -o "/opt/threadfin/threadfin" if [[ "${RELEASE}" != "$(cat ~/.threadfin 2>/dev/null)" ]] || [[ ! -f ~/.threadfin ]]; then
chmod +x /opt/threadfin/threadfin
systemctl start threadfin.service msg_info "Stopping $APP"
msg_ok "Updated $APP" systemctl stop threadfin
msg_ok "Stopped $APP"
fetch_and_deploy_gh_release "threadfin" "threadfin/threadfin" "singlefile" "latest" "/opt/threadfin" "Threadfin_linux_amd64"
msg_info "Starting $APP"
systemctl start threadfin
msg_ok "Started $APP"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit exit
} }

View File

@@ -5,7 +5,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/TriliumNext/Trilium # Source: https://github.com/TriliumNext/Trilium
APP="Trilium Notes" APP="Trilium"
var_tags="${var_tags:-notes}" var_tags="${var_tags:-notes}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"

View File

@@ -37,12 +37,16 @@
"type": "info" "type": "info"
}, },
{ {
"text": "Configuration: `nano /opt/iptag/iptag.conf`. iptag.service must be restarted after change.", "text": "Configuration: `nano /opt/iptag/iptag.conf`. iptag Service must be restarted after change. See here for full documentation: `https://github.com/community-scripts/ProxmoxVE/discussions/5790`",
"type": "info" "type": "info"
}, },
{ {
"text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`", "text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`",
"type": "warning" "type": "warning"
},
{
"text": "You can execute the ip tool manually with `iptag-run`",
"type": "info"
} }
] ]
} }

View File

@@ -31,5 +31,10 @@
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": [
{
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
"type": "warning"
}
]
} }

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 5001, "interface_port": 5001,
"documentation": null, "documentation": null,

View File

@@ -31,5 +31,10 @@
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": [
{
"text": "Use `cat ~/docmost.creds` to see database credentials.",
"type": "info"
}
]
} }

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 18083, "interface_port": 18083,
"documentation": "https://docs.emqx.com/en/emqx/latest/", "documentation": "https://docs.emqx.com/en/emqx/latest/",

View File

@@ -19,7 +19,7 @@
"type": "default", "type": "default",
"script": "ct/ersatztv.sh", "script": "ct/ersatztv.sh",
"resources": { "resources": {
"cpu": 1, "cpu": 2,
"ram": 1024, "ram": 1024,
"hdd": 5, "hdd": 5,
"os": "debian", "os": "debian",

View File

@@ -9,9 +9,9 @@
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 4321, "interface_port": 4321,
"documentation": "https://github.com/arunavo4/gitea-mirror/", "documentation": "https://github.com/RayLabsHQ/gitea-mirror/",
"config_path": "/etc/systemd/system/gitea-mirror.service", "config_path": "/etc/systemd/system/gitea-mirror.service",
"website": "https://github.com/arunavo4/gitea-mirror/", "website": "https://github.com/RayLabsHQ/gitea-mirror/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/gitea-mirror.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/gitea-mirror.webp",
"description": "Gitea Mirror auto-syncs GitHub repos to your self-hosted Gitea, with a sleek Web UI and easy Docker deployment. ", "description": "Gitea Mirror auto-syncs GitHub repos to your self-hosted Gitea, with a sleek Web UI and easy Docker deployment. ",
"install_methods": [ "install_methods": [

View File

@@ -8,7 +8,7 @@
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8080, "interface_port": 3000,
"documentation": "https://github.com/HabitRPG/habitica/wiki", "documentation": "https://github.com/HabitRPG/habitica/wiki",
"website": "https://habitica.com/", "website": "https://habitica.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/habitica.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/habitica.webp",

View File

@@ -39,6 +39,10 @@
{ {
"text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0", "text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0",
"type": "info" "type": "info"
},
{
"text": "If installed, access phpMyAdmin at `http://<LXC_IP>/phpMyAdmin`, case sensitive.",
"type": "info"
} }
] ]
} }

View File

@@ -35,6 +35,10 @@
{ {
"text": "Set a root password if using autologin. This will be the PBS password. `passwd root`", "text": "Set a root password if using autologin. This will be the PBS password. `passwd root`",
"type": "warning" "type": "warning"
},
{
"text": "Advanced Install is only possible without root password and root SSH access, you can configure this after installation.",
"type": "warning"
} }
] ]
} }

View File

@@ -28,8 +28,8 @@
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": "admin",
"password": null "password": "stirling"
}, },
"notes": [] "notes": []
} }

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-06-12", "date_created": "2024-06-12",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 34400, "interface_port": 34400,
"documentation": null, "documentation": null,

File diff suppressed because it is too large Load Diff

View File

@@ -14,11 +14,12 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y apt-transport-https $STD apt-get install -y \
$STD apt-get install -y alsa-utils apt-transport-https \
$STD apt-get install -y libxext-dev alsa-utils \
$STD apt-get install -y fontconfig libxext-dev \
$STD apt-get install -y libva-drm2 fontconfig \
libva-drm2
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing AgentDVR" msg_info "Installing AgentDVR"
@@ -27,7 +28,6 @@ RELEASE=$(curl -fsSL "https://www.ispyconnect.com/api/Agent/DownloadLocation4?pl
cd /opt/agentdvr/agent cd /opt/agentdvr/agent
curl -fsSL "$RELEASE" -o $(basename "$RELEASE") curl -fsSL "$RELEASE" -o $(basename "$RELEASE")
$STD unzip Agent_Linux64*.zip $STD unzip Agent_Linux64*.zip
rm -rf Agent_Linux64*.zip
chmod +x ./Agent chmod +x ./Agent
msg_ok "Installed AgentDVR" msg_ok "Installed AgentDVR"
@@ -54,6 +54,7 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf Agent_Linux64*.zip
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -67,5 +67,14 @@ if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION" msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
fi fi
read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Exposing Docker TCP socket"
$STD mkdir -p /etc/docker
$STD echo '{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }' > /etc/docker/daemon.json
$STD rc-service docker restart
msg_ok "Exposed Docker TCP socket at tcp://+:2375"
fi
motd_ssh motd_ssh
customize customize

View File

@@ -28,8 +28,7 @@ msg_ok "Enabled Docker Service"
echo "${TAB3}Choose the database for Komodo installation:" echo "${TAB3}Choose the database for Komodo installation:"
echo "${TAB3}1) MongoDB (recommended)" echo "${TAB3}1) MongoDB (recommended)"
echo "${TAB3}2) SQLite" echo "${TAB3}2) FerretDB"
echo "${TAB3}3) PostgreSQL"
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
DB_CHOICE=${DB_CHOICE:-1} DB_CHOICE=${DB_CHOICE:-1}
@@ -38,10 +37,7 @@ case $DB_CHOICE in
DB_COMPOSE_FILE="mongo.compose.yaml" DB_COMPOSE_FILE="mongo.compose.yaml"
;; ;;
2) 2)
DB_COMPOSE_FILE="sqlite.compose.yaml" DB_COMPOSE_FILE="ferretdb.compose.yaml"
;;
3)
DB_COMPOSE_FILE="postgres.compose.yaml"
;; ;;
*) *)
echo "Invalid choice. Defaulting to MongoDB." echo "Invalid choice. Defaulting to MongoDB."

View File

@@ -24,13 +24,13 @@ RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/la
curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
chmod +x /opt/tinyauth/tinyauth chmod +x /opt/tinyauth/tinyauth
PASSWORD=$(openssl rand -base64 8 | tr -dc 'a-zA-Z0-9' | head -c 8) PASS=$(openssl rand -base64 8 | tr -dc 'a-zA-Z0-9' | head -c 8)
USER=$(htpasswd -Bbn "tinyauth" "${PASSWORD}") USER=$(htpasswd -Bbn "tinyauth" "${PASS}")
cat <<EOF > /opt/tinyauth/credentials.txt cat <<EOF >/opt/tinyauth/credentials.txt
Tinyauth Credentials Tinyauth Credentials
Username: tinyauth Username: tinyauth
Password: ${PASSWORD} Password: ${PASS}
EOF EOF
echo "${RELEASE}" >/opt/tinyauth_version.txt echo "${RELEASE}" >/opt/tinyauth_version.txt

View File

@@ -13,13 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Authelia" fetch_and_deploy_gh_release "authelia" "authelia/authelia" "binary"
RELEASE=$(curl -fsSL https://api.github.com/repos/authelia/authelia/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/authelia/authelia/releases/download/${RELEASE}/authelia_${RELEASE}_amd64.deb" -o "authelia_${RELEASE}_amd64.deb"
$STD dpkg -i "authelia_${RELEASE}_amd64.deb"
msg_ok "Install Authelia completed"
read -p "${TAB3}Enter your domain (ex. example.com): " DOMAIN read -rp "${TAB3}Enter your domain (ex. example.com): " DOMAIN
msg_info "Setting Authelia up" msg_info "Setting Authelia up"
touch /etc/authelia/emails.txt touch /etc/authelia/emails.txt
@@ -72,7 +68,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "authelia_${RELEASE}_amd64.deb"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -24,13 +24,10 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_uv setup_uv
fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy"
msg_info "Installing Babybuddy" msg_info "Installing Babybuddy"
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') mkdir -p /opt/data
temp_file=$(mktemp)
mkdir -p /opt/{babybuddy,data}
curl -fsSL "https://github.com/babybuddy/babybuddy/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf "$temp_file" --strip-components=1 -C /opt/babybuddy
cd /opt/babybuddy cd /opt/babybuddy
$STD uv venv .venv $STD uv venv .venv
$STD source .venv/bin/activate $STD source .venv/bin/activate
@@ -102,7 +99,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,14 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
apache2 \
libapache2-mod-php \
php-{pgsql,dom}
msg_ok "Installed Dependencies"
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
PHP_APACHE="YES" PHP_MODULE="pgsql" PHP_VERSION="8.2" setup_php
fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal"
msg_info "Setting up PostgreSQL Database" msg_info "Setting up PostgreSQL Database"
DB_NAME=baikal DB_NAME=baikal
@@ -36,11 +31,7 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
} >>~/baikal.creds } >>~/baikal.creds
msg_ok "Set up PostgreSQL Database" msg_ok "Set up PostgreSQL Database"
msg_info "Installing Baikal" msg_info "Configuring Baikal"
RELEASE=$(curl -fsSL https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
cd /opt
curl -fsSL "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip" -o "baikal-${RELEASE}.zip"
$STD unzip "baikal-${RELEASE}.zip"
cat <<EOF >/opt/baikal/config/baikal.yaml cat <<EOF >/opt/baikal/config/baikal.yaml
database: database:
backend: pgsql backend: pgsql
@@ -51,7 +42,6 @@ database:
EOF EOF
chown -R www-data:www-data /opt/baikal/ chown -R www-data:www-data /opt/baikal/
chmod -R 755 /opt/baikal/ chmod -R 755 /opt/baikal/
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Baikal" msg_ok "Installed Baikal"
msg_info "Creating Service" msg_info "Creating Service"
@@ -90,7 +80,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/baikal-${RELEASE}.zip"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -14,22 +14,15 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y redis
apache2 \
redis \
php-{curl,date,json,mbstring,redis,sqlite3,sockets} \
libapache2-mod-php
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing barcodebuddy" PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="redis, sqlite3" setup_php
RELEASE=$(curl -fsSL https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
cd /opt
curl -fsSL "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip" msg_info "Configuring barcodebuddy"
$STD unzip "v${RELEASE}.zip"
mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
chown -R www-data:www-data /opt/barcodebuddy/data chown -R www-data:www-data /opt/barcodebuddy/data
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Configured barcodebuddy"
msg_ok "Installed barcodebuddy"
msg_info "Creating Services" msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/barcodebuddy.service cat <<EOF >/etc/systemd/system/barcodebuddy.service
@@ -73,7 +66,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/v${RELEASE}.zip"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -22,17 +22,10 @@ msg_ok "Installed Dependencies"
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
setup_go setup_go
fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"
RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Installing bitmagnet v${RELEASE}" msg_info "Setting up database"
mkdir -p /opt/bitmagnet
temp_file=$(mktemp)
curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
cd /opt/bitmagnet
VREL=v$RELEASE
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
chmod +x bitmagnet
POSTGRES_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) POSTGRES_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '$POSTGRES_PASSWORD';" $STD sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '$POSTGRES_PASSWORD';"
$STD sudo -u postgres psql -c "CREATE DATABASE bitmagnet;" $STD sudo -u postgres psql -c "CREATE DATABASE bitmagnet;"
@@ -41,8 +34,14 @@ $STD sudo -u postgres psql -c "CREATE DATABASE bitmagnet;"
echo "" echo ""
echo "postgres user password: $POSTGRES_PASSWORD" echo "postgres user password: $POSTGRES_PASSWORD"
} >>~/postgres.creds } >>~/postgres.creds
echo "${RELEASE}" >/opt/bitmagnet_version.txt msg_ok "Database set up"
msg_ok "Installed bitmagnet v${RELEASE}"
msg_info "Configuring bitmagnet v${RELEASE}"
cd /opt/bitmagnet
VREL=v$RELEASE
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
chmod +x bitmagnet
msg_ok "Configured bitmagnet v${RELEASE}"
read -r -p "${TAB3}Enter your TMDB API key if you have one: " tmdbapikey read -r -p "${TAB3}Enter your TMDB API key if you have one: " tmdbapikey
@@ -72,7 +71,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -16,12 +16,12 @@ update_os
msg_info "Installing Dependencies (Patience)" msg_info "Installing Dependencies (Patience)"
$STD apt-get install -y \ $STD apt-get install -y \
apache2 \ apache2 \
php8.2-{mbstring,gd,fpm,curl,intl,ldap,tidy,bz2,mysql,zip,xml} \
composer \
libapache2-mod-php \
make make
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PHP_MODULE="ldap,tidy,bz2,mysqli" PHP_FPM="YES" PHP_APACHE="YES" PHP_VERSION="8.3" setup_php
setup_composer
setup_mariadb setup_mariadb
msg_info "Setting up Database" msg_info "Setting up Database"
@@ -39,13 +39,10 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
} >>~/bookstack.creds } >>~/bookstack.creds
msg_ok "Set up database" msg_ok "Set up database"
msg_info "Setup Bookstack (Patience)" fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack"
LOCAL_IP="$(hostname -I | awk '{print $1}')" LOCAL_IP="$(hostname -I | awk '{print $1}')"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') msg_info "Configuring Bookstack (Patience)"
curl -fsSL "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
$STD unzip v${RELEASE}.zip
mv BookStack-${RELEASE} /opt/bookstack
cd /opt/bookstack cd /opt/bookstack
cp .env.example .env cp .env.example .env
sudo sed -i "s|APP_URL=.*|APP_URL=http://$LOCAL_IP|g" /opt/bookstack/.env sudo sed -i "s|APP_URL=.*|APP_URL=http://$LOCAL_IP|g" /opt/bookstack/.env
@@ -60,9 +57,8 @@ chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public
chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads
chmod -R 640 /opt/bookstack/.env chmod -R 640 /opt/bookstack/.env
$STD a2enmod rewrite $STD a2enmod rewrite
$STD a2enmod php8.2 $STD a2enmod php8.3
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Configured Bookstack"
msg_ok "Installed Bookstack"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/bookstack.conf cat <<EOF >/etc/apache2/sites-available/bookstack.conf
@@ -111,7 +107,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf /opt/v${RELEASE}.zip
$STD apt-get autoremove $STD apt-get autoremove
$STD apt-get autoclean $STD apt-get autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -18,19 +18,12 @@ $STD apt-get install -y apt-transport-https
$STD apt-get install -y lsb-release $STD apt-get install -y lsb-release
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Nginx"
curl -fsSL "https://nginx.org/keys/nginx_signing.key" | gpg --dearmor >/usr/share/keyrings/nginx-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian $(lsb_release -cs) nginx" >/etc/apt/sources.list.d/nginx.list
$STD apt-get update
$STD apt-get install -y nginx=1.26.3*
msg_ok "Installed Nginx"
RELEASE=$(curl -fsSL https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Installing BunkerWeb v${RELEASE} (Patience)" msg_info "Installing BunkerWeb v${RELEASE} (Patience)"
curl -fsSL "https://repo.bunkerweb.io/bunkerity/bunkerweb/gpgkey" | gpg --dearmor >/etc/apt/keyrings/bunkerity_bunkerweb-archive-keyring.gpg curl -fsSL -o install-bunkerweb.sh https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh
echo "deb [signed-by=/etc/apt/keyrings/bunkerity_bunkerweb-archive-keyring.gpg] https://repo.bunkerweb.io/bunkerity/bunkerweb/debian/ bookworm main" >/etc/apt/sources.list.d/bunkerity_bunkerweb.list chmod +x install-bunkerweb.sh
$STD apt-get update $STD ./install-bunkerweb.sh --yes
$STD apt-get install -y bunkerweb=${RELEASE} $STD apt-mark unhold bunkerweb nginx
cat <<EOF >/etc/apt/preferences.d/bunkerweb cat <<EOF >/etc/apt/preferences.d/bunkerweb
Package: bunkerweb Package: bunkerweb
Pin: version ${RELEASE} Pin: version ${RELEASE}

View File

@@ -14,22 +14,17 @@ network_check
update_os update_os
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash"
msg_info "Installing ByteStash" msg_info "Installing ByteStash"
JWT_SECRET=$(openssl rand -base64 32 | tr -d '/+=') JWT_SECRET=$(openssl rand -base64 32 | tr -d '/+=')
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/jordan-dalby/ByteStash/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/jordan-dalby/ByteStash/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
mv ByteStash-${RELEASE} /opt/bytestash
cd /opt/bytestash/server cd /opt/bytestash/server
$STD npm install $STD npm install
cd /opt/bytestash/client cd /opt/bytestash/client
$STD npm install $STD npm install
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed ByteStash" msg_ok "Installed ByteStash"
read -p "${TAB3}Do you want to allow registration of multiple accounts? [y/n]: " allowreg read -rp "${TAB3}Do you want to allow registration of multiple accounts? [y/n]: " allowreg
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/bytestash-backend.service cat <<EOF >/etc/systemd/system/bytestash-backend.service
@@ -73,7 +68,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f $temp_file
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -15,16 +15,15 @@ update_os
setup_go setup_go
msg_info "Configure Application"
var_cf_api_token="default" var_cf_api_token="default"
read -rp "Enter the Cloudflare API token: " var_cf_api_token read -rp "${TAB3}Enter the Cloudflare API token: " var_cf_api_token
var_cf_domains="default" var_cf_domains="default"
read -rp "Enter the domains separated with a comma (*.example.org,www.example.org) " var_cf_domains read -rp "${TAB3}Enter the domains separated with a comma (*.example.org,www.example.org) " var_cf_domains
var_cf_proxied="false" var_cf_proxied="false"
while true; do while true; do
read -rp "Proxied? (y/n): " answer read -rp "${TAB3}Proxied? (y/n): " answer
case "$answer" in case "$answer" in
[Yy]*) [Yy]*)
var_cf_proxied="true" var_cf_proxied="true"
@@ -39,7 +38,7 @@ while true; do
done done
var_cf_ip6_provider="none" var_cf_ip6_provider="none"
while true; do while true; do
read -rp "Enable IPv6 support? (y/n): " answer read -rp "${TAB3}Enable IPv6 support? (y/n): " answer
case "$answer" in case "$answer" in
[Yy]*) [Yy]*)
var_cf_ip6_provider="auto" var_cf_ip6_provider="auto"

View File

@@ -17,22 +17,8 @@ msg_info "Installing Dependencies"
$STD apt-get install -y rsync $STD apt-get install -y rsync
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Azul Zulu" JAVA_VERSION="17" setup_java
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB1998361219BD9C9" -o "/etc/apt/trusted.gpg.d/zulu-repo.asc" fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip"
curl -fsSL "https://cdn.azul.com/zulu/bin/zulu-repo_1.0.0-3_all.deb" -o "zulu-repo_1.0.0-3_all.deb"
$STD dpkg -i zulu-repo_1.0.0-3_all.deb
$STD apt-get update
$STD apt-get -y install zulu17-jdk
msg_ok "Installed Azul Zulu"
RELEASE=$(curl -fsSL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
msg_info "Installing CommaFeed ${RELEASE}"
mkdir /opt/commafeed
curl -fsSL "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip" -o "commafeed-${RELEASE}-h2-jvm.zip"
$STD unzip commafeed-${RELEASE}-h2-jvm.zip
mv commafeed-${RELEASE}-h2/* /opt/commafeed/
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed CommaFeed ${RELEASE}"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/commafeed.service cat <<EOF >/etc/systemd/system/commafeed.service
@@ -55,7 +41,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf commafeed-${RELEASE}-h2 commafeed-${RELEASE}-h2-jvm.zip zulu-repo_1.0.0-3_all.deb
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -14,20 +14,15 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y git
git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
read -p "${TAB3}Install OnlyOffice components instead of CKEditor? (Y/N): " onlyoffice read -rp "${TAB3}Install OnlyOffice components instead of CKEditor? (Y/N): " onlyoffice
fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad"
msg_info "Setup ${APPLICATION}" msg_info "Setup ${APPLICATION}"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/cryptpad/cryptpad/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/cryptpad/cryptpad/archive/refs/tags/${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
mv cryptpad-$RELEASE /opt/cryptpad
cd /opt/cryptpad cd /opt/cryptpad
$STD npm ci $STD npm ci
$STD npm run install:components $STD npm run install:components
@@ -39,7 +34,6 @@ sed -i "80s#//httpAddress: 'localhost'#httpAddress: '0.0.0.0'#g" /opt/cryptpad/c
if [[ "$onlyoffice" =~ ^[Yy]$ ]]; then if [[ "$onlyoffice" =~ ^[Yy]$ ]]; then
$STD bash -c "./install-onlyoffice.sh --accept-license" $STD bash -c "./install-onlyoffice.sh --accept-license"
fi fi
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Setup ${APPLICATION}" msg_ok "Setup ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"
@@ -69,7 +63,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f $temp_file
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -14,15 +14,12 @@ network_check
update_os update_os
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "dashy" "Lissy93/dashy"
RELEASE=$(curl -fsSL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
msg_info "Installing Dashy ${RELEASE} (Patience)" msg_info "Installing Dashy ${RELEASE} (Patience)"
mkdir -p /opt/dashy
curl -fsSL "https://github.com/Lissy93/dashy/archive/refs/tags/${RELEASE}.tar.gz" | tar -xz -C /opt/dashy --strip-components=1
cd /opt/dashy cd /opt/dashy
$STD npm install $STD npm install
$STD npm run build $STD npm run build
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Dashy ${RELEASE}" msg_ok "Installed Dashy ${RELEASE}"
msg_info "Creating Service" msg_info "Creating Service"

View File

@@ -29,7 +29,17 @@ echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json
$STD sh <(curl -fsSL https://get.docker.com) $STD sh <(curl -fsSL https://get.docker.com)
msg_ok "Installed Docker $DOCKER_LATEST_VERSION" msg_ok "Installed Docker $DOCKER_LATEST_VERSION"
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt read -r -p "${TAB3}Install Docker Compose v2 plugin? <y/N> " prompt_compose
if [[ ${prompt_compose,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
mkdir -p /usr/local/lib/docker/cli-plugins
curl -fsSL "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_LATEST_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
fi
read -r -p "${TAB3}Would you like to add Portainer (UI)? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION" msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
docker volume create portainer_data >/dev/null docker volume create portainer_data >/dev/null
@@ -43,9 +53,9 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
portainer/portainer-ce:latest portainer/portainer-ce:latest
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION" msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
else else
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt read -r -p "${TAB3}Would you like to install the Portainer Agent (for remote management)? <y/N> " prompt_agent
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then if [[ ${prompt_agent,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION" msg_info "Installing Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
$STD docker run -d \ $STD docker run -d \
-p 9001:9001 \ -p 9001:9001 \
--name portainer_agent \ --name portainer_agent \
@@ -57,6 +67,44 @@ else
fi fi
fi fi
read -r -p "${TAB3}Expose Docker TCP socket (insecure) ? [n = No, l = Local only (127.0.0.1), a = All interfaces (0.0.0.0)] <n/l/a>: " socket_choice
case "${socket_choice,,}" in
l)
socket="tcp://127.0.0.1:2375"
;;
a)
socket="tcp://0.0.0.0:2375"
;;
*)
socket=""
;;
esac
if [[ -n "$socket" ]]; then
msg_info "Enabling Docker TCP socket on $socket"
$STD apt-get install -y jq
tmpfile=$(mktemp)
jq --arg sock "$socket" '. + { "hosts": ["unix:///var/run/docker.sock", $sock] }' /etc/docker/daemon.json > "$tmpfile" && mv "$tmpfile" /etc/docker/daemon.json
mkdir -p /etc/systemd/system/docker.service.d
cat <<EOF > /etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
EOF
$STD systemctl daemon-reexec
$STD systemctl daemon-reload
if systemctl restart docker; then
msg_ok "Docker TCP socket available on $socket"
else
msg_error "Docker failed to restart. Check journalctl -xeu docker.service"
exit 1
fi
fi
motd_ssh motd_ssh
customize customize

View File

@@ -22,6 +22,7 @@ msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
fetch_and_deploy_gh_release "docmost" "docmost/docmost"
msg_info "Setting up PostgreSQL" msg_info "Setting up PostgreSQL"
DB_NAME="docmost_db" DB_NAME="docmost_db"
@@ -40,12 +41,7 @@ $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
} >>~/docmost.creds } >>~/docmost.creds
msg_ok "Set up PostgreSQL" msg_ok "Set up PostgreSQL"
msg_info "Installing Docmost (Patience)" msg_info "Configuring Docmost (Patience)"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/docmost/docmost/archive/refs/tags/v${RELEASE}.tar.gz" -o ""$temp_file""
tar -xzf "$temp_file"
mv docmost-${RELEASE} /opt/docmost
cd /opt/docmost cd /opt/docmost
mv .env.example .env mv .env.example .env
mkdir data mkdir data
@@ -56,8 +52,7 @@ sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z
export NODE_OPTIONS="--max-old-space-size=2048" export NODE_OPTIONS="--max-old-space-size=2048"
$STD pnpm install $STD pnpm install
$STD pnpm build $STD pnpm build
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Configured Docmost"
msg_ok "Installed Docmost"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/docmost.service cat <<EOF >/etc/systemd/system/docmost.service
@@ -81,7 +76,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -24,17 +24,15 @@ if [[ "$CTTYPE" == "0" ]]; then
fi fi
msg_ok "Set Up Hardware Acceleration" msg_ok "Set Up Hardware Acceleration"
LATEST=$(curl -fsSL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4) fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
msg_info "Installing Emby" msg_info "Configuring Emby"
curl -fsSL "https://github.com/MediaBrowser/Emby.Releases/releases/download/${LATEST}/emby-server-deb_${LATEST}_amd64.deb" -o "emby-server-deb_${LATEST}_amd64.deb"
$STD dpkg -i emby-server-deb_${LATEST}_amd64.deb
if [[ "$CTTYPE" == "0" ]]; then if [[ "$CTTYPE" == "0" ]]; then
sed -i -e 's/^ssl-cert:x:104:$/render:x:104:root,emby/' -e 's/^render:x:108:root,emby$/ssl-cert:x:108:/' /etc/group sed -i -e 's/^ssl-cert:x:104:$/render:x:104:root,emby/' -e 's/^render:x:108:root,emby$/ssl-cert:x:108:/' /etc/group
else else
sed -i -e 's/^ssl-cert:x:104:$/render:x:104:emby/' -e 's/^render:x:108:emby$/ssl-cert:x:108:/' /etc/group sed -i -e 's/^ssl-cert:x:104:$/render:x:104:emby/' -e 's/^render:x:108:emby$/ssl-cert:x:108:/' /etc/group
fi fi
msg_ok "Installed Emby" msg_ok "Configured Emby"
motd_ssh motd_ssh
customize customize
@@ -42,5 +40,4 @@ customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
rm emby-server-deb_${LATEST}_amd64.deb
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,16 +13,39 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing dependencies"
$STD apt-get install -y ca-certificates
msg_ok "Installed dependencies"
msg_info "Fetching latest EMQX Enterprise version"
LATEST_VERSION=$(curl -fsSL https://www.emqx.com/en/downloads/enterprise | grep -oP '/en/downloads/enterprise/v\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n1)
if [[ -z "$LATEST_VERSION" ]]; then
msg_error "Failed to determine latest EMQX version"
exit 1
fi
msg_ok "Latest version: v$LATEST_VERSION"
DOWNLOAD_URL="https://www.emqx.com/en/downloads/enterprise/v$LATEST_VERSION/emqx-enterprise-${LATEST_VERSION}-debian12-amd64.deb"
DEB_FILE="/tmp/emqx-enterprise-${LATEST_VERSION}-debian12-amd64.deb"
msg_info "Downloading EMQX v$LATEST_VERSION"
$STD curl -fsSL -o "$DEB_FILE" "$DOWNLOAD_URL"
msg_ok "Downloaded EMQX"
msg_info "Installing EMQX" msg_info "Installing EMQX"
$STD bash <(curl -fsSL https://packagecloud.io/install/repositories/emqx/emqx/script.deb.sh) $STD apt-get install -y "$DEB_FILE"
$STD apt-get install -y emqx echo "$LATEST_VERSION" >~/.emqx
$STD systemctl enable --now emqx
msg_ok "Installed EMQX" msg_ok "Installed EMQX"
msg_info "Starting EMQX service"
$STD systemctl enable -q --now emqx
msg_ok "Enabled EMQX service"
motd_ssh motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
apt-get autoremove >/dev/null rm -f "$DEB_FILE"
apt-get autoclean >/dev/null $STD apt-get autoremove
$STD apt-get autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,15 +13,7 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing FFmpeg (Patience)" FFMPEG_VERSION="latest" FFMPEG_TYPE="medium" setup_ffmpeg
cd /usr/local/bin
curl -fsSL "https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz" -o "ffmpeg-release-amd64-static.tar.xz"
$STD tar -xvf ffmpeg-release-amd64-static.tar.xz
rm -f ffmpeg-*.tar.xz
cd ffmpeg-*
mv ffmpeg ffprobe /usr/local/bin/
rm -rf /usr/local/bin/ffmpeg-*
msg_ok "Installed FFmpeg"
msg_info "Setting Up Hardware Acceleration" msg_info "Setting Up Hardware Acceleration"
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools} $STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
@@ -34,15 +26,7 @@ if [[ "$CTTYPE" == "0" ]]; then
fi fi
msg_ok "Set Up Hardware Acceleration" msg_ok "Set Up Hardware Acceleration"
msg_info "Installing ErsatzTV" fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
temp_file=$(mktemp)
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
curl -fsSL "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz" -o "$temp_file"
tar -xzf "$temp_file"
mv /opt/ErsatzTV-${RELEASE}-linux-x64 /opt/ErsatzTV
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed ErsatzTV"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/ersatzTV.service cat <<EOF >/etc/systemd/system/ersatzTV.service
@@ -68,7 +52,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f ${temp_file}
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -29,6 +29,11 @@ $STD /opt/esphome/.venv/bin/python -m pip install --upgrade pip
$STD /opt/esphome/.venv/bin/python -m pip install esphome tornado esptool $STD /opt/esphome/.venv/bin/python -m pip install esphome tornado esptool
msg_ok "Setup and Installed ESPHome" msg_ok "Setup and Installed ESPHome"
msg_info "Linking esphome to /usr/local/bin"
rm -f /usr/local/bin/esphome
ln -s /opt/esphome/.venv/bin/esphome /usr/local/bin/esphome
msg_ok "Linked esphome binary"
msg_info "Creating Service" msg_info "Creating Service"
mkdir -p /root/config mkdir -p /root/config
cat <<EOF >/etc/systemd/system/esphomeDashboard.service cat <<EOF >/etc/systemd/system/esphomeDashboard.service

View File

@@ -14,21 +14,15 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y xdg-utils
xdg-utils
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw"
msg_info "Setup Excalidraw" msg_info "Configuring Excalidraw"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar xzf $temp_file
mv excalidraw-${RELEASE} /opt/excalidraw
cd /opt/excalidraw cd /opt/excalidraw
$STD yarn $STD yarn
echo "${RELEASE}" >/opt/excalidraw_version.txt
msg_ok "Setup Excalidraw" msg_ok "Setup Excalidraw"
msg_info "Creating Service" msg_info "Creating Service"
@@ -53,7 +47,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f $temp_file
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -14,17 +14,14 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg $STD apt-get install -y apache2
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main" >/etc/apt/sources.list.d/php.list
$STD apt-get update
$STD apt-get install -y \
apache2 \
libapache2-mod-php8.4 \
php8.4-{bcmath,cli,intl,curl,zip,gd,xml,mbstring,mysql} \
composer
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_MODULE="mysql" setup_php
setup_composer
setup_mariadb setup_mariadb
fetch_and_deploy_gh_release "firefly" "firefly-iii/firefly-iii"
LOCAL_IP=$(hostname -I | awk '{print $1}')
msg_info "Setting up database" msg_info "Setting up database"
DB_NAME=firefly DB_NAME=firefly
@@ -41,13 +38,7 @@ mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRI
} >>~/firefly.creds } >>~/firefly.creds
msg_ok "Set up database" msg_ok "Set up database"
msg_info "Installing Firefly III (Patience)" msg_info "Configuring Firefly III (Patience)"
LOCAL_IP=$(hostname -I | awk '{print $1}')
RELEASE=$(curl -fsSL https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
cd /opt
curl -fsSL "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz" -o "FireflyIII-v${RELEASE}.tar.gz"
mkdir -p /opt/firefly
tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly
chown -R www-data:www-data /opt/firefly chown -R www-data:www-data /opt/firefly
chmod -R 775 /opt/firefly/storage chmod -R 775 /opt/firefly/storage
cd /opt/firefly cd /opt/firefly
@@ -69,8 +60,7 @@ tar -xzf "DataImporter-v${IMPORTER_RELEASE}.tar.gz" -C /opt/firefly/dataimporter
cp /opt/firefly/dataimporter/.env.example /opt/firefly/dataimporter/.env cp /opt/firefly/dataimporter/.env.example /opt/firefly/dataimporter/.env
sed -i "s#FIREFLY_III_URL=#FIREFLY_III_URL=http://${LOCAL_IP}#g" /opt/firefly/dataimporter/.env sed -i "s#FIREFLY_III_URL=#FIREFLY_III_URL=http://${LOCAL_IP}#g" /opt/firefly/dataimporter/.env
chown -R www-data:www-data /opt/firefly chown -R www-data:www-data /opt/firefly
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Configured Firefly III"
msg_ok "Installed Firefly III"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/apache2/sites-available/firefly.conf cat <<EOF >/etc/apache2/sites-available/firefly.conf
@@ -112,7 +102,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/FireflyIII-v${RELEASE}.tar.gz"
rm -rf "/opt/DataImporter-v${IMPORTER_RELEASE}.tar.gz" rm -rf "/opt/DataImporter-v${IMPORTER_RELEASE}.tar.gz"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean

View File

@@ -15,8 +15,9 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y apt-transport-https $STD apt-get install -y \
$STD apt-get install -y xvfb apt-transport-https \
xvfb
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Chrome" msg_info "Installing Chrome"
@@ -26,13 +27,7 @@ $STD apt update
$STD apt install -y google-chrome-stable $STD apt install -y google-chrome-stable
msg_ok "Installed Chrome" msg_ok "Installed Chrome"
msg_info "Installing FlareSolverr" fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
RELEASE=$(curl -fsSL https://github.com/FlareSolverr/FlareSolverr/releases/latest | grep "title>Release" | cut -d " " -f 4)
$STD curl -fsSL "https://github.com/FlareSolverr/FlareSolverr/releases/download/$RELEASE/flaresolverr_linux_x64.tar.gz" -o "flaresolverr_linux_x64.tar.gz"
$STD tar -xzf flaresolverr_linux_x64.tar.gz -C /opt
$STD rm flaresolverr_linux_x64.tar.gz
echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
msg_ok "Installed FlareSolverr"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/flaresolverr.service cat <<EOF >/etc/systemd/system/flaresolverr.service

View File

@@ -14,17 +14,11 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y zip
zip \
postgresql-common
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Additional Dependencies" PG_VERSION="17" setup_postgresql
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg NODE_VERSION="20" setup_nodejs
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
echo "YES" | /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh &>/dev/null
$STD apt-get install -y postgresql-17 nodejs
msg_ok "Installed Additional Dependencies"
msg_info "Setting up Postgresql Database" msg_info "Setting up Postgresql Database"
DB_NAME="fluiddb" DB_NAME="fluiddb"
@@ -44,14 +38,9 @@ $STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
} >>~/$APPLICATION.creds } >>~/$APPLICATION.creds
msg_ok "Set up Postgresql Database" msg_ok "Set up Postgresql Database"
msg_info "Setup ${APPLICATION}" fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
tmp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
$STD unzip $tmp_file
mv ${APPLICATION}-${RELEASE}/ /opt/${APPLICATION}
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_info "Configuring ${APPLICATION}"
cat <<EOF >/opt/fluid-calendar/.env cat <<EOF >/opt/fluid-calendar/.env
DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}" DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}"
@@ -72,7 +61,7 @@ $STD npm install --legacy-peer-deps
$STD npm run prisma:generate $STD npm run prisma:generate
$STD npx prisma migrate deploy $STD npx prisma migrate deploy
$STD npm run build:os $STD npm run build:os
msg_ok "Setup ${APPLICATION}" msg_ok "Configuring ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/fluid-calendar.service cat <<EOF >/etc/systemd/system/fluid-calendar.service
@@ -95,7 +84,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f $tmp_file
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -13,13 +13,7 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" PHP_VERSION="8.2" PHP_MODULE="curl,xml,mbstring,intl,zip,pgsql,gmp" PHP_APACHE="YES" setup_php
$STD apt-get install -y \
apache2 \
php-{curl,dom,json,ctype,pgsql,gmp,mbstring,iconv,zip} \
libapache2-mod-php
msg_ok "Installed Dependencies"
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
msg_info "Setting up PostgreSQL" msg_info "Setting up PostgreSQL"
@@ -36,17 +30,14 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
} >>~/freshrss.creds } >>~/freshrss.creds
msg_ok "Set up PostgreSQL" msg_ok "Set up PostgreSQL"
msg_info "Installing FreshRSS" fetch_and_deploy_gh_release "freshrss" "FreshRSS/FreshRSS"
RELEASE=$(curl -fsSL https://api.github.com/repos/FreshRSS/FreshRSS/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
cd /opt msg_info "Configuring FreshRSS"
curl -fsSL "https://github.com/FreshRSS/FreshRSS/archive/refs/tags/${RELEASE}.zip" -o "${RELEASE}.zip"
$STD unzip "${RELEASE}.zip"
mv "/opt/FreshRSS-${RELEASE}" /opt/freshrss
cd /opt/freshrss cd /opt/freshrss
chown -R www-data:www-data /opt/freshrss chown -R www-data:www-data /opt/freshrss
chmod -R g+rX /opt/freshrss chmod -R g+rX /opt/freshrss
chmod -R g+w /opt/freshrss/data/ chmod -R g+w /opt/freshrss/data/
msg_ok "Installed FreshRSS" msg_ok "Configured FreshRSS"
msg_info "Setting up cron job for feed refresh" msg_info "Setting up cron job for feed refresh"
cat <<EOF >/etc/cron.d/freshrss-actualize cat <<EOF >/etc/cron.d/freshrss-actualize
@@ -83,7 +74,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf "/opt/${RELEASE}.zip"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -20,20 +20,15 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_go setup_go
fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') msg_info "Configuring gatus"
msg_info "Setting up gatus v${RELEASE}"
temp_file=$(mktemp)
mkdir -p /opt/gatus
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
cd /opt/gatus cd /opt/gatus
$STD go mod tidy $STD go mod tidy
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus . CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
setcap CAP_NET_RAW+ep gatus setcap CAP_NET_RAW+ep gatus
mv config.yaml config mv config.yaml config
echo "${RELEASE}" >/opt/gatus_version.txt msg_ok "Configured gatus"
msg_ok "Done setting up gatus"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/gatus.service cat <<EOF >/etc/systemd/system/gatus.service
@@ -58,10 +53,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f "$temp_file"
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"
motd_ssh
customize

View File

@@ -16,19 +16,19 @@ update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y \
nginx \ nginx \
ca-certificates ca-certificates \
libjemalloc2
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_mariadb setup_mysql
msg_info "Configuring Database" msg_info "Configuring Database"
DB_NAME=ghost DB_NAME=ghost
DB_USER=ghostuser DB_USER=ghostuser
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;" $STD mysql -u root -e "CREATE DATABASE $DB_NAME;"
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';" $STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
$STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
{ {
echo "Ghost-Credentials" echo "Ghost-Credentials"
echo "Ghost Database User: $DB_USER" echo "Ghost Database User: $DB_USER"
@@ -37,7 +37,7 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
} >>~/ghost.creds } >>~/ghost.creds
msg_ok "Configured MySQL" msg_ok "Configured MySQL"
NODE_VERSION="20" setup_nodejs NODE_VERSION="22" setup_nodejs
msg_info "Installing Ghost CLI" msg_info "Installing Ghost CLI"
$STD npm install ghost-cli@latest -g $STD npm install ghost-cli@latest -g

View File

@@ -19,10 +19,9 @@ $STD apt-get install -y git
$STD apt-get install -y sqlite3 $STD apt-get install -y sqlite3
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Gitea" fetch_and_deploy_gh_release "gitea" "go-gitea/gitea" "singlefile" "latest" "/usr/local/bin" "gitea-*-linux-amd64"
RELEASE=$(curl -fsSL https://github.com/go-gitea/gitea/releases/latest | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//')
curl -fsSL "https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64" -o "gitea-$RELEASE-linux-amd64" msg_info "Configuring Gitea"
mv gitea* /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea chmod +x /usr/local/bin/gitea
adduser --system --group --disabled-password --shell /bin/bash --home /etc/gitea gitea >/dev/null adduser --system --group --disabled-password --shell /bin/bash --home /etc/gitea gitea >/dev/null
mkdir -p /var/lib/gitea/{custom,data,log} mkdir -p /var/lib/gitea/{custom,data,log}
@@ -31,7 +30,7 @@ chmod -R 750 /var/lib/gitea/
chown root:gitea /etc/gitea chown root:gitea /etc/gitea
chmod 770 /etc/gitea chmod 770 /etc/gitea
sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh
msg_ok "Installed Gitea" msg_ok "Configured Gitea"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/gitea.service cat <<EOF >/etc/systemd/system/gitea.service

View File

@@ -3,7 +3,7 @@
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: CrazyWolf13 # Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/arunavo4/gitea-mirror # Source: https://github.com/RayLabsHQ/gitea-mirror
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color color
@@ -28,7 +28,7 @@ ln -sf /opt/bun/bin/bun /usr/local/bin/bun
ln -sf /opt/bun/bin/bun /usr/local/bin/bunx ln -sf /opt/bun/bin/bun /usr/local/bin/bunx
msg_ok "Installed Bun" msg_ok "Installed Bun"
fetch_and_deploy_gh_release "gitea-mirror" "arunavo4/gitea-mirror" fetch_and_deploy_gh_release "gitea-mirror" "RayLabsHQ/gitea-mirror"
msg_info "Installing gitea-mirror" msg_info "Installing gitea-mirror"
cd /opt/gitea-mirror cd /opt/gitea-mirror

View File

@@ -13,12 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Glance" fetch_and_deploy_gh_release "glance" "glanceapp/glance" "prebuild" "latest" "/opt/glance" "glance-linux-amd64.tar.gz"
RELEASE=$(curl -fsSL https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
cd /opt msg_info "Configuring Glance"
curl -fsSL "https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz" -o "glance-linux-amd64.tar.gz"
mkdir -p /opt/glance
tar -xzf glance-linux-amd64.tar.gz -C /opt/glance
cat <<EOF >/opt/glance/glance.yml cat <<EOF >/opt/glance/glance.yml
pages: pages:
- name: Startpage - name: Startpage
@@ -39,9 +36,7 @@ pages:
- title: Helper Scripts - title: Helper Scripts
url: https://github.com/community-scripts/ProxmoxVE url: https://github.com/community-scripts/ProxmoxVE
EOF EOF
msg_ok "Configured Glance"
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Glance"
msg_info "Creating Service" msg_info "Creating Service"
service_path="/etc/systemd/system/glance.service" service_path="/etc/systemd/system/glance.service"
@@ -67,7 +62,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf /opt/glance-linux-amd64.tar.gz
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -22,18 +22,16 @@ curl -fsSL "http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1
$STD dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb $STD dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="20" setup_nodejs NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
msg_info "Setup ${APPLICATION}" msg_info "Setup ${APPLICATION}"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/HabitRPG/habitica/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/HabitRPG/habitica/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf $temp_file
mv habitica-${RELEASE}/ /opt/habitica
cd /opt/habitica cd /opt/habitica
$STD npm i $STD npm i
$STD npm run postinstall
$STD npm run client:build
$STD gulp build:prod
cp config.json.example config.json cp config.json.example config.json
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Setup ${APPLICATION}" msg_ok "Setup ${APPLICATION}"
msg_info "Creating Service" msg_info "Creating Service"
@@ -91,7 +89,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -f $temp_file
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -66,6 +66,7 @@ $STD apt-get install --no-install-recommends -y \
mesa-vulkan-drivers \ mesa-vulkan-drivers \
ocl-icd-libopencl1 \ ocl-icd-libopencl1 \
tini \ tini \
libaom-dev \
zlib1g zlib1g
$STD apt-get install -y \ $STD apt-get install -y \
libgdk-pixbuf-2.0-dev librsvg2-dev libtool libgdk-pixbuf-2.0-dev librsvg2-dev libtool
@@ -93,7 +94,7 @@ if [[ "$CTTYPE" == "0" ]]; then
fi fi
msg_ok "Dependencies Installed" msg_ok "Dependencies Installed"
read -r -p "Install OpenVINO dependencies for Intel HW-accelerated machine-learning? y/N " prompt read -r -p "${TAB3}Install OpenVINO dependencies for Intel HW-accelerated machine-learning? y/N " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing OpenVINO dependencies" msg_info "Installing OpenVINO dependencies"
touch ~/.openvino touch ~/.openvino
@@ -153,7 +154,6 @@ if [[ -f ~/.openvino ]]; then
fi fi
msg_ok "Packages from Testing Repo Installed" msg_ok "Packages from Testing Repo Installed"
# Fix default DB collation issue after libc update
$STD sudo -u postgres psql -c "ALTER DATABASE postgres REFRESH COLLATION VERSION;" $STD sudo -u postgres psql -c "ALTER DATABASE postgres REFRESH COLLATION VERSION;"
$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME REFRESH COLLATION VERSION;" $STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME REFRESH COLLATION VERSION;"
@@ -218,7 +218,7 @@ $STD cmake --preset=release-noplugins \
-DWITH_LIBSHARPYUV=ON \ -DWITH_LIBSHARPYUV=ON \
-DWITH_LIBDE265=ON \ -DWITH_LIBDE265=ON \
-DWITH_AOM_DECODER=OFF \ -DWITH_AOM_DECODER=OFF \
-DWITH_AOM_ENCODER=OFF \ -DWITH_AOM_ENCODER=ON \
-DWITH_X265=OFF \ -DWITH_X265=OFF \
-DWITH_EXAMPLES=OFF \ -DWITH_EXAMPLES=OFF \
.. ..
@@ -254,7 +254,8 @@ $STD make clean
cd "$STAGING_DIR" cd "$STAGING_DIR"
SOURCE=$SOURCE_DIR/libvips SOURCE=$SOURCE_DIR/libvips
: "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}" # : "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
: "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
$STD git clone https://github.com/libvips/libvips.git "$SOURCE" $STD git clone https://github.com/libvips/libvips.git "$SOURCE"
cd "$SOURCE" cd "$SOURCE"
$STD git reset --hard "$LIBVIPS_REVISION" $STD git reset --hard "$LIBVIPS_REVISION"
@@ -301,6 +302,10 @@ cd "$SRC_DIR"
cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/ cp -a server/{node_modules,dist,bin,resources,package.json,package-lock.json,start*.sh} "$APP_DIR"/
cp -a web/build "$APP_DIR"/www cp -a web/build "$APP_DIR"/www
cp LICENSE "$APP_DIR" cp LICENSE "$APP_DIR"
cd "$APP_DIR"
export SHARP_FORCE_GLOBAL_LIBVIPS=true
$STD npm install sharp
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
msg_ok "Installed Immich Web Components" msg_ok "Installed Immich Web Components"
cd "$SRC_DIR"/machine-learning cd "$SRC_DIR"/machine-learning
@@ -331,8 +336,6 @@ ln -s "$UPLOAD_DIR" "$APP_DIR"/upload
ln -s "$UPLOAD_DIR" "$ML_DIR"/upload ln -s "$UPLOAD_DIR" "$ML_DIR"/upload
msg_info "Installing Immich CLI" msg_info "Installing Immich CLI"
$STD npm install --build-from-source sharp
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
$STD npm i -g @immich/cli $STD npm i -g @immich/cli
msg_ok "Installed Immich CLI" msg_ok "Installed Immich CLI"

View File

@@ -39,8 +39,7 @@ msg_ok "Installed Docker"
echo "${TAB3}Choose the database for Komodo installation:" echo "${TAB3}Choose the database for Komodo installation:"
echo "${TAB3}1) MongoDB (recommended)" echo "${TAB3}1) MongoDB (recommended)"
echo "${TAB3}2) SQLite" echo "${TAB3}2) FerretDB"
echo "${TAB3}3) PostgreSQL"
read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE read -rp "${TAB3}Enter your choice (default: 1): " DB_CHOICE
DB_CHOICE=${DB_CHOICE:-1} DB_CHOICE=${DB_CHOICE:-1}
@@ -49,10 +48,7 @@ case $DB_CHOICE in
DB_COMPOSE_FILE="mongo.compose.yaml" DB_COMPOSE_FILE="mongo.compose.yaml"
;; ;;
2) 2)
DB_COMPOSE_FILE="sqlite.compose.yaml" DB_COMPOSE_FILE="ferretdb.compose.yaml"
;;
3)
DB_COMPOSE_FILE="postgres.compose.yaml"
;; ;;
*) *)
echo "Invalid choice. Defaulting to MongoDB." echo "Invalid choice. Defaulting to MongoDB."

View File

@@ -14,22 +14,17 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y make $STD apt-get install -y \
$STD apt-get install -y g++ ca-certificates \
$STD apt-get install -y gcc build-essential
$STD apt-get install -y ca-certificates
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
fetch_and_deploy_gh_release "mafl" "hywax/mafl"
RELEASE=$(curl -fsSL https://api.github.com/repos/hywax/mafl/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Installing Mafl v${RELEASE}" msg_info "Installing Mafl v${RELEASE}"
curl -fsSL "https://github.com/hywax/mafl/archive/refs/tags/v${RELEASE}.tar.gz" -o "v${RELEASE}.tar.gz"
tar -xzf v${RELEASE}.tar.gz
mkdir -p /opt/mafl/data mkdir -p /opt/mafl/data
curl -fsSL "https://raw.githubusercontent.com/hywax/mafl/main/.example/config.yml" -o "/opt/mafl/data/config.yml" curl -fsSL "https://raw.githubusercontent.com/hywax/mafl/main/.example/config.yml" -o "/opt/mafl/data/config.yml"
mv mafl-${RELEASE}/* /opt/mafl
rm -rf mafl-${RELEASE}
cd /opt/mafl cd /opt/mafl
export NUXT_TELEMETRY_DISABLED=true export NUXT_TELEMETRY_DISABLED=true
$STD yarn install $STD yarn install

View File

@@ -55,7 +55,7 @@ sed -i 's/NODE_ENV=production/NODE_ENV=development/g' /opt/outline/.env
sed -i "s/generate_a_new_key/${SECRET_KEY}/g" /opt/outline/.env sed -i "s/generate_a_new_key/${SECRET_KEY}/g" /opt/outline/.env
sed -i "s/user:pass@postgres/${DB_USER}:${DB_PASS}@localhost/g" /opt/outline/.env sed -i "s/user:pass@postgres/${DB_USER}:${DB_PASS}@localhost/g" /opt/outline/.env
sed -i 's/redis:6379/localhost:6379/g' /opt/outline/.env sed -i 's/redis:6379/localhost:6379/g' /opt/outline/.env
sed -i "32s#URL=#URL=http://${LOCAL_IP}#g" /opt/outline/.env sed -i "5s#URL=#URL=http://${LOCAL_IP}#g" /opt/outline/.env
sed -i 's/FORCE_HTTPS=true/FORCE_HTTPS=false/g' /opt/outline/.env sed -i 's/FORCE_HTTPS=true/FORCE_HTTPS=false/g' /opt/outline/.env
$STD yarn install --frozen-lockfile $STD yarn install --frozen-lockfile
export NODE_OPTIONS="--max-old-space-size=3584" export NODE_OPTIONS="--max-old-space-size=3584"

View File

@@ -45,12 +45,12 @@ fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/o
msg_info "Configuring PLANKA" msg_info "Configuring PLANKA"
LOCAL_IP=$(hostname -I | awk '{print $1}') LOCAL_IP=$(hostname -I | awk '{print $1}')
SECRET_KEY=$(openssl rand -hex 64) SECRET_KEY=$(openssl rand -hex 64)
cd /opt/planka/planka cd /opt/planka
$STD npm install $STD npm install
cp .env.sample .env cp .env.sample .env
sed -i "s#http://localhost:1337#http://$LOCAL_IP:1337#g" /opt/planka/planka/.env sed -i "s#http://localhost:1337#http://$LOCAL_IP:1337#g" /opt/planka/.env
sed -i "s#postgres@localhost#planka:$DB_PASS@localhost#g" /opt/planka/planka/.env sed -i "s#postgres@localhost#planka:$DB_PASS@localhost#g" /opt/planka/.env
sed -i "s#notsecretkey#$SECRET_KEY#g" /opt/planka/planka/.env sed -i "s#notsecretkey#$SECRET_KEY#g" /opt/planka/.env
$STD npm run db:init $STD npm run db:init
msg_ok "Configured PLANKA" msg_ok "Configured PLANKA"
@@ -84,7 +84,7 @@ Description=planka Service
After=network.target After=network.target
[Service] [Service]
WorkingDirectory=/opt/planka/planka WorkingDirectory=/opt/planka
ExecStart=/usr/bin/npm start --prod ExecStart=/usr/bin/npm start --prod
Restart=always Restart=always

View File

@@ -15,7 +15,6 @@ update_os
msg_info "Installing Dependencies (Patience)" msg_info "Installing Dependencies (Patience)"
$STD apt-get install -y \ $STD apt-get install -y \
git \
automake \ automake \
autoconf \ autoconf \
libtool \ libtool \
@@ -25,10 +24,26 @@ $STD apt-get install -y \
make \ make \
g++ \ g++ \
unpaper \ unpaper \
fonts-urw-base35 \
qpdf \ qpdf \
poppler-utils poppler-utils
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PYTHON_VERSION="3.12" setup_uv
JAVA_VERSION="21" setup_java
read -r -p "${TAB3}Do you want to Stirling-PDF with Login? (no/n = without Login) [Y/n] " response
response=${response,,} # Convert to lowercase
login_mode="false"
if [[ "$response" == "y" || "$response" == "yes" || -z "$response" ]]; then
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF-with-login.jar"
mv /opt/Stirling-PDF/Stirling-PDF-with-login.jar /opt/Stirling-PDF/Stirling-PDF.jar
touch ~/.Stirling-PDF-login
login_mode="true"
else
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF.jar"
fi
msg_info "Installing LibreOffice Components" msg_info "Installing LibreOffice Components"
$STD apt-get install -y \ $STD apt-get install -y \
libreoffice-writer \ libreoffice-writer \
@@ -37,32 +52,35 @@ $STD apt-get install -y \
libreoffice-core \ libreoffice-core \
libreoffice-common \ libreoffice-common \
libreoffice-base-core \ libreoffice-base-core \
python3-uno libreoffice-script-provider-python \
libreoffice-java-common \
unoconv \
pngquant \
weasyprint
msg_ok "Installed LibreOffice Components" msg_ok "Installed LibreOffice Components"
msg_info "Installing Python Dependencies" msg_info "Installing Python Dependencies"
$STD apt-get install -y \ mkdir -p /tmp/stirling-pdf
python3 \ $STD uv venv /opt/.venv
python3-pip export PATH="/opt/.venv/bin:$PATH"
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED source /opt/.venv/bin/activate
$STD pip3 install \ $STD uv pip install --upgrade pip
uno \ $STD uv pip install \
opencv-python-headless \ opencv-python-headless \
unoconv \ ocrmypdf \
pngquant \ pillow \
WeasyPrint pdf2image
$STD apt-get install -y python3-uno python3-pip
$STD pip3 install --break-system-packages unoserver
ln -sf /opt/.venv/bin/python3 /usr/local/bin/python3
ln -sf /opt/.venv/bin/pip /usr/local/bin/pip
msg_ok "Installed Python Dependencies" msg_ok "Installed Python Dependencies"
msg_info "Installing Azul Zulu"
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB1998361219BD9C9" -o "/etc/apt/trusted.gpg.d/zulu-repo.asc"
curl -fsSL "https://cdn.azul.com/zulu/bin/zulu-repo_1.0.0-3_all.deb" -o "/zulu-repo_1.0.0-3_all.deb"
$STD dpkg -i zulu-repo_1.0.0-3_all.deb
$STD apt-get update
$STD apt-get -y install zulu17-jdk
msg_ok "Installed Azul Zulu"
msg_info "Installing JBIG2" msg_info "Installing JBIG2"
$STD git clone https://github.com/agl/jbig2enc /opt/jbig2enc $STD curl -fsSL -o /tmp/jbig2enc.tar.gz https://github.com/agl/jbig2enc/archive/refs/tags/0.30.tar.gz
mkdir -p /opt/jbig2enc
tar -xzf /tmp/jbig2enc.tar.gz -C /opt/jbig2enc --strip-components=1
cd /opt/jbig2enc cd /opt/jbig2enc
$STD bash ./autogen.sh $STD bash ./autogen.sh
$STD bash ./configure $STD bash ./configure
@@ -74,23 +92,46 @@ msg_info "Installing Language Packs (Patience)"
$STD apt-get install -y 'tesseract-ocr-*' $STD apt-get install -y 'tesseract-ocr-*'
msg_ok "Installed Language Packs" msg_ok "Installed Language Packs"
msg_info "Installing Stirling-PDF (Additional Patience)" msg_info "Creating Environment Variables"
RELEASE=$(curl -fsSL https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') cat <<EOF >/opt/Stirling-PDF/.env
curl -fsSL "https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v${RELEASE}.tar.gz" -o "v${RELEASE}.tar.gz" # Java tuning
tar -xzf v${RELEASE}.tar.gz JAVA_BASE_OPTS="-XX:+UnlockExperimentalVMOptions -XX:MaxRAMPercentage=75 -XX:InitiatingHeapOccupancyPercent=20 -XX:+G1PeriodicGCInvokesConcurrent -XX:G1PeriodicGCInterval=10000 -XX:+UseStringDeduplication -XX:G1PeriodicGCSystemLoadThreshold=70"
cd Stirling-PDF-$RELEASE JAVA_CUSTOM_OPTS=""
chmod +x ./gradlew
$STD ./gradlew build # LibreOffice
mkdir -p /opt/Stirling-PDF PATH=/opt/.venv/bin:/usr/lib/libreoffice/program:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
touch /opt/Stirling-PDF/.env UNO_PATH=/usr/lib/libreoffice/program
mv ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/ URE_BOOTSTRAP=file:///usr/lib/libreoffice/program/fundamentalrc
mv scripts /opt/Stirling-PDF/ PYTHONPATH=/usr/lib/libreoffice/program:/opt/.venv/lib/python3.12/site-packages
ln -s /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar /opt/Stirling-PDF/Stirling-PDF.jar LD_LIBRARY_PATH=/usr/lib/libreoffice/program
ln -s /usr/share/tesseract-ocr/5/tessdata/ /usr/share/tessdata
msg_ok "Installed Stirling-PDF" STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf
TMPDIR=/tmp/stirling-pdf
TEMP=/tmp/stirling-pdf
TMP=/tmp/stirling-pdf
# Paths
PATH=/opt/.venv/bin:/usr/lib/libreoffice/program:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
EOF
if [[ "$login_mode" == "true" ]]; then
cat <<EOF >>/opt/Stirling-PDF/.env
# activate Login
DISABLE_ADDITIONAL_FEATURES=false
SECURITY_ENABLELOGIN=true
# login credentials
SECURITY_INITIALLOGIN_USERNAME=admin
SECURITY_INITIALLOGIN_PASSWORD=stirling
EOF
fi
msg_ok "Created Environment Variables"
msg_info "Refreshing Font Cache"
$STD fc-cache -fv
msg_ok "Font Cache Updated"
msg_info "Creating Service" msg_info "Creating Service"
# Create LibreOffice listener service
cat <<EOF >/etc/systemd/system/libreoffice-listener.service cat <<EOF >/etc/systemd/system/libreoffice-listener.service
[Unit] [Unit]
Description=LibreOffice Headless Listener Service Description=LibreOffice Headless Listener Service
@@ -107,14 +148,6 @@ Restart=always
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
# Set up environment variables
cat <<EOF >/opt/Stirling-PDF/.env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/libreoffice/program
UNO_PATH=/usr/lib/libreoffice/program
PYTHONPATH=/usr/lib/python3/dist-packages:/usr/lib/libreoffice/program
LD_LIBRARY_PATH=/usr/lib/libreoffice/program
EOF
cat <<EOF >/etc/systemd/system/stirlingpdf.service cat <<EOF >/etc/systemd/system/stirlingpdf.service
[Unit] [Unit]
Description=Stirling-PDF service Description=Stirling-PDF service
@@ -137,16 +170,32 @@ RestartSec=10
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
# Enable and start services cat <<EOF >/etc/systemd/system/unoserver.service
[Unit]
Description=UnoServer RPC Interface
After=libreoffice-listener.service
Requires=libreoffice-listener.service
[Service]
Type=simple
ExecStart=/usr/local/bin/unoserver --port 2003 --interface 127.0.0.1
Restart=always
EnvironmentFile=/opt/Stirling-PDF/.env
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now libreoffice-listener systemctl enable -q --now libreoffice-listener
systemctl enable -q --now stirlingpdf systemctl enable -q --now stirlingpdf
systemctl enable -q --now unoserver
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf v${RELEASE}.tar.gz /zulu-repo_1.0.0-3_all.deb rm -f /tmp/jbig2enc.tar.gz
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -14,16 +14,12 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y ffmpeg $STD apt-get install -y \
$STD apt-get install -y vlc ffmpeg \
vlc
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Threadfin" fetch_and_deploy_gh_release "threadfin" "threadfin/threadfin" "singlefile" "latest" "/opt/threadfin" "Threadfin_linux_amd64"
mkdir -p /opt/threadfin
curl -fsSL "https://github.com/Threadfin/Threadfin/releases/latest/download/Threadfin_linux_amd64" -o "/opt/threadfin/threadfin"
chmod +x /opt/threadfin/threadfin
msg_ok "Installed Threadfin"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/threadfin.service cat <<EOF >/etc/systemd/system/threadfin.service

View File

@@ -83,11 +83,6 @@ update_os() {
msg_info "Updating Container OS" msg_info "Updating Container OS"
$STD apk -U upgrade $STD apk -U upgrade
msg_ok "Updated Container OS" msg_ok "Updated Container OS"
msg_info "Installing core dependencies"
$STD apk update
$STD apk add newt curl openssh nano mc ncurses gpg
msg_ok "Core dependencies installed"
} }
# This function modifies the message of the day (motd) and SSH settings # This function modifies the message of the day (motd) and SSH settings

Some files were not shown because too many files have changed in this diff Show More