Compare commits

...

76 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
7d1788a079 Update CHANGELOG.md (#7630)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-14 00:13:26 +00:00
community-scripts-pr-app[bot]
83e04257d9 Update versions.json (#7629)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-14 02:13:05 +02:00
community-scripts-pr-app[bot]
11c33e34d2 Update CHANGELOG.md (#7628)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-13 23:12:13 +00:00
Chris
52df77cab5 Palmr: hotfix #7622 (#7625) 2025-09-14 01:11:54 +02:00
community-scripts-pr-app[bot]
17f6264a03 Update CHANGELOG.md (#7627)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-13 20:07:39 +00:00
Jonathan Wukitsch
9463b0b808 fix: tagline grammar (#7621) 2025-09-13 22:07:19 +02:00
community-scripts-pr-app[bot]
eba83f3848 Update CHANGELOG.md (#7626)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-13 19:44:12 +00:00
Tobias
e3f6ea73c3 pdm: refactor for beta version (#7619)
* pdm: refactor for beta version

* pdm: refactor for beta and deb13 preparation
2025-09-13 21:43:53 +02:00
community-scripts-pr-app[bot]
06247e742c Update CHANGELOG.md (#7623)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-13 17:41:10 +00:00
Tobias
4606782d6b ollama: fix: ccurl continue on interrupts (#7620) 2025-09-13 19:40:46 +02:00
community-scripts-pr-app[bot]
a988acf2d5 Update versions.json (#7618)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-13 14:04:49 +02:00
community-scripts-pr-app[bot]
5f44007372 Update CHANGELOG.md (#7612)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-13 07:20:42 +00:00
Chris
8b87272e38 Immich: bump to v1.142.0 (#7594)
* Immich: cleanup

- removing some redundant/unused stuff
- restoring proper output suppression for machine-learning build
- add more messages during custom library build

* Immich: bump to v1.142.0
2025-09-13 09:20:22 +02:00
community-scripts-pr-app[bot]
ceccf08f69 Update CHANGELOG.md (#7611)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-13 07:12:24 +00:00
Jonathan Wukitsch
5a80cd7e02 fix: grammar/capitalization for links and taglines (#7609)
* fix: grammar/capitalization for links and taglines

* fix: update number of total scripts
2025-09-13 09:11:59 +02:00
community-scripts-pr-app[bot]
d617a49766 Update CHANGELOG.md (#7608)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-13 00:12:34 +00:00
community-scripts-pr-app[bot]
7c0d79c115 Update versions.json (#7607)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-13 02:12:13 +02:00
community-scripts-pr-app[bot]
0d4a508543 Update CHANGELOG.md (#7606)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-12 19:28:52 +00:00
CanbiZ
f979dd2277 [core]: add fallback if mariadb upstream unreachable (#7599) 2025-09-12 21:28:28 +02:00
community-scripts-pr-app[bot]
87de220511 Update CHANGELOG.md (#7605)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-12 18:49:50 +00:00
Slaviša Arežina
481e70b0aa Increase resources (#7600) 2025-09-12 20:49:25 +02:00
community-scripts-pr-app[bot]
6c3a16e579 Update CHANGELOG.md (#7604)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-12 18:21:43 +00:00
community-scripts-pr-app[bot]
394f91c994 Update CHANGELOG.md (#7603)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-12 18:21:19 +00:00
community-scripts-pr-app[bot]
63a268d6c5 Update date in json (#7602)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-12 18:21:16 +00:00
push-app-to-main[bot]
9ee6e23a59 Stylus (#7588)
* 'Add new script'

* Update stylus.sh

* Update stylus-install.sh

* Update stylus.json

* fix stylus update

* cleanup

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-09-12 20:20:58 +02:00
community-scripts-pr-app[bot]
eceb1cd53c Update CHANGELOG.md (#7601)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-12 18:20:30 +00:00
rell3k
719c55655d Update post-pve-install.sh (#7598)
Create directory if it doesn't exist.
2025-09-12 20:20:06 +02:00
community-scripts-pr-app[bot]
aeb15c7ea1 Update CHANGELOG.md (#7592)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-12 12:08:11 +00:00
community-scripts-pr-app[bot]
0c7a366782 Update date in json (#7591)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-12 12:07:51 +00:00
push-app-to-main[bot]
93a3a572d4 uhf (#7589)
* 'Add new script'

* Update uhf.sh

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-09-12 14:07:30 +02:00
community-scripts-pr-app[bot]
8b2645a529 Update versions.json (#7590)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-12 14:06:23 +02:00
community-scripts-pr-app[bot]
b72e132699 Update CHANGELOG.md (#7587)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-12 10:30:23 +00:00
webmogul1
f4df8e2ccc Update openwebui.sh (#7582) 2025-09-12 12:30:00 +02:00
community-scripts-pr-app[bot]
f03f004226 Update CHANGELOG.md (#7584)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-12 00:13:59 +00:00
community-scripts-pr-app[bot]
b13c840bda Update versions.json (#7583)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-12 02:13:39 +02:00
community-scripts-pr-app[bot]
ce90647bda Update CHANGELOG.md (#7581)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-11 19:04:00 +00:00
push-app-to-main[bot]
164e487090 telegraf (#7576) 2025-09-11 21:03:34 +02:00
community-scripts-pr-app[bot]
a4660adedd Update CHANGELOG.md (#7580)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-11 16:47:46 +00:00
Siyuan Gao
9352eec854 Fix frontend url (#7578) 2025-09-11 18:47:21 +02:00
community-scripts-pr-app[bot]
4478f8f6e0 Update versions.json (#7574)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-11 14:05:43 +02:00
community-scripts-pr-app[bot]
d69cbcd941 Update CHANGELOG.md (#7573)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-11 12:01:38 +00:00
Bram Suurd
affcfd06cf Add margin-bottom to Most Viewed Scripts header (#7572) 2025-09-11 14:01:14 +02:00
community-scripts-pr-app[bot]
b94b088c19 Update CHANGELOG.md (#7571)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-11 11:15:36 +00:00
dvino
5385382a88 post-pve-install mobile nag fix (#7567) 2025-09-11 13:15:07 +02:00
community-scripts-pr-app[bot]
d06ad37a22 Update CHANGELOG.md (#7570)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-11 10:44:37 +00:00
Slaviša Arežina
72c7d4199b Sort functions (#7569) 2025-09-11 12:44:13 +02:00
community-scripts-pr-app[bot]
2e75ced83f Update CHANGELOG.md (#7568)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-11 09:49:40 +00:00
Burrito
9a28ce0263 alpine-install: switch to using GitHub to fetch tools when using GitHub (#7566) 2025-09-11 11:49:14 +02:00
community-scripts-pr-app[bot]
9ed2507bdc Update CHANGELOG.md (#7564)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-11 00:12:39 +00:00
community-scripts-pr-app[bot]
c617870c2b Update versions.json (#7563)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-11 02:12:16 +02:00
community-scripts-pr-app[bot]
eb71d21ea3 Update CHANGELOG.md (#7559)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 17:56:21 +00:00
Chris
762452b2b3 Palmr: fix #7556 (#7558) 2025-09-10 19:55:54 +02:00
community-scripts-pr-app[bot]
31cd3e3119 Update CHANGELOG.md (#7557)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 16:14:06 +00:00
Tobias
c25dba9212 Remove Pingvin Share (#7553) 2025-09-10 18:13:40 +02:00
community-scripts-pr-app[bot]
52cefe4a00 Update CHANGELOG.md (#7555)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 14:22:22 +00:00
Chris
7b8fcab242 Wizarr: fix #7545 (#7552)
- ensure to delete contents of migrations/versions folder prior to flask
operations
- use `--frozen` for uv operations rather than locking
2025-09-10 16:21:52 +02:00
community-scripts-pr-app[bot]
b733e8b5ea Update CHANGELOG.md (#7554)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 14:20:55 +00:00
CanbiZ
4a4e67a3cf Refactor: audiobookshelf (#7538)
Increase default disk size from 4GB to 5GB and mark audiobookshelf as updateable in JSON. Update install script to explicitly install ffmpeg and set FFMPEG/FFPROBE paths in /etc/default/audiobookshelf. Revise update logic to use /etc/default/audiobookshelf as installation check and perform apt updates/upgrades.
2025-09-10 16:20:26 +02:00
community-scripts-pr-app[bot]
b00feea00d Update CHANGELOG.md (#7549)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 12:41:46 +00:00
CanbiZ
c250cec418 Refactor: Blocky (#7537)
Updated blocky.sh to improve update logic, including backup and restore of config, service management, and release fetching. Refactored blocky-install.sh to use fetch_and_deploy_gh_release for installation, removing manual release handling. Set Blocky as updateable in blocky.json.
2025-09-10 14:41:25 +02:00
community-scripts-pr-app[bot]
a0af0f5196 Update CHANGELOG.md (#7548)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 12:38:50 +00:00
Chris
2f0b6e10ab Palmr v3.2.1-beta (#7526)
- Add CUSTOM_PATH env var with comment
- Update JSON: add note about new env var
- Update JSON: remove warning about RAM - now advisable to leave as-is
2025-09-10 14:38:19 +02:00
community-scripts-pr-app[bot]
a41364d91d Update CHANGELOG.md (#7547)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 12:37:41 +00:00
CanbiZ
e580a5d9c1 Add external installer warnings and user confirmation (#7539)
Added explicit warnings and user confirmation prompts to install scripts that run external installers from third-party sources. Updated JSON metadata to remove warning notes about external sources, as the scripts now handle user notification and consent directly. This improves transparency and user safety during installation.
2025-09-10 14:37:12 +02:00
community-scripts-pr-app[bot]
9d059b2a13 Update versions.json (#7546)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 14:05:11 +02:00
community-scripts-pr-app[bot]
6e32eebdf0 Update CHANGELOG.md (#7544)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 11:41:03 +00:00
community-scripts-pr-app[bot]
7f3ebd4296 Update CHANGELOG.md (#7543)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 11:40:49 +00:00
community-scripts-pr-app[bot]
0c4d55bd78 Update date in json (#7542)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-10 11:40:41 +00:00
push-app-to-main[bot]
8f05be3f6b Autocaliweb (#7515)
* 'Add new script'

* cleanup

* Update logo URL in autocaliweb.json

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-09-10 13:40:15 +02:00
community-scripts-pr-app[bot]
e06cd4b28c Update CHANGELOG.md (#7541)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 11:00:42 +00:00
CanbiZ
b9242b3232 fix: pmg - split no-nag script into separate config files (#7540) 2025-09-10 13:00:19 +02:00
community-scripts-pr-app[bot]
63f6d772ea Update CHANGELOG.md (#7536)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 07:44:30 +00:00
CanbiZ
652df1f370 Set updateable to true for all JSON app configs (#7534) 2025-09-10 09:44:09 +02:00
community-scripts-pr-app[bot]
f4b5baf308 Update CHANGELOG.md (#7535)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-10 07:15:02 +00:00
Michel Roegl-Brunner
cc36fd5434 Booklore: Add Bookdrop location to .env (#7533) 2025-09-10 09:14:41 +02:00
CanbiZ
3e182978ad Improve npmplus credential retrieval and messaging (#7532)
* Improve npmplus credential retrieval and messaging

Enhanced the install script to attempt live log monitoring for credentials if not found initially, and updated the info message in npmplus.json to guide users to check docker logs if the credentials file is missing.

* Update npmplus.json

* Change updateable status to true in npmplus.json
2025-09-10 09:14:15 +02:00
100 changed files with 3103 additions and 2030 deletions

View File

@@ -10,8 +10,107 @@
> [!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.
## 2025-09-14
## 2025-09-13
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Palmr: hotfix #7622 [@vhsdream](https://github.com/vhsdream) ([#7625](https://github.com/community-scripts/ProxmoxVE/pull/7625))
- ollama: fix: ccurl continue on interrupts [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7620](https://github.com/community-scripts/ProxmoxVE/pull/7620))
- #### 🔧 Refactor
- pdm: refactor for beta version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7619](https://github.com/community-scripts/ProxmoxVE/pull/7619))
- Immich: bump to v1.142.0 [@vhsdream](https://github.com/vhsdream) ([#7594](https://github.com/community-scripts/ProxmoxVE/pull/7594))
### 🌐 Website
- fix: tagline grammar [@jonathanwuki](https://github.com/jonathanwuki) ([#7621](https://github.com/community-scripts/ProxmoxVE/pull/7621))
- fix: grammar/capitalization for links and taglines [@jonathanwuki](https://github.com/jonathanwuki) ([#7609](https://github.com/community-scripts/ProxmoxVE/pull/7609))
## 2025-09-12
### 🆕 New Scripts
- Stylus ([#7588](https://github.com/community-scripts/ProxmoxVE/pull/7588))
- UHF ([#7589](https://github.com/community-scripts/ProxmoxVE/pull/7589))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Tweak: post-pve-install: create folder if Not exist [@JVKeller](https://github.com/JVKeller) ([#7598](https://github.com/community-scripts/ProxmoxVE/pull/7598))
- Update openwebui.sh [@webmogul1](https://github.com/webmogul1) ([#7582](https://github.com/community-scripts/ProxmoxVE/pull/7582))
- #### ✨ New Features
- [core]: add fallback if mariadb upstream unreachable [@MickLesk](https://github.com/MickLesk) ([#7599](https://github.com/community-scripts/ProxmoxVE/pull/7599))
- ESPHome: Increase default disk size [@tremor021](https://github.com/tremor021) ([#7600](https://github.com/community-scripts/ProxmoxVE/pull/7600))
## 2025-09-11
### 🆕 New Scripts
- telegraf ([#7576](https://github.com/community-scripts/ProxmoxVE/pull/7576))
### 🚀 Updated Scripts
- [core] Sort tools.func functions alphabeticaly [@tremor021](https://github.com/tremor021) ([#7569](https://github.com/community-scripts/ProxmoxVE/pull/7569))
- mobile subscription nag fix [@dvino](https://github.com/dvino) ([#7567](https://github.com/community-scripts/ProxmoxVE/pull/7567))
- #### 🐞 Bug Fixes
- alpine-install: switch to using GitHub to fetch tools when using GitHub [@burritosoftware](https://github.com/burritosoftware) ([#7566](https://github.com/community-scripts/ProxmoxVE/pull/7566))
### 🌐 Website
- #### 🐞 Bug Fixes
- Add margin-bottom to Most Viewed Scripts header to unifi UI [@BramSuurdje](https://github.com/BramSuurdje) ([#7572](https://github.com/community-scripts/ProxmoxVE/pull/7572))
- #### 📝 Script Information
- Fix frontend url [@r1cebank](https://github.com/r1cebank) ([#7578](https://github.com/community-scripts/ProxmoxVE/pull/7578))
## 2025-09-10 ## 2025-09-10
### 🆕 New Scripts
- Autocaliweb ([#7515](https://github.com/community-scripts/ProxmoxVE/pull/7515))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Palmr: fix #7556 [@vhsdream](https://github.com/vhsdream) ([#7558](https://github.com/community-scripts/ProxmoxVE/pull/7558))
- Wizarr: Fix DB migrations [@vhsdream](https://github.com/vhsdream) ([#7552](https://github.com/community-scripts/ProxmoxVE/pull/7552))
- fix: pmg - split no-nag script into separate config files [@MickLesk](https://github.com/MickLesk) ([#7540](https://github.com/community-scripts/ProxmoxVE/pull/7540))
- #### ✨ New Features
- Update Palmr to Support new v3.2.1 [@vhsdream](https://github.com/vhsdream) ([#7526](https://github.com/community-scripts/ProxmoxVE/pull/7526))
- add external installer warnings and user confirmation in several LXC's [@MickLesk](https://github.com/MickLesk) ([#7539](https://github.com/community-scripts/ProxmoxVE/pull/7539))
- Booklore: Add Bookdrop location to .env [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7533](https://github.com/community-scripts/ProxmoxVE/pull/7533))
- #### 🔧 Refactor
- Refactor: audiobookshelf [@MickLesk](https://github.com/MickLesk) ([#7538](https://github.com/community-scripts/ProxmoxVE/pull/7538))
- Refactor: Blocky [@MickLesk](https://github.com/MickLesk) ([#7537](https://github.com/community-scripts/ProxmoxVE/pull/7537))
- Improve npmplus credential retrieval and messaging [@MickLesk](https://github.com/MickLesk) ([#7532](https://github.com/community-scripts/ProxmoxVE/pull/7532))
### 🌐 Website
- #### 💥 Breaking Changes
- Remove Pingvin Share [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7553](https://github.com/community-scripts/ProxmoxVE/pull/7553))
- #### 📝 Script Information
- set updateable to true for several lxc JSON-configs [@MickLesk](https://github.com/MickLesk) ([#7534](https://github.com/community-scripts/ProxmoxVE/pull/7534))
## 2025-09-09 ## 2025-09-09
### 🚀 Updated Scripts ### 🚀 Updated Scripts

View File

@@ -9,7 +9,7 @@ APP="audiobookshelf"
var_tags="${var_tags:-podcast;audiobook}" var_tags="${var_tags:-podcast;audiobook}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-5}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
@@ -20,15 +20,19 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc ]]; then if [[ ! -f /etc/default/audiobookshelf ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
echo "This application receives updates through the APT package manager."
exit exit
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
exit
} }
start start
@@ -38,4 +42,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}:13378${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:13378${CL}"

83
ct/autocaliweb.sh Normal file
View File

@@ -0,0 +1,83 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/gelbphoenix/autocaliweb
APP="Autocaliweb"
var_tags="${var_tags:-ebooks}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/autocaliweb ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
setup_uv
RELEASE=$(curl -fsSL https://api.github.com/repos/gelbphoenix/autocaliweb/releases/latest | jq '.tag_name' | sed 's/^"v//;s/"$//')
if check_for_gh_release "autocaliweb" "gelbphoenix/autocaliweb"; then
msg_info "Stopping Services"
systemctl stop autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
msg_ok "Stopped Services"
INSTALL_DIR="/opt/autocaliweb"
export VIRTUAL_ENV="${INSTALL_DIR}/venv"
$STD tar -cf ~/autocaliweb_bkp.tar "$INSTALL_DIR"/{metadata_change_logs,dirs.json,.env,scripts/ingest_watcher.sh,scripts/auto_zipper_wrapper.sh,scripts/metadata_change_detector_wrapper.sh}
fetch_and_deploy_gh_release "autocaliweb" "gelbphoenix/autocaliweb" "tarball" "latest" "/opt/autocaliweb"
msg_info "Updating ${APP}"
cd "$INSTALL_DIR"
if [[ ! -d "$VIRTUAL_ENV" ]]; then
$STD uv venv "$VIRTUAL_ENV"
fi
$STD uv sync --all-extras --active
cd "$INSTALL_DIR"/koreader/plugins
PLUGIN_DIGEST="$(find acwsync.koplugin -type f -name "*.lua" -o -name "*.json" | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)"
echo "Plugin files digest: $PLUGIN_DIGEST" >acwsync.koplugin/${PLUGIN_DIGEST}.digest
echo "Build date: $(date)" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
echo "Files included:" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
$STD zip -r koplugin.zip acwsync.koplugin/
cp -r koplugin.zip "$INSTALL_DIR"/cps/static
mkdir -p "$INSTALL_DIR"/metadata_temp
$STD tar -xf ~/autocaliweb_bkp.tar --directory /
KEPUB_VERSION="$(/usr/bin/kepubify --version)"
CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
echo "${CALIBRE_RELEASE#v}" >/"$INSTALL_DIR"/CALIBRE_RELEASE
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
chown -R acw:acw "$INSTALL_DIR"
rm ~/autocaliweb_bkp.tar
msg_ok "Updated $APP"
msg_info "Starting Services"
systemctl start autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
msg_ok "Started Services"
msg_ok "Updated Successfully"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}"

View File

@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Copyright (c) 2021-2025 tteck # Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) # Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://0xerr0r.github.io/blocky/latest/ # Source: https://0xerr0r.github.io/blocky
APP="Blocky" APP="Blocky"
var_tags="${var_tags:-adblock}" var_tags="${var_tags:-adblock}"
@@ -20,18 +20,38 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /var ]]; then if [[ ! -d /opt/blocky ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
exit exit
fi
if check_for_gh_release "blocky" "0xERR0R/blocky"; then
msg_info "Stopping Service"
systemctl stop blocky
msg_ok "Stopped Service"
msg_info "Backup Config"
mv /opt/blocky/config.yml /opt/config.yml
msg_ok "Backed Up Config"
msg_info "Removing Old Version"
rm -rf /opt/blocky
msg_ok "Removed Old Version"
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
msg_info "Restore Config"
mv /opt/config.yml /opt/blocky/config.yml
msg_ok "Restored Config"
msg_info "Starting Service"
systemctl start blocky
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit
} }
start start
@@ -41,4 +61,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}:4000${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4000${CL}"

View File

@@ -9,7 +9,7 @@ APP="ESPHome"
var_tags="${var_tags:-automation}" var_tags="${var_tags:-automation}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}" var_disk="${var_disk:-10}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"

6
ct/headers/autocaliweb Normal file
View File

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

View File

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

6
ct/headers/stylus Normal file
View File

@@ -0,0 +1,6 @@
_____ __ __
/ ___// /___ __/ /_ _______
\__ \/ __/ / / / / / / / ___/
___/ / /_/ /_/ / / /_/ (__ )
/____/\__/\__, /_/\__,_/____/
/____/

6
ct/headers/telegraf Normal file
View File

@@ -0,0 +1,6 @@
__ __ ____
/ /____ / /__ ____ __________ _/ __/
/ __/ _ \/ / _ \/ __ `/ ___/ __ `/ /_
/ /_/ __/ / __/ /_/ / / / /_/ / __/
\__/\___/_/\___/\__, /_/ \__,_/_/
/____/

6
ct/headers/uhf Normal file
View File

@@ -0,0 +1,6 @@
__ ____ ________
/ / / / / / / ____/
/ / / / /_/ / /_
/ /_/ / __ / __/
\____/_/ /_/_/

View File

@@ -61,7 +61,7 @@ function update_script() {
done done
msg_ok "Image-processing libraries up to date" msg_ok "Image-processing libraries up to date"
fi fi
RELEASE="1.141.1" RELEASE="1.142.0"
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop immich-web systemctl stop immich-web
@@ -160,15 +160,14 @@ EOF
cd "$SRC_DIR"/machine-learning cd "$SRC_DIR"/machine-learning
mkdir -p "$ML_DIR" mkdir -p "$ML_DIR"
export VIRTUAL_ENV="${ML_DIR}"/ml-venv export VIRTUAL_ENV="${ML_DIR}"/ml-venv
$STD /usr/local/bin/uv venv "$VIRTUAL_ENV"
if [[ -f ~/.openvino ]]; then if [[ -f ~/.openvino ]]; then
msg_info "Updating HW-accelerated machine-learning" msg_info "Updating HW-accelerated machine-learning"
/usr/local/bin/uv -q sync --extra openvino --no-cache --active $STD /usr/local/bin/uv sync --extra openvino --no-cache --active
patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so" patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
msg_ok "Updated HW-accelerated machine-learning" msg_ok "Updated HW-accelerated machine-learning"
else else
msg_info "Updating machine-learning" msg_info "Updating machine-learning"
/usr/local/bin/uv -q sync --extra cpu --no-cache --active $STD /usr/local/bin/uv sync --extra cpu --no-cache --active
msg_ok "Updated machine-learning" msg_ok "Updated machine-learning"
fi fi
cd "$SRC_DIR" cd "$SRC_DIR"
@@ -208,7 +207,7 @@ function compile_libjxl() {
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0" JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
# : "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}" # : "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}"
: "${LIBJXL_REVISION:=794a5dcf0d54f9f0b20d288a12e87afb91d20dfc}" : "${LIBJXL_REVISION:=794a5dcf0d54f9f0b20d288a12e87afb91d20dfc}"
if [[ "${update:-}" ]] || [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then if [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libjxl" msg_info "Recompiling libjxl"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
$STD git clone https://github.com/libjxl/libjxl.git "$SOURCE" $STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
@@ -289,7 +288,7 @@ function compile_libraw() {
local update local update
# : "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}" # : "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
: "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}" : "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}"
if [[ "${update:-}" ]] || [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then if [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libraw" msg_info "Recompiling libraw"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
$STD git clone https://github.com/libraw/libraw.git "$SOURCE" $STD git clone https://github.com/libraw/libraw.git "$SOURCE"
@@ -311,7 +310,7 @@ function compile_imagemagick() {
SOURCE=$SOURCE_DIR/imagemagick SOURCE=$SOURCE_DIR/imagemagick
# : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}" # : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}"
: "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}" : "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}"
if [[ "${update:-}" ]] || [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]]; then if [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling ImageMagick" msg_info "Recompiling ImageMagick"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
$STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE" $STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
@@ -332,7 +331,7 @@ function compile_libvips() {
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}" : "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
if [[ "${update:-}" ]] || [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then if [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libvips" msg_info "Recompiling libvips"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
$STD git clone https://github.com/libvips/libvips.git "$SOURCE" $STD git clone https://github.com/libvips/libvips.git "$SOURCE"

View File

@@ -36,7 +36,7 @@ function update_script() {
msg_ok "Services Stopped" msg_ok "Services Stopped"
TMP_TAR=$(mktemp --suffix=.tgz) TMP_TAR=$(mktemp --suffix=.tgz)
curl -fL# -o "${TMP_TAR}" "https://github.com/ollama/ollama/releases/download/${RELEASE}/ollama-linux-amd64.tgz" curl -fL# -C - -o "${TMP_TAR}" "https://github.com/ollama/ollama/releases/download/${RELEASE}/ollama-linux-amd64.tgz"
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

View File

@@ -33,11 +33,17 @@ function update_script() {
OLLAMA_VERSION=$(ollama -v | awk '{print $NF}') OLLAMA_VERSION=$(ollama -v | awk '{print $NF}')
RELEASE=$(curl -s https://api.github.com/repos/ollama/ollama/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}') RELEASE=$(curl -s https://api.github.com/repos/ollama/ollama/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
if [ "$OLLAMA_VERSION" != "$RELEASE" ]; then if [ "$OLLAMA_VERSION" != "$RELEASE" ]; then
msg_info "Stopping Service"
systemctl stop ollama
msg_ok "Stopped Service"
curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
rm -rf /usr/lib/ollama rm -rf /usr/lib/ollama
rm -rf /usr/bin/ollama rm -rf /usr/bin/ollama
curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
tar -C /usr -xzf ollama-linux-amd64.tgz tar -C /usr -xzf ollama-linux-amd64.tgz
rm -rf ollama-linux-amd64.tgz rm -rf ollama-linux-amd64.tgz
msg_info "Starting Service"
systemctl start ollama
msg_info "Started Service"
msg_ok "Ollama updated to version $RELEASE" msg_ok "Ollama updated to version $RELEASE"
else else
msg_ok "Ollama is already up to date." msg_ok "Ollama is already up to date."

View File

@@ -33,6 +33,7 @@ function update_script() {
msg_ok "Stopped Services" msg_ok "Stopped Services"
cp /opt/palmr/apps/server/.env /opt/palmr.env cp /opt/palmr/apps/server/.env /opt/palmr.env
rm -rf /opt/palmr
fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr" fetch_and_deploy_gh_release "Palmr" "kyantech/Palmr" "tarball" "latest" "/opt/palmr"
PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)" PNPM="$(jq -r '.packageManager' /opt/palmr/package.json)"
@@ -42,9 +43,9 @@ function update_script() {
cd /opt/palmr/apps/server cd /opt/palmr/apps/server
mv /opt/palmr.env /opt/palmr/apps/server/.env mv /opt/palmr.env /opt/palmr/apps/server/.env
$STD pnpm install $STD pnpm install
$STD pnpm dlx prisma generate $STD npx prisma generate
$STD pnpm dlx prisma migrate deploy $STD npx prisma migrate deploy
$STD pnpm dlx prisma db push $STD npx prisma db push
$STD pnpm build $STD pnpm build
cd /opt/palmr/apps/web cd /opt/palmr/apps/web

View File

@@ -1,73 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://stonith404.github.io/pingvin-share/introduction
APP="Pingvin"
var_tags="${var_tags:-sharing}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/pingvin-share ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/pingvin_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/pingvin_version.txt)" ]]; then
msg_info "Stopping Pingvin Share"
systemctl stop pm2-root.service
msg_ok "Stopped Pingvin Share"
msg_info "Updating Pingvin Share to v${RELEASE}"
cd /opt
curl -fsSL "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip")
$STD unzip v${RELEASE}.zip
cp -rf pingvin-share-${RELEASE}/* /opt/pingvin-share
cd /opt/pingvin-share
cd backend
$STD npm install
$STD npm run build
cd ../frontend
$STD npm install
$STD npm run build
echo "${RELEASE}" >"/opt/pingvin_version.txt"
rm -rf /opt/v${RELEASE}.zip
rm -rf /opt/pingvin-share-${RELEASE}
msg_ok "Updated Pingvin Share to v${RELEASE}"
msg_info "Starting Pingvin Share"
systemctl start pm2-root.service
msg_ok "Started Pingvin Share"
msg_ok "Updated Successfully"
exit
else
msg_ok "No update required. Pingvin Share is already at v${RELEASE}."
fi
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@@ -27,6 +27,16 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if grep -q 'Debian GNU/Linux 12' /etc/os-release && [ -f /etc/apt/sources.list.d/proxmox-release-bookworm.list ] && [ -f /etc/apt/sources.list.d/pdm-test.list ]; then
msg_info "Updating outdated outdated source formats"
echo "deb [signed-by=/usr/share/keyrings/proxmox-archive-keyring.gpg] http://download.proxmox.com/debian/pdm bookworm pdm-test" > /etc/apt/sources.list.d/pdm-test.list
curl -fsSL https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg -o /usr/share/keyrings/proxmox-archive-keyring.gpg
rm -f /etc/apt/keyrings/proxmox-release-bookworm.gpg /etc/apt/sources.list.d/proxmox-release-bookworm.list
$STD apt-get update
msg_ok "Updated old sources"
fi
msg_info "Updating $APP LXC" msg_info "Updating $APP LXC"
$STD apt-get update $STD apt-get update
$STD apt-get -y upgrade $STD apt-get -y upgrade
@@ -41,4 +51,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}https://${IP}:8443${CL}" echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}"

54
ct/stylus.sh Normal file
View File

@@ -0,0 +1,54 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: luismco
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/mmastrac/stylus
APP="Stylus"
var_tags="${var_tags:-network}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
var_fuse="${var_fuse:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/stylus ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "stylus" "mmastrac/stylus"; then
msg_info "Stopping $APP"
systemctl stop stylus
msg_ok "Stopped $APP"
fetch_and_deploy_gh_release "stylus" "mmastrac/stylus" "singlefile" "latest" "/usr/bin/" "*_linux_amd64"
msg_info "Starting $APP"
systemctl start stylus
msg_ok "Started $APP"
msg_ok "Update Successful"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}"

52
ct/telegraf.sh Normal file
View File

@@ -0,0 +1,52 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/influxdata/telegraf
APP="telegraf"
var_tags="${var_tags:-collector;metrics}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/telegraf/telegraf.conf ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping $APP"
systemctl stop telegraf
msg_ok "Stopped $APP"
msg_info "Updating $APP"
$STD apt-get update
$STD apt-get upgrade telegraf -y
msg_ok "Updated $APP"
msg_info "Starting $APP"
systemctl start telegraf
msg_ok "Started $APP"
msg_ok "Updated Successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"

63
ct/uhf.sh Normal file
View File

@@ -0,0 +1,63 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: zackwithak13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.uhfapp.com/server
APP="UHF"
var_tags="${var_tags:-media}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/uhf-server ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "uhf-server" "swapplications/uhf-server-dist"; then
msg_info "Stopping Service"
systemctl stop uhf-server
msg_ok "Stopped Service"
msg_info "Updating ${APP} LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated ${APP} LXC"
fetch_and_deploy_gh_release "comskip" "swapplications/comskip" "prebuild" "latest" "/opt/comskip" "comskip-x64-*.zip"
fetch_and_deploy_gh_release "uhf-server" "swapplications/uhf-server-dist" "prebuild" "latest" "/opt/uhf-server" "UHF.Server-linux-x64-*.zip"
msg_info "Starting Service"
systemctl start uhf-server
msg_ok "Started Service"
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
msg_ok "Updated Successfully"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7568${CL}"

View File

@@ -39,20 +39,23 @@ function update_script() {
msg_info "Creating Backup" msg_info "Creating Backup"
BACKUP_FILE="/opt/wizarr_backup_$(date +%F).tar.gz" BACKUP_FILE="/opt/wizarr_backup_$(date +%F).tar.gz"
$STD tar -czf "$BACKUP_FILE" /opt/wizarr/{.env,start.sh} /opt/wizarr/database/ &>/dev/null $STD tar -czf "$BACKUP_FILE" /opt/wizarr/{.env,start.sh} /opt/wizarr/database/ &>/dev/null
rm -rf /opt/wizarr/migrations/versions/*
msg_ok "Backup Created" msg_ok "Backup Created"
fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr" fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
msg_info "Updating $APP" msg_info "Updating $APP"
cd /opt/wizarr cd /opt/wizarr
$STD /usr/local/bin/uv lock $STD /usr/local/bin/uv sync --frozen
$STD /usr/local/bin/uv sync --locked $STD /usr/local/bin/uv run --frozen pybabel compile -d app/translations
$STD /usr/local/bin/uv run pybabel compile -d app/translations
$STD npm --prefix app/static install $STD npm --prefix app/static install
$STD npm --prefix app/static run build:css $STD npm --prefix app/static run build:css
mkdir -p ./.cache mkdir -p ./.cache
$STD tar -xf "$BACKUP_FILE" --directory=/ $STD tar -xf "$BACKUP_FILE" --directory=/
$STD /usr/local/bin/uv run flask db upgrade $STD /usr/local/bin/uv run --frozen flask db upgrade
if ! grep -q 'frozen' /opt/wizarr/start.sh; then
sed -i 's/run/& --frozen/' /opt/wizarr/start.sh
fi
msg_ok "Updated $APP" msg_ok "Updated $APP"
msg_info "Starting $APP" msg_info "Starting $APP"

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-19", "date_created": "2024-05-19",
"type": "addon", "type": "addon",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": "https://docs.netbird.io/", "documentation": "https://docs.netbird.io/",

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "addon", "type": "addon",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": "https://tailscale.com/kb/1017/install", "documentation": "https://tailscale.com/kb/1017/install",

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": 3142, "interface_port": 3142,
"documentation": "https://www.unix-ag.uni-kl.de/~bloch/acng/html/index.html", "documentation": "https://www.unix-ag.uni-kl.de/~bloch/acng/html/index.html",

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": 13378, "interface_port": 13378,
"documentation": "https://www.audiobookshelf.org/guides/", "documentation": "https://www.audiobookshelf.org/guides/",
@@ -21,7 +21,7 @@
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 4, "hdd": 5,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }

View File

@@ -0,0 +1,35 @@
{
"name": "Autocaliweb",
"slug": "autocaliweb",
"categories": [
13
],
"date_created": "2025-09-10",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8083,
"documentation": "https://github.com/gelbphoenix/autocaliweb/wiki",
"config_path": "/etc/autocaliweb",
"website": "https://github.com/gelbphoenix/autocaliweb",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/autocaliweb.webp",
"description": "A modern web management system for eBooks, eComics and PDFs",
"install_methods": [
{
"type": "default",
"script": "ct/autocaliweb.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 6,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "admin",
"password": "admin123"
},
"notes": []
}

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2025-01-20", "date_created": "2025-01-20",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8090, "interface_port": 8090,
"documentation": "https://beszel.dev/guide/what-is-beszel", "documentation": "https://beszel.dev/guide/what-is-beszel",

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": 4000, "interface_port": 4000,
"documentation": "https://0xerr0r.github.io/blocky/latest/configuration/", "documentation": "https://0xerr0r.github.io/blocky/latest/configuration/",

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2025-05-22", "date_created": "2025-05-22",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": null, "interface_port": null,
"documentation": "https://github.com/favonia/cloudflare-ddns/blob/main/README.markdown", "documentation": "https://github.com/favonia/cloudflare-ddns/blob/main/README.markdown",

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": null, "interface_port": null,
"documentation": "https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/", "documentation": "https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/",

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": 4000, "interface_port": 4000,
"documentation": "https://dashy.to/docs", "documentation": "https://dashy.to/docs",

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": true, "privileged": true,
"interface_port": 80, "interface_port": 80,
"documentation": "https://github.com/dresden-elektronik/deconz-rest-plugin/wiki", "documentation": "https://github.com/dresden-elektronik/deconz-rest-plugin/wiki",

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": 8112, "interface_port": 8112,
"documentation": "https://www.deluge-torrent.org/userguide/", "documentation": "https://www.deluge-torrent.org/userguide/",

View File

@@ -21,7 +21,7 @@
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 1024, "ram": 1024,
"hdd": 4, "hdd": 10,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }

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": 8083, "interface_port": 8083,
"documentation": "https://fhem.de/#Documentation", "documentation": "https://fhem.de/#Documentation",

View File

@@ -7,7 +7,7 @@
], ],
"date_created": "2025-06-18", "date_created": "2025-06-18",
"type": "addon", "type": "addon",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8080, "interface_port": 8080,
"documentation": "https://github.com/gtsteffaniak/filebrowser/wiki/Getting-Started", "documentation": "https://github.com/gtsteffaniak/filebrowser/wiki/Getting-Started",

View File

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

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": 8581, "interface_port": 8581,
"documentation": "https://github.com/homebridge/homebridge/wiki", "documentation": "https://github.com/homebridge/homebridge/wiki",

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": true, "privileged": true,
"interface_port": 8090, "interface_port": 8090,
"documentation": "https://github.com/awawa-dev/HyperHDR/wiki", "documentation": "https://github.com/awawa-dev/HyperHDR/wiki",

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": 8086, "interface_port": 8086,
"documentation": "https://docs.influxdata.com/", "documentation": "https://docs.influxdata.com/",

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2025-07-29", "date_created": "2025-07-29",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 80, "interface_port": 80,
"documentation": "https://doc.jeedom.com", "documentation": "https://doc.jeedom.com",

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-12-26", "date_created": "2024-12-26",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8080, "interface_port": 8080,
"documentation": "https://www.jenkins.io/doc/", "documentation": "https://www.jenkins.io/doc/",

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": 5299, "interface_port": 5299,
"documentation": "https://lazylibrarian.gitlab.io/lazylibrarian.gitlab.io/", "documentation": "https://lazylibrarian.gitlab.io/lazylibrarian.gitlab.io/",

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-08-06", "date_created": "2024-08-06",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 17170, "interface_port": 17170,
"documentation": "https://github.com/lldap/lldap/blob/main/README.md", "documentation": "https://github.com/lldap/lldap/blob/main/README.md",

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": 3306, "interface_port": 3306,
"documentation": "https://github.com/community-scripts/ProxmoxVE/discussions/192", "documentation": "https://github.com/community-scripts/ProxmoxVE/discussions/192",

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2025-01-30", "date_created": "2025-01-30",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8065, "interface_port": 8065,
"documentation": "https://docs.mattermost.com/", "documentation": "https://docs.mattermost.com/",

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-18", "date_created": "2024-05-18",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 27017, "interface_port": 27017,
"documentation": "https://www.mongodb.com/docs/manual/", "documentation": "https://www.mongodb.com/docs/manual/",

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": null, "interface_port": null,
"documentation": "https://mosquitto.org/documentation/", "documentation": "https://mosquitto.org/documentation/",

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2025-03-13", "date_created": "2025-03-13",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 81, "interface_port": 81,
"documentation": "https://github.com/ZoeyVid/NPMplus/blob/develop/README.md", "documentation": "https://github.com/ZoeyVid/NPMplus/blob/develop/README.md",
@@ -39,7 +39,7 @@
} }
], ],
"default_credentials": { "default_credentials": {
"username": "root", "username": "admin@example.org",
"password": null "password": null
}, },
"notes": [ "notes": [
@@ -52,7 +52,7 @@
"type": "info" "type": "info"
}, },
{ {
"text": "Application credentials: `cat /opt/.npm_pwd`", "text": "Application credentials: `cat /opt/.npm_pwd` - if file not exist in LXC check docker logs for password with `docker logs npmplus`",
"type": "info" "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": 80, "interface_port": 80,
"documentation": "https://docs.ntfy.sh/", "documentation": "https://docs.ntfy.sh/",

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": 80, "interface_port": 80,
"documentation": "https://docs.openmediavault.org/en/stable/", "documentation": "https://docs.openmediavault.org/en/stable/",

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": 8443, "interface_port": 8443,
"documentation": "https://www.openhab.org/docs/", "documentation": "https://www.openhab.org/docs/",

View File

@@ -33,11 +33,7 @@
}, },
"notes": [ "notes": [
{ {
"text": "This LXC is very memory-hungry when updating; it requires at least 6GB RAM, but RAM may be reduced to as low as 2GB when running normally", "text": "To use a bind mount for storage, create symlinks to your mount for both `uploads` and `temp-uploads` in `/opt/palmr_data`, and uncomment `CUSTOM_PATH` to add the path to your bind mount",
"type": "warning"
},
{
"text": "To use a bind mount for storage, create symlinks to your mount for both `uploads` and `temp-uploads` in `/opt/palmr_data`",
"type": "info" "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": null, "interface_port": null,
"documentation": "https://github.com/leiweibau/Pi.Alert/blob/main/README.md", "documentation": "https://github.com/leiweibau/Pi.Alert/blob/main/README.md",
@@ -31,10 +31,5 @@
"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

@@ -35,10 +35,6 @@
{ {
"text": "With Privileged/Unprivileged Hardware Acceleration Support", "text": "With Privileged/Unprivileged Hardware Acceleration Support",
"type": "info" "type": "info"
},
{
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
"type": "warning"
} }
] ]
} }

View File

@@ -1,52 +1,48 @@
{ {
"name": "Podman Home Assistant Container", "name": "Podman Home Assistant Container",
"slug": "podman-homeassistant", "slug": "podman-homeassistant",
"categories": [ "categories": [
16 16
], ],
"date_created": "2024-04-29", "date_created": "2024-04-29",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8123, "interface_port": 8123,
"documentation": "https://www.home-assistant.io/docs/", "documentation": "https://www.home-assistant.io/docs/",
"website": "https://www.home-assistant.io/", "website": "https://www.home-assistant.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
"config_path": "/var/lib/containers/storage/volumes/hass_config/_data", "config_path": "/var/lib/containers/storage/volumes/hass_config/_data",
"description": "A standalone Podman container-based installation of Home Assistant Core means that the Home Assistant Core software is installed inside a container managed by Podman, separate from the host operating system. This provides a flexible and scalable solution for running the software, as the container can be easily moved between host systems or isolated from other processes for security. Podman is a popular open-source tool for managing containers that is similar to Docker, but designed for use on Linux systems without a daemon.\r\n\r\n\ud83d\udec8 If the LXC is created Privileged, the script will automatically set up USB passthrough.", "description": "A standalone Podman container-based installation of Home Assistant Core means that the Home Assistant Core software is installed inside a container managed by Podman, separate from the host operating system. This provides a flexible and scalable solution for running the software, as the container can be easily moved between host systems or isolated from other processes for security. Podman is a popular open-source tool for managing containers that is similar to Docker, but designed for use on Linux systems without a daemon.\r\n\r\n\ud83d\udec8 If the LXC is created Privileged, the script will automatically set up USB passthrough.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/podman-homeassistant.sh", "script": "ct/podman-homeassistant.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 16, "hdd": 16,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
},
"notes": [
{
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
"type": "warning"
}, },
"notes": [ {
{ "text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`",
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.", "type": "info"
"type": "warning" },
}, {
{ "text": "Options to Install Portainer or Portainer Agent",
"text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`", "type": "warning"
"type": "info" }
}, ]
{
"text": "Options to Install Portainer or Portainer Agent",
"type": "warning"
},
{
"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": "2025-02-02", "date_created": "2025-02-02",
"type": "ct", "type": "ct",
"updateable": false, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 5232, "interface_port": 5232,
"documentation": "https://radicale.org/master.html#documentation-1", "documentation": "https://radicale.org/master.html#documentation-1",

View File

@@ -17,7 +17,7 @@
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/resilio-sync.sh", "script": "ct/resiliosync.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,

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": null, "interface_port": null,
"documentation": "https://oss.oetiker.ch/smokeping/doc/index.en.html", "documentation": "https://oss.oetiker.ch/smokeping/doc/index.en.html",

View File

@@ -0,0 +1,35 @@
{
"name": "Stylus",
"slug": "stylus",
"categories": [
4
],
"date_created": "2025-09-12",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8000,
"documentation": "https://mmastrac.github.io/stylus/",
"website": "https://github.com/mmastrac/stylus",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/stylus.webp",
"config_path": "/opt/stylus/config.yaml",
"description": "Stylus (style + status) is a lightweight status page for infrastructure and networks. Configure a set of bash scripts that test the various parts of your infrastructure, set up visualizations with minimal configuration, and Stylus will generate you a dashboard for your system.",
"install_methods": [
{
"type": "default",
"script": "ct/stylus.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 2,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

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": 8384, "interface_port": 8384,
"documentation": "https://docs.syncthing.net/", "documentation": "https://docs.syncthing.net/",

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": 8181, "interface_port": 8181,
"documentation": "https://github.com/Tautulli/Tautulli/wiki", "documentation": "https://github.com/Tautulli/Tautulli/wiki",

View File

@@ -0,0 +1,40 @@
{
"name": "Telegraf",
"slug": "telegraf",
"categories": [
9
],
"date_created": "2025-09-11",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": "https://docs.influxdata.com/telegraf/v1/",
"config_path": "/etc/telegraf/telegraf.conf",
"website": "https://github.com/influxdata/telegraf",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/telegraf.webp",
"description": "Telegraf collects and sends time series data from databases, systems, and IoT sensors. It has no external dependencies, is easy to install, and requires minimal memory.",
"install_methods": [
{
"type": "default",
"script": "ct/telegraf.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Make sure to configure an output for the telegraf config and start the service with `systemctl start telegraf`.",
"type": "info"
}
]
}

View File

@@ -0,0 +1,35 @@
{
"name": "UHF Server",
"slug": "uhf",
"categories": [
13
],
"date_created": "2025-09-12",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 7568,
"documentation": "https://www.uhfapp.com/server",
"website": "https://www.uhfapp.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/uhf.webp",
"config_path": "/etc/uhf-server/",
"description": "UHF Server is a powerful companion app that lets you seamlessly schedule and record your favorite shows from the UHF app.",
"install_methods": [
{
"type": "default",
"script": "ct/uhf.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 8,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

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": 8443, "interface_port": 8443,
"documentation": null, "documentation": null,

View File

@@ -1,14 +1,289 @@
[ [
{ {
"name": "authelia/authelia", "name": "gtsteffaniak/filebrowser",
"version": "v4.39.9", "version": "v0.8.5-beta",
"date": "2025-09-09T22:48:24Z" "date": "2025-09-13T22:53:30Z"
},
{
"name": "mealie-recipes/mealie",
"version": "v3.2.0",
"date": "2025-09-13T21:27:07Z"
},
{
"name": "Ombi-app/Ombi",
"version": "v4.47.1",
"date": "2025-01-05T21:14:23Z"
},
{
"name": "karakeep-app/karakeep",
"version": "v0.27.1",
"date": "2025-09-13T19:56:29Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.0",
"date": "2025-09-13T16:38:21Z"
},
{
"name": "home-assistant/core",
"version": "2025.9.3",
"date": "2025-09-13T12:44:37Z"
},
{
"name": "gotify/server",
"version": "v2.7.2",
"date": "2025-09-13T12:11:38Z"
},
{
"name": "wizarrrr/wizarr",
"version": "v2025.9.3",
"date": "2025-09-13T11:44:41Z"
},
{
"name": "syncthing/syncthing",
"version": "v2.0.9",
"date": "2025-09-13T09:37:24Z"
},
{
"name": "documenso/documenso",
"version": "v1.12.4",
"date": "2025-09-13T08:08:55Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.23.17",
"date": "2025-09-13T05:50:21Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-09-13T00:27:13Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "ollama/ollama",
"version": "v0.11.11-rc1",
"date": "2025-09-12T14:59:14Z"
},
{
"name": "coder/code-server",
"version": "v4.103.2",
"date": "2025-08-25T23:30:54Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.23",
"date": "2025-09-12T22:15:47Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.82-rc2",
"date": "2025-09-12T09:59:30Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.37.0",
"date": "2025-09-12T19:19:14Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.3.0",
"date": "2025-09-12T19:06:32Z"
},
{
"name": "immich-app/immich",
"version": "v1.142.0",
"date": "2025-09-12T18:52:03Z"
},
{
"name": "keycloak/keycloak",
"version": "26.3.4",
"date": "2025-09-12T13:28:51Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.25.5",
"date": "2025-09-12T18:07:32Z"
},
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.125.1",
"date": "2025-09-03T20:17:18Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.3",
"date": "2025-09-01T09:47:06Z"
},
{
"name": "emqx/emqx",
"version": "e5.8.6-hotfix1",
"date": "2025-09-12T13:23:03Z"
},
{
"name": "fallenbagel/jellyseerr",
"version": "preview-debug-plex-watchlist",
"date": "2025-09-12T09:54:22Z"
},
{
"name": "cloudreve/cloudreve",
"version": "4.8.0",
"date": "2025-09-12T09:48:11Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w37-4.13.0",
"date": "2025-09-10T15:46:01Z"
}, },
{ {
"name": "MediaBrowser/Emby.Releases", "name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.2", "version": "4.9.1.2",
"date": "2025-06-26T22:08:00Z" "date": "2025-06-26T22:08:00Z"
}, },
{
"name": "inventree/InvenTree",
"version": "0.17.14",
"date": "2025-06-21T23:43:04Z"
},
{
"name": "mattermost/mattermost",
"version": "server/public/v0.1.19",
"date": "2025-09-11T22:57:26Z"
},
{
"name": "go-vikunja/vikunja",
"version": "v1.0.0-rc0",
"date": "2025-08-17T18:47:15Z"
},
{
"name": "tailscale/tailscale",
"version": "v1.88.1",
"date": "2025-09-11T22:19:51Z"
},
{
"name": "cross-seed/cross-seed",
"version": "v6.13.3",
"date": "2025-09-08T21:45:15Z"
},
{
"name": "influxdata/influxdb",
"version": "v3.4.2",
"date": "2025-09-11T20:43:23Z"
},
{
"name": "HabitRPG/habitica",
"version": "v5.41.0",
"date": "2025-09-11T19:46:20Z"
},
{
"name": "zerotier/ZeroTierOne",
"version": "1.16.0",
"date": "2025-09-11T18:01:57Z"
},
{
"name": "Dolibarr/dolibarr",
"version": "18.0.8",
"date": "2025-09-11T16:27:45Z"
},
{
"name": "Threadfin/Threadfin",
"version": "1.2.37",
"date": "2025-09-11T16:13:41Z"
},
{
"name": "prometheus/prometheus",
"version": "v0.306.0-rc.1",
"date": "2025-09-11T13:37:41Z"
},
{
"name": "apache/tika",
"version": "3.2.3-rc1",
"date": "2025-09-11T14:37:50Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.14.0",
"date": "2025-09-05T18:28:28Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.4",
"date": "2025-08-18T20:22:07Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.3.2",
"date": "2025-09-11T09:54:47Z"
},
{
"name": "cockpit-project/cockpit",
"version": "345.2",
"date": "2025-09-11T09:06:44Z"
},
{
"name": "NLnetLabs/unbound",
"version": "release-1.24.0rc1",
"date": "2025-09-11T07:05:16Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.1.4",
"date": "2025-09-11T05:20:51Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.24.6",
"date": "2025-09-11T04:20:27Z"
},
{
"name": "esphome/esphome",
"version": "2025.8.4",
"date": "2025-09-10T05:03:47Z"
},
{
"name": "TandoorRecipes/recipes",
"version": "2.2.0",
"date": "2025-09-10T18:36:56Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-mdx@11.9.1",
"date": "2025-09-10T15:26:47Z"
},
{
"name": "linuxserver/Heimdall",
"version": "v2.7.5",
"date": "2025-09-10T15:16:49Z"
},
{
"name": "mongodb/mongo",
"version": "r7.0.25-alpha0",
"date": "2025-09-10T12:13:38Z"
},
{
"name": "aceberg/WatchYourLAN",
"version": "2.1.4",
"date": "2025-09-10T12:08:09Z"
},
{
"name": "glpi-project/glpi",
"version": "10.0.20",
"date": "2025-09-10T12:00:00Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.28",
"date": "2025-09-10T10:53:42Z"
},
{
"name": "authelia/authelia",
"version": "v4.39.9",
"date": "2025-09-09T22:48:24Z"
},
{ {
"name": "jenkinsci/jenkins", "name": "jenkinsci/jenkins",
"version": "jenkins-2.527", "version": "jenkins-2.527",
@@ -29,21 +304,6 @@
"version": "v1.5.1", "version": "v1.5.1",
"date": "2025-09-09T16:56:49Z" "date": "2025-09-09T16:56:49Z"
}, },
{
"name": "open-webui/open-webui",
"version": "v0.6.27",
"date": "2025-09-09T14:34:27Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.81",
"date": "2025-09-09T14:06:41Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.3.2",
"date": "2025-08-19T04:08:36Z"
},
{ {
"name": "element-hq/synapse", "name": "element-hq/synapse",
"version": "v1.138.0", "version": "v1.138.0",
@@ -69,16 +329,6 @@
"version": "0.20.2", "version": "0.20.2",
"date": "2025-09-09T06:09:25Z" "date": "2025-09-09T06:09:25Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.22.2444",
"date": "2025-09-09T06:00:01Z"
},
{
"name": "TandoorRecipes/recipes",
"version": "2.1.2",
"date": "2025-09-09T05:55:58Z"
},
{ {
"name": "gotson/komga", "name": "gotson/komga",
"version": "1.23.4", "version": "1.23.4",
@@ -89,76 +339,11 @@
"version": "v2.16.0", "version": "v2.16.0",
"date": "2025-09-09T01:05:45Z" "date": "2025-09-09T01:05:45Z"
}, },
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-09-09T00:27:11Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.20",
"date": "2025-09-08T23:47:21Z"
},
{
"name": "mongodb/mongo",
"version": "r8.0.14-rc1",
"date": "2025-09-08T22:50:53Z"
},
{ {
"name": "diced/zipline", "name": "diced/zipline",
"version": "v4.3.1", "version": "v4.3.1",
"date": "2025-09-08T22:26:23Z" "date": "2025-09-08T22:26:23Z"
}, },
{
"name": "cross-seed/cross-seed",
"version": "v6.13.3",
"date": "2025-09-08T21:45:15Z"
},
{
"name": "HabitRPG/habitica",
"version": "v5.40.2",
"date": "2025-09-08T20:59:44Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.15",
"date": "2025-08-27T12:12:03Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.2.1",
"date": "2025-09-08T19:31:07Z"
},
{
"name": "fallenbagel/jellyseerr",
"version": "preview-OIDC",
"date": "2025-09-08T18:08:15Z"
},
{
"name": "mattermost/mattermost",
"version": "server/public/v0.1.18",
"date": "2025-09-08T18:04:10Z"
},
{
"name": "immich-app/immich",
"version": "v1.141.1",
"date": "2025-09-08T17:15:33Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.24.27",
"date": "2025-09-08T16:23:37Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.3.1",
"date": "2025-09-08T15:26:01Z"
},
{ {
"name": "n8n-io/n8n", "name": "n8n-io/n8n",
"version": "n8n@1.109.2", "version": "n8n@1.109.2",
@@ -174,11 +359,6 @@
"version": "16.2", "version": "16.2",
"date": "2025-09-08T14:03:25Z" "date": "2025-09-08T14:03:25Z"
}, },
{
"name": "zitadel/zitadel",
"version": "v4.1.3",
"date": "2025-09-08T13:36:08Z"
},
{ {
"name": "theonedev/onedev", "name": "theonedev/onedev",
"version": "v12.0.10", "version": "v12.0.10",
@@ -199,16 +379,6 @@
"version": "latest", "version": "latest",
"date": "2025-09-08T10:03:11Z" "date": "2025-09-08T10:03:11Z"
}, },
{
"name": "syncthing/syncthing",
"version": "v2.0.8",
"date": "2025-09-08T08:07:18Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.3",
"date": "2025-09-01T09:47:06Z"
},
{ {
"name": "webmin/webmin", "name": "webmin/webmin",
"version": "2.501", "version": "2.501",
@@ -229,11 +399,6 @@
"version": "RELEASE.2025-09-07T16-13-09Z", "version": "RELEASE.2025-09-07T16-13-09Z",
"date": "2025-09-07T18:53:04Z" "date": "2025-09-07T18:53:04Z"
}, },
{
"name": "karakeep-app/karakeep",
"version": "sdk/v0.27.0",
"date": "2025-09-07T17:49:04Z"
},
{ {
"name": "dgtlmoon/changedetection.io", "name": "dgtlmoon/changedetection.io",
"version": "0.50.12", "version": "0.50.12",
@@ -241,8 +406,8 @@
}, },
{ {
"name": "runtipi/runtipi", "name": "runtipi/runtipi",
"version": "v4.4.0", "version": "nightly",
"date": "2025-09-02T19:26:18Z" "date": "2025-09-07T12:25:06Z"
}, },
{ {
"name": "semaphoreui/semaphore", "name": "semaphoreui/semaphore",
@@ -269,21 +434,6 @@
"version": "v2.13.3.4711", "version": "v2.13.3.4711",
"date": "2025-08-28T20:06:24Z" "date": "2025-08-28T20:06:24Z"
}, },
{
"name": "rcourtman/Pulse",
"version": "v4.14.0",
"date": "2025-09-05T18:28:28Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.4",
"date": "2025-08-18T20:22:07Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "create-fumadocs-app@15.7.10",
"date": "2025-09-06T10:13:43Z"
},
{ {
"name": "Luligu/matterbridge", "name": "Luligu/matterbridge",
"version": "3.2.6", "version": "3.2.6",
@@ -299,16 +449,6 @@
"version": "v1.19.3", "version": "v1.19.3",
"date": "2025-09-05T21:32:38Z" "date": "2025-09-05T21:32:38Z"
}, },
{
"name": "homarr-labs/homarr",
"version": "v1.36.1",
"date": "2025-09-05T21:14:40Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v0.8.4-beta",
"date": "2025-09-05T19:34:44Z"
},
{ {
"name": "Stirling-Tools/Stirling-PDF", "name": "Stirling-Tools/Stirling-PDF",
"version": "v1.3.2", "version": "v1.3.2",
@@ -324,16 +464,6 @@
"version": "v5.14.2", "version": "v5.14.2",
"date": "2025-09-05T17:24:12Z" "date": "2025-09-05T17:24:12Z"
}, },
{
"name": "wizarrrr/wizarr",
"version": "2025.9.0",
"date": "2025-09-05T14:21:34Z"
},
{
"name": "home-assistant/core",
"version": "2025.9.1",
"date": "2025-09-05T11:15:21Z"
},
{ {
"name": "CrazyWolf13/streamlink-webui", "name": "CrazyWolf13/streamlink-webui",
"version": "0.6", "version": "0.6",
@@ -344,11 +474,6 @@
"version": "2.0.0-beta.2-temp", "version": "2.0.0-beta.2-temp",
"date": "2025-03-28T08:45:58Z" "date": "2025-03-28T08:45:58Z"
}, },
{
"name": "wazuh/wazuh",
"version": "coverity-w36-4.13.0",
"date": "2025-09-01T11:40:11Z"
},
{ {
"name": "docmost/docmost", "name": "docmost/docmost",
"version": "v0.23.0", "version": "v0.23.0",
@@ -374,11 +499,6 @@
"version": "v0.107.65", "version": "v0.107.65",
"date": "2025-08-20T14:02:28Z" "date": "2025-08-20T14:02:28Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.11.10",
"date": "2025-09-04T17:27:40Z"
},
{ {
"name": "NodeBB/NodeBB", "name": "NodeBB/NodeBB",
"version": "v4.5.1", "version": "v4.5.1",
@@ -404,16 +524,6 @@
"version": "v0.15.1", "version": "v0.15.1",
"date": "2025-09-04T10:37:23Z" "date": "2025-09-04T10:37:23Z"
}, },
{
"name": "esphome/esphome",
"version": "2025.8.3",
"date": "2025-09-04T10:09:47Z"
},
{
"name": "emqx/emqx",
"version": "v5.8.8",
"date": "2025-09-04T08:35:36Z"
},
{ {
"name": "morpheus65535/bazarr", "name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10", "version": "v1.5.3-beta.10",
@@ -429,21 +539,11 @@
"version": "2.1.1", "version": "2.1.1",
"date": "2025-06-14T17:45:06Z" "date": "2025-06-14T17:45:06Z"
}, },
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.125.1",
"date": "2025-09-03T20:17:18Z"
},
{ {
"name": "Graylog2/graylog2-server", "name": "Graylog2/graylog2-server",
"version": "6.1.15", "version": "6.1.15",
"date": "2025-09-03T14:51:37Z" "date": "2025-09-03T14:51:37Z"
}, },
{
"name": "glpi-project/glpi",
"version": "10.0.19",
"date": "2025-07-16T09:45:14Z"
},
{ {
"name": "neo4j/neo4j", "name": "neo4j/neo4j",
"version": "5.26.12", "version": "5.26.12",
@@ -454,11 +554,6 @@
"version": "v2.4.0p11", "version": "v2.4.0p11",
"date": "2025-09-03T09:58:14Z" "date": "2025-09-03T09:58:14Z"
}, },
{
"name": "cockpit-project/cockpit",
"version": "346",
"date": "2025-09-03T09:13:05Z"
},
{ {
"name": "apache/cassandra", "name": "apache/cassandra",
"version": "cassandra-4.1.10", "version": "cassandra-4.1.10",
@@ -479,16 +574,6 @@
"version": "v4.1.4", "version": "v4.1.4",
"date": "2025-09-02T14:26:24Z" "date": "2025-09-02T14:26:24Z"
}, },
{
"name": "Dolibarr/dolibarr",
"version": "22.0.1",
"date": "2025-09-02T10:29:08Z"
},
{
"name": "cloudreve/cloudreve",
"version": "4.7.0",
"date": "2025-09-02T06:02:43Z"
},
{ {
"name": "ErsatzTV/ErsatzTV", "name": "ErsatzTV/ErsatzTV",
"version": "v25.5.0", "version": "v25.5.0",
@@ -579,16 +664,6 @@
"version": "v25.07.2", "version": "v25.07.2",
"date": "2025-08-28T16:46:05Z" "date": "2025-08-28T16:46:05Z"
}, },
{
"name": "Threadfin/Threadfin",
"version": "1.2.37",
"date": "2025-08-28T16:25:55Z"
},
{
"name": "influxdata/influxdb",
"version": "v3.4.1",
"date": "2025-08-28T13:56:00Z"
},
{ {
"name": "garethgeorge/backrest", "name": "garethgeorge/backrest",
"version": "v1.9.2", "version": "v1.9.2",
@@ -609,26 +684,11 @@
"version": "v11.2.1", "version": "v11.2.1",
"date": "2025-08-27T15:19:02Z" "date": "2025-08-27T15:19:02Z"
}, },
{
"name": "documenso/documenso",
"version": "v1.12.2-rc.6",
"date": "2025-08-26T01:17:43Z"
},
{
"name": "coder/code-server",
"version": "v4.103.2",
"date": "2025-08-25T23:30:54Z"
},
{ {
"name": "advplyr/audiobookshelf", "name": "advplyr/audiobookshelf",
"version": "v2.29.0", "version": "v2.29.0",
"date": "2025-08-25T22:43:20Z" "date": "2025-08-25T22:43:20Z"
}, },
{
"name": "mealie-recipes/mealie",
"version": "v3.1.2",
"date": "2025-08-25T18:00:52Z"
},
{ {
"name": "sabnzbd/sabnzbd", "name": "sabnzbd/sabnzbd",
"version": "4.5.3", "version": "4.5.3",
@@ -649,11 +709,6 @@
"version": "8.2.10", "version": "8.2.10",
"date": "2025-08-25T01:26:55Z" "date": "2025-08-25T01:26:55Z"
}, },
{
"name": "Ombi-app/Ombi",
"version": "v4.47.1",
"date": "2025-01-05T21:14:23Z"
},
{ {
"name": "wavelog/wavelog", "name": "wavelog/wavelog",
"version": "2.1", "version": "2.1",
@@ -669,21 +724,11 @@
"version": "v0.21.0", "version": "v0.21.0",
"date": "2025-08-23T18:33:53Z" "date": "2025-08-23T18:33:53Z"
}, },
{
"name": "prometheus/prometheus",
"version": "v0.306.0-rc.0",
"date": "2025-08-21T13:31:03Z"
},
{ {
"name": "caddyserver/caddy", "name": "caddyserver/caddy",
"version": "v2.10.2", "version": "v2.10.2",
"date": "2025-08-23T03:10:31Z" "date": "2025-08-23T03:10:31Z"
}, },
{
"name": "tailscale/tailscale",
"version": "v1.86.5",
"date": "2025-08-22T17:13:13Z"
},
{ {
"name": "rclone/rclone", "name": "rclone/rclone",
"version": "v1.71.0", "version": "v1.71.0",
@@ -774,11 +819,6 @@
"version": "deluge-2.2.1.dev0", "version": "deluge-2.2.1.dev0",
"date": "2025-08-17T20:22:28Z" "date": "2025-08-17T20:22:28Z"
}, },
{
"name": "go-vikunja/vikunja",
"version": "v1.0.0-rc0",
"date": "2025-08-17T18:47:15Z"
},
{ {
"name": "matze/wastebin", "name": "matze/wastebin",
"version": "3.3.0", "version": "3.3.0",
@@ -804,11 +844,6 @@
"version": "v2.2.1", "version": "v2.2.1",
"date": "2025-08-13T19:49:01Z" "date": "2025-08-13T19:49:01Z"
}, },
{
"name": "go-gitea/gitea",
"version": "v1.24.5",
"date": "2025-08-13T16:35:52Z"
},
{ {
"name": "ellite/Wallos", "name": "ellite/Wallos",
"version": "v4.1.1", "version": "v4.1.1",
@@ -844,11 +879,6 @@
"version": "2.38.0", "version": "2.38.0",
"date": "2025-08-08T21:47:19Z" "date": "2025-08-08T21:47:19Z"
}, },
{
"name": "apache/tika",
"version": "3.2.2",
"date": "2025-08-08T03:40:40Z"
},
{ {
"name": "MariaDB/server", "name": "MariaDB/server",
"version": "mariadb-12.0.2", "version": "mariadb-12.0.2",
@@ -884,11 +914,6 @@
"version": "v2.0.116", "version": "v2.0.116",
"date": "2025-08-05T04:45:21Z" "date": "2025-08-05T04:45:21Z"
}, },
{
"name": "linuxserver/Heimdall",
"version": "v2.7.4",
"date": "2025-08-02T16:51:19Z"
},
{ {
"name": "inspircd/inspircd", "name": "inspircd/inspircd",
"version": "v4.8.0", "version": "v4.8.0",
@@ -954,11 +979,6 @@
"version": "v2.19.0", "version": "v2.19.0",
"date": "2025-07-27T22:25:00Z" "date": "2025-07-27T22:25:00Z"
}, },
{
"name": "aceberg/WatchYourLAN",
"version": "2.1.3",
"date": "2025-07-26T14:19:00Z"
},
{ {
"name": "heiher/hev-socks5-server", "name": "heiher/hev-socks5-server",
"version": "2.9.0", "version": "2.9.0",
@@ -989,11 +1009,6 @@
"version": "v0.25.0", "version": "v0.25.0",
"date": "2025-07-16T14:57:02Z" "date": "2025-07-16T14:57:02Z"
}, },
{
"name": "NLnetLabs/unbound",
"version": "release-1.23.1",
"date": "2025-07-16T09:20:27Z"
},
{ {
"name": "sbondCo/Watcharr", "name": "sbondCo/Watcharr",
"version": "v2.1.1", "version": "v2.1.1",
@@ -1084,11 +1099,6 @@
"version": "v3.0.7", "version": "v3.0.7",
"date": "2025-06-22T17:49:29Z" "date": "2025-06-22T17:49:29Z"
}, },
{
"name": "inventree/InvenTree",
"version": "0.17.14",
"date": "2025-06-21T23:43:04Z"
},
{ {
"name": "Sonarr/Sonarr", "name": "Sonarr/Sonarr",
"version": "v4.0.15.2941", "version": "v4.0.15.2941",
@@ -1199,11 +1209,6 @@
"version": "3.5.0", "version": "3.5.0",
"date": "2025-05-05T16:28:24Z" "date": "2025-05-05T16:28:24Z"
}, },
{
"name": "gotify/server",
"version": "v2.6.3",
"date": "2025-04-27T09:05:42Z"
},
{ {
"name": "TechnitiumSoftware/DnsServer", "name": "TechnitiumSoftware/DnsServer",
"version": "v13.6.0", "version": "v13.6.0",
@@ -1389,11 +1394,6 @@
"version": "0.10.1", "version": "0.10.1",
"date": "2024-11-10T10:25:45Z" "date": "2024-11-10T10:25:45Z"
}, },
{
"name": "zerotier/ZeroTierOne",
"version": "1.14.2",
"date": "2024-10-29T16:17:48Z"
},
{ {
"name": "CorentinTh/it-tools", "name": "CorentinTh/it-tools",
"version": "v2024.10.22-7ca5933", "version": "v2024.10.22-7ca5933",

View File

@@ -17,7 +17,7 @@ const inter = Inter({ subsets: ["latin"] });
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Proxmox VE Helper-Scripts", title: "Proxmox VE Helper-Scripts",
description: description:
"The official website for the Proxmox VE Helper-Scripts (Community) Repository. Featuring over 300+ scripts to help you manage your Proxmox VE environment.", "The official website for the Proxmox VE Helper-Scripts (Community) repository. Featuring over 300+ scripts to help you manage your Proxmox Virtual Environment.",
applicationName: "Proxmox VE Helper-Scripts", applicationName: "Proxmox VE Helper-Scripts",
generator: "Next.js", generator: "Next.js",
referrer: "origin-when-cross-origin", referrer: "origin-when-cross-origin",
@@ -57,7 +57,7 @@ export const metadata: Metadata = {
openGraph: { openGraph: {
title: "Proxmox VE Helper-Scripts", title: "Proxmox VE Helper-Scripts",
description: description:
"The official website for the Proxmox VE Helper-Scripts (Community) Repository. Featuring over 300+ scripts to help you manage your Proxmox VE environment.", "The official website for the Proxmox VE Helper-Scripts (Community) repository. Featuring over 300+ scripts to help you manage your Proxmox Virtual Environment.",
url: `https://community-scripts.github.io/${basePath}/`, url: `https://community-scripts.github.io/${basePath}/`,
siteName: "Proxmox VE Helper-Scripts", siteName: "Proxmox VE Helper-Scripts",
images: [ images: [
@@ -76,7 +76,7 @@ export const metadata: Metadata = {
title: "Proxmox VE Helper-Scripts", title: "Proxmox VE Helper-Scripts",
creator: "@BramSuurdje", creator: "@BramSuurdje",
description: description:
"The official website for the Proxmox VE Helper-Scripts (Community) Repository. Featuring over 300+ scripts to help you manage your Proxmox VE environment.", "The official website for the Proxmox VE Helper-Scripts (Community) repository. Featuring over 300+ scripts to help you manage your Proxmox Virtual Environment.",
images: [`https://community-scripts.github.io/${basePath}/defaultimg.png`], images: [`https://community-scripts.github.io/${basePath}/defaultimg.png`],
}, },
manifest: "/manifest.webmanifest", manifest: "/manifest.webmanifest",

View File

@@ -11,7 +11,7 @@ export default function manifest(): MetadataRoute.Manifest {
name: "Proxmox VE Helper-Scripts", name: "Proxmox VE Helper-Scripts",
short_name: "Proxmox VE Helper-Scripts", short_name: "Proxmox VE Helper-Scripts",
description: description:
"A Re-designed Front-end for the Proxmox VE Helper-Scripts Repository. Featuring over 200+ scripts to help you manage your Proxmox VE environment.", "A redesigned front-end for the Proxmox VE Helper-Scripts repository. Featuring over 300+ scripts to help you manage your Proxmox Virtual Environment.",
theme_color: "#030712", theme_color: "#030712",
background_color: "#030712", background_color: "#030712",
display: "standalone", display: "standalone",

View File

@@ -113,8 +113,8 @@ export default function Page() {
<p> <p>
With 300+ scripts to help you manage your With 300+ scripts to help you manage your
{" "} {" "}
<b>Proxmox VE environment</b> <b>Proxmox VE</b>
. Whether you&#39;re a seasoned , whether you&#39;re a seasoned
user or a newcomer, we&#39;ve got you covered. user or a newcomer, we&#39;ve got you covered.
</p> </p>
</div> </div>

View File

@@ -143,7 +143,7 @@ export function MostViewedScripts({ items }: { items: Category[] }) {
<div className=""> <div className="">
{mostViewedScripts.length > 0 && ( {mostViewedScripts.length > 0 && (
<> <>
<h2 className="text-lg font-semibold">Most Viewed Scripts</h2> <h2 className="text-lg font-semibold mb-1">Most Viewed Scripts</h2>
</> </>
)} )}
<div className="min-w flex w-full flex-row flex-wrap gap-4"> <div className="min-w flex w-full flex-row flex-wrap gap-4">

View File

@@ -10,9 +10,9 @@ export const basePath = process.env.BASE_PATH || "";
export const navbarLinks = [ export const navbarLinks = [
{ {
href: `https://github.com/community-scripts/${basePath}`, href: `https://github.com/community-scripts/${basePath}`,
event: "Github", event: "GitHub",
icon: <FaGithub className="h-4 w-4" />, icon: <FaGithub className="h-4 w-4" />,
text: "Github", text: "GitHub",
}, },
{ {
href: `https://discord.gg/2wvnMDgdnU`, href: `https://discord.gg/2wvnMDgdnU`,
@@ -22,9 +22,9 @@ export const navbarLinks = [
}, },
{ {
href: `https://github.com/community-scripts/${basePath}/blob/main/CHANGELOG.md`, href: `https://github.com/community-scripts/${basePath}/blob/main/CHANGELOG.md`,
event: "Change Log", event: "Changelog",
icon: <Scroll className="h-4 w-4" />, icon: <Scroll className="h-4 w-4" />,
text: "Change Log", text: "Changelog",
mobileHidden: true, mobileHidden: true,
}, },
{ {

View File

@@ -13,12 +13,18 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing audiobookshelf" msg_info "Installing Dependencies"
$STD apt-get install -y ffmpeg
msg_ok "Installed Dependencies"
msg_info "Setup audiobookshelf"
curl -fsSL https://advplyr.github.io/audiobookshelf-ppa/KEY.gpg >/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc curl -fsSL https://advplyr.github.io/audiobookshelf-ppa/KEY.gpg >/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc
echo "deb [signed-by=/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc] https://advplyr.github.io/audiobookshelf-ppa ./" >/etc/apt/sources.list.d/audiobookshelf.list echo "deb [signed-by=/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc] https://advplyr.github.io/audiobookshelf-ppa ./" >/etc/apt/sources.list.d/audiobookshelf.list
$STD apt-get update $STD apt update
$STD apt install audiobookshelf $STD apt install -y audiobookshelf
msg_ok "Installed audiobookshelf" echo "FFMPEG_PATH=/usr/bin/ffmpeg" >>/etc/default/audiobookshelf
echo "FFPROBE_PATH=/usr/bin/ffprobe" >>/etc/default/audiobookshelf
msg_ok "Setup audiobookshelf"
motd_ssh motd_ssh
customize customize

View File

@@ -0,0 +1,330 @@
#!/usr/bin/env bash
# Copyright (c) 2025 Community Scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/gelbphoenix/autocaliweb
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing dependencies"
$STD apt-get install -y --no-install-recommends \
python3-dev \
sqlite3 \
build-essential \
libldap2-dev \
libssl-dev \
libsasl2-dev \
imagemagick \
ghostscript \
libmagic1 \
libxi6 \
libxslt1.1 \
libxtst6 \
libxrandr2 \
libxkbfile1 \
libxcomposite1 \
libopengl0 \
libnss3 \
libxkbcommon0 \
libegl1 \
libxdamage1 \
libgl1 \
libglx-mesa0 \
xz-utils \
xdg-utils \
inotify-tools \
binutils \
unrar-free \
zip
msg_ok "Installed dependencies"
fetch_and_deploy_gh_release "kepubify" "pgaskin/kepubify" "singlefile" "latest" "/usr/bin" "kepubify-linux-64bit"
KEPUB_VERSION="$(/usr/bin/kepubify --version | awk '{print $2}')"
msg_info "Installing Calibre"
CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
CALIBRE_VERSION=${CALIBRE_RELEASE#v}
curl -fsSL https://github.com/kovidgoyal/calibre/releases/download/${CALIBRE_RELEASE}/calibre-${CALIBRE_VERSION}-x86_64.txz -o /tmp/calibre.txz
mkdir -p /opt/calibre
$STD tar -xf /tmp/calibre.txz -C /opt/calibre
rm /tmp/calibre.txz
$STD /opt/calibre/calibre_postinstall
msg_ok "Calibre installed"
setup_uv
fetch_and_deploy_gh_release "autocaliweb" "gelbphoenix/autocaliweb" "tarball" "latest" "/opt/autocaliweb"
msg_info "Configuring Autocaliweb"
INSTALL_DIR="/opt/autocaliweb"
CONFIG_DIR="/etc/autocaliweb"
CALIBRE_LIB_DIR="/opt/calibre-library"
INGEST_DIR="/opt/acw-book-ingest"
SERVICE_USER="acw"
SERVICE_GROUP="acw"
SCRIPTS_DIR="${INSTALL_DIR}/scripts"
export VIRTUAL_ENV="${INSTALL_DIR}/venv"
mkdir -p "$CONFIG_DIR"/{.config/calibre/plugins,log_archive,.acw_conversion_tmp}
mkdir -p "$CONFIG_DIR"/processed_books/{converted,imported,failed,fixed_originals}
mkdir -p "$INSTALL_DIR"/{metadata_change_logs,metadata_temp}
mkdir -p {"$CALIBRE_LIB_DIR","$INGEST_DIR"}
echo "$CALIBRE_VERSION" >"$INSTALL_DIR"/CALIBRE_RELEASE
echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
cd "$INSTALL_DIR"
$STD uv venv "$VIRTUAL_ENV"
$STD uv sync --all-extras --active
cat <<EOF >./dirs.json
{
"ingest_folder": "$INGEST_DIR",
"calibre_library_dir": "$CALIBRE_LIB_DIR",
"tmp_conversion_dir": "$CONFIG_DIR/.acw_conversion_tmp"
}
EOF
useradd -s /usr/sbin/nologin -d "$CONFIG_DIR" -M "$SERVICE_USER"
ln -sf "$CONFIG_DIR"/.config/calibre/plugins "$CONFIG_DIR"/calibre_plugins
cat <<EOF >"$INSTALL_DIR"/.env
ACW_INSTALL_DIR=$INSTALL_DIR
ACW_CONFIG_DIR=$CONFIG_DIR
ACW_USER=$SERVICE_USER
ACW_GROUP=$SERVICE_GROUP
LIBRARY_DIR=$CALIBRE_LIB_DIR
EOF
msg_ok "Configured Autocaliweb"
msg_info "Creating ACWSync Plugin for KOReader"
cd "$INSTALL_DIR"/koreader/plugins
PLUGIN_DIGEST="$(find acwsync.koplugin -type f -name "*.lua" -o -name "*.json" | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)"
echo "Plugin files digest: $PLUGIN_DIGEST" >acwsync.koplugin/${PLUGIN_DIGEST}.digest
echo "Build date: $(date)" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
echo "Files included:" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
$STD zip -r koplugin.zip acwsync.koplugin/
cp -r koplugin.zip "$INSTALL_DIR"/cps/static
msg_ok "Created ACWSync Plugin"
msg_info "Initializing databases"
KEPUBIFY_PATH=$(command -v kepubify 2>/dev/null || echo "/usr/bin/kepubify")
EBOOK_CONVERT_PATH=$(command -v ebook-convert 2>/dev/null || echo "/usr/bin/ebook-convert")
CALIBRE_BIN_DIR=$(dirname "$EBOOK_CONVERT_PATH")
curl -fsSL https://github.com/gelbphoenix/autocaliweb/raw/refs/heads/main/library/metadata.db -o "$CALIBRE_LIB_DIR"/metadata.db
curl -fsSL https://github.com/gelbphoenix/autocaliweb/raw/refs/heads/main/library/app.db -o "$CONFIG_DIR"/app.db
sqlite3 "$CONFIG_DIR/app.db" <<EOS
UPDATE settings SET
config_kepubifypath='$KEPUBIFY_PATH',
config_converterpath='$EBOOK_CONVERT_PATH',
config_binariesdir='$CALIBRE_BIN_DIR',
config_calibre_dir='$CALIBRE_LIB_DIR',
config_logfile='$CONFIG_DIR/autocaliweb.log',
config_access_logfile='$CONFIG_DIR/access.log'
WHERE 1=1;
EOS
msg_ok "Initialized databases"
msg_info "Creating scripts and service files"
# auto-ingest watcher
cat <<EOF >"$SCRIPTS_DIR"/ingest_watcher.sh
#!/bin/bash
INSTALL_PATH="$INSTALL_DIR"
WATCH_FOLDER=\$(grep -o '"ingest_folder": "[^"]*' \${INSTALL_PATH}/dirs.json | grep -o '[^"]*\$')
echo "[acw-ingest-service] Watching folder: \$WATCH_FOLDER"
# Monitor the folder for new files
/usr/bin/inotifywait -m -r --format="%e %w%f" -e close_write -e moved_to "\$WATCH_FOLDER" |
while read -r events filepath ; do
echo "[acw-ingest-service] New files detected - \$filepath - Starting Ingest Processor..."
# Use the Python interpreter from the virtual environment
\${INSTALL_PATH}/venv/bin/python \${INSTALL_PATH}/scripts/ingest_processor.py "\$filepath"
done
EOF
# auto-zipper
cat <<EOF >"$SCRIPTS_DIR"/auto_zipper_wrapper.sh
#!/bin/bash
# Source virtual environment
source ${INSTALL_DIR}/venv/bin/activate
WAKEUP="23:59"
while true; do
# Replace expr with modern Bash arithmetic (safer and less prone to parsing issues)
# fix: expr: non-integer argument and sleep: missing operand
SECS=\$(( \$(date -d "\$WAKEUP" +%s) - \$(date -d "now" +%s) ))
if [[ \$SECS -lt 0 ]]; then
SECS=\$(( \$(date -d "tomorrow \$WAKEUP" +%s) - \$(date -d "now" +%s) ))
fi
echo "[acw-auto-zipper] Next run in \$SECS seconds."
sleep \$SECS &
wait \$!
# Use virtual environment python
python ${SCRIPTS_DIR}/auto_zip.py
if [[ \$? == 1 ]]; then
echo "[acw-auto-zipper] Error occurred during script initialisation."
elif [[ \$? == 2 ]]; then
echo "[acw-auto-zipper] Error occurred while zipping today's files."
elif [[ \$? == 3 ]]; then
echo "[acw-auto-zipper] Error occurred while trying to remove zipped files."
fi
sleep 60
done
EOF
# metadata change detector
cat <<EOF >"$SCRIPTS_DIR"/metadata_change_detector_wrapper.sh
#!/bin/bash
# metadata_change_detector_wrapper.sh - Wrapper for periodic metadata enforcement
# Source virtual environment
source ${INSTALL_DIR}/venv/bin/activate
# Configuration
CHECK_INTERVAL=300 # Check every 5 minutes (300 seconds)
METADATA_LOGS_DIR="${INSTALL_DIR}/metadata_change_logs"
echo "[metadata-change-detector] Starting metadata change detector service..."
echo "[metadata-change-detector] Checking for changes every \$CHECK_INTERVAL seconds"
while true; do
# Check if there are any log files to process
if [ -d "\$METADATA_LOGS_DIR" ] && [ "\$(ls -A \$METADATA_LOGS_DIR 2>/dev/null)" ]; then
echo "[metadata-change-detector] Found metadata change logs, processing..."
# Process each log file
for log_file in "\$METADATA_LOGS_DIR"/*.json; do
if [ -f "\$log_file" ]; then
log_name=\$(basename "\$log_file")
echo "[metadata-change-detector] Processing log: \$log_name"
# Call cover_enforcer.py with the log file
${INSTALL_DIR}/venv/bin/python ${SCRIPTS_DIR}/cover_enforcer.py --log "\$log_name"
if [ \$? -eq 0 ]; then
echo "[metadata-change-detector] Successfully processed \$log_name"
else
echo "[metadata-change-detector] Error processing \$log_name"
fi
fi
done
else
echo "[metadata-change-detector] No metadata changes detected"
fi
echo "[metadata-change-detector] Sleeping for \$CHECK_INTERVAL seconds..."
sleep \$CHECK_INTERVAL
done
EOF
chmod +x "$SCRIPTS_DIR"/{ingest_watcher.sh,auto_zipper_wrapper.sh,metadata_change_detector_wrapper.sh}
chown -R "$SERVICE_USER":"$SERVICE_GROUP" {"$INSTALL_DIR","$CONFIG_DIR","$INGEST_DIR","$CALIBRE_LIB_DIR"}
cat <<EOF >/etc/systemd/system/autocaliweb.service
[Unit]
Description=Autocaliweb
After=network.target
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=$SERVICE_USER
Group=$SERVICE_GROUP
WorkingDirectory=$INSTALL_DIR
Environment=PATH=$INSTALL_DIR/venv/bin:/usr/bin:/bin
Environment=PYTHONPATH=$SCRIPTS_DIR:$INSTALL_DIR
Environment=PYTHONDONTWRITEBYTECODE=1
Environment=PYTHONUNBUFFERED=1
Environment=CALIBRE_DBPATH=$CONFIG_DIR
EnvironmentFile=$INSTALL_DIR/.env
ExecStart=$INSTALL_DIR/venv/bin/python $INSTALL_DIR/cps.py -p $CONFIG_DIR/app.db
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/acw-ingest-service.service
[Unit]
Description=Autocaliweb Ingest Processor Service
After=autocaliweb.service
Requires=autocaliweb.service
[Service]
User=${SERVICE_USER}
Group=${SERVICE_GROUP}
WorkingDirectory=${INSTALL_DIR}
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
Environment=HOME=${CONFIG_DIR}
ExecStart=/bin/bash ${SCRIPTS_DIR}/ingest_watcher.sh
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/acw-auto-zipper.service
[Unit]
Description=Autocaliweb Auto Zipper Service
After=network.target
[Service]
User=${SERVICE_USER}
Group=${SERVICE_GROUP}
WorkingDirectory=${INSTALL_DIR}
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
ExecStart=${SCRIPTS_DIR}/auto_zipper_wrapper.sh
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/metadata-change-detector.service
[Unit]
Description=Autocaliweb Metadata Change Detector
After=network.target
[Service]
User=${SERVICE_USER}
Group=${SERVICE_GROUP}
WorkingDirectory=${INSTALL_DIR}
ExecStart=/bin/bash ${SCRIPTS_DIR}/metadata_change_detector_wrapper.sh
Restart=always
StandardOutput=journal
StandardError=journal
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
Environment=HOME=${CONFIG_DIR}
[Install]
WantedBy=multi-user.target
EOF
systemctl -q enable --now autocaliweb acw-ingest-service acw-auto-zipper metadata-change-detector
msg_ok "Created scripts and service files"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -3,7 +3,7 @@
# Copyright (c) 2021-2025 tteck # Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) # Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://0xerr0r.github.io/blocky/latest/ # Source: https://0xerr0r.github.io/blocky
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color color
@@ -13,14 +13,12 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Blocky" fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
msg_info "Configuring Blocky"
if systemctl is-active systemd-resolved >/dev/null 2>&1; then if systemctl is-active systemd-resolved >/dev/null 2>&1; then
systemctl disable -q --now systemd-resolved systemctl disable -q --now systemd-resolved
fi fi
mkdir /opt/blocky
RELEASE=$(curl -fsSL https://api.github.com/repos/0xERR0R/blocky/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/0xERR0R/blocky/releases/download/v${RELEASE}/blocky_v${RELEASE}_Linux_x86_64.tar.gz" | tar -xzf - -C /opt/blocky/
cat <<EOF >/opt/blocky/config.yml cat <<EOF >/opt/blocky/config.yml
# configuration documentation: https://0xerr0r.github.io/blocky/latest/configuration/ # configuration documentation: https://0xerr0r.github.io/blocky/latest/configuration/
@@ -63,7 +61,7 @@ log:
# optional: Log level (one from trace, debug, info, warn, error). Default: info # optional: Log level (one from trace, debug, info, warn, error). Default: info
level: info level: info
EOF EOF
msg_ok "Installed Blocky" msg_ok "Configured Blocky"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/blocky.service cat <<EOF >/etc/systemd/system/blocky.service
@@ -77,7 +75,7 @@ ExecStart=/opt/blocky/./blocky --config config.yml
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
$STD systemctl enable --now blocky $STD systemctl enable -q --now blocky
msg_ok "Created Service" msg_ok "Created Service"
motd_ssh motd_ssh

View File

@@ -46,7 +46,7 @@ $STD npm run build --configuration=production
msg_ok "Built Frontend" msg_ok "Built Frontend"
msg_info "Creating Environment" msg_info "Creating Environment"
mkdir -p /opt/booklore_storage{/data,/books} mkdir -p /opt/booklore_storage{/data,/books,/bookdrop}
cat <<EOF >/opt/booklore_storage/.env cat <<EOF >/opt/booklore_storage/.env
DATABASE_URL=jdbc:mariadb://localhost:3306/$DB_NAME DATABASE_URL=jdbc:mariadb://localhost:3306/$DB_NAME
DATABASE_USERNAME=$DB_USER DATABASE_USERNAME=$DB_USER
@@ -55,6 +55,7 @@ BOOKLORE_PORT=6060
BOOKLORE_DATA_PATH=/opt/booklore_storage/data BOOKLORE_DATA_PATH=/opt/booklore_storage/data
BOOKLORE_BOOKS_PATH=/opt/booklore_storage/books BOOKLORE_BOOKS_PATH=/opt/booklore_storage/books
BOOKLORE_BOOKDROP_PATH=/opt/booklore_storage/bookdrop
EOF EOF
msg_ok "Created Environment" msg_ok "Created Environment"

View File

@@ -19,7 +19,17 @@ $STD apt-get install -y lsb-release
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
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_warn "WARNING: This script will run an external installer from a third-party source (install-bunkerweb.sh)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing BunkerWeb (Patience)"
curl -fsSL -o install-bunkerweb.sh https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh curl -fsSL -o install-bunkerweb.sh https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh
chmod +x install-bunkerweb.sh chmod +x install-bunkerweb.sh
$STD ./install-bunkerweb.sh --yes $STD ./install-bunkerweb.sh --yes

View File

@@ -13,6 +13,16 @@ setting_up_container
network_check network_check
update_os update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://casaos.zimaspace.com/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://get.casaos.io/"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing CasaOS (Patience)" msg_info "Installing CasaOS (Patience)"
DOCKER_CONFIG_PATH='/etc/docker/daemon.json' DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
mkdir -p $(dirname $DOCKER_CONFIG_PATH) mkdir -p $(dirname $DOCKER_CONFIG_PATH)

View File

@@ -18,6 +18,17 @@ $STD apt-get install -y chromium
$STD apt-get install -y xvfb $STD apt-get install -y xvfb
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://getchannels.com)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://getchannels.com/dvr/setup.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
if [[ "$CTTYPE" == "0" ]]; then if [[ "$CTTYPE" == "0" ]]; then
msg_info "Setting Up Hardware Acceleration" msg_info "Setting Up Hardware Acceleration"
$STD apt-get -y install \ $STD apt-get -y install \

View File

@@ -155,7 +155,6 @@ msg_ok "Packages from Testing Repo Installed"
$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;"
msg_info "Compiling Custom Photo-processing Library (extreme patience)"
LD_LIBRARY_PATH=/usr/local/lib LD_LIBRARY_PATH=/usr/local/lib
export LD_RUN_PATH=/usr/local/lib export LD_RUN_PATH=/usr/local/lib
STAGING_DIR=/opt/staging STAGING_DIR=/opt/staging
@@ -165,6 +164,7 @@ SOURCE_DIR=${STAGING_DIR}/image-source
$STD git clone -b main "$BASE_REPO" "$BASE_DIR" $STD git clone -b main "$BASE_REPO" "$BASE_DIR"
mkdir -p "$SOURCE_DIR" mkdir -p "$SOURCE_DIR"
msg_info "(1/5) Compiling libjxl"
cd "$STAGING_DIR" cd "$STAGING_DIR"
SOURCE=${SOURCE_DIR}/libjxl SOURCE=${SOURCE_DIR}/libjxl
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62" JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
@@ -203,7 +203,9 @@ ldconfig /usr/local/lib
$STD make clean $STD make clean
cd "$STAGING_DIR" cd "$STAGING_DIR"
rm -rf "$SOURCE"/{build,third_party} rm -rf "$SOURCE"/{build,third_party}
msg_ok "(1/5) Compiled libjxl"
msg_info "(2/5) Compiling libheif"
SOURCE=${SOURCE_DIR}/libheif SOURCE=${SOURCE_DIR}/libheif
# : "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}" # : "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}"
: "${LIBHEIF_REVISION:=35dad50a9145332a7bfdf1ff6aef6801fb613d68}" : "${LIBHEIF_REVISION:=35dad50a9145332a7bfdf1ff6aef6801fb613d68}"
@@ -227,7 +229,9 @@ ldconfig /usr/local/lib
$STD make clean $STD make clean
cd "$STAGING_DIR" cd "$STAGING_DIR"
rm -rf "$SOURCE"/build rm -rf "$SOURCE"/build
msg_ok "(2/5) Compiled libheif"
msg_info "(3/5) Compiling libraw"
SOURCE=${SOURCE_DIR}/libraw SOURCE=${SOURCE_DIR}/libraw
# : "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}" # : "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}"
: "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}" : "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}"
@@ -241,7 +245,9 @@ $STD make install
ldconfig /usr/local/lib ldconfig /usr/local/lib
$STD make clean $STD make clean
cd "$STAGING_DIR" cd "$STAGING_DIR"
msg_ok "(3/5) Compiled libraw"
msg_info "(4/5) Compiling imagemagick"
SOURCE=$SOURCE_DIR/imagemagick SOURCE=$SOURCE_DIR/imagemagick
# : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}" # : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}"
: "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}" : "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}"
@@ -254,7 +260,9 @@ $STD make install
ldconfig /usr/local/lib ldconfig /usr/local/lib
$STD make clean $STD make clean
cd "$STAGING_DIR" cd "$STAGING_DIR"
msg_ok "(4/5) Compiled imagemagick"
msg_info "(5/5) Compiling libvips"
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}" : "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
@@ -267,6 +275,7 @@ $STD ninja install
ldconfig /usr/local/lib ldconfig /usr/local/lib
cd "$STAGING_DIR" cd "$STAGING_DIR"
rm -rf "$SOURCE"/build rm -rf "$SOURCE"/build
msg_ok "(5/5) Compiled libvips"
{ {
echo "imagemagick: $IMAGEMAGICK_REVISION" echo "imagemagick: $IMAGEMAGICK_REVISION"
echo "libheif: $LIBHEIF_REVISION" echo "libheif: $LIBHEIF_REVISION"
@@ -274,7 +283,7 @@ rm -rf "$SOURCE"/build
echo "libraw: $LIBRAW_REVISION" echo "libraw: $LIBRAW_REVISION"
echo "libvips: $LIBVIPS_REVISION" echo "libvips: $LIBVIPS_REVISION"
} >~/.immich_library_revisions } >~/.immich_library_revisions
msg_ok "Custom Photo-processing Library Compiled" msg_ok "Custom Photo-processing Libraries Compiled Successfully"
INSTALL_DIR="/opt/${APPLICATION}" INSTALL_DIR="/opt/${APPLICATION}"
UPLOAD_DIR="${INSTALL_DIR}/upload" UPLOAD_DIR="${INSTALL_DIR}/upload"
@@ -285,9 +294,9 @@ GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p "$INSTALL_DIR" mkdir -p "$INSTALL_DIR"
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache} mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.141.1" "$SRC_DIR" fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.142.0" "$SRC_DIR"
msg_info "Installing ${APPLICATION} (more patience please)" msg_info "Installing ${APPLICATION} (patience)"
cd "$SRC_DIR"/server cd "$SRC_DIR"/server
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
@@ -319,15 +328,14 @@ msg_ok "Installed Immich Server and Web Components"
cd "$SRC_DIR"/machine-learning cd "$SRC_DIR"/machine-learning
mkdir -p "$ML_DIR" mkdir -p "$ML_DIR"
export VIRTUAL_ENV="${ML_DIR}/ml-venv" export VIRTUAL_ENV="${ML_DIR}/ml-venv"
$STD uv venv "$VIRTUAL_ENV"
if [[ -f ~/.openvino ]]; then if [[ -f ~/.openvino ]]; then
msg_info "Installing HW-accelerated machine-learning" msg_info "Installing HW-accelerated machine-learning"
uv -q sync --extra openvino --no-cache --active $STD uv sync --extra openvino --no-cache --active
patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so" patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
msg_ok "Installed HW-accelerated machine-learning" msg_ok "Installed HW-accelerated machine-learning"
else else
msg_info "Installing machine-learning" msg_info "Installing machine-learning"
uv -q sync --extra cpu --no-cache --active $STD uv sync --extra cpu --no-cache --active
msg_ok "Installed machine-learning" msg_ok "Installed machine-learning"
fi fi
cd "$SRC_DIR" cd "$SRC_DIR"

View File

@@ -17,6 +17,17 @@ msg_info "Installing Dependencies"
$STD apt-get install -y ca-certificates $STD apt-get install -y ca-certificates
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://iobroker.net/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://iobroker.net/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
msg_info "Installing ioBroker (Patience)" msg_info "Installing ioBroker (Patience)"

View File

@@ -19,6 +19,17 @@ $STD apt-get install -y \
git git
msg_ok "Dependencies installed" msg_ok "Dependencies installed"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://github.com/jeedom/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://raw.githubusercontent.com/jeedom/core/master/install/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
DEFAULT_BRANCH="master" DEFAULT_BRANCH="master"
REPO_URL="https://github.com/jeedom/core.git" REPO_URL="https://github.com/jeedom/core.git"

View File

@@ -13,20 +13,32 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Kasm Workspaces"
KASM_VERSION=$(curl -fsSL 'https://www.kasmweb.com/downloads' | grep -o 'https://kasm-static-content.s3.amazonaws.com/kasm_release_[^"]*\.tar\.gz' | head -n 1 | sed -E 's/.*release_(.*)\.tar\.gz/\1/') KASM_VERSION=$(curl -fsSL 'https://www.kasmweb.com/downloads' | grep -o 'https://kasm-static-content.s3.amazonaws.com/kasm_release_[^"]*\.tar\.gz' | head -n 1 | sed -E 's/.*release_(.*)\.tar\.gz/\1/')
msg_warn "WARNING: This script will run an external installer from a third-party source (https://www.kasmweb.com/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ install.sh inside tar.gz https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing Kasm Workspaces"
curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz" curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
cd /opt cd /opt
tar -xf "kasm_release_${KASM_VERSION}.tar.gz" tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
chmod +x /opt/kasm_release/install.sh chmod +x /opt/kasm_release/install.sh
printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh > ~/kasm-install.output 2>&1 printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh >~/kasm-install.output 2>&1
awk ' awk '
/^Kasm UI Login Credentials$/ {capture=1} /^Kasm UI Login Credentials$/ {capture=1}
capture {print} capture {print}
/^Service Registration Token$/ {in_token=1} /^Service Registration Token$/ {in_token=1}
in_token && /^-+$/ {dash_count++} in_token && /^-+$/ {dash_count++}
in_token && dash_count==2 {exit} in_token && dash_count==2 {exit}
' ~/kasm-install.output > ~/kasm.creds ' ~/kasm-install.output >~/kasm.creds
msg_ok "Installed Kasm Workspaces" msg_ok "Installed Kasm Workspaces"
motd_ssh motd_ssh

View File

@@ -13,6 +13,17 @@ setting_up_container
network_check network_check
update_os update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://mattermost.com/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://deb.packages.mattermost.com/repo-setup.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
msg_info "Setting up PostgreSQL" msg_info "Setting up PostgreSQL"

View File

@@ -3,7 +3,7 @@
# Copyright (c) 2021-2025 tteck # Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) # Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.turnkeylinux.org/nextcloud # Source: https://nextcloudpi.com/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color color
@@ -13,8 +13,19 @@ setting_up_container
network_check network_check
update_os update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://nextcloudpi.com/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing NextCloudPi (Patience)" msg_info "Installing NextCloudPi (Patience)"
bash <(curl -fsSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh) >/dev/null 2>&1 $STD bash <(curl -fsSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh)
msg_ok "Installed NextCloudPi" msg_ok "Installed NextCloudPi"
motd_ssh motd_ssh

View File

@@ -89,19 +89,36 @@ customize
msg_info "Retrieving Default Login (Patience)" msg_info "Retrieving Default Login (Patience)"
PASSWORD_FOUND=0 PASSWORD_FOUND=0
for i in {1..60}; do for i in {1..60}; do
PASSWORD_LINE=$(docker logs "$CONTAINER_ID" 2>&1 | awk '/Creating a new user:/ { print; exit }') PASSWORD_LINE=$(
if [[ -n "$PASSWORD_LINE" ]]; then { awk '/Creating a new user:/{print; exit}' < <(docker logs "$CONTAINER_ID" 2>&1); } || true
PASSWORD=$(echo "$PASSWORD_LINE" | awk -F 'password: ' '{print $2}') )
echo -e "username: admin@example.org\npassword: $PASSWORD" >/opt/.npm_pwd
if [[ -n "${PASSWORD_LINE:-}" ]]; then
PASSWORD="${PASSWORD_LINE#*password: }"
printf 'username: admin@example.org\npassword: %s\n' "$PASSWORD" >/opt/.npm_pwd
msg_ok "Saved default login to /opt/.npm_pwd" msg_ok "Saved default login to /opt/.npm_pwd"
PASSWORD_FOUND=1 PASSWORD_FOUND=1
break break
fi fi
sleep 2 sleep 2
done done
if [[ $PASSWORD_FOUND -eq 0 ]]; then
PASSWORD_LINE=$(
timeout 30s bash -c '
docker logs -f --since=0s --tail=0 "$1" 2>&1 | awk "/Creating a new user:/{print; exit}"
' _ "$CONTAINER_ID" || true
)
if [[ -n "${PASSWORD_LINE:-}" ]]; then
PASSWORD="${PASSWORD_LINE#*password: }"
printf 'username: admin@example.org\npassword: %s\n' "$PASSWORD" >/opt/.npm_pwd
msg_ok "Saved default login to /opt/.npm_pwd (live)"
PASSWORD_FOUND=1
fi
fi
if [[ $PASSWORD_FOUND -eq 0 ]]; then if [[ $PASSWORD_FOUND -eq 0 ]]; then
msg_error "Could not retrieve default login after 60 seconds." msg_error "Could not retrieve default login after 120s."
echo -e "\nYou can manually check the container logs with:\n docker logs $CONTAINER_ID | grep 'Creating a new user:'\n" echo -e "\nYou can manually check the container logs with:\n docker logs $CONTAINER_ID | grep 'Creating a new user:'\n"
fi fi

View File

@@ -51,7 +51,7 @@ mkdir -p $OLLAMA_INSTALL_DIR
OLLAMA_URL="https://github.com/ollama/ollama/releases/download/${RELEASE}/ollama-linux-amd64.tgz" OLLAMA_URL="https://github.com/ollama/ollama/releases/download/${RELEASE}/ollama-linux-amd64.tgz"
TMP_TAR="/tmp/ollama.tgz" TMP_TAR="/tmp/ollama.tgz"
echo -e "\n" echo -e "\n"
if curl -fL# -o "$TMP_TAR" "$OLLAMA_URL"; then if curl -fL# -C - -o "$TMP_TAR" "$OLLAMA_URL"; then
if tar -xzf "$TMP_TAR" -C "$OLLAMA_INSTALL_DIR"; then if tar -xzf "$TMP_TAR" -C "$OLLAMA_INSTALL_DIR"; then
ln -sf "$OLLAMA_INSTALL_DIR/bin/ollama" "$BINDIR/ollama" ln -sf "$OLLAMA_INSTALL_DIR/bin/ollama" "$BINDIR/ollama"
echo "${RELEASE}" >/opt/Ollama_version.txt echo "${RELEASE}" >/opt/Ollama_version.txt

View File

@@ -26,13 +26,15 @@ sed -e 's/_ENCRYPTION=true/_ENCRYPTION=false/' \
-e '/^# ENC/s/# //' \ -e '/^# ENC/s/# //' \
-e "s/ENCRYPTION_KEY=.*$/ENCRYPTION_KEY=$PALMR_KEY/" \ -e "s/ENCRYPTION_KEY=.*$/ENCRYPTION_KEY=$PALMR_KEY/" \
-e "s|file:.*$|file:$PALMR_DB\"|" \ -e "s|file:.*$|file:$PALMR_DB\"|" \
-e '/db"$/a\# Uncomment below when using reverse proxy\ -e "\|db\"$|a\\# Uncomment below when using a reverse proxy\\
# SECURE_SITE=true' \ # SECURE_SITE=true\\
# Uncomment and add your path if using symlinks for data storage\\
# CUSTOM_PATH=<path-to-your-bind-mount>" \
.env.example >./.env .env.example >./.env
$STD pnpm install $STD pnpm install
$STD pnpm dlx prisma generate $STD npx prisma generate
$STD pnpm dlx prisma migrate deploy $STD npx prisma migrate deploy
$STD pnpm dlx prisma db push $STD npx prisma db push
$STD pnpm db:seed $STD pnpm db:seed
$STD pnpm build $STD pnpm build
msg_ok "Configured palmr backend" msg_ok "Configured palmr backend"

View File

@@ -13,6 +13,17 @@ setting_up_container
network_check network_check
update_os update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://pi-hole.net/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://install.pi-hole.net"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y ufw $STD apt-get install -y ufw
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"

View File

@@ -1,52 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# Co-Author: michelroegl-brunner
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://stonith404.github.io/pingvin-share/introduction
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
git
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="pm2" setup_nodejs
msg_info "Installing Pingvin Share (Patience)"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
$STD unzip v${RELEASE}.zip
echo "${RELEASE}" >"/opt/pingvin_version.txt"
mv pingvin-share-${RELEASE} /opt/pingvin-share
cd /opt/pingvin-share/backend
$STD npm install
$STD npm run build
$STD pm2 start --name="pingvin-share-backend" npm -- run prod
cd ../frontend
sed -i '/"admin.config.smtp.allow-unauthorized-certificates":\|admin.config.smtp.allow-unauthorized-certificates.description":/,+1d' ./src/i18n/translations/fr-FR.ts
$STD npm install
$STD npm run build
$STD pm2 start --name="pingvin-share-frontend" npm -- run start
$STD pm2 startup systemd
$STD pm2 save
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Pingvin Share"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf /opt/v${RELEASE}.zip
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,12 +14,14 @@ network_check
update_os update_os
msg_info "Installing Proxmox Datacenter Manager" msg_info "Installing Proxmox Datacenter Manager"
curl -fsSL https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg | gpg --dearmor -o /etc/apt/keyrings/proxmox-release-bookworm.gpg curl -fsSL https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg -o /usr/share/keyrings/proxmox-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/proxmox-release-bookworm.gpg] http://download.proxmox.com/debian/pdm bookworm pdm-test " >/etc/apt/sources.list.d/proxmox-release-bookworm.list echo "deb [signed-by=/usr/share/keyrings/proxmox-archive-keyring.gpg] http://download.proxmox.com/debian/pdm bookworm pdm-test " >/etc/apt/sources.list.d/pdm-test.list
$STD apt-get update $STD apt-get update
$STD apt-get install -y \ DEBIAN_FRONTEND=noninteractive
proxmox-datacenter-manager \ $STD apt-get -o Dpkg::Options::="--force-confdef" \
proxmox-datacenter-manager-ui -o Dpkg::Options::="--force-confold" \
install -y proxmox-datacenter-manager \
proxmox-datacenter-manager-ui
msg_ok "Installed Proxmox Datacenter Manager" msg_ok "Installed Proxmox Datacenter Manager"
motd_ssh motd_ssh

View File

@@ -13,6 +13,17 @@ setting_up_container
network_check network_check
update_os update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://runtipi.io/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://raw.githubusercontent.com/runtipi/runtipi/master/scripts/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing Runtipi (Patience)" msg_info "Installing Runtipi (Patience)"
DOCKER_CONFIG_PATH='/etc/docker/daemon.json' DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
mkdir -p "$(dirname "$DOCKER_CONFIG_PATH")" mkdir -p "$(dirname "$DOCKER_CONFIG_PATH")"

46
install/stylus-install.sh Normal file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: luismco
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/mmastrac/stylus
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "stylus" "mmastrac/stylus" "singlefile" "latest" "/usr/bin/" "*_linux_amd64"
msg_info "Configuring Stylus"
$STD stylus init /opt/stylus/
msg_ok "Configured Stylus"
msg_info "Creating service"
cat <<EOF >/etc/systemd/system/stylus.service
[Unit]
Description=Stylus Service
After=network.target
[Service]
Type=simple
ExecStart=stylus run /opt/stylus/
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now stylus
msg_ok "Created service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned up"

View File

@@ -0,0 +1,39 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/influxdata/telegraf
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Adding Telegraf key and repository"
curl -fsSL -O https://repos.influxdata.com/influxdata-archive.key
gpg --show-keys --with-fingerprint --with-colons ./influxdata-archive.key 2>&1 \
| grep -q '^fpr:\+24C975CBA61A024EE1B631787C3D57159FC2F927:$' \
&& cat influxdata-archive.key \
| gpg --dearmor \
| tee /etc/apt/keyrings/influxdata-archive.gpg > /dev/null \
&& echo 'deb [signed-by=/etc/apt/keyrings/influxdata-archive.gpg] https://repos.influxdata.com/debian stable main' \
| tee /etc/apt/sources.list.d/influxdata.list > /dev/null
msg_ok "Added Telegraf Repository"
msg_info "Installing Telegraf"
$STD apt-get update
$STD apt-get install telegraf -y
msg_ok "Installed Telegraf"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
rm /influxdata-archive.key
msg_ok "Cleaned"

58
install/uhf-install.sh Normal file
View File

@@ -0,0 +1,58 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: zackwithak13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.uhfapp.com/server
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y ffmpeg
msg_ok "Installed Dependencies"
msg_info "Setting Up UHF Server Environment"
mkdir -p /etc/uhf-server
mkdir -p /var/lib/uhf-server/data
mkdir -p /var/lib/uhf-server/recordings
cat <<EOF >/etc/uhf-server/.env
API_HOST=0.0.0.0
API_PORT=7568
RECORDINGS_DIR=/var/lib/uhf-server/recordings
DB_PATH=/var/lib/uhf-server/data/db.json
LOG_LEVEL=INFO
EOF
msg_ok "Set Up UHF Server Environment"
fetch_and_deploy_gh_release "comskip" "swapplications/comskip" "prebuild" "latest" "/opt/comskip" "comskip-x64-*.zip"
fetch_and_deploy_gh_release "uhf-server" "swapplications/uhf-server-dist" "prebuild" "latest" "/opt/uhf-server" "UHF.Server-linux-x64-*.zip"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/uhf-server.service
[Unit]
Description=UHF Server service
After=syslog.target network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/uhf-server
EnvironmentFile=/etc/uhf-server/.env
ExecStart=/opt/uhf-server/uhf-server
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now uhf-server
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -13,9 +13,18 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Fetching Latest Wazuh Version"
RELEASE=$(curl -fsSL https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '"tag_name"' | awk -F '"' '{print substr($4, 2, length($2)-4)}') RELEASE=$(curl -fsSL https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '"tag_name"' | awk -F '"' '{print substr($4, 2, length($2)-4)}')
msg_ok "Latest Wazuh Version: $RELEASE"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://wazuh.com/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://packages.wazuh.com/$RELEASE/wazuh-install.sh "
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Setup Wazuh" msg_info "Setup Wazuh"
curl -fsSL https://packages.wazuh.com/$RELEASE/wazuh-install.sh -o wazuh-install.sh curl -fsSL https://packages.wazuh.com/$RELEASE/wazuh-install.sh -o wazuh-install.sh

View File

@@ -23,13 +23,12 @@ fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
msg_info "Configure ${APPLICATION}" msg_info "Configure ${APPLICATION}"
cd /opt/wizarr cd /opt/wizarr
$STD /usr/local/bin/uv lock $STD /usr/local/bin/uv sync --frozen
$STD /usr/local/bin/uv sync --locked $STD /usr/local/bin/uv run --frozen pybabel compile -d app/translations
$STD /usr/local/bin/uv run pybabel compile -d app/translations
$STD npm --prefix app/static install $STD npm --prefix app/static install
$STD npm --prefix app/static run build:css $STD npm --prefix app/static run build:css
mkdir -p ./.cache mkdir -p ./.cache
$STD /usr/local/bin/uv run flask db upgrade $STD /usr/local/bin/uv run --frozen flask db upgrade
msg_ok "Configure ${APPLICATION}" msg_ok "Configure ${APPLICATION}"
msg_info "Creating env, start script and service" msg_info "Creating env, start script and service"
@@ -43,7 +42,7 @@ EOF
cat <<EOF >/opt/wizarr/start.sh cat <<EOF >/opt/wizarr/start.sh
#!/usr/bin/env bash #!/usr/bin/env bash
uv run gunicorn \ uv run --frozen gunicorn \
--config gunicorn.conf.py \ --config gunicorn.conf.py \
--preload \ --preload \
--workers 4 \ --workers 4 \

View File

@@ -14,11 +14,23 @@ 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 lsb-release apt-transport-https \
$STD apt-get install -y ca-certificates lsb-release \
ca-certificates
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://yunohost.org/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://install.yunohost.org"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing YunoHost (Patience)" msg_info "Installing YunoHost (Patience)"
touch /etc/.pve-ignore.resolv.conf touch /etc/.pve-ignore.resolv.conf
curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

View File

@@ -82,7 +82,7 @@ network_check() {
update_os() { update_os() {
msg_info "Updating Container OS" msg_info "Updating Container OS"
$STD apk -U upgrade $STD apk -U upgrade
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVED/raw/branch/main/misc/tools.func) source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
msg_ok "Updated Container OS" msg_ok "Updated Container OS"
} }

File diff suppressed because it is too large Load Diff

View File

@@ -250,15 +250,12 @@ EOF
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" \ whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" \
"Supporting the software's development team is essential.\nPlease consider buying a subscription." 10 58 "Supporting the software's development team is essential.\nPlease consider buying a subscription." 10 58
msg_info "Disabling subscription nag" msg_info "Disabling subscription nag"
cat <<'EOF' >/etc/apt/apt.conf.d/no-nag-script cat >/etc/apt/apt.conf.d/no-nag-script <<'EOF'
DPkg::Post-Invoke { DPkg::Post-Invoke { "if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; fi"; };
"if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then EOF
sed -i '/data\.status/{s/\\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js;
fi"; cat >/etc/apt/apt.conf.d/no-nag-script-pmgmanagerlib-mobile <<'EOF'
"if [ -s /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; then DPkg::Post-Invoke { "if [ -s /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; then sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; fi"; };
sed -i '/data\.status/{s/\\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js;
fi";
};
EOF EOF
msg_ok "Disabled subscription nag (clear browser cache!)" msg_ok "Disabled subscription nag (clear browser cache!)"
;; ;;

View File

@@ -515,6 +515,7 @@ post_routines_common() {
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58 whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58
msg_info "Disabling subscription nag" msg_info "Disabling subscription nag"
# Create external script, this is needed because DPkg::Post-Invoke is fidly with quote interpretation # Create external script, this is needed because DPkg::Post-Invoke is fidly with quote interpretation
mkdir -p /usr/local/bin
cat >/usr/local/bin/pve-remove-nag.sh <<'EOF' cat >/usr/local/bin/pve-remove-nag.sh <<'EOF'
#!/bin/sh #!/bin/sh
WEB_JS=/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js WEB_JS=/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
@@ -530,14 +531,26 @@ if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
printf "%s\n" \ printf "%s\n" \
"$MARKER" \ "$MARKER" \
"<script>" \ "<script>" \
" function watchAndRemoveDialog() {" \ " function removeSubscriptionElements() {" \
" const observer = new MutationObserver(() => {" \ " const dialogs = document.querySelectorAll('dialog.pwt-outer-dialog');" \
" const dialog = document.querySelector('dialog[aria-label=\"No valid subscription\"]');" \ " dialogs.forEach(dialog => {" \
" if (dialog) { dialog.remove(); console.log('Removed dialog: No valid subscription'); observer.disconnect(); }" \ " const closeButton = dialog.querySelector('.fa-close');" \
" const exclamationIcon = dialog.querySelector('.fa-exclamation-triangle');" \
" const continueButton = dialog.querySelector('button');" \
" if (closeButton && exclamationIcon && continueButton) { dialog.remove(); console.log('Removed subscription dialog'); }" \
" });" \
" const cards = document.querySelectorAll('.pwt-card.pwt-p-2.pwt-d-flex.pwt-interactive.pwt-justify-content-center');" \
" cards.forEach(card => {" \
" const hasInteractiveElements = card.querySelector('button, input, a');" \
" const hasComplexStructure = card.querySelector('.pwt-grid, .pwt-flex, .pwt-button');" \
" if (!hasInteractiveElements && !hasComplexStructure) { card.remove(); console.log('Removed subscription card'); }" \
" });" \ " });" \
" observer.observe(document.body, { childList: true, subtree: true });" \
" }" \ " }" \
" setTimeout(watchAndRemoveDialog, 100);" \ " const observer = new MutationObserver(removeSubscriptionElements);" \
" observer.observe(document.body, { childList: true, subtree: true });" \
" removeSubscriptionElements();" \
" setInterval(removeSubscriptionElements, 300);" \
" setTimeout(() => {observer.disconnect();}, 10000);" \
"</script>" \ "</script>" \
"" >> "$MOBILE_TPL" "" >> "$MOBILE_TPL"
fi fi