Compare commits

..

79 Commits

Author SHA1 Message Date
d0f82d7c23 Update CHANGELOG.md (#9533)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 00:17:15 +00:00
1ec9a00abf Update versions.json (#9532)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-12-01 01:16:49 +01:00
8ab9666368 Update CHANGELOG.md (#9530)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 22:16:15 +00:00
fc559e0e09 Update CHANGELOG.md (#9529)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 18:15:21 +00:00
380bf26d38 fix(recyclarr): remove update script systemctl commands (#9522) 2025-11-30 19:15:01 +01:00
c1f7d3d8d7 Update CHANGELOG.md (#9527)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 16:34:42 +00:00
33489e607b Refactor: Actual Budget (#9518)
* Update create_self_signed_cert function

* Refactor

* Remove old version file check
2025-11-30 17:34:14 +01:00
877a25c0cc Update versions.json (#9525)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 13:05:24 +01:00
8c0abc9ffb Update CHANGELOG.md (#9520)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 00:15:35 +00:00
a43e287db2 Update versions.json (#9519)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-30 01:15:08 +01:00
1cd394a754 Update CHANGELOG.md (#9513)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 21:54:23 +00:00
04bd9af89c Update CHANGELOG.md (#9512)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 21:54:07 +00:00
4d8fa37ba0 Update date in json (#9511)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-11-29 21:54:02 +00:00
b4fe802d49 'Add new script' (#9510)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2025-11-29 22:53:41 +01:00
9b6c816c6f Update CHANGELOG.md (#9508)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 19:12:54 +00:00
769e541938 Fix duplicate ORIGIN in .env for OpenArchiver install script (#9503)
* Initial plan

* Fix duplicate ORIGIN in .env for OpenArchiver install script

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2025-11-29 20:12:28 +01:00
af9491d70d Remove Documenso (#9507)
* Delete ct/documenso.sh

* Delete ct/headers/documenso

* Delete install/documenso-install.sh

* Delete frontend/public/json/documenso.json
2025-11-29 19:01:45 +01:00
38dd38a9e2 Update CHANGELOG.md (#9505)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 15:13:44 +00:00
5465a5dc58 Update Discord link (#9499) 2025-11-29 16:13:20 +01:00
5c6e73d4b6 Update versions.json (#9501)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 13:05:48 +01:00
f3c2ca6f8a Update CHANGELOG.md (#9497)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 00:12:48 +00:00
64df48c9b5 Update versions.json (#9496)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-29 01:12:26 +01:00
9f20c898fb Update CHANGELOG.md (#9495)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-28 21:52:55 +00:00
efdb44bc2e Update CHANGELOG.md (#9493)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-28 20:22:29 +00:00
8caec1d13e Update apache-guacamole-install.sh issue #9458 (#9492)
Issue 9458
2025-11-28 21:22:04 +01:00
39388a1b77 Remove Habitica (#9489) 2025-11-28 14:31:47 +01:00
91b80caaa5 Update versions.json (#9488)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-28 13:07:10 +01:00
dc3736146a Update CHANGELOG.md (#9486)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-28 00:14:09 +00:00
40edc3e908 Update versions.json (#9485)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-28 01:13:45 +01:00
92bc24d1e5 Update CHANGELOG.md (#9483)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 14:24:38 +00:00
bdef4cbfef PBS: fix typo (#9482)
* fix PBS warning typo

* lowercase IPv6

---------

Co-authored-by: jharmsen <jharmsen@JH-MBA.local>
2025-11-27 15:24:08 +01:00
7d47eb81e9 Update CHANGELOG.md (#9481)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 13:31:39 +00:00
276ce230f3 Upgrade pve-scripts-local to node 24 (#9457)
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-11-27 14:31:15 +01:00
5f911164e3 Fix MongoDB setup version assignment 2025-11-27 14:02:11 +01:00
8c6843f180 Update versions.json (#9477)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 13:05:49 +01:00
5004477246 Update CHANGELOG.md (#9474)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 08:14:01 +00:00
8e15e0a524 Update date in json (#9473)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-11-27 08:13:36 +00:00
54b634cea4 Qdrant (#9465)
* 'Add new script'

* Update qdrant.sh

* Update qdrant.json

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-11-27 09:13:15 +01:00
d4e1b8f354 Update CHANGELOG.md (#9470)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 00:12:56 +00:00
1a4f9ff815 Update versions.json (#9469)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-27 01:12:34 +01:00
ee3d4874d1 Update CHANGELOG.md (#9463)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-26 13:19:49 +00:00
Cam
01442d08ec Fix Open-WebUI install and upgrade commands (#9461) 2025-11-26 14:19:24 +01:00
e1bf05ad69 Update CHANGELOG.md (#9462)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-26 12:49:34 +00:00
7d435a1a5e Increase RAM for LXC (#9460) 2025-11-26 13:49:07 +01:00
7184755a0f Update versions.json (#9459)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-26 13:07:04 +01:00
f0a23be999 Update CHANGELOG.md (#9451)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-26 00:14:31 +00:00
93a764676f Update versions.json (#9450)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-26 01:14:11 +01:00
21e9030946 Update CHANGELOG.md (#9449)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 22:59:01 +00:00
01774b1967 Change install command to upgrade for Open-WebUI (#9448) 2025-11-25 23:58:39 +01:00
63c5b922de Remove pip cache purge from cleanup script
Removed pip cache purge command from cleanup function.
2025-11-25 22:24:16 +01:00
789cd3e187 Update CHANGELOG.md (#9446)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 21:13:16 +00:00
282e8ef186 Update CHANGELOG.md (#9444)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 19:39:04 +00:00
8a0b1d864b Update install scripts for improved dependency handling (#9441)
Replaces 'npm ci' with 'npm install --legacy-peer-deps' in install and update scripts to address peer dependency issues. Adds global npm update and turbo prune steps to the update script for better Docker build support.
2025-11-25 20:38:35 +01:00
d2a103c230 Set default LANG in locale configuration (#9440)
Ensures LANG is set to en_US.UTF-8 by default if not already defined before updating /etc/locale.gen.
2025-11-25 20:32:18 +01:00
949ecc39ad Update CHANGELOG.md (#9443)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 19:31:24 +00:00
a9c08a611e Refactor Asterisk installation process (#9429)
Refactor Asterisk installation script to fetch versions directly from Asterisk download URLs and streamline dependency installation.
2025-11-25 20:31:00 +01:00
e13119250d Add missing config files to build output 2025-11-25 18:34:14 +01:00
87f71f75b1 Update CHANGELOG.md (#9439)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 17:21:39 +00:00
3b6e5aae5f paperless: patch consume to uv (#9425) 2025-11-25 18:21:15 +01:00
f90fdadbb2 Update CHANGELOG.md (#9438)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 17:15:09 +00:00
120affbcc5 Add Zabbix version selection to install and update scripts (#9430)
Prompts user to select Zabbix version (7.0 LTS, 7.4, or latest) during installation and update. Refactors download logic to use the chosen version, improving flexibility and user control over Zabbix deployment.
2025-11-25 18:14:37 +01:00
ae81cafa10 Update CHANGELOG.md (#9437)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 17:08:37 +00:00
f60493a862 attempt to fix mtk (#9434) 2025-11-25 18:08:11 +01:00
0cbce2287d Update versions.json (#9428)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 13:08:31 +01:00
edfeda61ad Update source URL in domain-locker-install.sh (#9423) 2025-11-25 09:51:25 +01:00
1815fee99b Update CHANGELOG.md (#9424)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 07:53:11 +00:00
4bf830c6bf gh: update supported PVE Version (#9422)
* gh: update supported PVE Version

* Update supported versions in SECURITY.md
2025-11-25 08:52:46 +01:00
d0cced9a1d Update CHANGELOG.md (#9419)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 00:11:49 +00:00
a56f7cfd45 Update versions.json (#9418)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-25 01:11:30 +01:00
79f7852777 Update CHANGELOG.md (#9416)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-24 21:03:42 +00:00
e54f372079 [Fix]: Wizarr DB error during install (#9415)
* test skip scheduler during install & not running migration

- migration is run by the start script anyway, I think

* restore db upgrade during install/update; add new env vars; patch start.sh
2025-11-24 22:03:19 +01:00
cf89b17b0d Update CHANGELOG.md (#9414)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-24 20:35:25 +00:00
bb40a3fdd3 core: remove Python uv cache clean command (#9413) 2025-11-24 21:34:59 +01:00
4ffa571a34 Update CHANGELOG.md (#9409)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-24 17:24:44 +00:00
48f1f07892 Update CHANGELOG.md (#9408)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-24 17:24:18 +00:00
e5e587aa37 Update gitea.json (#9406) 2025-11-24 18:24:15 +01:00
b4bce4964c Joplin-Server: Bump Node.js version from 22 to 24 (#9405) 2025-11-24 18:23:50 +01:00
c8ed59b148 huntarr: disable on website during install issues (#9403) 2025-11-24 18:23:21 +01:00
ce9323ab17 Update versions.json (#9402)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-24 13:05:43 +01:00
48 changed files with 1029 additions and 1074 deletions

View File

@ -10,8 +10,123 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-12-01
## 2025-11-30
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(recyclarr): remove update script systemctl commands [@vidonnus](https://github.com/vidonnus) ([#9522](https://github.com/community-scripts/ProxmoxVE/pull/9522))
- #### 🔧 Refactor
- Refactor: Actual Budget [@tremor021](https://github.com/tremor021) ([#9518](https://github.com/community-scripts/ProxmoxVE/pull/9518))
## 2025-11-29
### 🆕 New Scripts
- Valkey ([#9510](https://github.com/community-scripts/ProxmoxVE/pull/9510))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Fix duplicate ORIGIN in .env for OpenArchiver install script [@Copilot](https://github.com/Copilot) ([#9503](https://github.com/community-scripts/ProxmoxVE/pull/9503))
- #### 💥 Breaking Changes
- Remove: Documenso [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9507](https://github.com/community-scripts/ProxmoxVE/pull/9507))
### 🌐 Website
- Update Discord link on website [@tremor021](https://github.com/tremor021) ([#9499](https://github.com/community-scripts/ProxmoxVE/pull/9499))
## 2025-11-28
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Apache-guacamole: fixed to early rm [@mtorazzi](https://github.com/mtorazzi) ([#9492](https://github.com/community-scripts/ProxmoxVE/pull/9492))
- #### 💥 Breaking Changes
- Remove: Habitica [@MickLesk](https://github.com/MickLesk) ([#9489](https://github.com/community-scripts/ProxmoxVE/pull/9489))
## 2025-11-27
### 🆕 New Scripts
- Qdrant ([#9465](https://github.com/community-scripts/ProxmoxVE/pull/9465))
### 🚀 Updated Scripts
- #### 💥 Breaking Changes
- Upgrade pve-scripts-local to node 24 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9457](https://github.com/community-scripts/ProxmoxVE/pull/9457))
### 🌐 Website
- #### 🐞 Bug Fixes
- PBS: fix typo [@joshuaharmsen845](https://github.com/joshuaharmsen845) ([#9482](https://github.com/community-scripts/ProxmoxVE/pull/9482))
## 2025-11-26
### 🚀 Updated Scripts
- Joplin Server: Increase RAM for LXC [@tremor021](https://github.com/tremor021) ([#9460](https://github.com/community-scripts/ProxmoxVE/pull/9460))
- #### 🐞 Bug Fixes
- Fix Open WebUI update logic (swap upgrade/install) [@camcop](https://github.com/camcop) ([#9461](https://github.com/community-scripts/ProxmoxVE/pull/9461))
## 2025-11-25
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Open WebUI: Change install command to upgrade for Open-WebUI [@tremor021](https://github.com/tremor021) ([#9448](https://github.com/community-scripts/ProxmoxVE/pull/9448))
- core: set default LANG in locale configuration [@MickLesk](https://github.com/MickLesk) ([#9440](https://github.com/community-scripts/ProxmoxVE/pull/9440))
- documenso: switch to npm peer-.deps to get build running [@MickLesk](https://github.com/MickLesk) ([#9441](https://github.com/community-scripts/ProxmoxVE/pull/9441))
- Refactor Asterisk installation process [@MickLesk](https://github.com/MickLesk) ([#9429](https://github.com/community-scripts/ProxmoxVE/pull/9429))
- Fix the mikrotik VM installer after they reformatted their downloads page [@paul-ridgway](https://github.com/paul-ridgway) ([#9434](https://github.com/community-scripts/ProxmoxVE/pull/9434))
- paperless: patch consume to uv [@MickLesk](https://github.com/MickLesk) ([#9425](https://github.com/community-scripts/ProxmoxVE/pull/9425))
- #### ✨ New Features
- add Zabbix version selection to install and update scripts [@MickLesk](https://github.com/MickLesk) ([#9430](https://github.com/community-scripts/ProxmoxVE/pull/9430))
### 🧰 Maintenance
- #### 📂 Github
- gh: update supported PVE Version [@MickLesk](https://github.com/MickLesk) ([#9422](https://github.com/community-scripts/ProxmoxVE/pull/9422))
## 2025-11-24
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- core: remove uv cache clean command [@MickLesk](https://github.com/MickLesk) ([#9413](https://github.com/community-scripts/ProxmoxVE/pull/9413))
- Joplin-Server: Bump Node.js version from 22 to 24 [@tremor021](https://github.com/tremor021) ([#9405](https://github.com/community-scripts/ProxmoxVE/pull/9405))
- #### 🔧 Refactor
- [Fix]: Wizarr DB error during install [@vhsdream](https://github.com/vhsdream) ([#9415](https://github.com/community-scripts/ProxmoxVE/pull/9415))
### 🌐 Website
- #### 📝 Script Information
- Gitea: Update website [@tremor021](https://github.com/tremor021) ([#9406](https://github.com/community-scripts/ProxmoxVE/pull/9406))
- huntarr: disable on website during install issues [@MickLesk](https://github.com/MickLesk) ([#9403](https://github.com/community-scripts/ProxmoxVE/pull/9403))
## 2025-11-23
### 🚀 Updated Scripts

View File

@ -105,7 +105,7 @@
<tr>
<td align="center" width="33%">
<h3>🖥️ Proxmox VE</h3>
<p>Version 8.4.x or 9.0.x</p>
<p>Version: 8.4.x | 9.0.x | 9.1.x</p>
</td>
<td align="center" width="33%">
<h3>🐧 Operating System</h3>

View File

@ -6,6 +6,7 @@ This project currently supports the following versions of Proxmox VE (PVE):
| Version | Supported |
| ------- | ------------------ |
| 9.1.x | :white_check_mark: |
| 9.0.x | :white_check_mark: |
| 8.4.x | :white_check_mark: |
| 8.3.x | Limited support* ❕ |

View File

@ -24,33 +24,32 @@ function update_script() {
check_container_storage
check_container_resources
if [[ ! -f /opt/actualbudget_version.txt ]]; then
if [[ ! -f ~/.actualbudget && ! -f /opt/actualbudget_version.txt ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
NODE_VERSION="22" setup_nodejs
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
RELEASE=$(get_latest_github_release "actualbudget/actual")
if [[ -f /opt/actualbudget-data/config.json ]]; then
if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
if check_for_gh_release "actualbudget" "actualbudget/actual"; then
msg_info "Stopping Service"
systemctl stop actualbudget
msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}"
msg_info "Updating Actual Budget to ${RELEASE}"
$STD npm update -g @actual-app/sync-server
echo "${RELEASE}" >/opt/actualbudget_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
echo "${RELEASE}" >~/.actualbudget
msg_ok "Updated Actual Budget to ${RELEASE}"
msg_info "Starting Service"
systemctl start actualbudget
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_info "${APP} is already up to date"
fi
else
msg_info "Old Installation Found, you need to migrate your data and recreate to a new container"
msg_info "Please follow the instructions on the ${APP} website to migrate your data"
msg_info "Please follow the instructions on the Actual Budget website to migrate your data"
msg_info "https://actualbudget.org/docs/backup-restore/backup"
exit
fi

View File

@ -1,74 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/documenso/documenso
APP="Documenso"
var_tags="${var_tags:-document}"
var_disk="${var_disk:-12}"
var_cpu="${var_cpu:-6}"
var_ram="${var_ram:-6144}"
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/documenso ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Service"
systemctl stop documenso
msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}"
cp /opt/documenso/.env /opt/
rm -rf /opt/documenso
cd /opt
curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip
$STD unzip v${RELEASE}.zip
mv documenso-${RELEASE} /opt/documenso
cd /opt/documenso
mv /opt/.env /opt/documenso/.env
export TURBO_CACHE=1
export NEXT_TELEMETRY_DISABLED=1
export CYPRESS_INSTALL_BINARY=0
export NODE_OPTIONS="--max-old-space-size=4096"
$STD npm ci
$STD turbo run build --filter=@documenso/remix
$STD npm run prisma:migrate-deploy
$STD turbo daemon stop
rm -rf /opt/v${RELEASE}.zip
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start documenso
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@ -1,82 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/HabitRPG/habitica
APP="Habitica"
var_tags="${var_tags:-gaming}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
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/habitica" ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha" setup_nodejs
if check_for_gh_release "habitica" "HabitRPG/habitica"; then
msg_info "Stopping Service"
systemctl stop habitica-mongodb
systemctl stop habitica
systemctl stop habitica-client
msg_info "Stopped Service"
msg_info "Save configuration"
if [[ -f /opt/habitica/config.json ]]; then
cp /opt/habitica/config.json ~/config.json
msg_ok "Saved configuration"
else
msg_warn "No configuration file found, skipping save"
fi
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
msg_info "Updating $APP"
cd /opt/habitica
$STD npm i
$STD npm run postinstall
$STD npm run client:build
$STD gulp build:prod
msg_ok "Updated $APP"
msg_info "Restoring configuration"
if [[ -f ~/config.json ]]; then
cp ~/config.json /opt/habitica/config.json
msg_ok "Restored configuration"
else
msg_warn "No configuration file found to restore"
fi
msg_info "Starting Service"
systemctl start habitica-mongodb
systemctl start habitica
systemctl start habitica-client
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

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

View File

@ -1,6 +0,0 @@
__ __ __ _ __ _
/ / / /___ _/ /_ (_) /_(_)________ _
/ /_/ / __ `/ __ \/ / __/ / ___/ __ `/
/ __ / /_/ / /_/ / / /_/ / /__/ /_/ /
/_/ /_/\__,_/_.___/_/\__/_/\___/\__,_/

6
ct/headers/qdrant Normal file
View File

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

6
ct/headers/valkey Normal file
View File

@ -0,0 +1,6 @@
_ __ ____
| | / /___ _/ / /_____ __ __
| | / / __ `/ / //_/ _ \/ / / /
| |/ / /_/ / / ,< / __/ /_/ /
|___/\__,_/_/_/|_|\___/\__, /
/____/

View File

@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="Joplin-Server"
var_tags="${var_tags:-notes}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_ram="${var_ram:-6144}"
var_disk="${var_disk:-20}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
@ -28,6 +28,8 @@ function update_script() {
exit
fi
NODE_VERSION=24 NODE_MODULE="yarn,npm,pm2" setup_nodejs
if check_for_gh_release "joplin-server" "laurent22/joplin"; then
msg_info "Stopping Services"
systemctl stop joplin-server

View File

@ -30,7 +30,7 @@ function update_script() {
msg_info "Updating MongoDB"
if lscpu | grep -q 'avx'; then
MONGO_VERSION="8.0" setup_mongodb
MONGO_VERSION="8.0"
else
msg_error "No AVX detected (CPU-Flag)! We have discontinued support for this. You are welcome to try it manually with a Debian LXC, but due to the many issues with Omada, we currently only support AVX CPUs."
exit 10

View File

@ -108,7 +108,7 @@ EOF
msg_info "Updating Open WebUI via uv"
PYTHON_VERSION="3.12" setup_uv
$STD uv tool install --python 3.12 open-webui[all]
$STD uv tool upgrade --python 3.12 open-webui[all]
systemctl restart open-webui
msg_ok "Updated Open WebUI"
msg_ok "Updated successfully!"

View File

@ -105,6 +105,7 @@ function update_script() {
msg_ok "Backup completed to $BACKUP_DIR"
declare -A PATCHES=(
["paperless-consumer.service"]="ExecStart=uv run -- python manage.py document_consumer"
["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO"
["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO"
["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\""

View File

@ -27,42 +27,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "ProxmoxVE-Local" "community-scripts/ProxmoxVE-Local"; then
msg_info "Stopping Services"
systemctl stop pvescriptslocal
msg_ok "Stopped Services"
msg_info "Backup Data"
cp /opt/ProxmoxVE-Local/.env /opt/.env.bak
cp -r /opt/ProxmoxVE-Local/data /opt/data.bak
msg_ok "Backed up Data"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ProxmoxVE-Local" "community-scripts/ProxmoxVE-Local"
msg_info "Restoring Data"
if [[ -f /opt/.env.bak ]]; then
mv /opt/.env.bak /opt/ProxmoxVE-Local/.env
fi
if [[ -d /opt/data.bak ]]; then
rm -rf /opt/ProxmoxVE-Local/data
mv /opt/data.bak /opt/ProxmoxVE-Local/data
fi
msg_ok "Restored Data"
msg_info "Updating PVE Scripts local"
cd /opt/ProxmoxVE-Local
chmod 755 data
$STD npm install
$STD npm run build
msg_ok "Updated PVE Scripts local"
msg_info "Starting Services"
systemctl start pvescriptslocal
msg_ok "Started Services"
msg_ok "Updated successfully!"
fi
exit
msg_custom "🚀" "${GN}" "The app offers a built-in updater. Please use it."
}
start

45
ct/qdrant.sh Normal file
View File

@ -0,0 +1,45 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/qdrant/qdrant
APP="Qdrant"
var_tags="${var_tags:-database;vector}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-5}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /var/lib/qdrant ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "qdrant" "qdrant/qdrant"; then
fetch_and_deploy_gh_release "qdrant" "qdrant/qdrant" "binary" "latest" "/usr/bin/qdrant"
chown -R root:root /var/lib/qdrant
chmod -R 755 /var/lib/qdrant
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}:6333/dashboard${CL}"

View File

@ -29,15 +29,10 @@ function update_script() {
fi
if check_for_gh_release "recyclarr" "recyclarr/recyclarr"; then
msg_info "Stopping Service"
systemctl stop recyclarr
msg_ok "Stopped Service"
msg_info "Updating ${APP}"
fetch_and_deploy_gh_release "recyclarr" "recyclarr/recyclarr" "prebuild" "latest" "/usr/local/bin" "recyclarr-linux-x64.tar.xz"
msg_info "Starting Service"
systemctl start recyclarr
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit

45
ct/valkey.sh Normal file
View File

@ -0,0 +1,45 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: pshankinclarke (lazarillo)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://valkey.io/
APP="Valkey"
var_tags="${var_tags:-database}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /lib/systemd/system/valkey-server.service ]]; then
msg_error "No Valkey Installation Found!"
exit
fi
msg_info "Updating Valkey LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated Valkey LXC"
msg_ok "Updated successfully!"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6379${CL}"

View File

@ -52,11 +52,21 @@ function update_script() {
$STD npm --prefix app/static run build:css
mkdir -p ./.cache
$STD tar -xf "$BACKUP_FILE" --directory=/
$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
if grep -q 'workers' /opt/wizarr/start.sh; then
sed -i 's/--workers 4//' /opt/wizarr/start.sh
fi
if ! grep -qE 'FLASK|WORKERS|VERSION' /opt/wizarr/.env; then
{
echo "FLASK_ENV=production"
echo "GUNICORN_WORKERS=4"
echo "APP_VERSION=$(sed 's/^20/v&/' ~/.wizarr)"
} >>/opt/wizarr/.env
else
sed -i "s/_VERSION=v.*$/_VERSION=v$(cat ~/.wizarr)/" /opt/wizarr/.env
fi
rm -rf "$BACKUP_FILE"
export FLASK_SKIP_SCHEDULER=true
$STD /usr/local/bin/uv run --frozen flask db upgrade
msg_ok "Updated Wizarr"
msg_info "Starting Service"

View File

@ -46,7 +46,20 @@ function update_script() {
systemctl stop "$AGENT_SERVICE"
msg_ok "Stopped Services"
msg_info "Updating Zabbix"
read -rp "Choose Zabbix version [1] 7.0 LTS [2] 7.4 (Latest Stable) [3] Latest available (default: 2): " ZABBIX_CHOICE
ZABBIX_CHOICE=${ZABBIX_CHOICE:-2}
case "$ZABBIX_CHOICE" in
1) ZABBIX_VERSION="7.0" ;;
2) ZABBIX_VERSION="7.4" ;;
3) ZABBIX_VERSION=$(curl -fsSL https://repo.zabbix.com/zabbix/ |
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1) ;;
*)
ZABBIX_VERSION="7.4"
echo "Invalid choice. Defaulting to 7.4."
;;
esac
msg_info "Updating Zabbix to $ZABBIX_VERSION"
mkdir -p /opt/zabbix-backup/
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
@ -54,10 +67,8 @@ function update_script() {
rm -Rf /etc/apt/sources.list.d/zabbix.list
cd /tmp
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
-o /tmp/zabbix-release_latest+debian13_all.deb
ZABBIX_DEB_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb"
curl -fsSL "$ZABBIX_DEB_URL" -o /tmp/zabbix-release_latest+debian13_all.deb
$STD dpkg -i zabbix-release_latest+debian13_all.deb
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
$STD apt update

View File

@ -267,13 +267,13 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
- **[Proxmox VE Documentation](https://pve.proxmox.com/pve-docs/)**
- **[Community Scripts Repository](https://github.com/community-scripts/ProxmoxVE)**
- **[Discord Community](https://discord.gg/2wvnMDgdnU)**
- **[Discord Community](https://discord.gg/3AnUqsXnmK)**
- **[GitHub Discussions](https://github.com/community-scripts/ProxmoxVE/discussions)**
## 🔗 Links
- **🌐 Live Website**: [https://community-scripts.github.io/ProxmoxVE/](https://community-scripts.github.io/ProxmoxVE/)
- **💬 Discord Server**: [https://discord.gg/2wvnMDgdnU](https://discord.gg/2wvnMDgdnU)
- **💬 Discord Server**: [https://discord.gg/3AnUqsXnmK](https://discord.gg/3AnUqsXnmK)
- **📝 Change Log**: [https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md](https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md)
---

View File

@ -1,35 +0,0 @@
{
"name": "Documenso",
"slug": "documenso",
"categories": [
12
],
"date_created": "2025-05-14",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://documenso.com/",
"website": "https://documenso.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/documenso.webp",
"config_path": "/opt/documenso/.env",
"description": "Signing documents digitally should be fast and easy and should be the best practice for every document signed worldwide. This is technically quite easy today, but it also introduces a new party to every signature: The signing tool providers. While this is not a problem in itself, it should make us think about how we want these providers of trust to work. Documenso aims to be the world's most trusted document-signing tool. This trust is built by empowering you to self-host Documenso and review how it works under the hood.",
"install_methods": [
{
"type": "default",
"script": "ct/documenso.sh",
"resources": {
"cpu": 4,
"ram": 6144,
"hdd": 10,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "helper-scripts@local.com",
"password": "helper-scripts"
},
"notes": []
}

View File

@ -42,5 +42,10 @@
"username": null,
"password": null
},
"notes": []
"notes": [
{
"text": "The script installs SQLite3 as default database provider. You will be asked to select database type when you initially open the application URL. Select SQLite3 or provide your own database.",
"type": "info"
}
]
}

View File

@ -1,40 +0,0 @@
{
"name": "Habitica",
"slug": "habitica",
"categories": [
24
],
"date_created": "2025-03-03",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://github.com/HabitRPG/habitica/wiki",
"website": "https://habitica.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/habitica.webp",
"config_path": "/opt/habitica/config.json",
"description": "Habitica is an open-source habit-building program that treats your life like a role-playing game. Level up as you succeed, lose HP as you fail, and earn Gold to buy weapons and armor!",
"install_methods": [
{
"type": "default",
"script": "ct/habitica.sh",
"resources": {
"cpu": 2,
"ram": 4096,
"hdd": 8,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "It takes a minute or two after installation for web UI to start, please be patient.",
"type": "info"
}
]
}

View File

@ -14,6 +14,8 @@
"website": "https://github.com/plexguide/Huntarr.io",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/huntarr.webp",
"description": "Huntarr is a tool that automates the search for missing or low-quality media content in your collection. It works seamlessly with applications like Sonarr, Radarr, Lidarr, Readarr, and Whisparr, enhancing their functionality with continuous background scans to identify and update missed or outdated content. Through a user-friendly web interface accessible on port 9705, Huntarr provides real-time statistics, log views, and extensive configuration options. The software is especially useful for users who want to keep their media library up to date by automatically searching for missing episodes or higher-quality versions. Huntarr is well-suited for self-hosted environments and can easily run in LXC containers or Docker setups.",
"disable": true,
"disable_description": "This script has been temporarily disabled due to ongoing installation failures caused by incompatible Python and build dependencies. PyYAML 6.0 fails to build on Debian 13 and under Python 3.12/3.13, making Huntarr currently non-installable in a reliable way. This issue originates upstream and is under investigation. The script will be re-enabled once a stable solution is available. For details, see: https://github.com/community-scripts/ProxmoxVE/issues/9196 or https://github.com/plexguide/Huntarr.io/issues/747",
"install_methods": [
{
"type": "default",

View File

@ -20,7 +20,7 @@
"script": "ct/joplin-server.sh",
"resources": {
"cpu": 2,
"ram": 4096,
"ram": 6144,
"hdd": 20,
"os": "Debian",
"version": "13"
@ -35,6 +35,10 @@
{
"text": "Application can take some time to build, depending on your host speed. Please be patient.",
"type": "info"
},
{
"text": "Default RAM size for LXC is set to 6GB because of Node.js building process. You can lower it after application installs",
"type": "info"
}
]
}

View File

@ -37,7 +37,7 @@
"type": "warning"
},
{
"text": "Advanced Install is only possible with disabled IPV6! Otherwise the installation sometimes stuck.",
"text": "Advanced Install is only possible with IPv6 disabled! Otherwise, the installation may get stuck.",
"type": "warning"
}
]

View File

@ -0,0 +1,35 @@
{
"name": "Qdrant",
"slug": "qdrant",
"categories": [
8
],
"date_created": "2025-11-27",
"type": "ct",
"updateable": true,
"privileged": false,
"config_path": "/etc/qdrant/config.yaml",
"interface_port": 6333,
"documentation": "https://github.com/qdrant/qdrant",
"website": "https://qdrant.tech/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/qdrant.webp",
"description": "Qdrant is a vector search engine and vector database that allows you to store, search, and manage high-dimensional vectors efficiently.",
"install_methods": [
{
"type": "default",
"script": "ct/qdrant.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 5,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@ -0,0 +1,35 @@
{
"name": "Valkey",
"slug": "valkey",
"categories": [
9
],
"date_created": "2025-11-29",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 6379,
"documentation": "https://valkey.io/docs/",
"config_path": "/etc/valkey/valkey.conf",
"website": "https://valkey.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/valkey.webp",
"description": "Valkey is an open source (BSD) high-performance key/value datastore that supports a variety of workloads such as caching, message queues, and can act as a primary database. The project is backed by the Linux Foundation, ensuring it will remain open source forever.",
"install_methods": [
{
"type": "default",
"script": "ct/valkey.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,7 @@ export const navbarLinks = [
text: "GitHub",
},
{
href: `https://discord.gg/2wvnMDgdnU`,
href: `https://discord.gg/3AnUqsXnmK`,
event: "Discord",
icon: <FaDiscord className="h-4 w-4" />,
text: "Discord",

View File

@ -19,10 +19,12 @@ $STD apt install -y \
g++
msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs
create_self_signed_cert
msg_info "Installing Actual Budget"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
NODE_VERSION="22" setup_nodejs
RELEASE=$(get_latest_github_release "actualbudget/actual")
mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config}
chown -R root:root /opt/actualbudget-data
chmod -R 755 /opt/actualbudget-data
@ -42,25 +44,15 @@ cat <<EOF >/opt/actualbudget-data/config.json
"fc00::/7"
],
"https": {
"key": "/opt/actualbudget/selfhost.key",
"cert": "/opt/actualbudget/selfhost.crt"
"key": "/etc/ssl/actualbudget/actualbudget.key",
"cert": "/etc/ssl/actualbudget/actualbudget.crt"
}
}
EOF
mkdir -p /opt/actualbudget
cd /opt/actualbudget || exit
$STD npm install --location=global @actual-app/sync-server
$STD openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfhost.key -out selfhost.crt <<EOF
US
California
San Francisco
My Organization
My Unit
localhost
myemail@example.com
EOF
echo "${RELEASE}" >"/opt/actualbudget_version.txt"
echo "${RELEASE}" >~/.actualbudget
msg_ok "Installed Actual Budget"
msg_info "Creating Service"

View File

@ -72,7 +72,6 @@ curl -fsSL "https://downloads.apache.org/guacamole/${RELEASE_SERVER}/binary/guac
$STD tar -xf ~/guacamole-auth-jdbc-$RELEASE_SERVER.tar.gz
mv ~/guacamole-auth-jdbc-$RELEASE_SERVER/mysql/guacamole-auth-jdbc-mysql-$RELEASE_SERVER.jar /etc/guacamole/extensions/
rm -rf ~/mysql-connector-j-9.3.0{,.tar.gz}
rm -rf ~/guacamole-auth-jdbc-$RELEASE_SERVER{,.tar.gz}
msg_ok "Setup Apache Guacamole"
msg_info "Setup Database"
@ -98,6 +97,7 @@ cat *.sql | mariadb -u root ${DB_NAME}
echo "mysql-password: $DB_PASS"
} >>/etc/guacamole/guacamole.properties
rm -rf ~/guacamole-auth-jdbc-$RELEASE_SERVER{,.tar.gz}
msg_ok "Setup Database"
msg_info "Setup Service"

View File

@ -13,64 +13,6 @@ setting_up_container
network_check
update_os
ASTERISK_VERSIONS_URL="https://www.asterisk.org/downloads/asterisk/all-asterisk-versions/"
html=$(curl -fsSL "$ASTERISK_VERSIONS_URL")
LTS_VERSION=""
for major in 20 22 24 26; do
block=$(echo "$html" | awk "/Asterisk $major - LTS/,/<ul>/" || true)
ver=$(echo "$block" | grep -oE 'Download Latest - [0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1 | sed -E 's/.* - //' || true)
if [ -n "$ver" ]; then
LTS_VERSION="$LTS_VERSION $ver"
fi
unset ver block
done
LTS_VERSION=$(echo "$LTS_VERSION" | xargs | tr ' ' '\n' | sort -V | tail -n1)
STD_VERSION=""
for major in 21 23 25 27; do
block=$(echo "$html" | grep -A 20 "Asterisk $major</h3>" | head -n 20 || true)
ver=$(echo "$block" | grep -oE 'Download (Latest - )?'"$major"'\.[0-9]+\.[0-9]+' | head -n1 | sed -E 's/Download (Latest - )?//' || true)
if [ -n "$ver" ]; then
STD_VERSION="$STD_VERSION $ver"
fi
unset ver block
done
STD_VERSION=$(echo "$STD_VERSION" | xargs | tr ' ' '\n' | sort -V | tail -n1)
cert_block=$(echo "$html" | awk '/Certified Asterisk/,/<ul>/')
CERT_VERSION=$(echo "$cert_block" | grep -oE 'Download Latest - [0-9]+\.[0-9]+-cert[0-9]+' | head -n1 | sed -E 's/.* - //' || true)
cat <<EOF
Choose Asterisk version to install:
1) Latest Standard ($STD_VERSION)
2) Latest LTS ($LTS_VERSION)
3) Latest Certified ($CERT_VERSION)
EOF
read -rp "Enter choice [1-3]: " ASTERISK_CHOICE
CERTIFIED=0
case "$ASTERISK_CHOICE" in
2)
ASTERISK_VERSION="$LTS_VERSION"
;;
3)
ASTERISK_VERSION="$CERT_VERSION"
CERTIFIED=1
;;
*)
ASTERISK_VERSION="$STD_VERSION"
;;
esac
if [[ "$CERTIFIED" == "1" ]]; then
RELEASE="certified-asterisk-${ASTERISK_VERSION}.tar.gz"
DOWNLOAD_URL="https://downloads.asterisk.org/pub/telephony/certified-asterisk/$RELEASE"
else
RELEASE="asterisk-${ASTERISK_VERSION}.tar.gz"
DOWNLOAD_URL="https://downloads.asterisk.org/pub/telephony/asterisk/$RELEASE"
fi
msg_info "Installing Dependencies"
$STD apt install -y \
libsrtp2-dev \
@ -82,7 +24,54 @@ $STD apt install -y \
libsqlite3-dev
msg_ok "Installed Dependencies"
msg_info "Downloading Asterisk"
msg_info "Fetching Asterisk Versions"
ASTERISK_LIST=$(curl -fsSL https://downloads.asterisk.org/pub/telephony/asterisk/ \
| grep -oE 'asterisk-[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' \
| sed 's/asterisk-//' \
| sed 's/\.tar\.gz//' \
| sort -V)
# LTS: Major 20, 22, 24, 26
LTS_VERSION=$(echo "$ASTERISK_LIST" | grep -E '^2(0|2|4|6)\.' | tail -n1 || true)
# Standard: Major 21, 23, 25, 27
STD_VERSION=$(echo "$ASTERISK_LIST" | grep -E '^2(1|3|5|7)\.' | tail -n1 || true)
CERT_VERSION=$(curl -fsSL https://downloads.asterisk.org/pub/telephony/certified-asterisk/ \
| grep -oE 'asterisk-certified-[0-9]+\.[0-9]+-cert[0-9]+\.tar\.gz' \
| sed -E 's/asterisk-certified-//' \
| sed -E 's/\.tar\.gz//' \
| sort -V | tail -n1 || true)
msg_ok "Fetched Versions"
cat <<EOF
Choose Asterisk version to install:
1) Latest Standard ($STD_VERSION)
2) Latest LTS ($LTS_VERSION)
3) Latest Certified ($CERT_VERSION)
EOF
read -rp "Enter choice [1-3]: " ASTERISK_CHOICE
CERTIFIED=0
case "$ASTERISK_CHOICE" in
2)
ASTERISK_VERSION="$LTS_VERSION"
;;
3)
ASTERISK_VERSION="$CERT_VERSION"
CERTIFIED=1
;;
*)
ASTERISK_VERSION="$STD_VERSION"
;;
esac
if [[ "$CERTIFIED" == "1" ]]; then
RELEASE="asterisk-certified-${ASTERISK_VERSION}.tar.gz"
DOWNLOAD_URL="https://downloads.asterisk.org/pub/telephony/certified-asterisk/$RELEASE"
else
RELEASE="asterisk-${ASTERISK_VERSION}.tar.gz"
DOWNLOAD_URL="https://downloads.asterisk.org/pub/telephony/asterisk/$RELEASE"
fi
msg_info "Downloading Asterisk ($RELEASE)"
temp_file=$(mktemp)
curl -fsSL "$DOWNLOAD_URL" -o "$temp_file"
mkdir -p /opt/asterisk
@ -107,4 +96,3 @@ msg_ok "Installed Asterisk"
motd_ssh
customize
cleanup_lxc

View File

@ -1,111 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (Canbiz)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/documenso/documenso
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Setup Functions"
setup_local_ip_helper
import_local_ip
msg_ok "Setup Functions"
msg_info "Installing Dependencies"
$STD apt-get install -y \
libc6 \
make \
cmake \
jq \
python3 \
python3-bcrypt
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="turbo@1.9.3" setup_nodejs
PG_VERSION="16" setup_postgresql
msg_info "Setting up PostgreSQL"
DB_NAME="documenso_db"
DB_USER="documenso_user"
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
{
echo "Documenso-Credentials"
echo "Database Name: $DB_NAME"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
} >>~/documenso.creds
msg_ok "Set up PostgreSQL"
msg_info "Installing Documenso (Patience)"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/documenso/documenso/archive/refs/tags/v${RELEASE}.zip" -o v${RELEASE}.zip
$STD unzip v${RELEASE}.zip
mv documenso-${RELEASE} /opt/documenso
cd /opt/documenso
mv .env.example /opt/documenso/.env
sed -i \
-e "s|^NEXTAUTH_SECRET=.*|NEXTAUTH_SECRET='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \
-e "s|^NEXT_PRIVATE_ENCRYPTION_KEY=.*|NEXT_PRIVATE_ENCRYPTION_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \
-e "s|^NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=.*|NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \
-e "s|^DOCUMENSO_ENCRYPTION_KEY=.*|DOCUMENSO_ENCRYPTION_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \
-e "s|^DOCUMENSO_ENCRYPTION_SECONDARY_KEY=.*|DOCUMENSO_ENCRYPTION_SECONDARY_KEY='$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)'|" \
-e "s|^NEXT_PUBLIC_WEBAPP_URL=.*|NEXT_PUBLIC_WEBAPP_URL='http://${LOCAL_IP}:3000'|" \
-e "s|^NEXT_PRIVATE_INTERNAL_WEBAPP_URL=.*|NEXT_PRIVATE_INTERNAL_WEBAPP_URL=\"http://${LOCAL_IP}:3000\"|" \
-e "s|^NEXT_PRIVATE_DATABASE_URL=.*|NEXT_PRIVATE_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" \
-e "s|^NEXT_PRIVATE_DIRECT_DATABASE_URL=.*|NEXT_PRIVATE_DIRECT_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" \
/opt/documenso/.env
export TURBO_CACHE=1
export NEXT_TELEMETRY_DISABLED=1
export CYPRESS_INSTALL_BINARY=0
export NODE_OPTIONS="--max-old-space-size=4096"
$STD turbo prune --scope=@documenso/remix --docker
cd out
cp -r json/* .
$STD npm ci
cp -r full/* .
$STD turbo run build --filter=@documenso/remix
$STD npm run prisma:migrate-deploy
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Documenso"
msg_info "Create User"
PASSWORD_HASH=$(python3 -c "import bcrypt; print(bcrypt.hashpw(b'helper-scripts', bcrypt.gensalt(rounds=12)).decode())")
$STD sudo -u postgres psql -d documenso_db -c "INSERT INTO \"User\" (name, email, \"emailVerified\", password, \"identityProvider\", roles, \"createdAt\", \"lastSignedIn\", \"updatedAt\") VALUES ('helper-scripts', 'helper-scripts@local.com', '2025-01-20 17:14:45.058', '$PASSWORD_HASH', 'DOCUMENSO', ARRAY['USER', 'ADMIN']::\"Role\"[], '2025-01-20 16:04:05.543', '2025-01-20 16:14:55.249', '2025-01-20 16:14:55.25') RETURNING id;"
$STD npm run prisma:migrate-deploy
msg_ok "User created"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/documenso.service
[Unit]
Description=Documenso Service
After=network.target postgresql.service
[Service]
WorkingDirectory=/opt/documenso
ExecStart=/usr/bin/turbo run start --filter=@documenso/remix
Restart=always
EnvironmentFile=/opt/documenso/.env
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now documenso
$STD turbo daemon stop
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc

View File

@ -3,7 +3,7 @@
# Copyright (c) 2021-2025 community-scripts ORG
# Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/CrazyWolf13/domain-locker
# Source: https://github.com/Lissy93/domain-locker
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color

View File

@ -1,93 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/HabitRPG/habitica
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 \
libkrb5-dev \
build-essential \
git
curl -fsSL "http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb" -o "libssl1.1_1.1.1f-1ubuntu2_amd64.deb"
$STD dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
msg_ok "Installed Dependencies"
NODE_VERSION="20" NODE_MODULE="gulp-cli,mocha,npm@10" setup_nodejs
fetch_and_deploy_gh_release "habitica" "HabitRPG/habitica" "tarball" "latest" "/opt/habitica"
msg_info "Setup ${APPLICATION}"
IPADDRESS=$(hostname -I | awk '{print $1}')
cd /opt/habitica
$STD npm i
$STD npm run postinstall
cp config.json.example config.json
sed -i "s/\"TRUSTED_DOMAINS\": \"/&http:\/\/$IPADDRESS:3000,/" config.json
$STD npm run client:build
$STD gulp build:prod
msg_ok "Setup ${APPLICATION}"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/habitica-mongodb.service
[Unit]
Description=Habitica MongoDB Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/habitica
ExecStart=/usr/bin/npm run mongo:dev
Restart=always
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/habitica.service
[Unit]
Description=Habitica Service
After=habitica-mongodb.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/habitica
ExecStart=/usr/bin/npm start
Restart=always
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/habitica-client.service
[Unit]
Description=Habitica Client Service
After=habitica.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/habitica
ExecStart=/usr/bin/npm run client:dev
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now habitica-mongodb
systemctl enable -q --now habitica
systemctl enable -q --now habitica-client
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc

View File

@ -20,7 +20,7 @@ $STD apt install -y \
msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql
NODE_VERSION=22 NODE_MODULE="yarn,npm,pm2" setup_nodejs
NODE_VERSION=24 NODE_MODULE="yarn,npm,pm2" setup_nodejs
mkdir -p /opt/pm2
export PM2_HOME=/opt/pm2
$STD pm2 install pm2-logrotate

View File

@ -88,7 +88,7 @@ sed -i "s|^STORAGE_LOCAL_ROOT_PATH=.*|STORAGE_LOCAL_ROOT_PATH=/opt/openarchiver-
sed -i "s|^JWT_SECRET=.*|JWT_SECRET=$JWT_KEY|g" /opt/openarchiver/.env
sed -i "s|^ENCRYPTION_KEY=.*|ENCRYPTION_KEY=$SECRET_KEY|g" /opt/openarchiver/.env
sed -i "s|^TIKA_URL=.*|TIKA_URL=|g" /opt/openarchiver/.env
echo "ORIGIN=http://$IP_ADDR:3000" >>/opt/openarchiver/.env
sed -i "s|^ORIGIN=.*|ORIGIN=http://$IP_ADDR:3000|g" /opt/openarchiver/.env
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
$STD pnpm run build:oss
$STD pnpm db:migrate

View File

@ -20,7 +20,7 @@ $STD apt install -y \
expect
msg_ok "Dependencies installed."
NODE_VERSION=22 setup_nodejs
NODE_VERSION=24 setup_nodejs
fetch_and_deploy_gh_release "ProxmoxVE-Local" "community-scripts/ProxmoxVE-Local"
msg_info "Installing PVE Scripts local"

64
install/qdrant-install.sh Normal file
View File

@ -0,0 +1,64 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/qdrant/qdrant
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "qdrant" "qdrant/qdrant" "binary" "latest" "/usr/bin/qdrant"
msg_info "Creating Qdrant Configuration"
mkdir -p /var/lib/qdrant/storage
mkdir -p /var/lib/qdrant/snapshots
mkdir -p /etc/qdrant
chown -R root:root /var/lib/qdrant
chmod -R 755 /var/lib/qdrant
cat >/etc/qdrant/config.yaml <<EOF
log_level: INFO
storage:
storage_path: /var/lib/qdrant/storage
snapshots_path: /var/lib/qdrant/snapshots
service:
host: 0.0.0.0
http_port: 6333
grpc_port: 6334
enable_cors: true
EOF
msg_ok "Created Qdrant Configuration"
msg_info "Creating Qdrant Service"
cat >/etc/systemd/system/qdrant.service <<EOF
[Unit]
Description=Qdrant Vector Search Engine
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/qdrant --config-path /etc/qdrant/config.yaml
WorkingDirectory=/var/lib/qdrant
Restart=on-failure
RestartSec=5
User=root
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now qdrant
msg_ok "Created Qdrant Service"
motd_ssh
customize
cleanup_lxc

26
install/valkey-install.sh Normal file
View File

@ -0,0 +1,26 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: pshankinclarke (lazarillo)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://valkey.io/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Valkey"
$STD apt update
$STD apt install -y valkey
sed -i 's/^bind .*/bind 0.0.0.0/' /etc/valkey/valkey.conf
systemctl enable -q --now valkey-server
systemctl restart valkey-server
msg_ok "Installed Valkey"
motd_ssh
customize
cleanup_lxc

View File

@ -28,13 +28,16 @@ $STD /usr/local/bin/uv run --frozen pybabel compile -d app/translations
$STD npm --prefix app/static install
$STD npm --prefix app/static run build:css
mkdir -p ./.cache
$STD /usr/local/bin/uv run --frozen flask db upgrade
LOCAL_IP="$(hostname -I | awk '{print $1}')"
VERSION="$(sed 's/^20/v&/' ~/.wizarr)"
cat <<EOF >/opt/wizarr/.env
FLASK_ENV=production
GUNICORN_WORKERS=4
APP_URL=http://${LOCAL_IP}
DISABLE_BUILTIN_AUTH=false
LOG_LEVEL=INFO
APP_VERSION=${VERSION}
EOF
cat <<EOF >/opt/wizarr/start.sh
@ -43,7 +46,6 @@ cat <<EOF >/opt/wizarr/start.sh
uv run --frozen gunicorn \
--config gunicorn.conf.py \
--preload \
--workers 4 \
--bind 0.0.0.0:5690 \
--umask 007 \
run:app
@ -67,9 +69,15 @@ Restart=on-abnormal
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now wizarr
msg_ok "Created Service"
msg_info "Running DB upgrade"
export FLASK_SKIP_SCHEDULER=true
$STD /usr/local/bin/uv run --frozen flask db upgrade
msg_ok "DB upgrade complete"
systemctl enable -q --now wizarr
motd_ssh
customize
cleanup_lxc

View File

@ -15,16 +15,27 @@ update_os
PG_VERSION="17" setup_postgresql
msg_info "Installing Zabbix"
read -rp "Choose Zabbix version [1] 7.0 LTS [2] 7.4 (Latest Stable) [3] Latest available (default: 2): " ZABBIX_CHOICE
ZABBIX_CHOICE=${ZABBIX_CHOICE:-2}
case "$ZABBIX_CHOICE" in
1) ZABBIX_VERSION="7.0" ;;
2) ZABBIX_VERSION="7.4" ;;
3) ZABBIX_VERSION=$(curl -fsSL https://repo.zabbix.com/zabbix/ |
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1) ;;
*)
ZABBIX_VERSION="7.4"
echo "Invalid choice. Defaulting to 7.4."
;;
esac
msg_info "Installing Zabbix $ZABBIX_VERSION"
cd /tmp
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
-o /tmp/zabbix-release_latest+debian13_all.deb
ZABBIX_DEB_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb"
curl -fsSL "$ZABBIX_DEB_URL" -o /tmp/zabbix-release_latest+debian13_all.deb
$STD dpkg -i /tmp/zabbix-release_latest+debian13_all.deb
$STD apt update
$STD apt install -y zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql zabbix-apache-conf zabbix-sql-scripts
msg_ok "Installed Zabbix"
msg_ok "Installed Zabbix $ZABBIX_VERSION"
while true; do
read -rp "Which agent do you want to install? [1=agent (classic), 2=agent2 (modern), default=1]: " AGENT_CHOICE

View File

@ -1338,7 +1338,8 @@ EOF'
pct exec "$CTID" -- ash -c "apk add bash newt curl openssh nano mc ncurses jq >/dev/null"
else
sleep 3
pct exec "$CTID" -- bash -c "sed -i '/$LANG/ s/^# //' /etc/locale.gen"
LANG=${LANG:-en_US.UTF-8}
pct exec "$CTID" -- bash -c "sed -i \"/$LANG/ s/^# //\" /etc/locale.gen"
pct exec "$CTID" -- bash -c "locale_line=\$(grep -v '^#' /etc/locale.gen | grep -E '^[a-zA-Z]' | awk '{print \$1}' | head -n 1) && \
echo LANG=\$locale_line >/etc/default/locale && \
locale-gen >/dev/null && \

View File

@ -390,10 +390,6 @@ cleanup_lxc() {
xargs -0 -n1 truncate -s 0 2>/dev/null || true
fi
# Python pip
if command -v pip &>/dev/null; then $STD pip cache purge || true; fi
# Python uv
if command -v uv &>/dev/null; then $STD uv cache clean || true; fi
# Node.js npm
if command -v npm &>/dev/null; then $STD npm cache clean --force || true; fi
# Node.js yarn

View File

@ -1551,7 +1551,8 @@ create_self_signed_cert() {
mkdir -p "$CERT_DIR"
$STD openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \
-subj "/C=US/ST=State/L=City/O=Organization/CN=${APP_NAME}" \
-subj "/CN=${APP_NAME}" \
-addext "subjectAltName=DNS:${APP_NAME}" \
-keyout "$CERT_KEY" \
-out "$CERT_CRT" || {
msg_error "Failed to create self-signed certificate"

View File

@ -237,31 +237,62 @@ function default_settings() {
function get_mikrotik_version() {
local mode="$1"
local rss_url
local tree_name
case "$mode" in
s) rss_url="https://cdn.mikrotik.com/routeros/latest-stable.rss" ;;
d) rss_url="https://cdn.mikrotik.com/routeros/latest-development.rss" ;;
l) rss_url="https://cdn.mikrotik.com/routeros/latest-long-term.rss" ;;
t) rss_url="https://cdn.mikrotik.com/routeros/latest-testing.rss" ;;
*) return 0 ;;
esac
local rss_content
rss_content=$(curl -fsSL $rss_url 2>/dev/null)
if [ -n "$rss_content" ]; then
local version
version=$(echo "$rss_content" | grep -oP '<title>RouterOS \K[0-9.]+(?= \[)' 2>/dev/null || echo "$rss_content" | sed -n 's/.*<title>RouterOS \([0-9.]\+\) \[.*/\1/p' 2>/dev/null)
if [[ "$version" =~ ^[0-9]+\.[0-9]+ ]]; then
echo "$version"
return 0
fi
fi
case "$mode" in
s) tree_name="Stable release tree" ;;
d) tree_name="Development release tree" ;;
l) tree_name="Long-term release tree" ;;
t) tree_name="Testing release tree" ;;
*) return 0 ;; # not an error, just no-op
esac
local html
html=$(curl -fsSL "https://mikrotik.com/download/changelogs") || return 0
[ -z "$html" ] && return 0
html=$(curl -fsSL "https://mikrotik.com/download/changelogs" 2>/dev/null)
if [ -n "$html" ]; then
local start_line
start_line=$(echo "$html" | grep -n "$tree_name" | cut -d: -f1 | head -n1)
if [[ "$start_line" =~ ^[0-9]+$ ]]; then
local line
line=$(echo "$html" | tail -n +"$start_line" | grep -m 1 -E "c-(stable|longTerm|testing|development)-v|RouterOS [0-9]+\.[0-9]+" 2>/dev/null)
local version
version=$(echo "$line" | sed -n 's/.*c-[^"]*-v\([0-9_.a-zA-Z-]\+\).*/\1/p' | tr '_' '.' 2>/dev/null)
[ -z "$version" ] && version=$(echo "$line" | grep -oP 'RouterOS \K[0-9]+\.[0-9]+(\.[0-9]+)?' 2>/dev/null)
if [[ "$version" =~ ^[0-9]+\.[0-9]+ ]]; then
echo "$version"
return 0
fi
fi
fi
local start_line
start_line=$(echo "$html" | grep -n "$tree_name$" | cut -d: -f1 | head -n1)
[[ "$start_line" =~ ^[0-9]+$ ]] || return 0
local line
line=$( (echo "$html" | tail -n +"$start_line" | grep -m 1 "c-\(stable\|longTerm\|testing\|development\)-v") 2>/dev/null || true)
local version
version=$(echo "$line" | sed -n 's/.*c-[^"]*-v\([0-9_.a-zA-Z-]\+\).*/\1/p' | tr '_' '.')
[[ "$version" =~ ^[0-9]+\.[0-9]+.*$ ]] && echo "$version"
for minor in $(seq 50 -1 15); do
local test_version="7.${minor}"
if curl -fsSL -I "https://download.mikrotik.com/routeros/${test_version}/chr-${test_version}.img.zip" 2>/dev/null | grep -q "200 OK"; then
echo "$test_version"
return 0
fi
done
return 0
}
@ -504,8 +535,8 @@ if [ -n "$MIK_VER" ]; then
msg_ok "Latest stable version: ${CL}${BL}$MIK_VER${CL}."
else
msg_error "Could not get latest version"
msg_ok "Defaulting to version 7.19"
ver="7.19"
msg_ok "Defaulting to version 7.20"
MIK_VER="7.20"
fi
URL=https://download.mikrotik.com/routeros/$MIK_VER/chr-$MIK_VER.img.zip