Compare commits

...

69 Commits

Author SHA1 Message Date
Tobias
a46a4fde11 refactor 2025-10-15 21:56:35 +02:00
CanbiZ
d830cb9eb2 Add messages to cleanup commands in guardian-install.sh 2025-10-15 20:22:43 +02:00
push-app-to-main[bot]
4fd579f5f0 'Add new script' 2025-10-15 18:18:25 +00:00
community-scripts-pr-app[bot]
2d807eedab Update versions.json (#8358)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-15 14:07:02 +02:00
community-scripts-pr-app[bot]
7c2bfc7c38 Update CHANGELOG.md (#8352)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-15 00:13:45 +00:00
community-scripts-pr-app[bot]
67445bd9ed Update versions.json (#8351)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-15 02:13:22 +02:00
community-scripts-pr-app[bot]
0303e93c40 Update CHANGELOG.md (#8349)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-14 18:56:05 +00:00
Gerhard Burger
53f397512a Update cockpit-install.sh (#8346) 2025-10-14 20:55:40 +02:00
community-scripts-pr-app[bot]
f303b5e3ef Update CHANGELOG.md (#8345)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-14 12:32:33 +00:00
Chris
13098ec5b7 MediaManager: Use managed Python 3.13 (#8343) 2025-10-14 14:32:03 +02:00
community-scripts-pr-app[bot]
36726e2263 Update versions.json (#8344)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-14 14:06:09 +02:00
community-scripts-pr-app[bot]
d4dd02c115 Update CHANGELOG.md (#8335)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-14 00:13:58 +00:00
community-scripts-pr-app[bot]
dbeb56afe9 Update versions.json (#8334)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-14 02:13:36 +02:00
community-scripts-pr-app[bot]
4da1be45b5 Update CHANGELOG.md (#8333)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-13 18:16:05 +00:00
Eduard Marbach
d32f0653fb fix: adjust configarr to use binaries (#8254)
* fix: adjust configarr to use binaries

* Update configarr.sh

* Update configarr-install.sh

* Update configarr.json

* Update configarr-install.sh

* Update configarr.sh

* Update service messages in configarr script

* Update configarr.sh

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-10-13 20:15:43 +02:00
community-scripts-pr-app[bot]
e4179ddafe Update CHANGELOG.md (#8331)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-13 17:27:16 +00:00
Nícolas Pastorello
e4ec0e4032 GLPI: fix version 11 (#8238)
* Update glpi-install.sh

Updated PHP 8.2 to PHP 8.4;
Adjusted the database configuration for GLPI 11.0.1 and I hope this configuration will be the same for future GLPI versions.

* Update glpi-install.sh

Added setup_mariadb

* Update glpi-install.sh

* Update glpi-install.sh

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-10-13 19:26:55 +02:00
community-scripts-pr-app[bot]
1fd132e6d3 Update versions.json (#8323)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-13 14:07:52 +02:00
community-scripts-pr-app[bot]
7a6f6631b2 Update CHANGELOG.md (#8319)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-13 08:08:24 +00:00
Slaviša Arežina
c9f031f8af Fix typo (#8316) 2025-10-13 10:07:50 +02:00
community-scripts-pr-app[bot]
9ba1e00de6 Update CHANGELOG.md (#8318)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-13 00:14:13 +00:00
community-scripts-pr-app[bot]
fd32db9157 Update versions.json (#8317)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-13 02:13:52 +02:00
community-scripts-pr-app[bot]
bd7aef10cc Update CHANGELOG.md (#8313)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-12 18:51:09 +00:00
Chris
21bb9c618b Immich: add testing repo (#8310) 2025-10-12 20:50:48 +02:00
community-scripts-pr-app[bot]
68924a2fc2 Update CHANGELOG.md (#8311)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-12 18:00:52 +00:00
Slaviša Arežina
fce7c8a100 Tinyauth: Fix install issues for v4 (#8309)
* Fix Tinyauth

* Update
2025-10-12 20:00:29 +02:00
community-scripts-pr-app[bot]
e0ffcb4160 Update versions.json (#8307)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-12 14:04:56 +02:00
community-scripts-pr-app[bot]
f0fa24e1a5 Update CHANGELOG.md (#8301)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-12 00:14:42 +00:00
community-scripts-pr-app[bot]
a015537d0b Update versions.json (#8300)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-12 02:14:19 +02:00
community-scripts-pr-app[bot]
2244676cee Update CHANGELOG.md (#8298)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 20:53:30 +00:00
CanbiZ
b4f0fcb3d3 Zabbix: various bugfixes agent1/agent2 (#8294)
* Zabbix: various bugfixes agent1/agent2

* Update zabbix.sh

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-10-11 22:53:10 +02:00
community-scripts-pr-app[bot]
b39672f92e Update CHANGELOG.md (#8297)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 20:40:52 +00:00
CanbiZ
45e1e490aa wger: fix python and pip install (#8295) 2025-10-11 22:40:31 +02:00
community-scripts-pr-app[bot]
bda3f22016 Update CHANGELOG.md (#8296)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 20:37:47 +00:00
CanbiZ
03af580449 searxng: add msgspec as dependency (#8293) 2025-10-11 22:37:24 +02:00
community-scripts-pr-app[bot]
a43f97df92 Update CHANGELOG.md (#8288)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 17:16:31 +00:00
CanbiZ
d53a249bbf keycloak: fix update check (#8275) 2025-10-11 19:16:12 +02:00
community-scripts-pr-app[bot]
1bdd93a137 Update CHANGELOG.md (#8287)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 17:16:05 +00:00
CanbiZ
e2e63cf319 komga: fix update check (#8285) 2025-10-11 19:15:37 +02:00
community-scripts-pr-app[bot]
4a7648da94 Update CHANGELOG.md (#8284)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 15:28:26 +00:00
Bram Suurd
86a1aadfda Refactor CI workflow to use Bun instead of Node.js for dependency management and build process; add bun.lock file and remove package-lock.json. (#8277) 2025-10-11 17:28:07 +02:00
community-scripts-pr-app[bot]
2fefd45b2f Update CHANGELOG.md (#8283)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 15:21:58 +00:00
Bram Suurd
220196309b Update script count in metadata and page content from 300+ to 400+ (#8279) 2025-10-11 17:21:29 +02:00
community-scripts-pr-app[bot]
984d722563 Update CHANGELOG.md (#8282)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 15:20:25 +00:00
stumpyofpain
f81e50c430 host-backup.sh: Added "ALL" option and include timestamp in backup filename (#8276)
* Update host-backup.sh

added an "all" button to include all folders instead of clicking every folder by itself

* Update host-backup.sh

added a timestamp in the filename incase the user wants to make several backups on the same time.
Otherweise the newest backup will overwrite the earlier one.
2025-10-11 17:20:06 +02:00
community-scripts-pr-app[bot]
9b4812df33 Update CHANGELOG.md (#8281)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 15:16:54 +00:00
Slaviša Arežina
0ba2abc53d Komga: Update dependencies and enable RAR5 support (#8257)
* Fixes

* Bump to Trixie

* Update komga-install.sh
2025-10-11 17:16:30 +02:00
CanbiZ
a733c85293 fix autoclose action 2025-10-11 14:41:27 +02:00
community-scripts-pr-app[bot]
8199c77708 Update versions.json (#8272)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 14:06:07 +02:00
community-scripts-pr-app[bot]
58f56851f2 Update CHANGELOG.md (#8266)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 00:12:40 +00:00
community-scripts-pr-app[bot]
ab6974186c Update versions.json (#8265)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-11 02:12:17 +02:00
community-scripts-pr-app[bot]
578b9fc7de Update CHANGELOG.md (#8263)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-10 22:07:10 +00:00
community-scripts-pr-app[bot]
67c7c32b7b Update CHANGELOG.md (#8262)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-10 22:06:51 +00:00
community-scripts-pr-app[bot]
ca6bcfc087 Update date in json (#8261)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-10-10 22:06:43 +00:00
push-app-to-main[bot]
fc644d8434 Prometheus-Blackbox-Exporter (#8255)
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-10-11 00:06:23 +02:00
community-scripts-pr-app[bot]
3e0ffc193b Update CHANGELOG.md (#8260)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-10 22:05:18 +00:00
community-scripts-pr-app[bot]
21513cffbc Update CHANGELOG.md (#8259)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-10 22:05:01 +00:00
community-scripts-pr-app[bot]
2d838629eb Update date in json (#8258)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-10-10 22:04:53 +00:00
push-app-to-main[bot]
a672b22650 SonarQube (#8256)
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-10-11 00:04:38 +02:00
CanbiZ
3f02934bf5 fix typo 2025-10-10 20:11:22 +02:00
community-scripts-pr-app[bot]
162ac5b066 Update CHANGELOG.md (#8247)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-10 12:08:38 +00:00
Sazid Hossain Banna
f58b58806b Unifi installation script fix (#8242)
* reverting to bookworm for mongodb as trixie doesn't exist yet

* For testing

* Revert "For testing"

This reverts commit 0c43526713.
2025-10-10 14:08:15 +02:00
community-scripts-pr-app[bot]
e12b9383a9 Update versions.json (#8246)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-10 14:07:52 +02:00
community-scripts-pr-app[bot]
62feaf76f4 Update CHANGELOG.md (#8245)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-10 11:39:28 +00:00
Slaviša Arežina
5aeb235768 Fix APP_URL (#8244) 2025-10-10 13:39:03 +02:00
Michel Roegl-Brunner
1ae9543eec Add workflow to auto-close wrong template issues (#8241) 2025-10-10 11:50:54 +02:00
community-scripts-pr-app[bot]
efecfdfb2d Update CHANGELOG.md (#8239)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-10 09:16:07 +00:00
CanbiZ
4b5fc75ee1 Harmonize Service MSG-Blocks (#8233)
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-10-10 11:15:44 +02:00
CanbiZ
f39b17ad7a zammad: Change Suite to 12 2025-10-10 08:58:47 +02:00
91 changed files with 3402 additions and 15182 deletions

59
.github/workflows/close_template_issue.yml generated vendored Normal file
View File

@@ -0,0 +1,59 @@
name: Auto-Close Wrong Template Issues
on:
issues:
types: [opened]
jobs:
close_tteck_issues:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: ubuntu-latest
steps:
- name: Auto-close if wrong Template issue detected
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;
const content = `${issue.title}\n${issue.body}`;
const issueNumber = issue.number;
// Regex patterns (case-insensitive, flexible versioning)
const patterns = [
/Template\s+debian-13-standard_[\d.]+-[\d]+_amd64\.tar\.zst\s*\[(online|local)\]/i,
/Template\s+debian-13-standard_[\d.]+-[\d]+_amd64\.tar\.zst\s+is\s+missing\s+or\s+corrupted/i,
/Container\s+creation\s+failed\.?\s+Checking\s+if\s+template\s+is\s+corrupted\s+or\s+incomplete/i,
/Template\s+is\s+valid,\s+but\s+container\s+creation\s+still\s+failed/i,
/exit\s+code\s+0:\s+while\s+executing\s+command\s+bash\s+-c\s+"\$?\(curl\s+-fsSL\s+https:\/\/raw\.githubusercontent\.com\/[\w/-]+\/create_lxc\.sh\)"/i
];
const matched = patterns.some((regex) => regex.test(content));
if (matched) {
const message = `👋 Hello!
It looks like you are referencing a **container creation issue with a Debian 13 template** (e.g. \`debian-13-standard_13.x-x_amd64.tar.zst\`).
We receive many similar reports about this, and its not related to the scripts themselves but to **a Proxmox base template bug**.
Please refer to [discussion #8126](https://github.com/community-scripts/ProxmoxVE/discussions/8126) for details.
If your issue persists after following the guidance there, feel free to reopen this issue.
_This issue was automatically closed by a bot._`;
await github.rest.issues.createComment({
...context.repo,
issue_number: issueNumber,
body: message
});
await github.rest.issues.addLabels({
...context.repo,
issue_number: issueNumber,
labels: ["not planned"]
});
await github.rest.issues.update({
...context.repo,
issue_number: issueNumber,
state: "closed"
});
}

14
.github/workflows/frontend-cicd.yml generated vendored
View File

@@ -97,7 +97,7 @@ jobs:
success = test_json_files()
sys.exit(0 if success else 1)
EOF
build:
if: github.repository == 'community-scripts/ProxmoxVE'
needs: test-json-files
@@ -109,15 +109,13 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
node-version: "20"
cache: npm
cache-dependency-path: frontend/package-lock.json
bun-version: latest
- name: Install dependencies
run: npm ci --prefer-offline --legacy-peer-deps
run: bun install --frozen-lockfile
- name: Configure Next.js for pages
uses: actions/configure-pages@v5
@@ -125,7 +123,7 @@ jobs:
static_site_generator: next
- name: Build with Next.js
run: npm run build
run: bun run build
- name: Upload artifact
if: github.ref == 'refs/heads/main'

View File

@@ -10,8 +10,83 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-10-15
## 2025-10-14
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- MediaManager: Use managed Python 3.13 [@vhsdream](https://github.com/vhsdream) ([#8343](https://github.com/community-scripts/ProxmoxVE/pull/8343))
- #### 🔧 Refactor
- Update cockpit installation/update [@burgerga](https://github.com/burgerga) ([#8346](https://github.com/community-scripts/ProxmoxVE/pull/8346))
## 2025-10-13
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- GLPI: fix version 11 [@opastorello](https://github.com/opastorello) ([#8238](https://github.com/community-scripts/ProxmoxVE/pull/8238))
- Keycloak: Fix typo in update function [@tremor021](https://github.com/tremor021) ([#8316](https://github.com/community-scripts/ProxmoxVE/pull/8316))
- #### 🔧 Refactor
- fix: adjust configarr to use binaries [@BlackDark](https://github.com/BlackDark) ([#8254](https://github.com/community-scripts/ProxmoxVE/pull/8254))
## 2025-10-12
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Immich: add Debian Testing repo [@vhsdream](https://github.com/vhsdream) ([#8310](https://github.com/community-scripts/ProxmoxVE/pull/8310))
- Tinyauth: Fix install issues for v4 [@tremor021](https://github.com/tremor021) ([#8309](https://github.com/community-scripts/ProxmoxVE/pull/8309))
## 2025-10-11
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Zabbix: various bugfixes agent1/agent2 [@MickLesk](https://github.com/MickLesk) ([#8294](https://github.com/community-scripts/ProxmoxVE/pull/8294))
- wger: fix python and pip install [@MickLesk](https://github.com/MickLesk) ([#8295](https://github.com/community-scripts/ProxmoxVE/pull/8295))
- searxng: add msgspec as dependency [@MickLesk](https://github.com/MickLesk) ([#8293](https://github.com/community-scripts/ProxmoxVE/pull/8293))
- keycloak: fix update check [@MickLesk](https://github.com/MickLesk) ([#8275](https://github.com/community-scripts/ProxmoxVE/pull/8275))
- komga: fix update check [@MickLesk](https://github.com/MickLesk) ([#8285](https://github.com/community-scripts/ProxmoxVE/pull/8285))
- #### ✨ New Features
- host-backup.sh: Added "ALL" option and include timestamp in backup filename [@stumpyofpain](https://github.com/stumpyofpain) ([#8276](https://github.com/community-scripts/ProxmoxVE/pull/8276))
- Komga: Update dependencies and enable RAR5 support [@tremor021](https://github.com/tremor021) ([#8257](https://github.com/community-scripts/ProxmoxVE/pull/8257))
### 🌐 Website
- Update script count in metadata and page content from 300+ to 400+ [@BramSuurdje](https://github.com/BramSuurdje) ([#8279](https://github.com/community-scripts/ProxmoxVE/pull/8279))
- Refactor CI workflow to use Bun instead of Node.js. [@BramSuurdje](https://github.com/BramSuurdje) ([#8277](https://github.com/community-scripts/ProxmoxVE/pull/8277))
## 2025-10-10
### 🆕 New Scripts
- Prometheus-Blackbox-Exporter ([#8255](https://github.com/community-scripts/ProxmoxVE/pull/8255))
- SonarQube ([#8256](https://github.com/community-scripts/ProxmoxVE/pull/8256))
### 🚀 Updated Scripts
- Unifi installation script fix [@knightfall](https://github.com/knightfall) ([#8242](https://github.com/community-scripts/ProxmoxVE/pull/8242))
- #### 🐞 Bug Fixes
- Docmost: Fix env variables [@tremor021](https://github.com/tremor021) ([#8244](https://github.com/community-scripts/ProxmoxVE/pull/8244))
- #### 🔧 Refactor
- Harmonize Service MSG-Blocks [@MickLesk](https://github.com/MickLesk) ([#8233](https://github.com/community-scripts/ProxmoxVE/pull/8233))
## 2025-10-09
### 🆕 New Scripts

View File

@@ -32,18 +32,18 @@ function update_script() {
RELEASE=$(curl -fsSL https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ -f /opt/actualbudget-data/config.json ]]; then
if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop actualbudget
msg_ok "${APP} Stopped"
msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}"
$STD npm update -g @actual-app/sync-server
echo "${RELEASE}" >/opt/actualbudget_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start actualbudget
msg_ok "Restarted ${APP}"
msg_ok "Started Service"
else
msg_info "${APP} is already up to date"
fi

View File

@@ -24,23 +24,23 @@ function update_script() {
check_container_resources
if [[ ! -d /opt/redlib ]]; then
msg_error "No ${APP} Installation Found!"
exit
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating Alpine Packages"
$STD apk -U upgrade
msg_ok "Updated Alpine Packages"
msg_info "Stopping ${APP} Service"
msg_info "Stopping Service"
$STD rc-service redlib stop
msg_ok "Stopped ${APP} Service"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-x86_64-unknown-linux-musl.tar.gz"
msg_info "Starting ${APP} Service"
msg_info "Starting Service"
$STD rc-service redlib start
msg_ok "Started ${APP} Service"
msg_ok "Started Service"
msg_ok "Update Successful"
exit

View File

@@ -29,15 +29,19 @@ function update_script() {
$STD apk -U upgrade
msg_ok "Updated packages"
msg_info "Updating Tinyauth"
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [ "${RELEASE}" != "$(cat /opt/tinyauth_version.txt)" ] || [ ! -f /opt/tinyauth_version.txt ]; then
if [ "${RELEASE}" != "$(cat ~/.tinyauth 2>/dev/null)" ] || [ ! -f ~/.tinyauth ]; then
msg_info "Stopping Service"
$STD service tinyauth stop
msg_ok "Service Stopped"
msg_info "Updating Tinyauth"
rm -f /opt/tinyauth/tinyauth
curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
chmod +x /opt/tinyauth/tinyauth
echo "${RELEASE}" >/opt/tinyauth_version.txt
echo "${RELEASE}" >~/.tinyauth
msg_ok "Updated Tinyauth"
msg_info "Restarting Tinyauth"
$STD service tinyauth start
msg_ok "Restarted Tinyauth"

View File

@@ -29,9 +29,9 @@ function update_script() {
fi
RELEASE="$(curl -fsSL https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)"
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop apache-tika
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
cd /opt/apache-tika
@@ -41,9 +41,9 @@ function update_script() {
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start apache-tika
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
msg_ok "Cleanup Completed"
@@ -61,4 +61,4 @@ 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}:9998${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9998${CL}"

View File

@@ -29,15 +29,15 @@ function update_script() {
fi
if check_for_gh_release "autobrr" "autobrr/autobrr"; then
msg_info "Stopping ${APP} LXC"
msg_info "Stopping Service"
systemctl stop autobrr
msg_ok "Stopped ${APP} LXC"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_x86_64.tar.gz"
msg_info "Starting ${APP} LXC"
msg_info "Starting Service"
systemctl start autobrr
msg_ok "Started ${APP} LXC"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -29,9 +29,9 @@ function update_script() {
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop backrest
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}"
temp_file=$(mktemp)
@@ -42,9 +42,9 @@ function update_script() {
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start backrest
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning up"
rm -f "$temp_file"

View File

@@ -27,9 +27,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop cps
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Updating ${APP}"
cd /opt/kepubify
@@ -121,9 +121,9 @@ function update_script() {
$STD pip install --upgrade calibreweb
fi
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start cps
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
exit
}
@@ -135,4 +135,4 @@ 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}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}"

View File

@@ -28,15 +28,15 @@ function update_script() {
exit
fi
if check_for_gh_release "cleanuparr" "Cleanuparr/Cleanuparr"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop cleanuparr
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start cleanuparr
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -27,73 +27,12 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
"1" "Update LXC" ON \
"2" "Install cockpit-file-sharing" OFF \
"3" "Install cockpit-identities" OFF \
"4" "Install cockpit-navigator" OFF \
3>&1 1>&2 2>&3)
if [ "$UPD" == "1" ]; then
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated ${APP} LXC"
exit
fi
if [ "$UPD" == "2" ]; then
msg_info "Installing dependencies (patience)"
$STD apt install -y \
attr \
nfs-kernel-server \
samba \
samba-common-bin \
winbind \
gawk
msg_ok "Installed dependencies"
msg_info "Installing Cockpit file sharing"
URL=$(curl -fsSL https://api.github.com/repos/45Drives/cockpit-file-sharing/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4)
FILE=$(basename "$URL")
curl -fsSL "$URL" -o "$FILE"
$STD dpkg -i "$FILE" || $STD apt install -f -y
rm -f "$FILE"
msg_ok "Installed Cockpit file sharing"
exit
fi
if [ "$UPD" == "3" ]; then
msg_info "Installing dependencies (patience)"
$STD apt install -y \
psmisc \
samba \
samba-common-bin
msg_ok "Installed dependencies"
msg_info "Installing Cockpit identities"
URL=$(curl -fsSL https://api.github.com/repos/45Drives/cockpit-identities/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4)
FILE=$(basename "$URL")
curl -fsSL "$URL" -o "$FILE"
$STD dpkg -i "$FILE" || $STD apt install -f -y
rm -f "$FILE"
msg_ok "Installed Cockpit identities"
exit
fi
if [ "$UPD" == "4" ]; then
msg_info "Installing dependencies"
$STD apt install -y \
rsync \
zip
msg_ok "Installed dependencies"
msg_info "Installing Cockpit navigator"
URL=$(curl -fsSL https://api.github.com/repos/45Drives/cockpit-navigator/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4)
FILE=$(basename "$URL")
curl -fsSL "$URL" -o "$FILE"
$STD dpkg -i "$FILE" || $STD apt install -f -y
rm -f "$FILE"
msg_ok "Installed Cockpit navigator"
exit
fi
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated ${APP} LXC"
exit
}
start

View File

@@ -29,9 +29,9 @@ function update_script() {
exit
fi
if check_for_gh_release "commafeed" "Athou/commafeed"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop commafeed
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
if ! [[ $(dpkg -s rsync 2>/dev/null) ]]; then
msg_info "Installing Dependencies"
@@ -54,9 +54,9 @@ function update_script() {
msg_ok "Restored data"
fi
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start commafeed
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -10,7 +10,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -28,27 +28,20 @@ function update_script() {
exit
fi
if check_for_gh_release "configarr" "raydak-labs/configarr"; then
msg_info "Stopping $APP"
msg_info "Stopping Service"
systemctl stop configarr-task.timer
msg_ok "Stopped $APP"
msg_ok "Stopped Service"
msg_info "Updating $APP"
mkdir -p /opt/backup/
mv /opt/configarr/{config.yml,secrets.yml,.env} "/opt/backup/"
rm -rf /opt/configarr
fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr"
mv /opt/backup/{config.yml,secrets.yml,.env} "/opt/configarr/"
cd /opt/configarr
$STD pnpm install
$STD pnpm run build
msg_ok "Updated $APP"
msg_info "Starting $APP"
systemctl start configarr-task.timer
msg_ok "Started configarr"
mv /opt/configarr/{config.yml,secrets.yml,.env} /opt/backup/
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr" "prebuild" "latest" "/opt/configarr" "configarr-linux-x64.tar.xz"
mv /opt/backup/{config.yml,secrets.yml,.env} /opt/configarr/
rm -rf /opt/backup
msg_ok "Updated Successfully"
msg_info "Starting Service"
systemctl start configarr-task.timer
msg_ok "Started Service"
msg_ok "Updated Successfully!"
fi
exit
}

View File

@@ -28,9 +28,9 @@ function update_script() {
exit
fi
if check_for_gh_release "dashy" "Lissy93/dashy"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop dashy
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Backing up conf.yml"
cd ~

View File

@@ -32,9 +32,9 @@ function update_script() {
export NODE_OPTIONS="--max_old_space_size=4096"
if check_for_gh_release "docmost" "docmost/docmost"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop docmost
msg_ok "${APP} Stopped"
msg_ok "Stopped Service"
msg_info "Backing up data"
cp /opt/docmost/.env /opt/
@@ -52,9 +52,9 @@ function update_script() {
$STD pnpm build
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start docmost
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -29,9 +29,9 @@ function update_script() {
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/documenso/documenso/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop documenso
msg_ok "${APP} Stopped"
msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}"
cp /opt/documenso/.env /opt/
@@ -53,9 +53,9 @@ function update_script() {
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start documenso
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/v${RELEASE}.zip

View File

@@ -29,15 +29,15 @@ function update_script() {
exit
fi
if check_for_gh_release "emby" "MediaBrowser/Emby.Releases"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop emby-server
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "emby" "MediaBrowser/Emby.Releases" "binary"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start emby-server
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -28,9 +28,9 @@ function update_script() {
exit 1
fi
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop esphomeDashboard
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
VENV_PATH="/opt/esphome/.venv"
ESPHOME_BIN="${VENV_PATH}/bin/esphome"
@@ -78,9 +78,9 @@ EOF
ln -s /opt/esphome/.venv/bin/esphome /usr/local/bin/esphome
msg_ok "Linked esphome binary"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start esphomeDashboard
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
exit
}

View File

@@ -27,13 +27,13 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop forgejo
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Updating ${APP}"
RELEASE=$(curl -fsSL https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+' | sed 's/^v//')
curl -fsSL "https://codeberg.org/forgejo/forgejo/releases/download/v${RELEASE}/forgejo-${RELEASE}-linux-amd64" -o "forgejo-$RELEASE-linux-amd64"
curl -fsSL "https://codeberg.org/forgejo/forgejo/releases/download/v${RELEASE}/forgejo-${RELEASE}-linux-amd64" -o "forgejo-$RELEASE-linux-amd64"
rm -rf /opt/forgejo/*
cp -r forgejo-$RELEASE-linux-amd64 /opt/forgejo/forgejo-$RELEASE-linux-amd64
chmod +x /opt/forgejo/forgejo-$RELEASE-linux-amd64
@@ -44,9 +44,9 @@ curl -fsSL "https://codeberg.org/forgejo/forgejo/releases/download/v${RELEASE}/f
rm -rf forgejo-$RELEASE-linux-amd64
msg_ok "Cleaned"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start forgejo
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
exit
}
@@ -58,4 +58,4 @@ 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}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@@ -28,15 +28,15 @@ function update_script() {
exit
fi
if check_for_gh_release "gokapi" "Forceu/Gokapi"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop gokapi
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "gokapi" "Forceu/Gokapi" "prebuild" "latest" "/opt/gokapi" "gokapi-linux_amd64.zip"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start gokapi
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -28,16 +28,16 @@ function update_script() {
exit
fi
if check_for_gh_release "gotify" "gotify/server"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop gotify
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "gotify" "gotify/server" "prebuild" "latest" "/opt/gotify" "gotify-linux-amd64.zip"
chmod +x /opt/gotify/gotify-linux-amd64
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start gotify
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -30,9 +30,9 @@ function update_script() {
fi
if check_for_gh_release "grist" "gristlabs/grist-core"; then
msg_info "Stopping ${APP} Service"
msg_info "Stopping Service"
systemctl stop grist
msg_ok "Stopped ${APP} Service"
msg_ok "Stopped Service"
msg_info "Creating backup"
rm -rf /opt/grist_bak
@@ -52,9 +52,9 @@ function update_script() {
$STD yarn run install:python
msg_ok "Updated ${APP}"
msg_info "Starting ${APP} Service"
msg_info "Starting Service"
systemctl start grist
msg_ok "Started ${APP} Service"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi

79
ct/guardian.sh Executable file
View File

@@ -0,0 +1,79 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: HydroshieldMKII
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/HydroshieldMKII/Guardian
APP="Guardian"
var_tags="${var_tags:-media;monitoring}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}"
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 "/opt/guardian" ]] ; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "guardian" "HydroshieldMKII/Guardian" ; then
msg_info "Stopping Services"
systemctl stop guardian-backend guardian-frontend
msg_ok "Stopped Services"
if [[ -f "/opt/guardian/backend/plex-guard.db" ]] ; then
msg_info "Backing up Database"
cp "/opt/guardian/backend/plex-guard.db" "/tmp/plex-guard.db.backup"
msg_ok "Backed up Database"
fi
cp /opt/guardian/.env /opt
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "guardian" "HydroshieldMKII/Guardian" "tarball" "latest" "/opt/guardian"
mv /opt/.env /opt/guardian
if [[ -f "/tmp/plex-guard.db.backup" ]] ; then
msg_info "Restoring Database"
cp "/tmp/plex-guard.db.backup" "/opt/guardian/backend/plex-guard.db"
rm "/tmp/plex-guard.db.backup"
msg_ok "Restored Database"
fi
msg_info "Updating Guardian"
cd /opt/guardian/backend
$STD npm ci
$STD npm run build
cd /opt/guardian/frontend
$STD npm ci
$STD DEPLOYMENT_MODE=standalone npm run build
msg_ok "Updated Guardian"
msg_info "Starting Services"
systemctl start guardian-backend guardian-frontend
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}:3000${CL}"

6
ct/headers/guardian Normal file
View File

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

View File

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

6
ct/headers/sonarqube Normal file
View File

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

View File

@@ -32,16 +32,16 @@ function update_script() {
fi
if check_for_gh_release "headscale" "juanfont/headscale"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop headscale
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "headscale" "juanfont/headscale" "binary"
fetch_and_deploy_gh_release "headscale-admin" "GoodiesHQ/headscale-admin" "prebuild" "latest" "/opt/headscale-admin" "admin.zip"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl enable -q --now headscale
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -29,10 +29,10 @@ function update_script() {
fi
RELEASE=$(curl -fsSL "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" | awk '/tag_name/{print $4;exit}' FS='[""]')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop heimdall
sleep 1
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Backing up Data"
cp -R /opt/Heimdall/database database-backup
cp -R /opt/Heimdall/public public-backup
@@ -59,10 +59,10 @@ function update_script() {
rm -rf {"${RELEASE}".tar.gz,Heimdall-"${VER}",public-backup,database-backup,Heimdall}
sleep 1
msg_ok "Cleaned"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start heimdall.service
sleep 2
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}."

View File

@@ -34,9 +34,9 @@ function update_script() {
fi
if check_for_gh_release "homebox" "sysadminsmedia/homebox"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop homebox
msg_ok "${APP} Stopped"
msg_ok "Stopped Service"
if [ -f /opt/homebox ] && [ -x /opt/homebox ]; then
rm -f /opt/homebox
@@ -46,9 +46,9 @@ function update_script() {
[ -f /opt/.env ] && mv /opt/.env /opt/homebox/.env
[ -d /opt/.data ] && mv /opt/.data /opt/homebox/.data
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start homebox
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -27,9 +27,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop homer
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Backing up assets directory"
cd ~
@@ -53,9 +53,9 @@ function update_script() {
rm -rf assets-backup /opt/homer/homer.zip
msg_ok "Cleaned"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start homer
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
exit
}

View File

@@ -39,8 +39,26 @@ function update_script() {
PNPM_VERSION="$(curl -fsSL "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/package.json" | jq -r '.packageManager | split("@")[1]')"
NODE_VERSION="22" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
if dpkg -l | grep -q "libmimalloc2.0"; then
$STD apt-get update && $STD apt-get install -y libmimalloc3
if [[ ! -f /etc/apt/preferences.d/preferences ]]; then
msg_info "Adding Debian Testing repo"
sed -i 's/ trixie-updates/ trixie-updates testing/g' /etc/apt/sources.list.d/debian.sources
cat <<EOF >/etc/apt/preferences.d/preferences
Package: *
Pin: release a=unstable
Pin-Priority: 450
Package: *
Pin:release a=testing
Pin-Priority: 450
EOF
if [[ -f /etc/apt/preferences.d/immich ]]; then
rm /etc/apt/preferences.d/immich
fi
$STD apt-get update
msg_ok "Added Debian Testing repo"
msg_info "Installing libmimalloc3"
$STD apt-get install -t testing --no-install-recommends libmimalloc3
msg_ok "Installed libmimalloc3"
fi
STAGING_DIR=/opt/staging
@@ -79,7 +97,7 @@ function update_script() {
msg_info "Stopping Services"
systemctl stop immich-web
systemctl stop immich-ml
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
INSTALL_DIR="/opt/${APP}"
UPLOAD_DIR="$(sed -n '/^IMMICH_MEDIA_LOCATION/s/[^=]*=//p' /opt/immich/.env)"
SRC_DIR="${INSTALL_DIR}/source"

View File

@@ -27,7 +27,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "keycloak" "keycloak/keycloak"; then
if check_for_gh_release "keycloak_app" "keycloak/keycloak"; then
msg_info "Stopping Keycloak"
systemctl stop keycloak
msg_ok "Stopped Keycloak"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
@@ -27,18 +27,18 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "komga" "gotson/komga"; then
msg_info "Stopping ${APP}"
if check_for_gh_release "komga-org" "gotson/komga"; then
msg_info "Stopping Service"
systemctl stop komga
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
rm -f /opt/komga/komga.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga-org" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
mv /opt/komga/komga-*.jar /opt/komga/komga.jar
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start komga
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

View File

@@ -28,9 +28,9 @@ function update_script() {
fi
if check_for_gh_release "linkwarden" "linkwarden/linkwarden"; then
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop linkwarden
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
RUST_CRATES="monolith" setup_rust
@@ -54,9 +54,9 @@ function update_script() {
[ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start linkwarden
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache ~/.rustup

View File

@@ -28,9 +28,9 @@ function update_script() {
exit
fi
if check_for_gh_release "listmonk" "knadh/listmonk"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop listmonk
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Backing up data"
mv /opt/listmonk/ /opt/listmonk-backup
@@ -44,9 +44,9 @@ function update_script() {
$STD /opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml
msg_ok "Configured listmonk"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start listmonk
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/listmonk-backup/

View File

@@ -54,7 +54,7 @@ function update_script() {
cd /opt/mediamanager
rm -rf "$MM_DIR"/{media_manager,alembic*}
cp -r {media_manager,alembic*} "$MM_DIR"
$STD /usr/local/bin/uv sync --locked --active
$STD /usr/local/bin/uv sync --locked --active -n -p cpython3.13 --managed-python
msg_ok "Updated $APP"
msg_info "Starting Service"

View File

@@ -27,9 +27,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop medusa
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Updating ${APP}"
cd /opt/medusa
@@ -40,9 +40,9 @@ function update_script() {
fi
msg_ok "Updated Successfully"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start medusa
msg_ok "Started ${APP}"
msg_ok "Started Service"
exit
}
@@ -53,4 +53,4 @@ 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}:8081${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081${CL}"

View File

@@ -41,9 +41,9 @@ function update_script() {
fi
if check_for_gh_release "metube" "alexta69/metube"; then
msg_info "Stopping ${APP} Service"
msg_info "Stopping Service"
systemctl stop metube
msg_ok "Stopped ${APP} Service"
msg_ok "Stopped Service"
msg_info "Backing up Old Installation"
if [[ -d /opt/metube_bak ]]; then
@@ -102,10 +102,10 @@ EOF
$STD apt-get -y autoclean
msg_ok "Cleaned Up"
msg_info "Starting ${APP} Service"
msg_info "Starting Service"
systemctl start metube
sleep 1
msg_ok "Started ${APP} Service"
msg_ok "Started Service"
msg_ok "Updated Successfully!"
fi

View File

@@ -29,18 +29,18 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop minarca-server
msg_ok "${APP} Stopped"
msg_ok "Stopped Service"
msg_info "Updating ${APP} LXC"
$STD apt-get update
$STD apt-get upgrade -y
msg_ok "Updated ${APP} LXC"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start minarca-server
msg_ok "Restarted ${APP}"
msg_ok "Started Service"
exit
}

View File

@@ -47,9 +47,9 @@ function update_script() {
fi
if [[ "${CURRENT_VERSION}" != "${RELEASE}" ]]; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop minio
msg_ok "${APP} Stopped"
msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}"
mv /usr/local/bin/minio /usr/local/bin/minio_bak
@@ -58,9 +58,9 @@ function update_script() {
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start minio
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning up"
rm -f /usr/local/bin/minio_bak

View File

@@ -31,9 +31,9 @@ function update_script() {
RELEASE=$(curl -fsSL https://api.github.com/repos/netbox-community/netbox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop netbox netbox-rq
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Updating $APP to v${RELEASE}"
mv /opt/netbox/ /opt/netbox-backup
@@ -60,9 +60,9 @@ function update_script() {
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start netbox netbox-rq
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning up"
rm -r "/opt/v${RELEASE}.zip"

View File

@@ -28,9 +28,9 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop nextpvr-server
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Updating LXC packages"
$STD apt-get update
@@ -43,9 +43,9 @@ function update_script() {
$STD dpkg -i nextpvr-helper.deb
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start nextpvr-server
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf /opt/nextpvr-helper.deb

View File

@@ -31,9 +31,9 @@ function update_script() {
exit
fi
if check_for_gh_release "nodebb" "NodeBB/NodeBB"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop nodebb
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Updating ${APP}"
cd /opt/nodebb
@@ -41,9 +41,9 @@ function update_script() {
echo "${CHECK_UPDATE_RELEASE}" >~/.nodebb
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start nodebb
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully\n"
fi
exit

View File

@@ -32,22 +32,22 @@ function update_script() {
DETAIL_PAGE=$(curl -fsSL "$BASE_URL#note_$RELEASE")
DOWNLOAD_URL=$(echo "$DETAIL_PAGE" | grep -oP "https://updates.networkoptix.com/default/$RELEASE/linux/nxwitness-server-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+-linux_x64\.deb" | head -n 1)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop networkoptix-root-tool networkoptix-mediaserver
msg_ok "${APP} Stopped"
msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}"
cd /tmp
curl -fsSL "$DOWNLOAD_URL" -o ""nxwitness-server-$RELEASE-linux_x64.deb""
curl -fsSL "$DOWNLOAD_URL" -o ""nxwitness-server-$RELEASE-linux_x64.deb""
export DEBIAN_FRONTEND=noninteractive
export DEBCONF_NOWARNINGS=yes
$STD dpkg -i nxwitness-server-$RELEASE-linux_x64.deb
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start networkoptix-root-tool networkoptix-mediaserver
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning up"
rm -f /tmp/nxwitness-server-$RELEASE-linux_x64.deb
@@ -67,4 +67,4 @@ 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}:7001/${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7001/${CL}"

View File

@@ -45,7 +45,7 @@ function update_script() {
if [[ "${LATEST_VERSION}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping ${APP} service"
systemctl stop odoo
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${LATEST_VERSION}"
curl -fsSL https://nightly.odoo.com/${RELEASE}/nightly/deb/odoo_${RELEASE}.latest_all.deb -o /opt/odoo.deb
@@ -55,7 +55,7 @@ function update_script() {
msg_info "Starting ${APP} service"
systemctl start odoo
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -f /opt/odoo.deb

View File

@@ -28,18 +28,18 @@ function update_script() {
exit
fi
if check_for_gh_release "pocketbase" "pocketbase/pocketbase"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop pocketbase
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Updating ${APP}"
/opt/pocketbase/pocketbase update
echo "${CHECK_UPDATE_RELEASE}" >~/.pocketbase
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start pocketbase
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Update Successful"
fi
exit

View File

@@ -30,8 +30,8 @@ function update_script() {
fi
if check_for_gh_release "pocket-id" "pocket-id/pocket-id"; then
if [ "$(printf '%s\n%s' "$(cat ~/.pocket-id 2>/dev/null || echo 0.0.0)" "1.0.0" | sort -V | head -n1)" = "$(cat ~/.pocket-id 2>/dev/null || echo 0.0.0)" ] \
&& [ "$(cat ~/.pocket-id 2>/dev/null || echo 0.0.0)" != "1.0.0" ]; then
if [ "$(printf '%s\n%s' "$(cat ~/.pocket-id 2>/dev/null || echo 0.0.0)" "1.0.0" | sort -V | head -n1)" = "$(cat ~/.pocket-id 2>/dev/null || echo 0.0.0)" ] &&
[ "$(cat ~/.pocket-id 2>/dev/null || echo 0.0.0)" != "1.0.0" ]; then
msg_info "Migrating ${APP}"
systemctl -q disable --now pocketid-backend pocketid-frontend caddy
mv /etc/caddy/Caddyfile ~/Caddyfile.bak
@@ -58,9 +58,9 @@ function update_script() {
mv /opt/data /opt/pocket-id
msg_ok "Migration complete. The reverse proxy port has been changed to 1411."
else
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop pocketid
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
cp /opt/pocket-id/.env /opt/env
fi

View File

@@ -0,0 +1,62 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Marfnl
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/prometheus/blackbox_exporter
APP="Prometheus-Blackbox-Exporter"
var_tags="${var_tags:-monitoring;prometheus}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
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 [[ ! -d /opt/blackbox-exporter ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "blackbox-exporter" "prometheus/blackbox_exporter"; then
msg_info "Stopping Service"
systemctl stop blackbox-exporter
msg_ok "Stopped Service"
msg_info "Creating backup"
mv /opt/blackbox-exporter/blackbox.yml /opt
msg_ok "Backup created"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "blackbox-exporter" "prometheus/blackbox_exporter" "prebuild" "latest" "/opt/blackbox-exporter" "blackbox_exporter-*.linux-amd64.tar.gz"
msg_info "Restoring backup"
cp -r /opt/blackbox.yml /opt/blackbox-exporter
rm -f /opt/blackbox.yml
msg_ok "Backup restored"
msg_info "Starting Service"
systemctl start blackbox-exporter
msg_ok "Started Service"
msg_ok "Update 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}:9115${CL}"

View File

@@ -28,9 +28,9 @@ function update_script() {
exit 1
fi
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop prometheus-pve-exporter
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
export PVE_VENV_PATH="/opt/prometheus-pve-exporter/.venv"
export PVE_EXPORTER_BIN="${PVE_VENV_PATH}/bin/pve_exporter"
@@ -77,9 +77,9 @@ EOF
msg_ok "Updated systemd service"
fi
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start prometheus-pve-exporter
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
exit 0

View File

@@ -41,17 +41,17 @@ EOF
$STD apt-get update
fi
msg_info "Stopping ${APP} Service"
msg_info "Stopping Service"
systemctl stop rabbitmq-server
msg_ok "Stopped ${APP} Service"
msg_ok "Stopped Service"
msg_info "Updating..."
$STD apt install --only-upgrade rabbitmq-server
msg_ok "Update Successfully"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start rabbitmq-server
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
exit
}

View File

@@ -30,9 +30,9 @@ function update_script() {
fi
if check_for_gh_release "rwMarkable" "fccview/rwMarkable"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop rwmarkable
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
msg_info "Backing up configuration & data"
cd /opt/rwmarkable

View File

@@ -28,15 +28,15 @@ function update_script() {
fi
if check_for_gh_release "silverbullet" "silverbulletmd/silverbullet"; then
msg_info "Stopping ${APP}"
msg_info "Stopping Service"
systemctl stop silverbullet
msg_ok "Stopped ${APP}"
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "silverbullet" "silverbulletmd/silverbullet" "prebuild" "latest" "/opt/silverbullet/bin" "silverbullet-server-linux-x86_64.zip"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start silverbullet
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Update Successful"
fi
exit

71
ct/sonarqube.sh Normal file
View File

@@ -0,0 +1,71 @@
#!/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: prop4n
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://docs.sonarsource.com/sonarqube-server
APP="SonarQube"
var_tags="${var_tags:-automation}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-6144}"
var_disk="${var_disk:-25}"
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 /opt/sonarqube ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "sonarqube" "SonarSource/sonarqube"; then
msg_info "Stopping Service"
systemctl stop sonarqube
msg_ok "Stopped Service"
msg_info "Creating backup"
BACKUP_DIR="/opt/sonarqube-backup"
mv /opt/sonarqube ${BACKUP_DIR}
msg_ok "Backup created"
msg_info "Installing sonarqube"
RELEASE=$(curl -fsSL https://api.github.com/repos/SonarSource/sonarqube/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
unzip -q "$temp_file" -d /opt
mv /opt/sonarqube-* /opt/sonarqube
msg_ok "Installed sonarqube"
msg_info "Restoring backup"
cp -rp ${BACKUP_DIR}/data/ /opt/sonarqube/data/
cp -rp ${BACKUP_DIR}/extensions/ /opt/sonarqube/extensions/
cp -p ${BACKUP_DIR}/conf/sonar.properties /opt/sonarqube/conf/sonar.properties
rm -rf ${BACKUP_DIR}
chown -R sonarqube:sonarqube /opt/sonarqube
msg_ok "Backup restored"
msg_info "Starting Service"
systemctl start sonarqube
msg_ok "Service started"
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}:9000${CL}"

View File

@@ -30,9 +30,9 @@ function update_script() {
RELEASE=$(curl -fsSL https://github.com/Donkie/Spoolman/releases/latest | grep "title>Release" | cut -d " " -f 4)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP} Service"
msg_info "Stopping Service"
systemctl stop spoolman
msg_ok "Stopped ${APP} Service"
msg_ok "Stopped Service"
msg_info "Updating ${APP} to ${RELEASE}"
cd /opt
@@ -46,9 +46,9 @@ function update_script() {
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting ${APP} Service"
msg_info "Starting Service"
systemctl start spoolman
msg_ok "Started ${APP} Service"
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/spoolman.zip

View File

@@ -61,9 +61,9 @@ function update_script() {
$STD uv pip install apprise cryptography --system
msg_ok "Updated AppRise"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start tianji
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_info "Cleaning up"
rm -rf /opt/tianji_bak

View File

@@ -38,7 +38,7 @@ function update_script() {
msg_info "Starting Service"
systemctl start traefik
msg_ok "Started Service"
msg_ok "Updated Successfully!"
msg_ok "Updated Successfully"
fi
exit
}

View File

@@ -66,8 +66,9 @@ function update_script() {
msg_info "Starting Service"
systemctl start trilium
sleep 1
msg_ok "Started Service"
msg_ok "Updated Successfully!"
msg_ok "Updated Successfully"
fi
exit
}

View File

@@ -44,7 +44,7 @@ function update_script() {
msg_info "Starting Service"
systemctl start umami
msg_ok "Started Service"
msg_ok "Updated Successfully!"
msg_ok "Updated Successfully"
fi
exit
}

View File

@@ -46,7 +46,7 @@ function update_script() {
msg_info "Starting Service"
systemctl start uptime-kuma
msg_ok "Started Service"
msg_ok "Updated Successfully!"
msg_ok "Updated Successfully"
fi
exit
}

View File

@@ -39,16 +39,18 @@ function update_script() {
tar xzf "$temp_file"
cp -rf wger-"$RELEASE"/* /home/wger/src
cd /home/wger/src || exit
$STD pip install -r requirements_prod.txt --ignore-installed
$STD pip install -e .
$STD python3 manage.py migrate
$STD python3 manage.py collectstatic --no-input
$STD yarn install
$STD yarn build:css:sass
$STD python3 manage.py collectstatic --noinput
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting $APP"
msg_info "Starting Service"
systemctl start wger
msg_ok "Started $APP"
msg_ok "Started Service"
msg_info "Cleaning Up"
rm -rf "$temp_file"

View File

@@ -42,7 +42,12 @@ function update_script() {
fi
msg_info "Stopping Services"
systemctl stop zabbix-server $AGENT_SERVICE
$STD systemctl stop zabbix-server
if systemctl list-unit-files | grep -q zabbix-agent2; then
$STD systemctl stop zabbix-agent2
else
$STD systemctl stop zabbix-agent
fi
msg_ok "Stopped Services"
msg_info "Updating Zabbix"
@@ -83,14 +88,22 @@ function update_script() {
msg_ok "Updated Zabbix"
msg_info "Starting Services"
systemctl start zabbix-server $AGENT_SERVICE
$STD systemctl start zabbix-server
if systemctl list-unit-files | grep -q zabbix-agent2; then
$STD systemctl start zabbix-agent2
else
$STD systemctl start zabbix-agent
fi
systemctl restart apache2
msg_ok "Started Services"
msg_info "Cleaning Up"
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
msg_ok "Updated Successfully"
msg_ok "Updated Successfully!"
exit
}

View File

@@ -49,9 +49,9 @@ function update_script() {
$STD pnpm build
msg_ok "Updated ${APP}"
msg_info "Starting ${APP}"
msg_info "Starting Service"
systemctl start zipline
msg_ok "Started ${APP}"
msg_ok "Started Service"
msg_ok "Updated Successfully"
fi
exit

1960
frontend/bun.lock generated Normal file

File diff suppressed because it is too large Load Diff

14460
frontend/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,7 @@
"ram": 512,
"hdd": 4,
"os": "Debian",
"version": "12"
"version": "13"
}
}
],

View File

@@ -0,0 +1,35 @@
{
"name": "Guardian",
"slug": "guardian",
"categories": [
13
],
"date_created": "2025-09-22",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://github.com/HydroshieldMKII/Guardian/blob/main/README.md",
"config_path": "/opt/guardian/.env",
"website": "https://github.com/HydroshieldMKII/Guardian",
"logo": null,
"description": "Guardian is a lightweight companion app for Plex that lets you monitor, approve or block devices in real time. It helps you enforce per-user or global policies, stop unwanted sessions automatically and grant temporary access - all through a simple web interface.",
"install_methods": [
{
"type": "default",
"script": "ct/guardian.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 6,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -23,7 +23,7 @@
"ram": 2048,
"hdd": 4,
"os": "debian",
"version": "12"
"version": "13"
}
}
],

View File

@@ -0,0 +1,41 @@
{
"name": "Prometheus Blackbox Exporter",
"slug": "prometheus-blackbox-exporter",
"categories": [
1,
9
],
"date_created": "2025-10-10",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 9115,
"documentation": "https://github.com/prometheus/blackbox_exporter",
"website": "https://github.com/prometheus/blackbox_exporter",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/prometheus.webp",
"config_path": "/opt/blackbox-exporter/blackbox.yml",
"description": "An exporter allows blackbox probing of endpoints over HTTP, HTTPS, DNS, TCP, ICMP and gRPC for use by the Prometheus monitoring system.",
"install_methods": [
{
"type": "default",
"script": "ct/prometheus-blackbox-exporter.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Please adjust the Proxmox credentials in the configuration file!",
"type": "info"
}
]
}

View File

@@ -0,0 +1,36 @@
{
"name": "sonarqube",
"slug": "sonarqube",
"categories": [
20,
19
],
"date_created": "2025-10-10",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 9000,
"documentation": "https://docs.sonarsource.com/sonarqube-server",
"config_path": "/opt/sonarqube/conf/sonar.properties",
"website": "https://www.sonarsource.com/products/sonarqube/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/sonarqube.webp",
"description": "SonarQube Server automates code quality and security reviews and provides actionable code intelligence so developers can focus on building better, faster.",
"install_methods": [
{
"type": "default",
"script": "ct/sonarqube.sh",
"resources": {
"cpu": 4,
"ram": 6144,
"hdd": 25,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "admin",
"password": "admin"
},
"notes": []
}

File diff suppressed because it is too large Load Diff

View File

@@ -6,18 +6,18 @@ import React from "react";
import { ThemeProvider } from "@/components/theme-provider";
import { analytics, basePath } from "@/config/site-config";
import "@/styles/globals.css";
import QueryProvider from "@/components/query-provider";
import { Toaster } from "@/components/ui/sonner";
import Footer from "@/components/footer";
import Navbar from "@/components/navbar";
import "@/styles/globals.css";
const inter = Inter({ subsets: ["latin"] });
export const metadata: Metadata = {
title: "Proxmox VE Helper-Scripts",
description:
"The official website for the Proxmox VE Helper-Scripts (Community) repository. Featuring over 300+ scripts to help you manage your Proxmox Virtual Environment.",
"The official website for the Proxmox VE Helper-Scripts (Community) repository. Featuring over 400+ scripts to help you manage your Proxmox Virtual Environment.",
applicationName: "Proxmox VE Helper-Scripts",
generator: "Next.js",
referrer: "origin-when-cross-origin",
@@ -57,7 +57,7 @@ export const metadata: Metadata = {
openGraph: {
title: "Proxmox VE Helper-Scripts",
description:
"The official website for the Proxmox VE Helper-Scripts (Community) repository. Featuring over 300+ scripts to help you manage your Proxmox Virtual Environment.",
"The official website for the Proxmox VE Helper-Scripts (Community) repository. Featuring over 400+ scripts to help you manage your Proxmox Virtual Environment.",
url: `https://community-scripts.github.io/${basePath}/`,
siteName: "Proxmox VE Helper-Scripts",
images: [
@@ -76,7 +76,7 @@ export const metadata: Metadata = {
title: "Proxmox VE Helper-Scripts",
creator: "@BramSuurdje",
description:
"The official website for the Proxmox VE Helper-Scripts (Community) repository. Featuring over 300+ scripts to help you manage your Proxmox Virtual Environment.",
"The official website for the Proxmox VE Helper-Scripts (Community) repository. Featuring over 400+ scripts to help you manage your Proxmox Virtual Environment.",
images: [`https://community-scripts.github.io/${basePath}/defaultimg.png`],
},
manifest: "/manifest.webmanifest",
@@ -105,7 +105,6 @@ export default function RootLayout({
<div className="flex w-full flex-col justify-center">
<NuqsAdapter>
<QueryProvider>
<Navbar />
<div className="flex min-h-screen flex-col justify-center">
<div className="flex w-full justify-center">
@@ -117,7 +116,6 @@ export default function RootLayout({
<Footer />
</div>
</QueryProvider>
</NuqsAdapter>
</div>
</ThemeProvider>

View File

@@ -111,11 +111,11 @@ export default function Page() {
We are a community-driven initiative that simplifies the setup of Proxmox Virtual Environment (VE).
</p>
<p>
With 300+ scripts to help you manage your
With 400+ scripts to help you manage your
{" "}
<b>Proxmox VE</b>
, whether you&#39;re a seasoned
user or a newcomer, we&#39;ve got you covered.
, whether you&#39;re a seasoned user or a
newcomer, we&#39;ve got you covered.
</p>
</div>
</div>

View File

@@ -14,16 +14,14 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apk add --no-cache curl openssl apache2-utils
$STD apk add --no-cache openssl apache2-utils
msg_ok "Installed Dependencies"
msg_info "Installing Tinyauth"
mkdir -p /opt/tinyauth
RELEASE=$(curl -s https://api.github.com/repos/steveiliop56/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/steveiliop56/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth
chmod +x /opt/tinyauth/tinyauth
PASS=$(openssl rand -base64 8 | tr -dc 'a-zA-Z0-9' | head -c 8)
USER=$(htpasswd -Bbn "tinyauth" "${PASS}")
@@ -32,24 +30,18 @@ Tinyauth Credentials
Username: tinyauth
Password: ${PASS}
EOF
echo "${RELEASE}" >/opt/tinyauth_version.txt
echo "${RELEASE}" >~/.tinyauth
msg_ok "Installed Tinyauth"
read -p "${TAB3}Enter your Tinyauth subdomain (e.g. https://tinyauth.example.com): " app_url
msg_info "Creating Tinyauth Service"
SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32)
read -r -p "${TAB3}Enter your Tinyauth subdomain (e.g. https://tinyauth.example.com): " app_url
cat <<EOF >/opt/tinyauth/.env
DATABASE_PATH=/opt/tinyauth/database.db
SECRET=${SECRET}
USERS=${USER}
USERS='${USER}'
APP_URL=${app_url}
EOF
sed -i -e 's/\$/\$\$/g' /opt/tinyauth/.env
msg_info "Creating Service"
cat <<'EOF' >/etc/init.d/tinyauth
#!/sbin/openrc-run
description="Tinyauth Service"
@@ -69,7 +61,6 @@ depend() {
use net
}
EOF
chmod +x /etc/init.d/tinyauth
$STD rc-update add tinyauth default
msg_ok "Enabled Tinyauth Service"

View File

@@ -16,12 +16,48 @@ update_os
msg_info "Installing Cockpit"
source /etc/os-release
echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" >/etc/apt/sources.list.d/backports.list
cat <<EOF >/etc/apt/sources.list.d/debian-backports.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: ${VERSION_CODENAME}-backports
Components: main
Enabled: yes
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF
$STD apt update
$STD apt install -t ${VERSION_CODENAME}-backports cockpit --no-install-recommends -y
$STD apt install -t ${VERSION_CODENAME}-backports cockpit cracklib-runtime --no-install-recommends -y
sed -i "s/root//g" /etc/cockpit/disallowed-users
msg_ok "Installed Cockpit"
read -r -p "Would you like to install 45Drives' cockpit-file-sharing, cockpit-identities, and cockpit-navigator <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
install_45drives=true
if [[ "${VERSION_ID}" -ge 13 ]]; then
read -r -p "Debian ${VERSION_ID} is not officially supported by 45Drives yet, would you like to continue anyway? <y/N> " prompt
if [[ ! "${prompt,,}" =~ ^(y|yes)$ ]]; then
install_45drives=false
fi
fi
if [[ "$install_45drives" == "true" ]]; then
msg_info "Installing 45Drives' cockpit extensions"
curl -fsSL https://repo.45drives.com/key/gpg.asc | gpg --pinentry-mode loopback --batch --yes --dearmor -o /usr/share/keyrings/45drives-archive-keyring.gpg
cat <<EOF >/etc/apt/sources.list.d/45drives-enterprise.sources
Types: deb
URIs: https://repo.45drives.com/enterprise/debian
Suites: bookworm
Components: main
Architectures: amd64
Signed-By: /usr/share/keyrings/45drives-archive-keyring.gpg
EOF
$STD apt update
$STD apt install cockpit-file-sharing cockpit-identities cockpit-navigator -y
msg_ok "Installed 45Drives' cockpit extensions"
fi
fi
motd_ssh
customize

View File

@@ -14,26 +14,24 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
git
$STD apt install -y git
msg_ok "Installed Dependencies"
NODE_MODULE="pnpm@latest" setup_nodejs
fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr"
fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr" "prebuild" "latest" "/opt/configarr" "configarr-linux-x64.tar.xz"
msg_info "Setup ${APPLICATION}"
msg_info "Setup Configarr"
cat <<EOF >/opt/configarr/.env
ROOT_PATH=/opt/configarr
CUSTOM_REPO_ROOT=/opt/configarr/repos
CONFIG_LOCATION=/opt/configarr/config.yml
SECRETS_LOCATION=/opt/configarr/secrets.yml
EOF
mv /opt/configarr/secrets.yml.template /opt/configarr/secrets.yml
sed 's|#localConfigTemplatesPath: /app/templates|#localConfigTemplatesPath: /opt/configarr/templates|' /opt/configarr/config.yml.template >/opt/configarr/config.yml
cd /opt/configarr
$STD pnpm install
$STD pnpm run build
msg_ok "Setup ${APPLICATION}"
curl -fsSLO https://raw.githubusercontent.com/raydak-labs/configarr/refs/heads/main/examples/full/config/config.yml
curl -fsSLO https://raw.githubusercontent.com/raydak-labs/configarr/refs/heads/main/examples/full/config/secrets.yml
sed 's|#localConfigTemplatesPath: /app/templates|#localConfigTemplatesPath: /opt/configarr/templates|' /opt/configarr/config.yml
msg_ok "Setup Configarr"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/configarr-task.service
@@ -41,9 +39,9 @@ cat <<EOF >/etc/systemd/system/configarr-task.service
Description=Run Configarr Task
[Service]
Type=oneshot
Type=simple
WorkingDirectory=/opt/configarr
ExecStart=/usr/bin/node /opt/configarr/bundle.cjs
ExecStart=/opt/configarr/configarr
EOF
cat <<EOF >/etc/systemd/system/configarr-task.timer
@@ -65,6 +63,7 @@ motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -20,6 +20,7 @@ $STD apt install -y \
make
msg_ok "Installed Dependencies"
HOST_IP=$(hostname -I | awk '{print $1}')
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
PG_VERSION="16" setup_postgresql
fetch_and_deploy_gh_release "docmost" "docmost/docmost"
@@ -50,6 +51,7 @@ sed -i -e "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z
-e "s|FILE_UPLOAD_SIZE_LIMIT=.*|FILE_UPLOAD_SIZE_LIMIT=50mb|" \
-e "s|DRAWIO_URL=.*|DRAWIO_URL=https://embed.diagrams.net|" \
-e "s|DISABLE_TELEMETRY=.*|DISABLE_TELEMETRY=true|" \
-e "s|APP_URL=.*|APP_URL=http://$HOST_IP:3000|" \
/opt/docmost/.env
export NODE_OPTIONS="--max-old-space-size=2048"
$STD pnpm install

View File

@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
$STD apt-get install -y \
git \
apache2 \
php8.2-{apcu,cli,common,curl,gd,imap,ldap,mysql,xmlrpc,xml,mbstring,bcmath,intl,zip,redis,bz2,soap} \
php8.4-{apcu,cli,common,curl,gd,ldap,mysql,xmlrpc,xml,mbstring,bcmath,intl,zip,redis,bz2,soap} \
php-cas \
libapache2-mod-php
msg_ok "Installed Dependencies"
@@ -43,12 +43,11 @@ msg_ok "Set up database"
msg_info "Installing GLPi"
cd /opt
#RELEASE=$(curl -fsSL https://api.github.com/repos/glpi-project/glpi/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
curl -fsSL "https://github.com/glpi-project/glpi/releases/download/10.0.20/glpi-10.0.20.tgz" -o "glpi-10.0.20.tgz"
$STD tar -xzvf glpi-10.0.20.tgz
RELEASE=$(curl -fsSL https://api.github.com/repos/glpi-project/glpi/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
curl -fsSL "https://github.com/glpi-project/glpi/releases/download/${RELEASE}/glpi-${RELEASE}.tgz" -o $(basename "https://github.com/glpi-project/glpi/releases/download/${RELEASE}/glpi-${RELEASE}.tgz")
$STD tar -xzvf glpi-${RELEASE}.tgz
cd /opt/glpi
$STD php bin/console db:install --db-name=$DB_NAME --db-user=$DB_USER --db-password=$DB_PASS --no-interaction
echo "10.0.20" >/opt/${APPLICATION}_version.txt
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed GLPi"
msg_info "Setting Downstream file"
@@ -83,6 +82,18 @@ define('GLPI_LOG_DIR', '/var/log/glpi');
EOF
msg_ok "Configured Downstream file"
msg_info "Configuring GLPI Database"
$STD /usr/bin/php /opt/glpi/bin/console db:install \
--db-host=localhost \
--db-name=$DB_NAME \
--db-user=$DB_USER \
--db-password=$DB_PASS \
--default-language=en_US \
--no-interaction \
--allow-superuser \
--force
msg_ok "Configured GLPI Database"
msg_info "Setting Folder and File Permissions"
chown root:root /opt/glpi/ -R
chown www-data:www-data /etc/glpi -R
@@ -144,7 +155,7 @@ customize
msg_info "Cleaning up"
rm -rf /opt/glpi/install
rm -rf /opt/glpi-10.0.20.tgz
rm -rf /opt/glpi-${RELEASE}.tgz
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -0,0 +1,75 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: HydroshieldMKII
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/HydroshieldMKII/Guardian
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 sqlite3
msg_ok "Installed Dependencies"
NODE_VERSION="24" setup_nodejs
fetch_and_deploy_gh_release "guardian" "HydroshieldMKII/Guardian" "tarball" "latest" "/opt/guardian"
msg_info "Configuring ${APPLICATION}"
cd /opt/guardian/backend
$STD npm ci
$STD npm run build
cd /opt/guardian/frontend
$STD npm ci
export DEPLOYMENT_MODE=standalone
$STD npm run build
msg_ok "Configured ${APPLICATION}"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/guardian-backend.service
[Unit]
Description=Guardian Backend
After=network.target
[Service]
WorkingDirectory=/opt/guardian/backend
ExecStart=/usr/bin/node dist/main.js
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/guardian-frontend.service
[Unit]
Description=Guardian Frontend
After=guardian-backend.service network.target
Wants=guardian-backend.service
[Service]
WorkingDirectory=/opt/guardian/frontend
Environment=DEPLOYMENT_MODE=standalone
ExecStart=/usr/bin/npm run start
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now guardian-backend
systemctl enable -q --now guardian-frontend
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -46,7 +46,6 @@ $STD apt-get install --no-install-recommends -y \
libgomp1 \
liblqr-1-0 \
libltdl7 \
libmimalloc3 \
libopenjp2-7 \
meson \
ninja-build \
@@ -109,6 +108,23 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_ok "Installed OpenVINO dependencies"
fi
msg_info "Configuring Debian Testing Repo"
sed -i 's/ trixie-updates/ trixie-updates testing/g' /etc/apt/sources.list.d/debian.sources
cat <<EOF >/etc/apt/preferences.d/preferences
Package: *
Pin: release a=unstable
Pin-Priority: 450
Package: *
Pin:release a=testing
Pin-Priority: 450
EOF
$STD apt-get update
msg_ok "Configured Debian Testing repo"
msg_info "Installing libmimalloc3"
$STD apt-get install -t testing --no-install-recommends -yqq libmimalloc3
msg_ok "Installed libmimalloc3"
PNPM_VERSION="$(curl -fsSL "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/package.json" | jq -r '.packageManager | split("@")[1]')"
NODE_VERSION="22" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql

View File

@@ -13,7 +13,16 @@ setting_up_container
network_check
update_os
JAVA_VERSION="21" setup_java
msg_info "Installing dependencies"
$STD apt -y install \
libarchive-dev \
libjxl-dev \
libheif-dev \
libwebp-dev
msg_ok "Installed dependencies"
JAVA_VERSION="23" setup_java
fetch_and_deploy_gh_release "kepubify" "pgaskin/kepubify" "singlefile" "latest" "/usr/bin" "kepubify-linux-64bit"
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "komga-org" "gotson/komga" "singlefile" "latest" "/opt/komga" "komga*.jar"
mv /opt/komga/komga-*.jar /opt/komga/komga.jar
@@ -26,7 +35,8 @@ After=syslog.target network.target
[Service]
Type=simple
WorkingDirectory=/opt/komga/
ExecStart=/usr/bin/java -jar -Xmx2g komga.jar
Environment=LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
ExecStart=/usr/bin/java --enable-native-access=ALL-UNNAMED -jar -Xmx2g komga.jar
TimeoutStopSec=20
KillMode=process
Restart=on-failure
@@ -41,6 +51,7 @@ motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -58,8 +58,7 @@ export BASE_PATH=""
export VIRTUAL_ENV="${MM_DIR}/venv"
cd /opt/mediamanager
cp -r {media_manager,alembic*} "$MM_DIR"
$STD /usr/local/bin/uv venv "$VIRTUAL_ENV"
$STD /usr/local/bin/uv sync --locked --active
$STD /usr/local/bin/uv sync --locked --active -n -p cpython3.13 --managed-python
msg_ok "Configured MediaManager"
msg_info "Creating config and start script"

View File

@@ -0,0 +1,43 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Marfnl
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/prometheus/blackbox_exporter
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "blackbox-exporter" "prometheus/blackbox_exporter" "prebuild" "latest" "/opt/blackbox-exporter" "blackbox_exporter-*.linux-amd64.tar.gz"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/blackbox-exporter.service
[Unit]
Description=Blackbox Exporter Service
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/blackbox-exporter
ExecStart=/opt/blackbox-exporter/blackbox_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now blackbox-exporter
msg_ok "Service Created"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -14,7 +14,7 @@ network_check
update_os
msg_info "Installing SearXNG dependencies"
echo "deb http://deb.debian.org/debian bookworm-backports main" > /etc/apt/sources.list.d/backports.list
echo "deb http://deb.debian.org/debian bookworm-backports main" >/etc/apt/sources.list.d/backports.list
$STD apt-get update
$STD apt-get install -y \
python3-dev python3-babel python3-venv python-is-python3 \
@@ -36,7 +36,7 @@ msg_info "Creating Python virtual environment"
sudo -H -u searxng bash -c '
python3 -m venv /usr/local/searxng/searx-pyenv &&
. /usr/local/searxng/searx-pyenv/bin/activate &&
pip install -U pip setuptools wheel pyyaml lxml &&
pip install -U pip setuptools wheel pyyaml lxml msgspec &&
pip install --use-pep517 --no-build-isolation -e /usr/local/searxng/searxng-src
'
msg_ok "Python environment ready"

View File

@@ -0,0 +1,82 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: prop4n
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://docs.sonarsource.com/sonarqube-server
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
JAVA_VERSION="21" setup_java
PG_VERSION="17" setup_postgresql
msg_info "Installing Postgresql"
DB_NAME="sonarqube"
DB_USER="sonarqube"
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;"
{
echo "Application Credentials"
echo "DB_NAME: $DB_NAME"
echo "DB_USER: $DB_USER"
echo "DB_PASS: $DB_PASS"
} >>~/sonarqube.creds
msg_ok "Installed PostgreSQL"
msg_info "Configuring SonarQube"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/SonarSource/sonarqube/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
unzip -q "$temp_file" -d /opt
mv /opt/sonarqube-* /opt/sonarqube
$STD useradd -r -m -U -d /opt/sonarqube -s /bin/bash sonarqube
chown -R sonarqube:sonarqube /opt/sonarqube
chmod -R 755 /opt/sonarqube
mkdir -p /opt/sonarqube/conf
cat <<EOF >/opt/sonarqube/conf/sonar.properties
sonar.jdbc.username=${DB_USER}
sonar.jdbc.password=${DB_PASS}
sonar.jdbc.url=jdbc:postgresql://localhost/${DB_NAME}
sonar.web.host=0.0.0.0
sonar.web.port=9000
EOF
chmod +x /opt/sonarqube/bin/linux-x86-64/sonar.sh
echo ${RELEASE} >>~/.sonarqube
msg_ok "Configured SonarQube"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/sonarqube.service
[Unit]
Description=SonarQube service
After=postgresql.service
[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
User=sonarqube
Group=sonarqube
Restart=on-failure
LimitNOFILE=131072
LimitNPROC=8192
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now sonarqube
msg_ok "Service Created"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -27,7 +27,7 @@ chmod +x Tdarr_Updater
$STD ./Tdarr_Updater
msg_ok "Installed Tdarr"
sg_info "Setting Up Hardware Acceleration"
msg_info "Setting Up Hardware Acceleration"
$STD apt -y install \
va-driver-all \
ocl-icd-libopencl1 \

View File

@@ -54,7 +54,7 @@ else
cat <<EOF | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.sources >/dev/null
Types: deb
URIs: http://repo.mongodb.org/apt/debian
Suites: trixie/mongodb-org/7.0
Suites: bookworm/mongodb-org/7.0
Components: main
Signed-By: /usr/share/keyrings/mongodb-server-7.0.gpg
EOF

View File

@@ -42,7 +42,7 @@ curl -fsSL "https://github.com/wger-project/wger/archive/refs/tags/$RELEASE.tar.
tar xzf "$RELEASE".tar.gz
mv wger-"$RELEASE" /home/wger/src
cd /home/wger/src || exit
$STD pip install -r requirements_prod.txt
$STD pip install -r requirements_prod.txt --ignore-installed
$STD pip install -e .
$STD wger create-settings --database-path /home/wger/db/database.sqlite
sed -i "s#home/wger/src/media#home/wger/media#g" /home/wger/src/settings.py

View File

@@ -102,8 +102,14 @@ fi
msg_ok "Configured Fping"
msg_info "Starting Services"
systemctl restart zabbix-server zabbix-agent2 apache2
systemctl enable -q --now zabbix-server zabbix-agent2 apache2
if [ "$AGENT_PKG" = "zabbix-agent2" ]; then
AGENT_SERVICE="zabbix-agent2"
else
AGENT_SERVICE="zabbix-agent"
fi
systemctl restart zabbix-server
systemctl enable -q --now zabbix-server $AGENT_SERVICE apache2
msg_ok "Started Services"
motd_ssh

View File

@@ -43,7 +43,7 @@ curl -fsSL https://dl.packager.io/srv/zammad/zammad/key | gpg --dearmor | sudo t
cat <<EOF | sudo tee /etc/apt/sources.list.d/zammad.sources >/dev/null
Types: deb
URIs: https://dl.packager.io/srv/deb/zammad/zammad/stable/debian
Suites: 13
Suites: 12
Components: main
Signed-By: /etc/apt/keyrings/pkgr-zammad.gpg
EOF

View File

@@ -41,6 +41,7 @@ function perform_backup {
# Build a list of directories for backup
local CTID_MENU=()
CTID_MENU=("ALL" "Backup all folders" "OFF")
while read -r dir; do
CTID_MENU+=("$(basename "$dir")" "$dir " "OFF")
done < <(ls -d "${DIR}"*)
@@ -52,7 +53,13 @@ function perform_backup {
"\nSelect what files/directories to backup:\n" 16 $(((${#DIRNAME} + 2) + 88)) 6 "${CTID_MENU[@]}" 3>&1 1>&2 2>&3) || return
for selected_dir in ${HOST_BACKUP//\"/}; do
selected_directories+=("${DIR}$selected_dir")
if [[ "$selected_dir" == "ALL" ]]; then
# if ALL was chosen, secure all folders
selected_directories=("${DIR}"*/)
break
else
selected_directories+=("${DIR}$selected_dir")
fi
done
done
@@ -62,7 +69,7 @@ function perform_backup {
read -p "Press ENTER to continue..."
header_info
echo "Working..."
tar -czf "$BACKUP_PATH$BACKUP_FILE-$(date +%Y_%m_%d).tar.gz" --absolute-names "${selected_directories[@]}"
tar -czf "$BACKUP_PATH$BACKUP_FILE-$(date +%Y_%m_%dT%H_%M).tar.gz" --absolute-names "${selected_directories[@]}"
header_info
echo -e "\nFinished"
echo -e "\e[1;33m \nA backup is rendered ineffective when it remains stored on the host.\n \e[0m"